Q1:ANYmal-C 能在真机上工作吗?
能。Science Robotics 论文的核心就是真机野外部署:地下洞穴与隧道、瑞士 Etzel 山、雪地。
零 fine-tune 部署,靠 teacher-student 蒸馏 + domain randomization。📎
论文:Miki, Lee, Hwangbo, Wellhausen, Koltun, Hutter(ETH Zürich RSL;Hwangbo 时在 KAIST;Koltun 在 Intel Intelligent Systems Lab). Learning robust perceptive locomotion for legged robots in the wild. Science Robotics Vol.7 Issue 60, 2022 (eabk2822). arXiv:2201.08117. 🌐 · 真机平台:ANYmal C 四足。
让四足机器人靠眼睛和身体感觉,在真正的野外稳健行走。
雪地、瓦砾、楼梯、草地都能以接近人步行的速度通过。
ANYmal-C 之于机器人,就像老手走夜路。
眼睛看得见时信眼睛,看不见时自动退化到只靠手脚触觉。
要解决的问题:让四足机器人在真正的野外稳健行走。
2022 年前的工作分两类。
要么只靠身体感觉——踩到才知道地面是什么。
速度被限。
要么用视觉。
但深度传感器在反光、透明、植被、阳光直射下经常失效。📎
核心洞察:视觉不可靠是常态而非例外。
控制器必须学会"什么时候信视觉、什么时候不信"。📎
ANYmal-C 的转身:挂一个 belief encoder。
它把视觉和身体感觉融合。
关键是个 attention gate。
它学会在视觉被噪声污染时自动关掉视觉信号。
训练用 teacher-student 蒸馏。
teacher 看特权信息:接触、摩擦、外力。
student 只看真机能看到的。
方法核心(大白话):训两个网络,一前一后。
teacher 是个"作弊者",在仿真里偷看真机测不到的物理量。
脚踩在哪、地面多滑、有什么外力推它——它全看得到。
靠这份小抄学会最稳的走法。
student 只看真机能给的:自己的关节角加一份地面高度图。
它偷看不到,于是去模仿 teacher 的动作,把本事抄过来。
为什么不直接从头训 student?
因为 student 手上是"半盲"问题。
真机传感器给的是间接、带噪、还不全的线索。
从零用强化学习学,又慢又不稳。
先让 teacher 学会走,再把本事蒸馏给 student。
这就绕开了"半盲从零学"的难点。
student 还多一个旋钮,就是 attention gate。
它学会在相机不可信时把相机信号调小。
调到只剩身体感觉。
玻璃、雪、植被糊住相机时,机器人靠身体感觉继续走,不会摔。
"信不信眼睛"是学出来的,逐刻渐变,不是硬开关。
你会看到:ANYmal C 真机零 fine-tune。
下到地下洞穴与隧道课程,爬 17 cm 楼梯与 20 cm 平台。
过雪地、泥地、草地,登顶瑞士 Etzel 山——比官方人步参考时间还快。
两种传感器(激光雷达 / 深度相机)能让同一 policy 切换。📎
但它学不会什么:它的动作建立在步态先验(CPG)上。
每条腿踩着一个固定节奏的步子,policy 只在节奏上做微调。
稳健行走、过台阶、爬坡它都行。
但跳跃、倒立、飞跨大间隙这种剧烈动态动作,这套节奏框架撑不住。
这个缺口要靠后续工作补。
Extreme Parkour 去掉步态先验,用纯强化学习学极限动作,补上了它。📎
三阶段 pipeline。
Stage 1:仿真里训 teacher,看特权信息。
Stage 2:仿真里训 student,蒸馏 teacher。
Stage 3:student 零样本部署 ANYmal C,不 fine-tune。📎
为什么不直接训 student?POMDP 下 RNN 从零学慢且不稳。
两阶段把"学最优行为"和"学估计隐藏状态"解耦。
Teacher 看 3 类输入:
本体感觉——command、姿态、速度、关节位置与速度(含短历史)、CPG phase。
视觉——208 维 height samples,每只脚周围 5 个半径环采样的高度向量。
特权状态(只有 teacher 看,50 维)——接触、摩擦、外力、airtime 等。📎
Student 看什么:本体感觉 + 带参数化噪声的 height samples,去掉所有特权。
关键设计·attention-gated GRU belief encoder。📎
belief = GRU(本体感觉, 视觉 latent, 隐状态)。
gate 输出 $\alpha = \sigma(\text{MLP}(\text{belief}))$,96 维 attention。
过滤后视觉 = 视觉 latent ⊙ α。
最终 belief = MLP(belief) + 过滤后视觉。
GRU 用 2 层 × 50 hidden,不堆大。
gate 学"何时信视觉"——视觉被噪声污染时 α 趋 0,policy 自动退化到纯本体感觉。
这就是 graceful degradation 的机制来源。
两个监督 loss:DAgger 式采数据(用 student rollout),同时最小化两个 loss:📎
行为克隆 loss:$\|a_\text{student} - a_\text{teacher}\|^2$。
重建 loss:强制 belief 能重建真实地形与特权信息。
常见误区(先抛一个,完整版见末尾):"belief encoder 越大越好"。
论文用 2 层 × 50 hidden 极简配置就够,关键是 reconstruction loss + gate 机制。
堆大反而过拟合。
仿真器:RaiSim。teacher 阶段并行 1000 envs。student 阶段并行 300 envs。📎
Action 设计(Sec.S5,CPG-inspired):每条腿一个 phase 偏移 + 12 个残差关节目标。
base 频率固定。
nominal foot trajectory 用解析 IK 转成 nominal joint target,policy 输出在 nominal 上加 residual。
这是为了让 RL 不必从零学步态——也是它学不出跳跃与 parkour 的根本原因。
Teacher 网络(Sec.S6):3 个 MLP 分支。
exteroceptive encoder 把 208 维 height samples 压成 24×4=96 维 latent。
privileged encoder 把 50 维特权压成 latent。
main MLP 输入(本体感觉, 视觉 latent, 特权 latent)输出 action。
hidden layers {256, 160, 128},LeakyReLU。
PPO + Gaussian policy 训练。
Reward(Sec.S7):$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}$。
command-following 分段:$v_\text{des} \cdot v > |v_\text{des}|$ 时给 1.0,否则高斯衰减。
其余项惩罚正交速度、姿态、joint torque/velocity/acceleration、foot slip、shank/knee 碰撞。
Sec.S7 给出全部 10 项的闭式公式与权重(量纲敏感,如 $r_\tau = 10^{-6}$ 需照抄);legged_gym 仓库的 anymal.* 配置可作为参考实现。📎
两套 curriculum(Sec.4):
terrain curriculum——particle filter 在线调地形参数(坡度、台阶高度),始终"略难但可达成"。
disturbance/reward curriculum——domain randomization 与部分 reward 项 magnitude 乘以 $c_{k+1} = (c_k)^d$,$0 < d < 1$。
注意:论文未提"adversarial motion training"或对抗式扰动;扰动是 random force/torque,不是 learned adversary。📎
Height sample noise model(Sec.4):3 类 mapping condition 按 60/30/10 比例每 episode 选。
方差由参数 $z \in \mathbb{R}^{8\times 4}$ 控制,本身也走 curriculum。
还按 cell 加额外 offset 模拟植被/雪。
部署(Sec.S5):
传感器——2 个 Robosense Bpearl dome 激光雷达,或 4 个 Intel RealSense D435 深度相机。
同一 policy 不改一行代码、不 fine-tune 就能切换。
elevation map——robot-centric 2.5D,20 Hz 更新,GPU 加速(Fankhauser 风格 + drift compensation + ray casting)。
policy 50 Hz,从最新 elevation map 采样 height。
PyTorch 训练,部署在机载。
实验(Sec.3):
地下环境——DARPA Subterranean Challenge 的 tunnel / urban / cave 三类课程(team Cerberus 部署),4 台 ANYmal 累计探索 >1700 m,零失败。📎
楼梯与平台——17 cm 高 × 29 cm 深的楼梯、20 cm 高的平台/方块。proprioception-only baseline(Lee 2020)从 20 cm 步高开始频繁失败(前腿卡住),而本文 controller 可靠跨到 30.5 cm 步高;遮蔽传感器时仍能走。📎
平地行走——本文 controller 1.2 m/s,baseline 0.6 m/s(论文未给雪/泥/草地混合野外的速度区间,仅此平地数字)。📎
瑞士 Etzel 山远足小径——2.2 km 长、120 m 爬升、最大坡度 38%,ANYmal 用 31 分钟登顶,快于官方标识的人类参考时间 35 分钟。📎
局限:
翻越、跳、parkour 等动态动作学不出来——这正是 Extreme Parkour、ANYmal-D Parkour 后续解决的方向。📎
legged_gym 仓库的 anymal.* 配置可作为参考实现。图谱定位:ANYmal-C 是 T01(sim2real)的感知分水岭,也是 T12(agile locomotion)的感知起点。📎
建立在 privileged learning [Chen et al. 2020]、Lee et al. 2020(自适应 curriculum + TCN)、Hwangbo et al. 2019(actuator network)之上。
与 RMA [Kumar et al. 2021] 是同期对照——RMA 走"在线 adaptation module"路线,ANYmal-C 走"teacher-student + recurrent distillation"路线。🌐
直接引出:
belief encoder 的扩散:用 attention gate 显式控制"信不信视觉",把 sensor fusion 从启发式变成可端到端学的模块。
后续 humanoid RL(OmniH2O 的 privileged critic、HumanPlus 的 hit-refine)都借鉴了这个思路。[未确认]
GRU 2×50 极简配置的证明:belief estimation 不需要大模型,关键是 supervised auxiliary loss(reconstruction)+ gate 机制。
Open problems:
"用对抗式扰动训练 robustness" —— 误读。
论文未提 adversarial motion training;扰动是 random force/torque,来自 domain randomization。
稳定性来自 domain randomization + curriculum + gate 机制,不是 learned adversary。📎
"belief encoder 越大越好" —— 错。
论文用 GRU 2 层 × 50 hidden 的极简配置就够。
关键是 reconstruction loss + gate 机制;堆大 hidden 反而过拟合。📎
"student 直接在真机数据上 fine-tune" —— 错。
student 在仿真里蒸馏 teacher,真机零 fine-tune 部署。
sim2real 靠 domain randomization + height sample noise model + gate 的 graceful degradation。
"去掉 reconstruction loss 也行" —— 错。
消融(Sec.S9)证明 reconstruction loss 是 belief 收敛的关键。
没有它 belief 学不到真实地形与特权的表示,gate 也会失效。
"ANYmal-C 能学跳跃和 parkour" —— 错。
action 是 CPG phase offset + residual,动态动作学不出来。
极限动作要等去掉 CPG 的 Extreme Parkour、ANYmal Parkour 才解决。📎
ANYmal-C 训了 teacher 和 student 两个网络。teacher 在仿真里能"偷看"到哪些 student 看不到的量?为什么真机上的 student 拿不到这些?
💡 参考答案
用"老手走夜路"或你自己举的类比,用自己的话解释:belief encoder 里的 gate 是怎么决定"现在该不该信眼睛"的?为什么是一个渐变的旋钮,而不是直接开关切掉视觉?
💡 参考答案
为什么不直接让 student 在真机传感器上从头学,而要先训一个 teacher、再让 student 去模仿?直接从头学卡在哪?
💡 参考答案
相机被雪、玻璃、植被糊住时,ANYmal-C 靠什么继续走而不摔?这个"退化"是怎么实现的?
💡 参考答案
ANYmal-C 的动作建立在步态先验(CPG)上。这个设计让它学不到什么能力?后续哪条工作路线补上了这个缺口?
💡 参考答案
能。Science Robotics 论文的核心就是真机野外部署:地下洞穴与隧道、瑞士 Etzel 山、雪地。
零 fine-tune 部署,靠 teacher-student 蒸馏 + domain randomization。📎
belief estimation 只需估"局部地形 + 摩擦 + 外力"这些低维隐藏量。
大 hidden 反而过拟合,且推理慢。
关键是 supervised reconstruction loss 提供训练信号,不是模型容量。📎
两者都解决"真机拿不到特权信息"的问题,机制不同。
ANYmal-C:teacher-student 蒸馏 + recurrent belief encoder(离线学估计)。
RMA:在线 adaptation module(运行时推断)。
ANYmal-C 更稳定易训,RMA 适应更实时——后续工作常把两者组合。📎
先查三处:(1) teacher 是不是看全了 50 维特权信息(contact、friction、external force、airtime);(2) student 有没有训 reconstruction loss(这是 belief 收敛的关键);(3) height sample noise model 有没有按 60/30/10 三种 condition 走 curriculum。📎