⏱ ~34 min
里程碑
⭐ 为何重要

整合外感知(视觉/lidar)与本体感知并用 teacher-student,让 ANYmal-C 在森林、雪地、工地等野外真实环境长时间部署,速度与鲁棒性大幅提升。它是 perceptive locomotion 走向野外工业级部署的里程碑,定义了『仿真训 teacher → 真机 student』的范式,被后续 DreamWaQ、Extreme Parkour、Parkour-in-the-Wild 普遍沿用。

建立在
  • ANYmal-blind-locomotion
机器人ANYmal
上真机
物理感知
实时
输入模态vision,proprioception

P-ANYmal-C-2022 · Learning robust perceptive locomotion for legged robots in the wild

作者 / 机构:Takahiro Miki, Joonho Lee, Jemin Hwangbo, Lorenz Wellhausen, Vladlen Koltun, Marco Hutter(ETH Zürich RSL;Hwangbo 当时在 KAIST;Koltun 在 Intel Intelligent Systems Lab)
发表:Science Robotics Vol.7 Issue 60, 2022 (eabk2822)
arxiv:2201.08117 · 代码:论文本身未开源;leggedrobotics/legged_gym 系列仓库是通用依赖而非本论文专用复现 · 项目页leggedrobotics.github.io/rl-perceptiveloco/
在线索中的位置:T01 (sim2real) 转折点;T12 (agile locomotion) 的感知分水岭。RMA / teacher-student 谱系上"感知版"代表。
一句话定位:第一次让四足机器人靠视觉 + 本体感觉融合的 recurrent belief encoder 在野外(雪地、瓦砾、楼梯、草地、混凝土)以接近人步行速度稳健行走——靠 attention-gated GRU 把不可靠的 elevation map 与 proprioception 融合成 belief state,在感知失效时优雅退化到纯 proprioception。


动机

2022 年前的腿式机器人 RL 工作大多分两类:

  1. 纯 proprioception(Lee et al. 2020 / Hwangbo et al. 2019,前两代 ANYmal):抗扰、能跑,但必须"踩到才知道地面是什么",速度被限制;
  2. exteroception 但假定完美:用预先扫描的地形图或在线 SLAM,但深度传感器在反光、透明、植被、阳光直射下都失效,pose drift 又会让 elevation map 偏移,导致踩空或撞墙。

论文核心洞察:exteroception 不可靠是常态而非例外,控制器必须学会"什么时候信视觉、什么时候不信"。这本质是 POMDP——摩擦接触、外部力、真实地形全部不可观测。作者用一个 attention-gated recurrent belief encoder 把 proprioception/exteroception 融合成 belief state,并用 teacher-student 蒸馏绕开 POMDP 直接 RL 的训练困难。

方法核心

所有数字来自 PDF 正文 Sec.4 + Supplementary S5–S9。

1. 三阶段 pipeline(Sec.4 Overview)


Stage 1: 在 RaiSim 仿真里训 teacher(看特权信息)
Stage 2: 同一仿真里训 student(只看真机可得信息)蒸馏 teacher
Stage 3: student zero-shot 部署到 ANYmal C,无 fine-tune

为什么不能直接训 student? POMDP 下 RNN 从零学非常慢且不稳定(Lee et al. 2020 用 TCN 已是当时最快方案)。两阶段把"学最优行为"(teacher,MDP)和"学估计隐藏状态"(student,supervised)解耦,是 privileged learning [Chen et al. 2020] 的标准范式。

2. Teacher 看什么 / Student 看什么(Sec.S5 + Table S3)

