ANYmal 学会跑和翻身:用「学习到的执行器模型」打通四足 sim-to-real
🎯 为什么重要:四足 RL 的「现实鸿沟」第一次被工程化闭合
2019 年前,腿式机器人 RL 主要停留在仿真里。要在真机上跑,必须解决 sim-to-real gap。已有路径(Tan et al. 2018 on Minitaur)依赖执行器的精确解析模型——对直驱电机有效。但 ANYmal 不一样:
本文的破局点是:既然解析模型不行,那就学习一个。把执行器当成一个黑盒 MLP,从真机采集的(位置误差、速度)→ 扭矩 数据中自监督学。这一下把 sim-to-real 从「理论可能」变成「工程可靠」——后来的四足 RL 几乎全跟这条路径走。
💡 核心思想:混合仿真器 = 经典物理 + 学习到的执行器网络
整个训练-部署管线分四步(论文 Fig.1)。最关键的一步是 step 2:用真机数据训练一个执行器 MLP,再嵌入仿真器中替代不可解析的 SEA 动力学。
🛠️ 关键设计细节
| 组件 | 具体配置 | 为什么这样(论文溯源) |
|---|---|---|
| ① Actuator Net | MLP 3 个隐层 × 32 单元,softsign 激活。输入:当前 + t−0.01s + t−0.02s 的(位置误差、速度);输出:12 关节扭矩。 | SEA 内部状态不可观测,必须用历史窗口隐式估计。softsign 比 tanh 略快(12.2 µs vs 31.6 µs 评估 12 关节),效果相当。数据采集 < 4 分钟(12 关节并行),400 Hz,> 1M 样本(§Method)。 |
| ② Actuator Net 验证 | 验证集 RMS:0.740 Nm(接近传感器分辨率 0.2 Nm);理想模型 3.55 Nm;测试集 0.966 Nm(理想模型 5.74 Nm) | 理想模型差 5×,证明 SEA 的延迟/带宽建模不可忽略。Fig.6 显示预测扭矩与真值几乎重合。 |
| ③ Policy Net | MLP 2 隐层(256, 128),tanh 激活。输入:重力向量、高度、线/角速度、关节角/速度、关节历史、上一动作、命令。 | 选 tanh 不选 ReLU:无界激活在 sim-to-real 时遇到 OOD 状态会输出过大动作;tanh 受扰时更保守(§Policy training details)。 |
| ④ Domain Randomization | 训练时用 30 个不同 ANYmal 模型:质量 U(-15,15)%、CoM 和关节位置 U(-2,2)cm;关节速度测量噪声 U(-0.5,0.5)rad/s;线/角速度噪声。 | CAD 估计惯量有 ~20% 误差(线缆、电子件未建模),随机化让策略对不确定参数鲁棒。 |
| ⑤ Curriculum | 所有 cost 项乘以课程因子 $k_c$(初始 0.3,每轮 × 0.997 渐进到 1);任务目标 cost 不缩放。 | 无 curriculum 时高 penalty 让机器人原地站着(局部最优)。课程让它先学会走,再学会走得好看/省力。 |
| ⑥ RL 算法 | TRPO,默认参数(无调参)。γ=0.9988(locomotion,半衰期 5.77s);γ=0.993(recovery,半衰期 4.93s)。 | TRPO 在 2018 年是稳健选择;作者特别强调「几乎不用调参」是工程卖点。 |
| ⑦ 仿真器速度 | 含 actuator net 的混合仿真器约 500K 步/秒(≈ 实时 1000 倍);纯刚体 900K 步/秒。单 PC(1 CPU + 1 GPU)。 | actuator net 占一半仿真时间,但至关重要。整个训练 ≤ 11 小时,无需集群。 |
| ⑧ 真机部署 | 策略推理 25 µs(单 CPU 线程,约占 ANYmal 板载算力 0.1%)。位置控制增益 kp=50 Nm/rad, kd=0.1。 | 对比基于 MPC 的方法需要外部强算力机器,本策略直接板载跑。 |
SEA 的扭矩响应依赖于幅值(大扭矩和小扭矩的响应时间不同),这种非线性 + 内部反馈环让任何解析模型都顾此失彼。论文 §Method 直白写道:作者团队调 Gehring et al. 的 100+ 参数解析模型调了一周多也没成功。学习方法的胜利在于:把无法解析的部分整体交给一个 universal approximator,自己只管能精确建模的刚体物理。这种「物理 + 学习」的混合范式后来成了腿式机器人的标配。
📊 关键结果(PDF 溯源)
1. 命令跟随式行走(command-conditioned locomotion)
| 指标 | 学习策略(本文) | 最佳已有控制器 [12] | 改善 |
|---|---|---|---|
| 线速度跟踪误差 | 0.143 m/s | 0.231 m/s | ↓ ~95% 误差 |
| 偏航率误差 | 0.174 rad/s | 0.278 rad/s | ↓ ~60% 误差 |
| 平均扭矩 | 8.23 Nm | 11.7 Nm | ↓ 29% |
| 机械功率 | 78.1 W | 97.3 W | ↓ 20% |
| 真机速度跟踪误差 | 2.2% | —(仿真 1.1%) | 几乎无 sim-to-real gap |
| 稳定运行 | 5 分钟无失败(持续测试) | — | 抗外部推扰 |
2. 高速奔跑(打破 ANYmal 速度纪录)
| 指标 | 本文 | 原 ANYmal 纪录(flying trot) |
|---|---|---|
| 真机最大前向速度 | 1.5 m/s(命令 1.6) | 1.2 m/s |
| 仿真最大速度 | 1.58 m/s | — |
| 速度提升 | +25%(论文摘要明确写「outperformed the previous speed record by 25%」) | |
| 硬件极限使用 | 同时达到最大扭矩(40 Nm)和最大关节速度(12 rad/s) | |
| 新步态 | 非对称、加长飞行相的 flying trot——自然界未观察到,疑似多种近最优解之一 | |
3. 摔倒恢复(recovery from a fall)
| 测试设定 | 结果 |
|---|---|
| 9 种随机姿态(含上下颠倒、腿压身下) | 全部成功翻身站起 |
| 初始硬件尝试 | 第一次就成功 |
| 放松关节速度约束后 | 成功率 100% |
| 对比:先前方法 | 这类「多未指派接触 + 动量翻转」任务对模块化和轨迹优化方法都不可行 |
4. 关键消融:执行器模型的重要性
| 执行器模型 | 训练后真机表现 |
|---|---|
| 学习到的 actuator net | 正常行走 / 奔跑 / 翻身 |
| 理想执行器(零延迟、零响应时间) | 一步都走不了,剧烈抖动摔倒 |
| 解析执行器(Gehring et al.,调参 > 1 周) | 一步都走不了 |
5. 训练成本
| 任务 | 仿真时间 | 真实墙钟时间 | 状态转移数 |
|---|---|---|---|
| 命令跟随 / 高速行走 | 9 天 | ~4 小时 | ~2.5 亿 |
| 摔倒恢复 | 79 天 | ~11 小时 | 更多 |
| 硬件需求 | 单台 PC(1 CPU + 1 GPU),无需集群 | ||
| 策略推理(真机) | 25 µs / 控制步,约占板载算力 0.1% | ||
🌐 在领域中的位置
本文是「腿式机器人 RL sim-to-real」的分水岭。它定义的「学习执行器模型」范式被 ETH 后续所有 ANYmal 工作(包括商业公司 Swiss-Mile)继承;「仿真快 + 域随机化 + curriculum」成了腿式机器人 RL 的标准管线。它也直接催生了 RMA(Rapid Motor Adaptation,Kumar et al. 2021)等「在线适应」后续工作。关联线索:T01 sim-to-real 与在线适应谱系。
❓ 常见误区
Actuator net 不就是 system identification 吗?
思想类似,但实现完全不同。传统 system identification 是「估计解析模型的参数」(弹簧刚度、阻尼系数等),受模型结构限制。本文是「用 MLP 当 black-box 函数逼近器」——不需要假设任何模型结构。这正是它能成功而 Gehring et al. 100+ 参数解析模型失败的原因。
它学到了 SEA 的物理还是过拟合了?
论文做了仔细验证:actuator net 在验证集 RMS 0.740 Nm,接近传感器分辨率 0.2 Nm;在测试集(用训练好的 locomotion 策略采集)RMS 0.966 Nm,仍然远低于理想模型的 5.74 Nm。说明它学到了 SEA 的真实动力学而非过拟合特定数据分布——因为测试数据来自完全不同的轨迹。
为什么用 TRPO 而不是更新的 PPO / SAC?
2018 年末投稿时 PPO 已经流行,但作者选 TRPO 的理由是「几乎不用调参,默认参数就工作」(§Policy training details)。在工程化论文里这是个合理取舍——稳定可靠比 SOTA 算法更重要。后来的工作(RMA 等)才换用 PPO/SAC。
1.5 m/s 听起来不快啊,Boston Dynamics 的 Wildcat 不是 8.5 m/s?
论文 §High-speed locomination 专门讨论过。WildCat 是液压驱动、为速度而生;MIT Cheetah 3 专门设计轻量高效电机。ANYmal 设计目标是鲁棒、可靠、多功能,不是速度。本论文的意义是「在 ANYmal 这个硬件上打破原纪录 25%」,不是跨硬件比速度。后来 ANYmal-C/D 在更好硬件上跑得更快。
这个方法能直接搬到人形吗?
不能直接搬,但思想可以。人形机器人的执行器更复杂(谐波减速器、扭矩传感器),内部状态更多。核心范式「物理仿真 + 学习执行器 + 域随机化 + curriculum」已经被人形 RL 工作(如 Cassie、Digit 系列)广泛采纳。难点在人形的接触场景更复杂、自由度更高。