Q1:RMA 能直接用在真机上吗?
能。论文在 Unitree A1 真机做了零样本迁移实验(最高 12 kg 负载、未知摩擦、过 hiking trail 台阶、6° 坡度)。📎不需要真机 fine-tune。
论文:Kumar, Fu, Pathak, Malik. RMA: Rapid Motor Adaptation for Legged Robots . RSS 2021. arXiv:2107.04034. 🌐 · 真机平台:Unitree A1 四足。
让机器人不靠预先校准,就能边跑边适应陌生环境。
秘诀是挂一个"环境侦探",只看自身传感器历史就反推当前地形与负载。
RMA 之于机器人,就像老司机换车。
踩几脚油门刹车,就摸清这辆车的脾气,然后照着开。
要解决的问题:以前机器人的策略一旦部署就固定了。
遇到训练时没见过的情况它就会倒。
比如突然被挂上背包、踩到冰面、电机老化。📎
老办法:domain randomization。
这是一种训练技巧:在仿真里随机变摩擦、质量这些物理量,逼策略对一切扰动都鲁棒。
代价是策略部署后就死板,不会随环境变。📎
RMA 的转身:在策略外挂一个"环境侦探"模块。
它只读机器人自己的传感器历史。
关节角、速度这些就能反推当前环境。📎
策略拿到这个估计,立刻调整动作。
RMA 之于机器人适应,就像司机之于新车。
不是背手册,而是开两步就懂这车的脾气。
方法核心(大白话):分两步训。
Step 1,仿真里给策略一份"小抄"。
小抄是个短向量,描述当前环境——载重多重、地面多滑、电机多强。
策略靠小抄学会很好的走法。
这一步还顺带训一个小编码器,把完整物理量压成这份小抄。
Step 2,真机上小抄没了。
你没法直接测电机磨损或地面摩擦。
于是再训一个很小的"侦探"网络。
它只读机器人自己最近半秒的关节角和速度,去猜小抄里该写什么。
猜的监督信号,就是 Step 1 里那份真小抄。
部署时侦探以 10 Hz 更新猜测,策略以 100 Hz 出动作,两者异步。
侦探跑慢点够用——环境通常不会毫秒级剧变,省算力。
机器人边走,侦探边偷偷摸清环境。
为什么能猜出来:同一个电机命令,在不同环境里关节响应不一样。
挂了重物,加速度变小。
踩到冰面,腿会侧滑。
这些"动力学指纹"写在关节历史里。
侦探把它们读出来,还原环境。
你会看到:Unitree A1 四足真机零样本扛住未知负载。
最高到 12 kg,约自重 100%。
踩未知地面、过未知台阶、爬未知坡度,照样走。
后续极限 parkour 工作复用这套思路做在线适应(感知另起)。📎
核心机制·两阶段训练。
RMA 把"学一个对环境敏感的策略"和"从历史推断环境"拆成两步独立训。📎
Stage 1:带特权信息的 RL。
仿真里训 base policy,看三个输入:本体感受、上一步动作、还有环境标签。
关键方程:$\pi(a_t \mid s_t, a_{t-1}, \mu(e_t))$。
z_t(即 mu(e_t))是 8 维环境向量;e_t 是 17 维特权信息,含质量、摩擦、电机强度、地形高度。📎
"特权信息"指仿真里能直读、真机读不到的物理量。
用 PPO 联合训策略和编码器 mu。
Stage 2:监督学习训 adaptation module。
部署时拿不到 e_t,所以另训一个模块 phi,只看最近 50 步历史,推断 z_t 的估计 z_hat:📎
$\hat{z}_t = \phi_\omega(s_{t-50:t-1}, a_{t-50:t-1})$。
phi 是一维因果时间卷积(causal 1-D CNN,只看过去不看未来),不用 LSTM——为了推理快。
监督信号是 Stage 1 输出的真值 z_t,损失是 MSE:
$L = \|\hat{z}_t - z_t\|^2$。
关键工程细节:采数据必须用随机初始化的 phi 步进环境(DAgger 式)。
不能直接拿 teacher 的完美轨迹——否则部署鲁棒性大降。
异步部署。
phi @ 10 Hz 更新估计,pi @ 100 Hz 出动作,两者异步。📎
A1 算力有限,这个设计是必须的。
常见误区(先抛一个,完整版见末尾):"RMA 不就是带 history 的端到端 RNN 策略吗?"
论文试过这个 baseline:步态不自然、性能差,还只能跑 10 Hz 失去异步优势。
两阶段不是可选项,是必须——Stage 1 显式锚定了 z_t 的语义。📎
Reward 设计(Sec.III.A,bioenergetics-inspired,共 10 项)。
前进奖励 $\min(v_x^t, 0.35)$ 封顶 0.35 m/s。
还有 9 项惩罚:侧向与 yaw、做功 $-|\tau^\top(q^t-q^{t-1})|$、地面冲击 $-\|f^t-f^{t-1}\|^2$、平滑性、动作幅值、关节速度、姿态、Z 加速度、足部滑动。📎
权重依次 $\{20, 21, 0.002, 0.02, 0.001, 0.07, 0.002, 1.5, 2.0, 0.8\}$。
这套 reward 让策略无需任何参考动作就学到自然步态——是 RMA 的隐藏功臣。
仿真器与训练(Sec.IV.A):原 paper 用 RaiSim(不是 Isaac Gym),与 ETH 自研栈一致。📎
地形是 fractal terrain(octaves=2, lacunarity=2.0, gain=0.25, z-scale=0.27)。
policy 100 Hz,论文原文写 sim timestep 0.025 s——但这与 100 Hz policy 在物理上矛盾(sim 必须比 policy 高频),疑为 0.0025 s 笔误;复现按 RaiSim 默认约 400 Hz 物理配 4× decimation 验证。
每 episode 最多 1000 步;早停:身高低于 0.28 m、roll > 0.4 rad 或 pitch > 0.2 rad。
特权信息 e_t 的精确组成(Sec.IV.A):17 维。
质量 + 质心 3 维 + 电机强度 12 维 + 摩擦 + 局部地形高度。
采样范围(Table I):摩擦 $[0.05, 4.5]$,PD 增益 $K_p \in [50, 60]$、$K_d \in [0.4, 0.8]$(部署用 $K_p=55, K_d=0.8$),payload $\in [0, 6]$ kg,COM $\pm 0.15$ m,motor strength $\in [0.9, 1.1]$。
整个 episode 内近似不变(resample probability 仅 0.004)。
z_t 维度纠正:论文 Sec.III.A 明确 $z_t \in \mathbb{R}^8$。📎
社区流传的"5 维"是误传。
Stage 2 on-policy 采样(Sec.III.B):DAgger 式——用随机初始化的 phi rollout,把含偏差的轨迹配上真值 z_t 当监督。
这让 phi 见到足够多的"偏离完美轨迹"样本,是部署鲁棒性的关键来源。
为什么这能工作(机制洞察):机器人对同样的电机命令,在不同环境里产生不同的关节响应。
挂了 5 kg 背包时加速度变小;踩到冰面时支撑腿水平滑动变大。
这些"动力学指纹"编码在 (s, a) 历史里,时间卷积把它们读出来还原环境。
phi 本质是一个轻量的隐式 system identifier——不需要专门的激励信号。📎
Stage 1 的语义锚定:策略训练时见过真值 z_t,所以 z_t 一旦推断对,策略立刻知道怎么调整。
这是 RMA 比纯 RNN policy 易训的原因——latent 的语义是显式锚定的。
实验(真机 Unitree A1):扛未知负载最高 12 kg(A1 自重 12 kg,即 100% 自重;性能从 8 kg 起开始衰减)、踩未知摩擦地面(oily path)、过 hiking trail 台阶、爬 6° 未知坡度——全部零样本迁移。📎
这些场景之前的 domain randomization / teacher-student 都搞不定。
局限:
phi 需要 50 步(约 0.5 秒)历史才能稳定推断 z_hat。毫秒级突变(踏空、急刹)来不及。📎
phi 的能力上限是 Stage 1 里 e_t 的分布。 遇到训练分布外的扰动(从未见过的可变形地形),z_hat 不可靠。
本质上 RMA 与 domain randomization 共享这一局限:适应范围由训练分布决定。
z_hat 不可解释:8 维 latent 是黑箱,无法保证推断对。后续 DreamWaQ [Nahrendra et al. 2023] 用 implicit estimation 替代显式 module,更难调但稳定性有时更好。
双足需应对单脚支撑相的不稳定平衡,对 adaptation 延迟容忍度更低,由 A-RMA 解决;机械臂场景由 RMA2 验证思想可迁移。[未确认]
图谱定位:RMA 是"在线适应"范式的起点,T01 的转折 3(分水岭)。📎
它把 sim-to-real 的范式从"让策略在部署前就准备好"(domain randomization / system identification / teacher-student)转向"让策略在部署中持续调整"。
后续支线清晰:
注:RMA 的"两阶段必须"是就其自身设计而言——Stage 1 显式锚定 z_t 语义,φ 才有清晰的监督目标。后续同组工作 DWC / ROA 证明单阶段(编码器与策略一起用 RL 联训)也可行;两阶段是当时的工程选择,不是 adaptation 的唯一解。[未确认]
latent + history encoding 的 idea 最终被 rsl_rl 整合进 legged locomotion 的标准训练栈。
副产品:RMA 没有改 RL 算法(还是 PPO),只是引入 latent + temporal conv 的组合。
这意味着它可以即插即用地加到任何 legged RL 框架里,是它范式扩散快的原因。
Open problems:
能否用 world model 或高频预测把延迟压到毫秒级,仍开放。[未确认]
phi 推不准。需要_meta-learning_ 或持续学习机制。
z_t 黑箱,工程师无法在推断错误时干预。能否引入结构化 latent(如显式分离摩擦与质量估计)是开放方向。[未确认]
"RMA 就是带 history 的端到端 RNN 策略" —— 错。
论文 Sec.III.C 明确试过此 baseline:步态不自然、性能差、失去异步优势。
两阶段训练不是工程妥协,是必需——Stage 1 显式锚定 z_t 的语义,phi 才有清晰的学习目标。📎
"RMA 用 Isaac Gym 训" —— 常见误传。
原 paper 用 RaiSim(ETH 自研栈),社区复现(legged_gym/rsl_rl)才基于 Isaac Gym 改造。
仿真器选 RaiSim 是工程妥协,方法本身与仿真器无关。
"z_t 是 5 维" —— 错。
论文 Sec.III.A 明确 $z_t \in \mathbb{R}^8$。
太低信息不够、太高 phi 学不出来,8 维是经验最优。
"Stage 2 可以直接用 teacher 的完美轨迹采数据" —— 错。
论文 Sec.III.B 明确必须用 DAgger 式 on-policy rollout(随机初始化的 phi 步进)。
完美轨迹里没有"偏离状态下怎么恢复"的信号,部署鲁棒性会大幅下降。
"RMA 解决了 distribution shift 问题" —— 部分错。
它只解决了训练分布内的时变 gap;训练分布外的扰动它无能为力。
RMA 与 domain randomization 共享同一根本局限——适应范围由训练分布决定。
RMA 分两步训。Step 1 的策略能拿到一份描述环境的"小抄",真机上拿不到。Step 2 训的"侦探"网络是干什么用的?它的监督信号(老师)是谁?
💡 参考答案
RMA 的"侦探"只读机器人自己最近半秒的关节角和速度,不读任何环境标签。它凭什么能猜出当前环境(比如载重多重、地面多滑)?
💡 参考答案
用"老司机换车"或你自己举的类比,用自己的话解释:RMA 是怎么让机器人"边跑边适应"新环境的?
💡 参考答案
部署时策略以 100 Hz 出动作,"侦探"以 10 Hz 更新猜测,两者异步。为什么不让"侦探"也跑 100 Hz?
💡 参考答案
机器人突然踩空(毫秒级事件),"侦探"需要约半秒的历史才能稳定推断。为什么这种场景下来不及?
💡 参考答案
能。论文在 Unitree A1 真机做了零样本迁移实验(最高 12 kg 负载、未知摩擦、过 hiking trail 台阶、6° 坡度)。📎不需要真机 fine-tune。
e_t 有 17 维,为什么 z_t 只有 8 维?z_t 是 e_t 的压缩表示。论文 Sec.III.A 用 8 维;太高 phi 学不出来,太低信息不够。📎8 维是经验最优。
z_t 在真机上变化相对缓慢(负载、地形不会毫秒级剧变),10 Hz 更新足够。
而 50 步历史卷积推理较慢,强制 100 Hz 会拖垮 policy。
异步设计对算力有限的低成本机载(A1)至关重要。📎
两者都解决"真机拿不到特权信息"的问题,机制不同。
ETH 范式(Lee et al. 2020):精确测真机参数,蒸馏特权学生。
RMA:不测,靠运行时推断。
RMA 直接承接 Lee 2020,但把"适应"从训练时属性变成运行时能力。📎
先查 reward:必须用 bioenergetics-inspired 10 项(Sec.III.A)。
特别是 ground impact $-\|f^t-f^{t-1}\|^2$ 和 work $-|\tau^\top(q^t-q^{t-1})|$ 两项,移除后步态退化成"趴地爬行"。📎
其次查 curriculum:penalty 系数从极小起步按 schedule 增大,mass/friction/motor strength 难度线性递增。