Teacher observation $o_t^{\text{teacher}} = (o_t^p,\ o_t^{e,p},\ s_t^p)$:

  • Proprioception $o_t^p$(真机也有,dim 见下):
  • command 3($v_x, v_y, \omega$,body frame)
  • body orientation 3 / body velocity 6
  • joint position 12 / joint velocity 12
  • joint position history 3 步 = 36 / joint velocity history 2 步 = 24 / joint target history 2 步 = 24
  • CPG phase 信息 13
  • Exteroception $o_t^{e,p}$(teacher 用干净版):208 维 height samples = 每只脚周围以 5 个不同半径采样的高度向量。
  • Privileged state $s_t^p$只有 teacher 看,dim 共 50):
  • contact states 4(每只脚)
  • contact forces 12 / contact normals 12
  • friction coefficients 4
  • thigh 和 shank contact states 8
  • external forces and torques 6(施加在 body 上的扰动力/力矩
  • airtime 4

Student observation $o_t^{\text{student}} = (o_t^p,\ n(o_t^{e,p}))$:去掉所有 privileged,height samples 套一个参数化噪声模型 $n(\cdot)$。

Action(CPG-inspired,Sec.S5):每条腿一个 phase 偏移 $\Delta\phi_l$ + 12 个残差关节目标 $\Delta q_i$。base 频率 $\Delta\phi_0$ 是固定的。nominal foot trajectory 用解析 IK 转成 nominal joint target,policy 输出在 nominal 上加 residual。这是为了让 RL 不必从零学步态。

3. Teacher 网络与训练(Sec.4 + S6)

Teacher 是 3 个 MLP 分支:exteroceptive encoder $g_e$ 把 208 维 height samples 压成 24×4=96 维 latent $l_t^e$;privileged encoder $g_p$ 把 $s_t^p$ 压成 24 维 latent $l_t^{\text{priv}}$;main MLP 输入 $(o_t^p,\ l_t^e,\ l_t^{\text{priv}})$ 输出 action。两个 encoder 各两层 hidden $\{80, 60\}$ 与 $\{64, 32\}$;main MLP hidden layers {256, 160, 128};统一 LeakyReLU。PPO 训练,Gaussian policy。

Reward(Sec.S7 给出全部 10 项的精确公式与权重):$r = 0.75(r_{lv}+r_{av}+r_{lvo}) + r_b + 0.003 r_{fc} + 0.1 r_{co} + 0.001 r_j + 0.08 r_{jc} + 0.003 r_s + 10^{-6} r_\tau + 0.003 r_{\text{slip}}$。例如线性速度项

$$r_{lv} = \begin{cases} 1.0, & v_{\text{des}}\cdot v > |v_{\text{des}}| \\ \exp\!\left(-(v_{\text{des}}\cdot v - |v_{\text{des}}|)^2\right), & \text{otherwise}\end{cases}$$

其余项覆盖正交速度、body 角速度/姿态、foot clearance、shank/knee 碰撞、joint 运动软约束、foot slip、joint torque 等,每项都给闭式表达式。

Termination:body 触地、大幅倾斜、joint torque 超限。

4. 两套 curriculum(Sec.4 Curriculum)

  • Terrain curriculum:用 particle filter 在线调整地形参数(坡度、台阶高度等),始终保持在"略难但可达成"区间。来自 Lee et al. 2020。
  • Disturbance/reward curriculumdomain randomization 与部分 reward 项的 magnitude 乘以 $c_{k+1} = (c_k)^d$,$0

Domain randomization:robot body/leg 质量、初始 joint 位置/速度、初始 body 姿态/速度、外加 force/torque、foot friction 偶尔设低值(模拟滑)。注意:论文未提"adversarial motion training"或对抗式扰动;扰动是 random force/torque,不是 learned adversary,本质是 DR + curriculum。

5. Student 的关键设计:attention-gated GRU belief encoder(Sec.S6 + Fig.7C/D)


belief encoder:
  bt0 = RNN(ot, lte, ht)            # GRU,2 层,每层 50 hidden
  α   = σ(ga(bt0))                  # exteroceptive gate, 96 维 attention
  lte_α = lte ⊙ α                   # 过滤后的 exteroception
  bt  = gb(bt0) + lte_α             # 120 维 belief state
  • GRU 2 层 × 50 hidden(不是常见的 256/512 大 hidden——够用即可,因为只估"局部地形+摩擦+外部力"这些标量/低维隐藏量)。
  • gate $\sigma(g_a(\cdot))$ 学"何时信视觉":当 exteroception 被 noise 模型污染(论文 Fig.4 真机实测),gate 输出趋 0,policy 自动退化到纯 proprioception——这就是"graceful degradation"的机制来源。
  • 训练用 两个 supervised lossDAgger-style,roll out student 采样本),总 loss $L = L_{bc} + 0.5\,L_{re}$(Sec.S3):
  1. behavior cloning loss:$\|a_{\text{student}} - a_{\text{teacher}}\|^2$(同 state/command);
  2. reconstruction loss:$\|\hat{o}_t^{e,p} - \text{decode}(b_t)\|^2 + \|\hat{s}_t^p - \text{decode}(b_t)\|^2$,强制 belief 包含真实地形和特权信息。
  • MLP main network 复用 teacher 权重初始化(架构相同),加速收敛。

