YouDuck.ai

sim2real 是什么,为什么它是最难的一步

最后更新

sim2real 指把仿真中训练出的策略迁移到真实硬件上运行。

它之所以是独立的一门功夫,是因为仿真里表现优秀的策略在真机上摔倒,是常态而不是意外

差距从哪来

策略在仿真里学到的是「给定这组观测,输出这组关节指令,会得到那个结果」。这个因果链上任何一环在真机上不成立,策略就会失效:

环节 仿真里的简化 真机的现实
执行器 理想力矩源,指令即输出 有摩擦、反电动势、电压跌落
传动 刚性连接 有齿隙,换向时空程
感知 精确的关节角度 编码器装在齿隙之后
时序 指令立即生效 有通信和计算延迟
电源 恒定 电池从满到空,力矩随之变化

单独看每一条都是小误差,叠加起来足以让一个学会精确利用地面反力的步态完全失效。

microduck_rl 的应对

它把整套配方编码进了仓库,而不是留在某个人的经验里。四件事:

  1. BAM 执行器模型 —— 不把舵机当理想力矩源
  2. 域随机化 —— 随机的是物理参数,不是观测噪声
  3. 齿隙建模 —— 而且编码器要建模在正确的一侧
  4. 61 维观测契约 —— 让多个策略可以热切换

怎么验证迁移效果

scripts/infer_policy.py 支持 --debug--save-csv--record,用途就是做仿真与真机的对比:同一段指令序列两边各跑一遍,对比逐关节曲线。

真机侧导出数据:

robotctl monitor --json --hz 50 > run.jsonl

相关