一句话定位

CMU(Xuxin Cheng、Kexin Shi、Ananye Agarwal、Deepak Pathak)在一台低成本、驱动不精密的 Unitree A1 四足机器人上,只用一个前置深度相机(Intel RealSense D435,10Hz、抖动、有伪影)+ 一张端到端神经网络(本体感受 + 深度像素 → 12 个电机关节角命令),在仿真里纯 RL 训练后零样本迁到真机,就能跳过 2 倍自身身高(0.5m)的箱子、跨过 2 倍自身长度(0.8m)的沟、跑上 37° 倾斜坡道、还能只用前两条腿倒立行走(handstand)——全程不建高程图、不做显式规划。两个核心招数:一是基于内积(inner-product)的统一奖励,让”跳高/跳远/上坡/倒立”这些差异极大的行为从同一个奖励里自然涌现;二是双重蒸馏(dual distillation),把机器人的前进朝向(yaw heading)也当成要从深度图预测的量、而非人给的指令,从而能自主微调朝向去对准障碍物。它与同期的 robot-parkour-learning(Zhuang et al.)、ANYmal Parkour(Hoeller et al.)一起把”学习驱动的机器人跑酷”推到了新高度,且用的是最便宜的硬件。

背景与定位

论文出自 CMU,2023 年 9 月挂 arXiv(v1, 2309.14341),后中 ICRA 2024,并在 CoRL 2023 Generalist / Roboletics / Deployable Workshop 做 Oral。它要回答的问题很尖锐:跑酷(parkour)是一项容错率极低的运动——跳宽沟必须在离边缘还有距离时就攒够动量起跳,一步踏错就是灾难性失败,因此感知与控制必须精确且紧耦合。经典做法只能在”障碍物位置/尺寸/类型全部预先精确测量”的实验室场地里做优化控制(论文用波士顿动力 Atlas 的 Partners in Parkour 作反例 [1]),障碍一挪、场地一换就失效。

作者的立场是走人类那条路:跑酷高手和新手用的是同一套”传感器”,学会跑酷靠的不是升级感官、而是靠反复试错学会用同样不精密的感知与驱动完成高难动作。于是他们赌:在低成本机器人上也能这样学出跑酷。选 Unitree A1 正是因为低成本带来的新挑战——动作有噪声、有滞后,感知有伪影、有延迟、有抖动,如果先用带噪的感知建高程图、再喂给规划器,地图误差会把规划器带偏;即便动作算对了,在滞后、带噪的电机上执行也会崩。

这条工作线继承自 Pathak 组和相关团队的”egocentric vision + 端到端 RL + 教师-学生蒸馏”范式:直接前身是 Agarwal et al. 的 “Legged locomotion in challenging terrains using egocentric vision”(CoRL 2022,即论文里的 [2],贡献了 scandots 特权信息 + RMA 深度蒸馏架构);再往上是 rma-rapid-motor-adaptation(RMA [18],快速运动自适应)、learning-quadrupedal-locomotion-challenging-terrain(Lee et al. [20])、learning-to-walk-in-minutes-massively-parallel-rl(Rudin et al. [32],大规模并行 RL + 地形课程)。相比这些”感知行走”工作,本文把同一范式改造到跑酷,需要解决两个新难题:(1)机器人得能自己决定朝向(哪怕人类专家给方向也不够——极长/极高跳时几度朝向误差就失败);(2)跳、倒立等差异巨大的行为要塞进一个网络。相较同期两篇并行工作,本文强调”更简单”:不用 robot-parkour-learning(Zhuang et al. [47])那种”障碍物抽象(类型/宽/高/距离)作特权视觉 + 软硬约束课程”,而是用能泛化到任意几何的 scandots 作特权信息;也不像 ANYmal Parkour(Hoeller et al. [12])那样训练任务专用策略再用高层模块拼接、且仍依赖高程图。本条目归 locomotion-nav 类。

模型架构

这是一个 RL 运动策略(非 VLA,无 VLM):单个神经网络从原始深度 + 板载本体感受直接输出 12 个关节角命令。整体采用两阶段教师-学生结构(Fig. 2),策略骨干沿用 [2] 的 RMA 式设计(MLP + GRU),论文未逐层给出网络维度(在开源代码里)。

