RMA:让机器狗在「踩到什么」之前就调整好步态
🧠 一句话心智模型:训练时给策略「偷看」环境参数(摩擦、载重、地形)——上真机后没人告诉它这些了,那就让它在跑的过程中像 Kalman 滤波一样,从最近 0.5 秒的自身动作和姿态反推出来。这 0.5 秒「摸一下地面」,就够了。
🎯 为什么重要:sim2real 不是「随机化到底」就完事
把一只仿真训出来的机器狗放到真机上,常常一踩就滑。原因不是策略不好,而是它不知道自己当前踩的是哪种地面——仿真里是已知参数,真机上是未知数。
已有的两条路各有死穴:
- Domain Randomization(粗暴鲁棒):把摩擦、质量、电机强度全范围乱训,让策略「无差别强壮」。代价:学出的是最保守的策略——慢、笨、不自然。
- 真机系统辨识 / 在线微调:到新环境先收集 4-8 分钟数据、估出参数、再调整。代价:在还不会走稳的时候要先摔几分钟,机器狗摔坏成本极高。
RMA 的回答是:要适应,但要在亚秒级、纯软件、零真机数据。它把「参数辨识」变成了一个仿真里就训好的神经网络模块。
💡 核心思想:两阶段训练 + 异步部署
整个系统分两个子系统:base policy π(出动作)和 adaptation module φ(猜环境)。关键在于训练时分两阶段,部署时异步并行。
图 1:RMA 训练-部署总览。Phase 1 用特权信息(仿真里看得见的环境参数)训策略;Phase 2 把「猜参数」拆成独立模块,用监督学习从历史里估。部署时两模块异步并行。
🛠️ 怎么做:四个关键设计选择
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① 不直接预测 e_t,而是预测它的 latent 编码 z_t | 预测「8 维 latent」(编码器 μ 的输出),而不是 17 维物理参数本身 | 有些物理参数不可辨识(不同摩擦可能造成同样的运动),强行预测反而学不出。预测 latent = 预测「策略需要的那个抽象」 |
| ② φ 用 on-policy 数据训练 | 不是用「专家完美轨迹」训,而是用「随机初始化的 φ 自己跑出来的轨迹」训 | 部署时 φ 会犯错,训练时必须见过「自己犯错后」的轨迹,否则一遇扰动就崩。类似 DAgger 思想 |
| ③ 异步双频部署 | φ 慢(10 Hz),π 快(100 Hz),无时钟同步 | 环境参数变化慢,没必要每步重算;这样 π 能跑满 100 Hz,A1 这种低成本机载算力也能扛 |
| ④ Bioenergetics 启发的 reward + fractal 地形 | 不学参考动作,只用「做功、触地冲量、平滑」等生物力学项;用分形地形生成器造不规则地面 | 不依赖人类演示就能走出自然步态;分形地形覆盖自然界泥土、岩石等不规则地貌 |
🔮 关键直觉:为什么「训练时让 φ 自己犯错」是点睛之笔?
如果只用完美轨迹训 φ,它学到的是「专家轨迹 → 真实 z」的映射。但部署时 φ 一旦预测有偏差,机器人就会偏离专家分布,进入从未见过的状态,φ 立刻崩。RMA 让 φ 在训练时就用自己(初期很烂的)预测去驱动策略,再拿这些「跑歪了的轨迹」训下一轮——形成自我扰动-修正的闭环。这本质上是sim2real 鲁棒性的 DAgger。
如果只用完美轨迹训 φ,它学到的是「专家轨迹 → 真实 z」的映射。但部署时 φ 一旦预测有偏差,机器人就会偏离专家分布,进入从未见过的状态,φ 立刻崩。RMA 让 φ 在训练时就用自己(初期很烂的)预测去驱动策略,再拿这些「跑歪了的轨迹」训下一轮——形成自我扰动-修正的闭环。这本质上是sim2real 鲁棒性的 DAgger。
📊 结果:仿真 + 真机都登顶,零真机数据
| 实验 | 数字(来自论文 Table II / Fig.1 / Fig.3) |
|---|---|
| 仿真测试成功率 | RMA 73.5% vs Robust(domain rand)62.4% vs SysID 56.5% vs AWR 41.7% vs Expert(上界)76.2% |
| 真机野外(沙、泥、草、石) | 0% 失败走完沙地、泥地、登山小径、高草;下台阶 70% 成功;水泥堆/碎石堆 80% 成功 |
| 载重 | 能扛 12 kg(= 自身重量 100%);A1 厂商控制器在 8 kg 开始塌 |
| 适应速度 | < 1 秒(对比 Peng et al. 需 4-8 分钟真机数据) |
| 训练成本 | base policy 24h + adaptation 3h,单 GPU 桌面机 |
关键洞察:RMA 离「专家上界」只差 ~3 个点(73.5% vs 76.2%)——这意味着「猜出来的 z」几乎和「真值 z」一样有用。同时它完全不用真机数据,是 sim2real 的根本性突破。
🌐 在领域中的位置
Domain Randomization(无差别鲁棒)→
隐式系统辨识(Tan / Hwangbo:建模电机)→
RMA(在线 latent 适应)⭐→
ANYmal / ANYmal Parkour(perception + memory)
RMA 是「学习型在线适应」的分水岭。它把 sim2real 从「训得更鲁棒」推向「训一个会适应的策略」。后续的 ANYmal-C、Extreme Parkour 都继承了「base policy + 在线历史编码」的双模块范式。论文在 ExBody 等人形控制里也被作为上肢「relaxed 模仿 + 下肢命令跟踪」的思想源头之一。关联线索:T01 RMA 谱系。
❓ 常见误区
RMA 是「meta-learning」吗?
看起来像(学一个能适应的策略),但实现完全不同。Meta-RL(如 MAML)通常需要真机上的多轮 rollout 才能适应;RMA 在仿真里就一次性训完所有适应能力,真机上只是前馈推断,没有任何梯度更新。
adaptation module 在真机上不会失效吗?毕竟它从没见过真机数据。
这正是论文的神奇之处。能 work 的原因有两点:① 它预测的是抽象 latent,不是具体物理量,对 sim2real 误差更鲁棒;② 它只用本体感觉(关节、IMU、足接触)作为输入,不用视觉——而本体感觉在仿真和真机上差异最小。
为什么论文里也说「未来需要加视觉」?
RMA 是盲狗——只靠本体感觉。它能适应已踩到的地面(油、泥、载重),但应对不了「前方有台阶」这种需要远距离感知的场景。作者在结论里明确把「加视觉」列为下一步(这个空白后来被 ANYmal-C / Extreme Parkour / Parkour-in-the-Wild 填补)。