里程碑
机器人ANYmal
上真机
物理感知
实时
输入模态vision,proprioception

ANYmal-C:让四足机器人「看路」——视觉靠谱时加速,看不清时退回本体感觉

Takahiro Miki, Joonho Lee, Jemin Hwangbo, Lorenz Wellhausen, Vladlen Koltun, Marco Hutter(ETH Zurich + Intel + KAIST)。arXiv:2201.08117, 2022。 发在 Science Robotics。locomotionperceptionteacher-student

🧠 一句话心智模型:之前的四足机器人要么纯靠本体感觉(稳但慢——得脚先踩上去才知道地形),要么靠视觉感知(快但脆——雪、反光、植被一上来就崩)。这篇用一个注意力循环编码器把两者熔成一个「belief state」:它学会了什么时候信视觉、什么时候不信。结果:在阿尔卑斯山走完一小时徒步路线,零摔倒。

🎯 为什么重要:四足「野地运动」最后的瓶颈是感知

四足机器人的 sim-to-real 在 2019 年(同作者的 Hwangbo et al.)就被攻破了,但那时只用本体感觉(proprioception)——机器人不知道前面是什么,只能脚先迈出去,踩到障碍再修正。这意味着:

核心矛盾:
· 纯本体感觉:稳,但慢——遇到台阶、大障碍,得物理试错,常常卡住、滑倒;
· 纯视觉:快——可以提前抬腿规划,但视觉在野外几乎处处失败——雪(高反射)、植被(软的非刚体)、反光地面、灰尘、雾、透明表面、传感遮挡。一个深度异常值就可能让机器人直接摔。

所以 2022 年前的四足控制器,要么干脆不用视觉(慢但稳),要么用启发式规则规避视觉失效(脆)。这篇给出了一个原则性方案:让网络端到端学会「视觉可信度评估」——它不是显式规则,而是从大量「带噪声的视觉 + 真值地形」训练样本里隐式学出来的。

💡 核心思想:Belief State Encoder = 注意力 + 循环 + 双感知

本体感觉 关节角/速 IMU 历史等 外感知 高度采样 (elevation map) Belief State Encoder (GRU + attention gate) 学:此刻视觉多可信? 高可信 → 用视觉预测 低可信 → 退回本体感觉 循环结构 = 记忆过去 Belief 隐变量 控制 head(MLP) → 每个关节目标位置 关键:不输出「视觉可信度」这个标量,而是隐式把可信度熔进 belief state
图 1:Belief State Encoder 的作用。本体感觉和外感知(高度图)双输入 → 注意力循环编码器输出 belief → 控制 head 输出关节目标。「信不信视觉」由网络自己学。

训练用privileged learning(特权学习)两阶段:先在仿真里训一个 teacher,它能看到真值地形高度、摩擦系数等(真实机器人看不到的特权信息),所以能学到「最优行为」;再用模仿学习训一个 student,它只有真机上能拿到的带噪声观察(高度采样 + 本体感觉),目标是复现 teacher 的动作。Student 里那个 belief encoder 就这么被「逼」着学会从噪声观察里推断真值。

🛠️ 让控制器「野地可靠」的几个关键设计

设计心智为什么必要
① Elevation map 作抽象层不直接吃深度图,而是先把点云融合成以机器人为中心的高度图,控制器吃高度采样解耦传感器:LiDAR、主动立体相机都能接,换传感器不用重训;高度图也方便注入噪声
② 注意力门融合双模态GRU 循环核编码本体感觉+外感知特征+隐状态 → 注意力门 α 决定外感知特征有多少进入 belief(而非简单拼接)让网络动态决定视觉权重——不可信时门趋近 0 自动降权,不用手写规则
③ 循环结构编码器是 RNN,有时间记忆1) 信度更新需要时间(脚踩上去后才修正视觉误判);2) 即使传感器被完全遮挡,记忆也能撑一段时间
④ Teacher-Student 训练Teacher 看真值 → Student 蒸馏,只看带噪观察把「在带噪信号下推断真值」这个逆问题变成模仿学习,避免 student 学不出复杂感知推理
⑤ 大规模噪声注入训练时模拟雪、反光、遮挡、漂移、缺失、传感失效等belief encoder 只在见过的失效模式下鲁棒——要覆盖野外,就得在仿真里全打过
🔮 直觉:为什么要 belief state 而不是「输出一个视觉可信度标量」?
显式标量看似直观,但它不够细粒度——「可信」是空间和时间相关的:可能左前方可信、右前方不可信;可能现在可信、刚才不可信。Belief state 是一个高维隐变量,网络自由地把「这里此刻能不能信」编码进不同维度。论文 Fig. 5 可视化了 belief:遇到不靠谱地形时它真的在内部「重写」对地形高度的估计。这种隐式融合比任何 hand-coded 规则都更精细。

