跳到正文
孔乙己

足式机器人强化学习:sim-to-real 的鸿沟到底怎么跨

从奖励函数逐项设计和大规模并行仿真讲起,拆解执行器建模、域随机化与教师-学生蒸馏这三件让 RL 策略真正跑上实机的事。

具身智能2分钟阅读

模仿学习那篇的方法论有一个前提:人能演示。机械臂操作可以遥操作采数据,但四足机器人在乱石坡上的步态没人能演示——遥操作杆给不出 12 个关节每秒上百次的协调决策。这类“人也不会、模型难建”的控制问题(接触序列离散且高频切换、地形不可预知),是强化学习在机器人上最成功的落脚点:ANYmal 在瑞士山地徒步、各家四足的抗踹恢复,背后是同一套配方。

这套配方的难点不在 RL 算法本身——PPO 从 2017 年至今没变过——而在仿真里训出来的策略如何在真机上不摔。本文按训练配置、鸿沟成因、跨越手段三段展开。

以四足速度跟踪任务为例。策略 50 Hz 运行,观测、动作、奖励的选择都藏着经验:

观测(本体感知,约 40~50 维):机体角速度与重力方向投影(来自 IMU 姿态估计)、关节位置/速度、上一拍动作、速度指令。注意没有视觉、没有全局位置——盲走(blind locomotion)配置,把问题压到最小可部署形态。

动作是关节位置目标,不是力矩。动作 a\mathbf a 经缩放后作为偏离站立姿态的位置偏移,交给底层关节 PD(如 Kp=20,Kd=0.5K_p = 20, K_d = 0.5)转成力矩:

τ=Kp(qstand+σ a−q)−Kd q˙\boldsymbol\tau = K_p\left(\mathbf q_{stand} + \sigma,\mathbf a - \mathbf q\right) - K_d,\dot{\mathbf q}

为什么不直接输出力矩?位置动作 + PD 相当于给策略输出套了一层天然的低通与安全垫:动作噪声被 PD 滤波,探索初期的疯狂输出不会直接变成疯狂力矩;且 PD 在真机与仿真间的行为差异远小于开环力矩。这是社区反复试出来的结论,几乎所有落地工作都这么做。

奖励是一张精心配平的账单,跟踪项用指数核(比二次惩罚更平缓,避免边缘梯度爆炸),其余全是正则项:

r=2.0 e−∥vcmd−v∥2/0.25⏟线速度跟踪+1.0 e−(ωcmd−ω)2/0.25⏟角速度跟踪−0.02 ∥τ∥2−0.3 ∥ak−ak−1∥2−1.0 1[躯干/大腿触地]+…r = \underbrace{2.0,e^{-|\mathbf v_{cmd} - \mathbf v|^2/0.25}}_{\text{线速度跟踪}}

  • \underbrace{1.0,e^{-(\omega_{cmd} - \omega)^2/0.25}}_{\text{角速度跟踪}}
  • 0.02,|\boldsymbol\tau|^2
  • 0.3,|\mathbf a_k - \mathbf a_{k-1}|^2
  • 1.0,\mathbb 1[\text{躯干/大腿触地}] + \dots

力矩惩罚管能耗、动作平滑惩罚管抖动(不加它,策略学出的高频颤动会在真机上放大成共振)、触地惩罚管姿态。每一项的系数都是真实的调参工作量——奖励里没写的东西,策略一定会钻空子(reward hacking):不惩罚滑移就学出蹭地步态,不惩罚脚部腾空高度就学出贴地拖行。

现代配方的引爆点是 GPU 并行仿真(Isaac Gym/Isaac Lab 一族):4096 个环境在单卡上同时跑,物理和策略前向都在 GPU 上,数据不落 CPU。效果是每秒几十万仿真步,PPO 这种样本效率平平的 on-policy 算法在几十分钟到几小时内吃到几十亿步——用暴力吞吐掩盖了样本效率问题,也让“多训几版调奖励”的迭代循环从周缩到小时。

课程学习(curriculum)在这里顺手完成:从平地开始,策略在某级地形上速度跟踪达标就升级到更陡的坡、更高的台阶;速度指令范围同步扩大。没有课程,直接扔进困难地形的策略连第一个正奖励都摸不到。

把 sim-to-real gap 拆开,按危害排序:

  1. 执行器动力学(头号杀手):仿真里的关节是理想力矩源;真实关节有电流环带宽、齿隙、摩擦与折算惯量、通信延迟。ETH 在 ANYmal 上量化过这件事:串联弹性执行器的实际力矩响应与理想模型差异巨大,直接部署的策略当场摔倒;
  2. 延迟:从传感器采样到力矩生效,真实链路有 5~20 ms 的总延迟,仿真里默认是零。50 Hz 策略下一拍就是 20 ms——延迟没建模,策略等于在拿“过期观测”决策却不自知;
  3. 接触模型:刚性接触的恢复系数、摩擦锥近似、地面刚度,仿真器都只是近似。好在足式对接触误差的敏感度低于想象——步态本身就是对不确定接触的鲁棒策略;
  4. 物性参数:质量分布、质心位置、电池损耗、脚垫磨损——出厂 CAD 与真机的偏差,且随时间变化。

对应的跨越手段也是三层,逐层递进。

ETH 的经典做法是 actuator net:在真实执行器上采集(位置误差、速度)历史 → 实际输出力矩的数据,训一个小 MLP,插进仿真替换理想执行器。仿真里的策略从此感受到的是真实关节的“脾气”——延迟、饱和、迟滞全在数据里。ANYmal 那篇 Science Robotics 论文的消融很硬:不带 actuator net 的策略真机即摔,带上后零微调直接部署。

