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

ANYmal Parkour:教四足机器人跑酷

David Hoeller, Nikita Rudin, Dhionis Sako, Marco Hutter(ETH Zurich;Hoeller 与 Rudin 兼 NVIDIA,两人同等贡献)。arXiv:2306.14874v1(2023 年 6 月 26 日,Under Review)。 项目页 · locomotionhierarchical RL

🧠 一句话心智模型:把跑酷这件事拆成「我会的几个基本动作」(走、跳、爬上、爬下、钻)+「看一眼周围环境」+「决定下一步用哪个动作、朝哪走」。三层各训一个网络,叠起来就能让四足机器人不打草稿、不上预先地图地连续跨越障碍场,速度可达 2 m/s

🎯 为什么重要:跑酷 = 把四足机器人逼到执行极限

跑酷不是简单的「走路 + 避障」。它有五个独特难点(论文 §I 列得非常清楚):

五大难点
  • 步态不再周期:不能用固定 trot 步态,要根据障碍切换跳/爬/钻
  • 状态估计漂移:高冲击力 + 多接触点让 IMU/里程计严重漂移
  • 视野被遮挡:自遮挡 + 相机视角有限,只能看到部分场景
  • 规划器要懂能力边界:必须推理环境、理解机器人运动学/动力学能力、知道低层控制器的极限,才能生成可行轨迹
  • 实时性苛刻:跳跃落地的那 0.1 秒,任何延迟都会摔

传统方法(MPC + 接触规划)需要预先知道环境离线算路径,且只能处理「静态稳定」动作——没法跑酷。论文之前最接近的工作 [32](Barkour)也需要人工设计路径 + 动捕系统。ANYmal Parkour 是第一个全自动解决方案:无专家演示、无离线计算、无预先地图。

起点 gap 1m 爬上 1m 钻 0.4m 终点 爬上 爬下 单一策略串起 5 种技能,速度达 2 m/s
图 1:跑酷场的典型一连串障碍——起跳、爬高、爬下、钻桌——全部由同一个高层导航策略调度。

💡 核心思想:三层分工 + 技能库 + 隐式感知

整个系统分成三个模块,每个都是神经网络,全部在仿真里训完再上真机:

① 感知模块 输入:6 个深度相机 + LiDAR 点云 → 3D 体素重建 (粗 + 细双分辨率) ② 技能库(5 个低层策略) 走(楼梯 + 斜坡 + 不规则地形) 跳(gap ≤ 1 m) 爬上(≤ 1 m 高箱) 爬下(≤ 1 m 高) 钻(≥ 0.4 m 通道) 位置式 PPO,50Hz ③ 导航模块 输入:感知隐向量 + 目标 输出:选哪个技能 + 局部目标 5Hz 高层决策 隐向量 l 技能可调用 激活信号 2.5D 高度图 输出:连续跨越障碍,速度达 2 m/s,自适应选路 不依赖专家演示、离线规划、预先地图;sim-to-real 部署在 ANYmal D
图 2:三模块架构。感知给「环境理解」,技能库给「能干什么」,导航给「现在干什么」。8 个网络协同工作。

🛠️ 工程关键设计