观测与动作

  • 输入:本体感受 x、scandots m(特权高度采样点,教师用)、目标朝向 d̂、行走标志 W(是否倒立,二值)、指令速度 v_cmd。
  • 动作:Unitree A1 的 12 个关节目标角度(连续),交给电机底层跟踪。base policy 以 50Hz 输出。
  • 动作头形式:连续关节位置目标(不是离散 token、不是 diffusion/flow),标准 model-free RL(PPO [33])策略。

Phase 1 教师(scandots actor):用 RL 学一个能访问特权信息(环境参数 + scandots)+ 来自航点(waypoints)的朝向的运动策略。用 ROA(Regularized Online Adaptation [9/10]) 训一个自适应模块,从观测历史里估计环境属性(把两阶段 student-teacher 自适应压成单相)。

Phase 2 学生(depth actor):把 scandots 蒸馏成”从板载深度 + 自主决定朝向”的可部署策略。

  • 外感(exteroception)编码:仿 [2]/RMA 架构,用 convnet-GRU 流水线替换 scandots 输入——卷积网吃深度图、GRU 提供时序记忆,产出 latent 喂给 base policy。用 DAgger [30] 训练,动作标签来自 Phase 1 教师,且用学生预测的动作去步进环境(on-policy 修正分布漂移)。actor 网络用 Phase 1 的拷贝初始化,减小直接用学生动作步进环境时的漂移。
  • 朝向(yaw heading)预测:深度编码网络不预训练。若直接把预测朝向当观测喂进去,会因分布漂移导致教师给出错误动作标签。为此提出 MTS(Mixture of Teacher and Student):学生观测到的朝向命令 obsθ = θ_pred(当 |θ_pred − d̂w| < 0.6 时)否则用 oracle d̂w——即预测朝向与真值差得太远时回退到真值,防止灾难性漂移。

倒立(handstand)分支:单独训练、且不带外感(no exteroception),仅靠本体感受,因此鲁棒到能在没有视觉的情况下用倒立姿态下楼梯并抵抗突然的落差。

数据

纯仿真训练、零样本迁真机,无真实世界数据采集。所有训练数据来自 Isaac Gym 仿真中程序化生成的地形,没有真机演示、没有离线数据集。

  • 仿真地形:作者构造倾斜坡道(tilted ramps)、沟(gaps)、栏(hurdles)、高台阶(high step)四类地形(Fig. 3),像 [2] 那样按难度递增排列。地形上撒航点(waypoints,图中红点),朝向真值 d̂w = (p − x)/‖p − x‖ 就由”下一个航点 p 与机器人位置 x”算出。
  • 自动地形课程(curriculum):机器人先初始化在简单关卡;若走完超过一半长度就升到更难关卡,若走的距离小于期望位移 v_cmd·T 的一半(T 为 episode 长度)就降级——以此解决 RL 的探索难题。
  • 评测地形:对每类地形,把”该地形按难度递增串成的障碍赛道”作为测试场,一次 spawn 256 个机器人在赛道起点,记录跌倒前的平均 x 位移(MXD)平均每步踩边次数(MEV),episode 30s
  • 朝向标签:Phase 1 用航点提供的 oracle 朝向作监督;Phase 2 由网络从深度图预测这些 oracle 朝向(BC/监督学习)。
  • sim-vs-real:训练 100% 在仿真;真机只做部署评测(无真实训练数据)。深度相机的伪影/延迟/抖动通过仿真侧的噪声与固定延迟建模来跨越 sim2real gap(见 Infra)。

训练方法

