枢纽
机器人ANYmal
上真机
物理感知
实时
输入模态proprioception

ANYmal 学会跑和翻身:用「学习到的执行器模型」打通四足 sim-to-real

Jemin Hwangbo, Joonho Lee, Alexey Dosovitskiy, Dario Bellicoso, Vassilios Tsounis, Vladlen Koltun, Marco Hutter(ETH Zurich Robotic Systems Lab + Intel)。Science Robotics 2019 / arXiv:1901.08652。 DOI · locomotionsim-to-real + actuator net

🧠 一句话心智模型:让四足机器人学运动技能,仿真足够快、足够真 是关键。问题是 ANYmal 用的串联弹性执行器(SEA)无法用解析方程精确建模——物理仿真和真机之间有一道「执行器黑盒」。本文的招式很简单:让神经网络从真机数据里把这层黑盒学出来塞回仿真,然后 RL 训练的策略就能直接搬上真机。

🎯 为什么重要:四足 RL 的「现实鸿沟」第一次被工程化闭合

2019 年前,腿式机器人 RL 主要停留在仿真里。要在真机上跑,必须解决 sim-to-real gap。已有路径(Tan et al. 2018 on Minitaur)依赖执行器的精确解析模型——对直驱电机有效。但 ANYmal 不一样:

核心矛盾:ANYmal(32kg、12 个 SEA、狗大小)的执行器有级联反馈环、内部不可观测量、非线性摩擦。Gehring et al. 的解析模型有近 100 个参数,调一周也不够准。论文做了一个对照实验:用理想执行器模型或调好的解析模型训练的策略,连一步都走不了,肢体剧烈抖动直接摔倒。这说明 SEA 的现实鸿沟不是「调一调就行」。

本文的破局点是:既然解析模型不行,那就学习一个。把执行器当成一个黑盒 MLP,从真机采集的(位置误差、速度)→ 扭矩 数据中自监督学。这一下把 sim-to-real 从「理论可能」变成「工程可靠」——后来的四足 RL 几乎全跟这条路径走。

传统:模块化控制 模板动力学 + 轨迹优化 + PID 跟踪 · 工程师调几个月 · 性能受限(保守) · 一个任务一套代码 → ANYmal 1.0 m/s 上限 Tan et al. 2018:Minitaur 精确解析执行器模型 + dynamics randomization · 直驱电机易建模 · 对 SEA / 液压不适用 · 机器人相对简单 → 不能直接搬到 ANYmal 本文:学习执行器 ✅ 刚体物理(精确) + actuator net(学习) · 真机数据驱动 · 通用、可扩展 · 同一代码训多任务 → 1.5 m/s + 翻身恢复
图 1:腿式机器人控制的三条路径(论文 §1)。本文的方法把「无法解析」的部分交给神经网络。

💡 核心思想:混合仿真器 = 经典物理 + 学习到的执行器网络

整个训练-部署管线分四步(论文 Fig.1)。最关键的一步是 step 2:用真机数据训练一个执行器 MLP,再嵌入仿真器中替代不可解析的 SEA 动力学。

Step 1 物理参数辨识 CAD + 实验估计 质量、惯量等 (预期 ~20% 误差) Step 2 ⭐ 训练 Actuator Net 真机正弦轨迹采集 MLP [32, 32, 32] softsign 激活 Step 3 仿真里训策略 混合仿真器 + domain rand. + curriculum Step 4 部署到真机 零样本迁移 推理 25 µs / 步 单 CPU 线程 混合仿真器内部(论文 Fig.5) 刚体物理 Rigid-Body Sim Actuator Net 位置误差史 + 速度史 → 12 关节扭矩 Policy Net MLP [256, 128] 位置控制器 kp=50, kd=0.1 目标位置 → 误差 → 关节 → 关节
图 2:方法管线(上)和混合仿真器内部(下,论文 Fig.5)。Actuator Net 是「夹」在精确刚体物理和策略之间的学习组件。

🛠️ 关键设计细节

组件具体配置为什么这样(论文溯源)
① 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/s0.231 m/s↓ ~95% 误差
偏航率误差0.174 rad/s0.278 rad/s↓ ~60% 误差
平均扭矩8.23 Nm11.7 Nm↓ 29%
机械功率78.1 W97.3 W↓ 20%
真机速度跟踪误差2.2%—(仿真 1.1%)几乎无 sim-to-real gap
稳定运行5 分钟无失败(持续测试)抗外部推扰

来源:§Command-conditioned locomotion + Fig.2。还实现了 5-7× 优于 flying trot 的速度跟踪、23-36% 扭矩节省。trot 步态是自动浮现的,未在 reward 中指定

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%
关键洞察:本文的胜利不在某个单点指标,而在「方法论工程化」——它证明「仿真训练 + 学习执行器 + 域随机化 + curriculum」这套组合拳可以让复杂的 SEA 四足第一次实现:(1)超越手工控制器的性能,(2)打破硬件速度极限,(3)学会手工方法做不到的翻身动作,(4)零样本迁移,(5)单卡可训。这是腿式机器人 RL 走向产业化的关键拐点。

🌐 在领域中的位置

HyQ / MIT Cheetah(模块化控制,2010s) 仿真 RL locomotion(Schulman、Heess 等,2015-2017) Tan et al. Minitaur sim-to-real(2018) 本文:ANYmal + actuator net ⭐ RMA / Walk-These-Ways / ANYmal Parkour(2021+)

本文是「腿式机器人 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 系列)广泛采纳。难点在人形的接触场景更复杂、自由度更高。