YouDuck.ai

第一次让 Microduck 动起来

最后更新

拿到 Microduck 之后,从通电到能用手柄驱动它,实际上只有四步。这一页把顺序和每一步的判断标准写清楚——尤其是“看起来没反应”的时候该查什么。

先搞清楚你在跟什么打交道

Microduck 是一台约 25 cm、800 g 的双足机器人,主控是 Rockchip RK3566。机身上跑着一组 Rust 写的守护进程,其中 robotd50 Hz 的控制循环驱动 15 个舵机,动作来自神经网络策略(.onnx 文件),而不是手写的步态代码。

这一点决定了排查思路:“机器人不动”可能是策略没加载,而不是电机坏了。

第一步:确认软件状态

SSH 上机器人后,第一条命令永远是这个:

robotctl version

它同时告诉你每个守护进程正在运行的版本和已安装的版本,两者不一致时会警告。

这一步不能跳过。官方文档特别强调了原因:更新之后某个守护进程仍在跑旧代码,表现出来和“你刚修的 bug 没修好”一模一样。先排除这种情况,再去怀疑别的。

然后看整体健康状况:

robotctl health

硬件和软件状态在一份报告里。机器人不健康或不可达时它会以非零码退出,所以可以直接拿它当脚本的前置检查。加 --json 会输出完整的支持包格式。

注意一个设计取舍:电机过热、组件被 pin 住这类情况会被报告但不影响退出码——它们是信息,不是故障判定。

第二步:给关节上电

sudo robotctl robot init

这条命令给关节通电,并在大约两秒内把机器人缓慢移动到 home 位姿

它会移动每一个关节。 官方文档明确提醒:执行前把机器人放在支架上。

init 不需要策略就能执行。手柄的 Start 键在开始驱动前也会做这件事,所以手动执行 init 主要是台架调试时用。

要回到松弛状态:

sudo robotctl robot relax --yes

relax 切断关节电力,如果没有东西托着,机器人会直接瘫下去——这就是它需要 --yes 的原因。它是除了拔电源之外唯一回到松弛的方法。

对比一下另外两种“停”:

操作 结果
robot relax --yes 断电,机器人瘫倒
再按一次 Start 停止策略,机器人保持站立
robot.stop 速度归零,保持站立

第三步:配对手柄

手柄配对一台手柄只需要做一次,之后 padd.service 会在开机时自动接管任何连上来的手柄。

sudo robotctl pad pair

不需要输 MAC 地址——机器人会自己找处于配对模式的手柄。完整的配对步骤、Xbox 手柄那个“按错就关机”的按键陷阱,以及配不上时怎么办,见配对手柄

配完确认一下:

robotctl pad status

它输出两行,因为手柄连接和驱动进程是分开失败的:

pad     Xbox Wireless Controller 78:86:2E:BB:13:28  connected
padd    active — driving whatever pad connects

一个连着的手柄配上一个死掉的驱动,从外面看和“机器人在无视你”完全一样——所以要分两行看。

第四步:按 Start

按下 Start 之前,什么都不会动。

Start 键切换策略的开关。策略没打开时,机器人上电站着,但对摇杆没有任何反应。这是最常见的“它坏了”误判。

完整按键映射见手柄按键对照

动不了的时候看哪里

按顺序排除:

  1. robotctl version —— 守护进程跑的是不是你以为的那个版本。
  2. robotctl health —— 有没有报 unhealthy,原因是什么。策略加载失败会在这里明确报出来。
  3. robotctl monitor —— 这是最有信息量的一个。它把「客户端请求了什么」和「实际执行了什么」并排显示,并在两者不同时给出原因。

monitor 值得单独说。安全限制会持续地钳制指令,“摇杆推到底但机器人不动”在没有原因说明的情况下是无法解读的。这个界面会直接写出来,比如:

deadman — no intent arrived recently, velocity zeroed

底部边框会显示当前加载的策略——具体的 .onnx 文件,以及是否配置了站立网络。没有策略的机器人会明说,策略加载失败的会显示另一种状态。这两种情况在数据流的 held 状态上是分辨不出来的。

界面右侧还会把机器人当前姿态画出来——用测量到的关节角度和 IMU 重力向量摆出姿势,用的是训练策略时同一个视觉模型。一条腿反向折叠、头栽进地板、鸭子侧躺,在关节数值表里都只是一堆数字,在这个视图里一眼就能看出来。终端宽度约 110 列以上时自动显示,d 关闭,[ ] 或方向键旋转。

下一步