这件事的一般化表述值得记住:gap 大的子系统,与其随机化,不如辨识/学习出来。执行器可以单独上测试台采数据,所以它适合被精确建模;地形摩擦没法枚举,才轮到下一层手段。

对无法精确建模的部分,训练时在仿真里随机化:每个 episode 重新抽取摩擦系数(0.51.25)、附加质量(±10%)、质心偏移(±2 cm)、电机强度(±10%)、观测噪声、以及随机推搡(每隔几秒给机体一个随机冲量)。延迟的随机化尤其关键:观测和动作各插入 020 ms 的随机延迟,逼策略学出对时延不敏感的闭环。

域随机化的机理要说准确:它不是让仿真更像真实,而是让真实世界看起来只是训练分布里的又一个样本。代价同样明确——随机化范围越宽,策略越保守,峰值性能越低。范围本身是超参数:太窄跨不过去,太宽学出一只缩手缩脚的机器人。工程上的默认起点是文献里的成熟范围,再按真机表现微调个别维度。

域随机化留下一个更深的问题:同一段观测历史,在不同的随机化参数下最优动作不同。摩擦 0.5 和 1.2 的地面,落脚策略应该不一样——但策略看不到摩擦系数。让单一反应式策略硬扛所有随机化,只能收敛到“对所有情况都凑合”的平均策略。

教师-学生框架(RMA 及其变体)分两步解开:

第一步,训教师:让教师策略额外看到特权信息——仿真里免费的真值:摩擦系数、附加质量、接触状态、脚下地形高程图。特权信息经编码器压成低维环境嵌入 z\mathbf z,教师条件于 z\mathbf z 做动作。因为“环境是什么”已知,教师可以对每种环境都学出激进而精准的应对;

第二步,蒸馏学生:真机上没有特权信息,但过去 0.5~1 秒的本体感知历史里藏着它的影子——同样的动作在高摩擦和低摩擦地面上产生不同的关节速度响应,历史序列携带了环境的“指纹”。学生用一个时序编码器(TCN/GRU)从纯本体历史回归教师的 z\mathbf z(或直接模仿教师动作),监督学习收敛后,学生就是可部署的策略:在线、隐式地做系统辨识,再据此调整步态。

flowchart LR subgraph 仿真·第一阶段 P[特权信息<br/>摩擦/质量/接触/地形] --> E[编码器 → 环境嵌入 z] O1[本体观测] --> T[教师策略<br/>PPO 训练] E --> T end subgraph 仿真·第二阶段 H[本体观测历史 0.5~1s] --> S[时序编码器<br/>回归 ẑ ≈ z] S --> ST[学生策略<br/>监督蒸馏] T -.动作/嵌入监督.-> ST end ST --> R[真机部署<br/>纯本体感知,零微调]

这个“特权学习”思想的适用面远超足式:任何“仿真里有真值、真机上只有间接观测”的任务都用得上——它和 π 系列里 RECAP 用离线 RL 吃自主经验的思路,共同构成“仿真/离线数据里多拿信息,部署时少要信息”的一体两面。

策略网络只有几层 MLP,推理微秒级,部署难点全在工程接缝上:

  • 观测对齐:仿真观测的每一维(顺序、单位、坐标系、滤波状态)必须和真机严格一致——观测错位是“仿真里完美、真机上抽搐”的第一嫌疑人。重力投影向量来自 ESKF,其滤波延迟特性也要在仿真里复现;
  • 动作限幅与安全壳:关节位置目标限幅、力矩限幅、姿态超限(横滚/俯仰超 45°)立即切阻尼模式趴下——RL 策略没有任何形式保证,安全逻辑必须在策略外面用传统方法兜底;
  • 50 Hz 的调度:策略推理和 1 kHz 关节 PD 分属不同频率层,中间的指令传递按实时系统的规矩来(无锁、绝对时间踩点);
  • 上真机的顺序:吊架上验证站立 → 平地低速 → 逐步放开指令范围。每一步录数据回仿真对比,NIS 式的“仿真-真机残差”监控能提前发现观测错位。

问题 手段 一句话原理
样本效率低 GPU 并行 4096 环境 用吞吐暴力掩盖 on-policy 的低效
执行器不像 actuator net 可单独辨识的子系统就辨识,不要随机化
物性/延迟不确定 域随机化 让真实成为训练分布内的一个样本,代价是保守
随机化导致平庸 教师-学生蒸馏 特权信息训教师,本体历史隐式辨识环境
无形式保证 策略外安全壳 RL 管性能,传统方法管底线

和本博客其他文章连起来看,足式 RL 是一个完整的全栈样本:奖励里的力矩惩罚对应动力学的能耗模型,观测依赖 ESKF 姿态,底层是 FOC 电流环和实时总线,而“人不会演示的靠 RL、人会演示的靠 IL”的分工,正好和模仿学习一文互为镜像。

  • J. Hwangbo, J. Lee, et al. Learning Agile and Dynamic Motor Skills for Legged Robots. Science Robotics, 2019.(actuator net 出处)
  • J. Lee, J. Hwangbo, et al. Learning Quadrupedal Locomotion over Challenging Terrain. Science Robotics, 2020.(教师-学生 + 课程学习)
  • A. Kumar, Z. Fu, D. Pathak, J. Malik. RMA: Rapid Motor Adaptation for Legged Robots. RSS 2021.
  • N. Rudin, D. Hoeller, P. Reist, M. Hutter. Learning to Walk in Minutes Using Massively Parallel Deep RL. CoRL 2021.(Isaac Gym 并行训练配方)
  • J. Schulman et al. Proximal Policy Optimization Algorithms. arXiv:1707.06347.

评论