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 工作大多分两类:
- 纯 proprioception(Lee et al. 2020 / Hwangbo et al. 2019,前两代 ANYmal):抗扰、能跑,但必须"踩到才知道地面是什么",速度被限制;
- 用 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 curriculum:domain 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 loss(DAgger-style,roll out student 采样本),总 loss $L = L_{bc} + 0.5\,L_{re}$(Sec.S3):
- behavior cloning loss:$\|a_{\text{student}} - a_{\text{teacher}}\|^2$(同 state/command);
- 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 选:
- nominal noise(地图好);
- 大 per-foot offset(pose drift 或 deformable terrain);
- 大 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 LiDAR 或 4 个 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)。
为什么重要
- 第一个真正"野外"的视觉 locomotion RL:之前工作要么纯仿真、要么室内/实验室,本篇是 Science Robotics 级的"野外部署"标杆,被后续工作(Walk-These-Ways、Extreme Parkour、ANYmal Parkour、RMA 系)反复对比。
- belief encoder 是关键工程贡献:用 attention gate 显式控制"信不信 exteroception",把"sensor fusion"从启发式变成可端到端学的模块。后续 humanoid / quadruped 工作普遍沿用 teacher-student + 历史编码的范式(如 OmniH2O 的 privileged teacher-student)。
- 确立了 teacher-student + recurrent distillation 范式:解决了"仿真有特权信息真机没有"的 sim2real 鸿沟,比 RMA(在线 adaptive module)更稳定、更易训。
- GRU 2 层 × 50 hidden 的极简配置证明:belief estimation 不需要大模型,关键是 supervised auxiliary loss(reconstruction)和 gate 机制。
局限
- 仍是基于步态先验(CPG):action 是 phase offset + residual,不是直接 torque/target——所以翻越、跳、parkour 等动态动作学不出来(这正是 Extreme Parkour、ANYmal Parkour 后续解决的方向)。
- height sample 表示限制了感知范围:208 维围绕 4 只脚的采样,看不到远处地形,无法做长距离规划。
- reward 公式全公开但权重需对齐:Sec.S7 给了 10 项的闭式表达与权重,但重量级权重(如 $r_\tau = 10^{-6}$)的量纲敏感,复现要照抄;
legged_gym仓库的 anymal.* 配置可作为参考实现。 - 2.5D elevation map 无法表达可变形/软地形:植被、雪仍靠 noise model 近似,遇到水洼/玻璃仍会失败。
- 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 的极限版)