里程碑
机器人Unitree A1
上真机
物理感知
实时
输入模态proprioception

RMA:让机器狗在「踩到什么」之前就调整好步态

Ashish Kumar, Zipeng Fu, Deepak Pathak, Jitendra Malik(UC Berkeley + CMU + Facebook)。CoRL 2021 / arXiv:2107.04034。 项目页 · locomotionsim2real 线索 T02适应 / online system ID

🧠 一句话心智模型:训练时给策略「偷看」环境参数(摩擦、载重、地形)——上真机后没人告诉它这些了,那就让它在跑的过程中像 Kalman 滤波一样,从最近 0.5 秒的自身动作和姿态反推出来。这 0.5 秒「摸一下地面」,就够了。

🎯 为什么重要:sim2real 不是「随机化到底」就完事

把一只仿真训出来的机器狗放到真机上,常常一踩就滑。原因不是策略不好,而是它不知道自己当前踩的是哪种地面——仿真里是已知参数,真机上是未知数。

已有的两条路各有死穴
  • Domain Randomization(粗暴鲁棒):把摩擦、质量、电机强度全范围乱训,让策略「无差别强壮」。代价:学出的是最保守的策略——慢、笨、不自然。
  • 真机系统辨识 / 在线微调:到新环境先收集 4-8 分钟数据、估出参数、再调整。代价:在还不会走稳的时候要先摔几分钟,机器狗摔坏成本极高。

RMA 的回答是:要适应,但要在亚秒级纯软件零真机数据。它把「参数辨识」变成了一个仿真里就训好的神经网络模块。

💡 核心思想:两阶段训练 + 异步部署

整个系统分两个子系统:base policy π(出动作)和 adaptation module φ(猜环境)。关键在于训练时分两阶段,部署时异步并行

Phase 1:用「特权信息」训 base policy 环境参数 e_t 摩擦/质量/电机 地形高度 编码器 μ e→z (8维) Base Policy π 输入: x_t, a_{t-1}, z_t 输出: 12 个关节角 Phase 2:训 adaptation module φ 近 50 步历史 x, a 的滑动窗口 (≈ 0.5 秒) Adapt φ 1D-CNN 预测 ẑ_t MSE 对齐 z_t (仿真里有真值) 部署:仿真训练好直接搬到真机,无需校准、无需真机数据 Adapt φ @ 10 Hz 慢速更新 ẑ Base π @ 100 Hz 快速读取最新 ẑ 出动作 异步
图 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

📊 结果:仿真 + 真机都登顶,零真机数据

实验数字(来自论文 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 填补)。