统一内积奖励(Unified inner-product reward,核心创新):不为每种障碍单独设计奖励,而是用一个通用原则让多样行为自然涌现。

  • 速度跟踪奖励(Eq. 2):r_tracking = min(⟨v, d̂w⟩, v_cmd),其中 v ∈ R² 是机器人世界坐标系速度,d̂w 是航点朝向,v_cmd 是期望速度。关键:[2] 在基座坐标系跟踪速度,本文改到世界坐标系——这是为了防止机器人钻奖励空子学到”绕着障碍物转”的偷懒行为。
  • 落脚清障惩罚(Eq. 3):r_clearance = −Σ cᵢ·M[pᵢ],cᵢ 为第 i 脚是否触地,M 是布尔函数(脚落点 pᵢ 落在距边缘 5cm 内为 1)。不加它,机器人为省能量会踩在障碍边缘,真机上极不稳定。
  • 风格化奖励(Eq. 4,用于倒立):r_stylized = W·(0.5·⟨v̂_fwd, ĉ⟩ + 0.5)²,v̂_fwd 是机身前向单位向量,ĉ 是期望方向单位向量,W 为二值开关。倒立时取 ĉ = [0, 0, −1]ᵀ(让机身前向指向下);训练时 W 在 {0,1} 随机采样,部署时遥控切换。
  • 另加 [4](Legs as Manipulator)的额外正则项。

训练流程

  1. Phase 1(RL from scandots):model-free RL(PPO [33])+ ROA 自适应,配自动地形课程,学出访问 scandots 与 oracle 朝向的教师策略。
  2. Phase 2(蒸馏外感 + 朝向):DAgger 蒸馏深度→动作(教师动作作标签、学生动作步进环境、actor 用 Phase 1 拷贝初始化);朝向用 BC 预测 + MTS 门控防漂移。
  3. 倒立策略单独训练、无外感。

关键超参 / 训练量(来自 GitHub README)

  • Phase 1 base policy:训 10–15k 迭代(3090 上 8–10 小时),建议至少 15k;delay 在 8k 迭代后加入
  • Phase 2 distillation policy:训 5–10k 迭代(3090 上 5–10 小时),建议至少 5k;训练命令带 --delay --use_camera --resume
  • 依赖:PyTorch 1.10.0 + CUDA 11.3;Isaac Gym(原用 Preview3);rsl_rl + legged_gym。

Infra(训练 / 推理工程)

  • 训练硬件单张 RTX 3090。整套可部署策略(Phase 1 + Phase 2)在一张 3090 上不到 20 小时训完(README 拆分为 base 8–10h + distillation 5–10h)。并行/精度:基于 Isaac Gym 的大规模并行仿真(256+ 环境),具体并行度/混合精度未逐项披露。
  • 机器人本体:Unitree A1,12 关节;站立时大腿关节(hip/thigh)高 26cm、机身长 40cm(“2 倍身高”= 0.5m 箱,“2 倍身长”= 0.8m 沟即以此为基准)。
  • 感知硬件:Intel RealSense D435 装在机器人头部,采图频率 10 ± 2 Hz
  • 板载计算与频率:深度骨干(10Hz)与 base policy(50Hz)都跑在 Jetson NX 上,经 UDP 通信;深度服务器采图、处理后把 latent 与目标朝向传给 base policy。
  • 图像预处理:裁掉左侧死像素,下采样到 58 × 87
  • 延迟工程(sim2real 关键):强制恒定深度延迟 0.08s——记录从收到深度图到发出 latent 的耗时 t_p,若 t_p < 0.08 就暂停 0.08 − t_p 再发,以此消除抖动;本体感受延迟固定 0.016s
  • 推理帧率:base policy 控制频率 50Hz,深度更新 10Hz

评测 benchmark

能力对照(Table 1,数值为障碍相对机器人身高/身长的倍数)

方法机器人ClimbGapRampHandstand
Rudin et al. [31]AnymalC1.10.75××
Hoeller et al. [12]*(并行)AnymalC21.5××
Zhuang et al. [47]*(并行)Unitree-A11.61.5××
Extreme Parkour(本文)Unitree-A12237°

低成本 A1 上做到 2× 身高 climb、2× 身长 gap,超过同期用 A1 的并行工作(1.5×/1.6×),且是唯一支持倾斜坡道与倒立的。