6. Height sample noise model(Sec.4 Height sample randomization)

3 类 mapping condition 按 60% / 30% / 10% 比例每 episode 选:

  1. nominal noise(地图好);
  2. 大 per-foot offset(pose drift 或 deformable terrain);
  3. 大 per-scan-point noise(完全 occlusion / mapping failure)。

每种噪声 Gaussian,方差由 $z\in\mathbb{R}^{8\times 4}$ 参数化,$z$ 本身也走 curriculum。还按 cell 加额外 offset 模拟植被/雪。

7. 部署(Sec.4 Deployment)

  • 传感器:两种配置——2 个 Robosense Bpearl dome LiDAR4 个 Intel RealSense D435 深度相机同一 policy 不改一行代码、不 fine-tune 就能切换。
  • elevation map:robot-centric 2.5D,20 Hz 更新,GPU 加速(Kalman-filter 风格 + drift compensation + ray casting)。Fankhauser 风格。
  • policy 频率 50 Hz,从最新 elevation map 采样 height,缺失用随机值填。
  • 在 PyTorch 训练,部署在机载。

8. 实验(Sec.2 Results)

  • 自然 + 城市 + 地下多环境部署(Sec.2 开头):alpine / forest / urban / underground(cave / tunnel / 地下管线),路况含湿滑、植被、台阶、不规则石块、loose gravel、sand、水洼、低光,全程零摔。地下课程里 4 台 ANYmal 累计探索 >1700 m 无一失败。
  • 大楼梯(12–36.5 cm 木阶,Sec.2 Evaluating exteroception):proprioception-only baseline(Lee 2020)从 20 cm 起前腿频繁卡住、后腿跟不上;本文 controller 在感知正常时可靠跨到 30.5 cm,>32 cm 时主动停步(学到接近物理极限)。遮蔽传感器时 degrade 到 proprioception 仍能走。
  • 平地极限速度(Sec.2 Evaluating exteroception):本文 controller 1.2 m/s,baseline 0.6 m/s(前向 / 横向均测)。论文未给雪/泥/草地的速度区间,仅此平地数字。
  • Etzel 山(瑞士)远足小径(Sec.2 A hike in the Alps):2.2 km、120 m 爬升、最大 38% 坡度;31 min 登顶(人类指示牌 35 min)、78 min 走完全程(向导预计 76 min)。

为什么重要

  1. 第一个真正"野外"的视觉 locomotion RL:之前工作要么纯仿真、要么室内/实验室,本篇是 Science Robotics 级的"野外部署"标杆,被后续工作(Walk-These-Ways、Extreme Parkour、ANYmal Parkour、RMA 系)反复对比。
  2. belief encoder 是关键工程贡献:用 attention gate 显式控制"信不信 exteroception",把"sensor fusion"从启发式变成可端到端学的模块。后续 humanoid / quadruped 工作普遍沿用 teacher-student + 历史编码的范式(如 OmniH2O 的 privileged teacher-student)。
  3. 确立了 teacher-student + recurrent distillation 范式:解决了"仿真有特权信息真机没有"的 sim2real 鸿沟,比 RMA(在线 adaptive module)更稳定、更易训。
  4. GRU 2 层 × 50 hidden 的极简配置证明:belief estimation 不需要大模型,关键是 supervised auxiliary loss(reconstruction)和 gate 机制。

