sim2real 是什么,为什么它是最难的一步
最后更新
sim2real 指把仿真中训练出的策略迁移到真实硬件上运行。
它之所以是独立的一门功夫,是因为仿真里表现优秀的策略在真机上摔倒,是常态而不是意外。
差距从哪来
策略在仿真里学到的是「给定这组观测,输出这组关节指令,会得到那个结果」。这个因果链上任何一环在真机上不成立,策略就会失效:
| 环节 | 仿真里的简化 | 真机的现实 |
|---|---|---|
| 执行器 | 理想力矩源,指令即输出 | 有摩擦、反电动势、电压跌落 |
| 传动 | 刚性连接 | 有齿隙,换向时空程 |
| 感知 | 精确的关节角度 | 编码器装在齿隙之后 |
| 时序 | 指令立即生效 | 有通信和计算延迟 |
| 电源 | 恒定 | 电池从满到空,力矩随之变化 |
单独看每一条都是小误差,叠加起来足以让一个学会精确利用地面反力的步态完全失效。
microduck_rl 的应对
它把整套配方编码进了仓库,而不是留在某个人的经验里。四件事:
怎么验证迁移效果
scripts/infer_policy.py 支持 --debug、--save-csv、--record,用途就是做仿真与真机的对比:同一段指令序列两边各跑一遍,对比逐关节曲线。
真机侧导出数据:
robotctl monitor --json --hz 50 > run.jsonl
相关
- sim2real 配方 —— 完整展开