策略热切换
最后更新
Microduck 的运行时会在多个策略之间热切换:行走、跌倒恢复、各种技能动作各是一个 .onnx,由 robotd 按需加载。
前提是共享观测契约
能这么做的原因是所有策略共享同一份 61 维观测契约。切换就是换一个网络,不需要状态转换或数据重排。
一个具体例子:walk ⇄ roller
给机器人装上或拆掉轮子后,长按手柄十字键上 3 秒:
- 机器人叫一声(walk)或两声(roller)
- 回到 home 位姿
- 在那里加载对应模式的策略
- 继续驱动
几秒钟,全程保持扭矩,不需要重启。
robotd.toml 不会被修改,所以重启后回到配置文件里设定的模式。想让切换持久化,用 robotctl configure 改 [policy] mode。
设计成「按住」而不是「按一下」,是因为驱动时很容易顺手压到十字键上。
用自己的策略
不需要发布版本。在 /etc/robot/robotd.toml 里直接指过去:
[policy]
walk = "/home/radxa/my_walking.onnx"
stand = "/home/radxa/my_stand.onnx"
sudo systemctl restart robotd
这些路径能挺过系统更新——发布版替换的是它自带的文件,不是这个指向别处的配置。
加载失败的策略会报 unhealthy,robotctl health 和 monitor 底部边框都会说明原因。