仿真消融(Table 2,256 机器人 / 30s;MXD↑ 归一化到 [0,1],MEV↓)

  • Total:Ours MXD 0.98±0.09 / MEV 0.03±0.18;NoInner 0.75±0.36 / 0.04±0.20;NoClear 0.99±0.06 / 0.08±0.32;Noisy 0.82±0.29 / 0.20±0.50。
  • 分地形 MXD:Hurdle Ours 0.99(NoInner 0.90 / NoClear 1.00 / Noisy 0.78);Step Ours 0.99(NoInner 骤降到 0.14,因为无内积奖励只会绕障,遇高台阶无路可绕,只能”撞—弹回—再撞”);Gap Ours 0.96(NoInner 0.86);Ramps Ours 1.00(NoInner 0.92 / Noisy 0.79)。
  • 解读:NoClear 的 MXD 与 Ours 相当甚至略高,但踩边率(MEV 0.08 vs 0.03)显著更差——它靠贴边省能量,真机上易踩空跌落;Noisy(模拟高程图 + 传感噪声)方差极大(MEV 0.20±0.50),靠腿撞地形感知才勉强有性能。
  • 基线定义:Noisy = 用深度+里程计融合的高程图并注入传感噪声(对标模块化建图方案);NoInner = 把内积奖励换成 [2] 的基座系速度跟踪;NoClear = 去掉落脚清障惩罚。

蒸馏消融(Table 3,全地形平均 MXD/MEV)

  • Both(学生始终观测预测 yaw)0.12±0.07;Mask(yaw 观测置零、靠动作监督学转向)0.05±0.07;Ours(MTS)0.92±0.19;Oracle(学生观测真值 yaw,性能上界)0.94±0.19。
  • 结论:MTS 蒸馏几乎逼平”喂真值 yaw”的上界(0.92 vs 0.94);Both/Mask 因噪声 yaw 导致大幅漂移、无法收敛到低 loss。

真机结果(Fig. 7,每地形每难度 5 试记成功率):本文在所有环境成功率比基线高 20–80%(在每类地形最难档上)。对比 NoDir(人用摇杆给方向,仅真机对比):NoDir 在跳/沟上当操作者需最后一刻微调 yaw 保持垂直于障碍时失败(突变方向对策略是 OOD),在倾斜坡道上尤其差(人难以做快速方向切换);NoClear 因贴边落脚常跌落。倒立策略在室内外多种地形鲁棒,并能仅靠本体感受走下楼梯。

涌现行为(定性):高跳(Fig. 4)时接近障碍先缩短步幅、对齐前后脚间距,后腿高扭矩高速蹬地上抛、前腿伸出扒住台面上沿再拉起身体、收后腿越过边界;长跳(Fig. 5)前后脚都贴到边缘最大化起跳距离、后腿延长发力时间、空中收腿使前后脚同落对岸——这些都是简单奖励下自然涌现、无法手工定义的。

创新点与影响

贡献:(1)双重蒸馏(dual distillation)——同时从深度图蒸馏出敏捷电机命令快速波动的朝向(yaw);(2)内积奖励设计原则 + 自动地形课程,用一条通用奖励解决”多样行为塞进一个网络”和 RL 探索难题,让跳高/跳远/上坡/倒立自然涌现;(3)用最便宜的 A1 做到高跳 2× 身高、长跳 2× 身长、37° 坡、倒立,直接从单个前置第一人称深度相机端到端出关节命令,刷新学习驱动跑酷的记录(Table 1)。

改变了什么:把”egocentric depth + 端到端 RL + 教师-学生蒸馏”这套感知行走范式成功推到高动态跑酷,证明低成本、不精密硬件靠学习可补偿,无需高程图与显式规划;“让策略自主决定朝向”和”内积统一奖励”成为后续敏捷四足/人形运动工作的常用思路。开源代码(基于 legged_gym + Isaac Gym)被广泛复用为四足跑酷 baseline。

论文自陈局限:讨论部分指出机器人虽是”移动专家”,但还不能操纵物体;把这套方法扩展到移动操作(mobile manipulation)是有前景的未来方向。(另:倒立策略不带视觉、依赖本体感受;朝向蒸馏依赖 MTS 门控阈值 0.6,属工程性设定。)

原始链接

一手源存档(sources/)