局限

  1. 仍是基于步态先验(CPG):action 是 phase offset + residual,不是直接 torque/target——所以翻越、跳、parkour 等动态动作学不出来(这正是 Extreme Parkour、ANYmal Parkour 后续解决的方向)。
  2. height sample 表示限制了感知范围:208 维围绕 4 只脚的采样,看不到远处地形,无法做长距离规划。
  3. reward 公式全公开但权重需对齐:Sec.S7 给了 10 项的闭式表达与权重,但重量级权重(如 $r_\tau = 10^{-6}$)的量纲敏感,复现要照抄;legged_gym 仓库的 anymal.* 配置可作为参考实现。
  4. 2.5D elevation map 无法表达可变形/软地形:植被、雪仍靠 noise model 近似,遇到水洼/玻璃仍会失败。
  5. GRU 隐藏量仅估"局部":长程不确定性(如 SLAM drift 累积)无法建模。

复现要点

  • 仿真器:RaiSim(不是 Isaac Gym)。并行规模:teacher 训练 1000 envs、student 训练 300 envs(Sec.S3);每 iteration 收 250(teacher)/ 400(student)timesteps。
  • teacher 必须看全 privileged(contact、friction、external force、airtime 等 50 维);student 一项不能漏掉 reconstruction loss。
  • proprioception history 极短:joint position 3 步、joint velocity/target 2 步——加上 GRU 即可,不需要长 stack。
  • GRU 配置:2 层 × 50 hidden,别堆大。两套 MLP 要分开:(a) teacher 的 exteroceptive / privileged encoder 各两层 $\{80, 60\}$ 与 $\{64, 32\}$;(b) student 的 belief encoder $g_b$ 与 gate $g_a$ 各两层 $\{64, 64\}$ 与 $\{64, 64\}$。main MLP $\{256, 160, 128\}$,统一 LeakyReLU。
  • gate 必须有:消融(Sec.S9)证明 gate 是稳定训练的关键。
  • height samples 208 维 = 4 脚 × 52 个采样(5 个半径环),结构化输入。
  • noise 模型 60/30/10 三种 condition,episode 开始采,$z$ 走 curriculum。
  • 部署零 fine-tune:换 LiDAR/RealSense 都行,因为 elevation map 抽象掉了传感器差异。
  • 常见坑:(1) 没训 reconstruction loss → belief 不收敛;(2) gate 一直开 → noise 直接污染;(3) reward 权重错误 → 步态诡异(参考 legged_gym 的 anymal.* 配置)。

相关

  • 建立在:privileged learning [Chen et al. 2020]、Lee et al. 2020(自适应 curriculum + TCN)、Hwangbo et al. 2019(actuator network),RMA [Kumar et al. 2021](在线 adaptation 路线)。
  • 直接引出:Walk-These-Ways [Margolis 2022](command vector 多模式)、Extreme Parkour [Cheng 2023](去掉 CPG,纯 RL)、ANYmal Parkour [Hoeller et al. 2024](极限越障)。
  • 本仓库笔记交叉引用
  • T01-sim2real-locomotion.md(teacher-student/privileged learning 范式代表)
  • T12-agile-locomotion.md(perceptive locomotion 起点)
  • C-sim2real-methods.md(DR / System ID / Teacher-Student / RMA 四法)
  • P-RMA-2021.md(同期 adaptation 路线对照)
  • P-ExtremeParkour-2023.md(后续无 CPG 的极限版)