📊 结果:阿尔卑斯山 1 小时徒步,零摔倒

维度数字
Etzel 山徒步2.2 km,海拔上升 120 m,坡度最大 38%;登顶 31 分钟(官方人步 35 分钟),全程 78 分钟(徒步规划器估 76 分钟——「difficult」级)
摔倒次数0(全程所有部署,包括雪、植被、地下、城市)
台阶可翻越高度可靠到 30.5 cm(baseline 20 cm 就开始掉);32 cm 以上自动犹豫——学到这是物理上限
平地行走速度1.2 m/s(baseline 0.6 m/s,翻倍)
转向角速度3 rad/s vs baseline 0.6 rad/s( 差距)
跨障碍速度无明显减速通过 20 cm 障碍,baseline 直接卡住
DARPA SubT 挑战赛4 台 ANYmal 在隧道/城市/洞穴三类环境累计探索 1700m+,零摔倒;Team Cerberus 用此控制器夺得决赛冠军
传感器无关性LiDAR 和主动立体相机都验证过,无重训无微调
关键洞察:这篇真正的贡献不是「在某个 benchmark 上刷点」,而是展示了一种处理感知失效的通用范式——把「传感可信度估计」当作隐变量,端到端学出来。这一思路在后续被反复套用:隐式可信度 > 显式规则。「视觉失效时优雅降级到本体感觉」这个特性,在工业级部署(DARPA SubT 夺冠)里被证明是真的能救命——而不是论文里的漂亮话。

论文也坦诚了局限:elevation map 仍是 2.5D 表示,无法表达悬空物体(树枝、低天花板会被误认为高障碍);不能区分软硬材质(植被被当成刚体障碍);依赖经典位姿估计模块,没和策略联合训练。后续工作(如直接吃原始点云、学习显式不确定性)顺着这些缺口继续推进。

🌐 在领域中的位置

Hwangbo 2019(sim-to-real 四足,纯本体感觉) Lee 2020(粗糙地形,仍纯本体感觉) Miki 2022(ANYmal-C:视觉 + 本体融合,野外可靠)⭐ ANYmal Parkour(2023)/ extreme parkour(2024) 人形感知运动(digit / H1 / G1 loco-manipulation)

这是「四足机器人真正能在野外工作」的标志性节点。它和 OpenAI Dactyl(2018,同年 sim-to-real 在灵巧手上的应用)一起把「domain randomization + privileged learning」的配方推广到几乎所有机器人域。后续的 ANYmal Parkour(2023)、Extreme Parkour(2023)把「视觉 + RL」推到更极端;人形机器人(Perceptive Humanoid, H1 loco-manip)也继承了 belief encoder 这条思路。关联:OpenAI Dactyl(同年的 sim-to-real 奠基)。

❓ 常见误区

它是直接吃深度图吗?

不是。控制器吃的是「高度采样」——从 elevation map 里提取的一组地形高度点。Elevation map 是中间层,把 LiDAR 或立体相机的点云融合而成。这种抽象让方法传感器无关,LiDAR / 主动立体相机都可以接,不用重训。

「零摔倒」是不是只在好天气?

不是。论文 Fig. 1 / Fig. 3 明确展示了在雪、植被、地下、雾、反光地面、水流、低光、灰尘等多种感知恶劣条件下的部署,以及这些条件的组合(如雪覆台阶)。DARPA SubT 挑战赛(灰尘、烟雾、水汽、地下)四台 ANYmal 累计 1700m+ 也是零摔倒。零摔倒是在所有这些条件下累计的。

teacher-student 不就是「知识蒸馏」吗?

思路类似,但细节不同:teacher 学的是从特权信息(真值地形)到最优动作;student 学的是从有限观察(噪声高度采样 + 本体感觉)到 teacher 的动作。这个差距逼着 student 的 belief encoder 学会「从噪声反推真值」——这是普通的端到端 RL 学不出来的,因为 reward 只看动作不看推断质量。

为什么不用显式不确定性估计?

论文最后明确讨论了这个未来方向:当前策略隐式使用不确定性(融合进 belief)。显式不确定性输出会让策略在悬崖边、踏脚石等部分可观察场景下「更谨慎」(比如用脚去试探)。作者承认这是当前方法的局限之一。