设计心智为什么必要
① 混合 PPO 输出策略头一分为二:高斯分布给「位置/朝向/时间命令」+ 类别分布给「选哪个技能」让一个网络同时做连续控制 + 离散选择,端到端可微
② 位置式而非速度式命令低层策略不跟踪速度,而是「在限定时间内到达目标位置 + 朝向」支持「停下来精准落点」这种跳跃/攀爬必需的动作
③ 多分辨率 3D 重建粗网(12.5cm 体素,4m 范围)+ 细网(6.25cm,2m),细网条件化在粗网上近场精细(落脚点)+ 远场全局(路径规划),同时省显存
④ 自回归反馈把上一帧的重建结果变换到当前帧拼到输入里让网络「记住」之前看过但已离开视野的部分(如桌子的顶面)
⑤ 对称性增强用机器人 X/Y 对称性把每个 transition 复制成 4 份解决「跨上策略只学会向前跨」的不对称问题,加速收敛
⑥ 域随机化桥接 sim-to-real低层策略训练时对 2.5D 高度图加噪声(点位噪声 + 各方向 ≤ 7.5 cm 偏移)让策略容忍感知重建与状态估计的偏差,弥合仿真-现实差距
🔮 直觉:为什么需要「位置 + 时间 + 朝向」三件套?
单给「目标位置」不够——机器人可能贪快走错路。单给「速度」更糟——没法精准落脚。论文的诀窍是「限时到达指定位置 + 朝向」:策略可以自由选择如何到达(步态、轨迹),但必须在时间到时落到目标点并朝指定方向。消融实验(Table S6)显示:同时去掉时间和朝向,成功率从 98.2% → 81.1%(单去时间 94.7%、单去朝向 89.5%)。

📊 结果:超越人类设计轨迹 + 真机部署

维度数字
跨越速度高达 2 m/s(任何子技能下)
跳跃间隙≤ 1 m
攀爬高度≤ 1 m(爬上 + 爬下各 1m)
钻通道高度≥ 0.4 m
导航成功率(vs 人工轨迹)98.2% / 96.3% / 97.6%(三个地形)vs 95.3% / 60.9% / 75.3%
关节使用HFE 电机偏转 > 160°,扭矩经常达到极限 85 N·m
训练规模IsaacGym 中 4096 并行智能体(策略训练 + 感知数据采集共用);感知模块的稠密 3D 卷积需在 4000 机器人 RL 批次下运行,约占 45 GB 显存;感知网络本身用 2000 条轨迹(每条 100 步)离监督训练
关键洞察:导航策略能自适应选择路径——当箱子高度从 0.75 m 升到 1.15 m 时,它从「直接爬」切换到「绕远路找矮箱子」(图 5)。这种「知道自己能干什么、不能干什么」的判断,是纯采样规划方法学不到的。

🌐 在领域中的位置

MPC + 接触规划(静态稳定、需预知环境) 单技能 RL(走路、跳跃各自为政) ANYmal Parkour(感知+技能库+导航)⭐ Extreme Parkour / Humanoid Parkour(极限 traversibility)

它是分层学习跑酷的开山之作。后续工作(如 Humanoid Parkour [Zhuang 2024]、Extreme Parkour [Cheng 2023])把这套思路推到更激进的地形和双足机器人上。属于 T-运动控制 线索中「技能库 + 高层调度」范式的代表。

❓ 常见误区

8 个网络会不会太重、延迟太大?

不会。感知模块异步运行在 NVIDIA Jetson Orin 上,不阻塞主回路;导航 5 Hz、运动 50 Hz,端到端延迟几毫秒。论文专门把 Realsense 相机的点云从 250 ms 延迟的「published point cloud」改成「直接订阅 depth image」(25 ms),关键降低 10 倍延迟。

低层技能是「位置到达」还是「速度跟踪」?

位置到达式:每个 episode 给定一个目标位置 + 朝向 + 时间,策略在时间到时要尽量接近目标。这比速度跟踪更适合跳跃/攀爬这类需要精准落点的动作。论文消融显示同时去掉朝向和时间输出,成功率掉到 81.1%。

感知模块的「3D 重建」和 elevation map 有何不同?

Elevation map 是 2.5D(只能表示地面高度),无法处理「桌子下面能钻过去」「箱子顶面要爬上去」这种 3D 结构。本文用体素 + 多分辨率,能重建任意 3D 几何,且能 extrapolate 看不见的部分(用边缘点推顶面高度)。

它怎么知道「这个箱子太高爬不上去」?

训练时爬上技能有难度课程(curriculum),最高训 1 m。部署时,导航策略通过感知模块的隐向量推断出箱子超过 1m 时大概率失败,于是选择「绕远路找矮箱子」。这是从数据里学到的「能力边界感知」,不是硬编码。