Q1:Extreme Parkour 能在真机上工作吗?
能。Unitree A1 真机跳上 0.5 m box、跳过 0.8 m gap、倒立走。
靠 DR + ROA + 强制 latency 的工程化 sim-real 路线。📎
论文:Cheng, Shi, Agarwal, Pathak. Extreme Parkour with Legged Robots. ICLR 2024(2023.09 arXiv 首发). arXiv:2309.14341. 🌐 · 真机平台:Unitree A1 四足。
让小四足机器人学会跳两倍身高、跨两倍体长、倒立走。
秘诀是:一个 policy 全包。
方向机器人自己判断。
Extreme Parkour 之于机器人,就像跑酷运动员之于常人。
一个身体什么极限动作都干,方向感也靠身体自己。
要解决的问题:让一台只配一颗深度相机的小四足学会接近极限的跑酷。
跳 2× 身高、跨 2× 体长、跑倾斜坡、倒立走。
全部一个 policy 输出。📎
老办法:ETH 路线把感知拆成多相机加激光雷达。
融合成 elevation map。
policy 拆成多个 specialist 切换。
比如 jump、climb、crouch、agile。
感知精确但昂贵,skill 是离散切换的。
Extreme Parkour 的转身:单相机、单一 policy。
不依赖 elevation map。
不做障碍类型 abstraction。
多极限 skill 从一个 reward 涌现。📎
方向机器人自己从深度图推断。
跳倾斜坡这种空中急转向,人遥控根本来不及。
方法核心(大白话):一个 policy、一个 reward,极限动作自己涌现。
reward 是一条打分规则,用"内积"写成。
大白话说就是:你的运动方向跟目标方向有多对齐。
这条规则很通用,同一套打分能同时奖励跳得高、跨得远、倒立走。
不同地形逼出不同的极限动作。
不用为每个动作单独训一个 specialist。
方向由机器人自己定,不是人遥控。
一个小网络读深度相机,预测该往哪走。
跳倾斜坡时空中急转向,人按遥控器反应不过来,必须让机器人自己判。
训练分两阶段。
teacher 在仿真里用特权信息学动作,特权信息就是真实地形点云。
student 只看真机的深度相机。
它靠模仿 teacher 的动作、并预测方向来学。
最后上真机的是 student。
你会看到:Unitree A1 跳上 0.5 m 高的 box。
约 hip 高的 2 倍。
跳过 0.8 m 宽 gap,前后足距 2 倍。
能从四足无缝切换到前二足倒立。
甚至无视觉下倒立下楼梯。
单显卡训不到 20 小时,全开源。📎
两阶段 teacher-student 框架。
Phase 1:teacher 在仿真里用 RL(PPO)训练,看特权信息。
Phase 2:student 通过蒸馏学 action 和 heading(朝向)。
这就是 dual distillation——同时蒸馏动作和方向。📎
创新点不在框架本身(已有套路)。
在 reward 设计和 dual distillation。
unified reward·三件事(这是论文真正的方法贡献):
$r_\text{tracking} = \min(\langle v, \hat{d}_w\rangle, v_\text{cmd})$。
v 是世界系速度。
d_hat_w 是当前位置指向下一 waypoint 的单位向量。
以往在 base frame 跟踪。
policy 会钻空子——"转身绕过障碍"也算完成。
世界系内积直接惩罚绕路。
$r_\text{clearance} = -\frac{1}{4}\sum_{i=0}^{4} c_i \cdot M[p_i]$。
c_i 是第 i 只脚是否触地。
M 是离地形边缘 5 cm 内为 1 的指示函数。
这一项让脚避开边缘,是 sim-real 关键。
形如 W · (0.5·⟨v_fwd_hat, c_hat⟩ + 0.5)^2。
W 是 0/1 开关,训练时随机、部署时遥控。
这个 trick 让一个 policy 既会四足走又会倒立。
dual distillation:
action 蒸馏用 DAgger。
student 自己步进环境。
teacher 在 student 走出的轨迹上给 action 标签。
heading 蒸馏用 BC + MTS(Mixture of Teacher and Student)。📎
$\text{obs}_\theta = \begin{cases} \theta_\text{pred} & \text{若 } |\theta_\text{pred} - \hat{d}_w| < 0.6 \\ \hat{d}_w & \text{否则}\end{cases}$。
意思是 student 还没学好时别让它带歪 teacher 标签。
常见误区(先抛一个,完整版见末尾):"vision encoder 用 reconstruction loss 预测 teacher 的 heightmap"。
PDF 正文无此说法。
Phase 2 只有 DAgger(action)+ BC(heading),没有任何重建 loss。
skill 多样性靠 Phase 1 unified inner-product reward + curriculum 涌现。
术语·ROA:ROA = Regularized Online Adaptation。
由 Fu / Cheng / Pathak 等人在 Deep Whole-Body Control 线提出(本文 ref [9][10])。
它与 RMA(ref [18],Kumar 等)同属 Pathak 组,共享"用历史编码器估环境"的 idea。
但训练范式不同。
ROA 是单阶段,编码器与策略一起用 RL 联训。
RMA 是两阶段,先 teacher RL,再监督学 φ。
本文用 ROA 做 adaptation module,从 observation history 估环境参数。📎
unified reward 的精确公式(Eq. 2–4):📎
tracking:$r_\text{tracking} = \min(\langle v, \hat{d}_w\rangle, v_\text{cmd})$,世界系内积。
clearance:$r_\text{clearance} = -\frac{1}{4}\sum_{i=0}^{4} c_i \cdot M[p_i]$,5 cm 边缘带。
stylized:$r_\text{stylized} = W (0.5 \langle \hat{v}_\text{fwd}, \hat{c}\rangle + 0.5)^2$,W 是 handstand 开关。
inner-product 形式让所有 reward 共用一套设计原则——论文称 universal reward design principle。
Phase 1 teacher 输入:
proprioception x + scandots m(密集扫描点云,[2] 提出的特权地形表示,不是 elevation map 也不是 heightmap)+ waypoint 给的 oracle heading d_hat_w + walking flag W + commanded speed v_cmd。
teacher 用 Regularized Online Adaptation(ROA)训 adaptation module,从 observation history 估环境参数。
ROA 出自 Fu / Cheng / Pathak 的 DWC 线(ref [9][10]),与 RMA(ref [18])同组但不同范式:ROA 单阶段 RL 联训,RMA 两阶段 teacher-φ 监督。📎
terrain curriculum:tilted ramps / gaps / hurdles / high step 按难度递增排列。
机器人走过一半长度升难度,走不到 v_cmd · T 就降。
这是 RL 探索的关键,没它学不会高跳。
Phase 2 dual distillation 细节:
action 走 DAgger——actor 从 Phase 1 deepcopy 初始化减小 distribution drift。
heading 走 BC + MTS——student 预测 yaw 角 theta_pred。
与 oracle 偏离 < 0.6 rad 用预测,否则用 oracle。
两个深度 backbone 都没有预训练,MTS 是稳定化 trick。
部署细节(决定 sim-real):📎
A1:12 关节,站立 hip joint 高 26 cm,body 长 40 cm。
Intel RealSense D435 头部,10±2 Hz 采深度。
计算:Jetson NX,depth backbone 10 Hz、base policy 50 Hz,UDP 通信。
强制 latency:深度 0.08 s,proprioception 0.016 s——消除 jitter 让 policy 看到的输入分布稳定。
深度预处理:裁掉左侧死像素、downsample 到 58×87。
训练成本:单 RTX 3090,<20 小时。基于 legged_gym / Isaac Gym。
实验·精确数字:
high jump(Fig. 4):A1 跳上 0.5 m 高 gym box(hip 高 26 cm,约 2× hip height)。
对比:人类跳高纪录 2.45 m ≈ 2.5× 人类 hip height。
long jump(Fig. 5):跳过 0.8 m 宽 gap(前后足距约 2×)。
handstand(Fig. 6):四足↔前二足无缝切换。
能草地缓坡 handstand walk,甚至无视觉下 handstand 下楼梯。📎
baseline 对比(Tab. 2/3):📎
NoInner(去内积 reward,用 base-frame 跟踪):hurdle 学到"绕过去",step 上 0.14 vs 0.99 MXD。
NoClear(去 edge penalty):仿真 MXD 略高 0.99 vs 0.98,但 edge violation 高约 3×(Total MEV 0.08 vs 0.03),真机不稳。
Noisy(用 noisy elevation map 替代 scandots):方差极大,靠腿碰撞感知地形。
蒸馏 baseline:MTS 接近 Oracle 上限;"Both"(一直看预测)和"Mask"(heading mask 为 0)都因 drift 训不出。
真机:5 trials/terrain,最难关比 NoClear / NoDir baseline 高 20–80% 成功率。
局限:
W 是 0/1 开关,扩展到更多离散 skill 要重设计 reward。跳大间隙时接触瞬间的 sim 偏差仍会被运动学放大。真正突破要等 ASAP。
图谱定位:Extreme Parkour 是 T12(agile locomotion)的转折 2 / 分水岭。📎
建立在 Learning to Walk in Minutes [Rudin et al. 2021](legged_gym 基座)、Fu / Cheng / Pathak 的 DWC 线 [9][10](ROA = Regularized Online Adaptation 来源)、[2](scandots + teacher-student vision 框架)、DAgger [Ross et al. 2011] 之上。RMA [18] 是同组更早的两阶段前作。
直接引出:
dual distillation 范式扩散:后续 parkour 工作几乎都继承了"teacher 看特权 + student 蒸馏"骨架。
只是把"单 policy unified"换成"多 specialist 蒸馏"。
关键贡献的再定位:📎
Open problems:
W 是 0/1 二元开关,扩展到 N 个离散 skill 需重设计 reward 形式。ASAP 的 residual delta 路线是新方向。
"vision encoder 用 reconstruction loss 预测 teacher 的 heightmap" —— 错。
PDF 正文 Phase 2 蒸馏只有 DAgger(action)+ BC(heading),无任何重建 loss。
skill 多样性靠 Phase 1 unified inner-product reward + curriculum 涌现。📎
"ROA 就是 RMA" —— 不准确。
ROA = Regularized Online Adaptation,出自 Fu / Cheng / Pathak 的 DWC 线(本文 ref [9][10])。
它与 RMA(ref [18],Kumar 等)同属 Pathak 组、共享"历史编码器估环境"的 idea,但训练范式不同。
ROA 单阶段(编码器与策略一起 RL 联训),RMA 两阶段(先 teacher RL 再监督学 φ)。
本文的"两阶段"指 Phase 1 teacher RL / Phase 2 student 蒸馏,与 RMA/ROA 本身的阶段数是两件事。
"teacher 看的是 heightmap" —— 错。
teacher 看的是 scandots,[2] 提出的稀疏点云特权表示。
论文明确对比"不用 elevation map"是卖点之一。
"有 Implicit Alert 隐式技能开关" —— 错。
skill 切换的机制是显式 walking flag W ∈ {0,1}(handstand 开关),由遥控器控制。
不存在 implicit alert。
"去掉 feet clearance penalty 不影响真机" —— 错。
NoClear baseline 仿真 MXD 略高但 edge violation 高约 3×(Total MEV 0.08 vs 0.03),真机不稳。
clearance penalty 是 sim-real 关键,不是奖励 shaping 的可选项。📎
Extreme Parkour 用一个 policy、一个 reward 就学会跳、跨、倒立。这个 reward 是怎么设计的,能让同一套打分同时奖励完全不同的极限动作?
💡 参考答案
跳倾斜坡时机器人在空中要急转向。为什么方向不能由人遥控给,必须让机器人自己判断?
💡 参考答案
Extreme Parkour 训练分两阶段:teacher 在仿真里,student 上真机。teacher 能看到什么 student 看不到的"特权信息"?为什么不直接让 student 从头学?
💡 参考答案
用"跑酷运动员"或你自己举的类比,用自己的话解释:Extreme Parkour 是怎么用"一个 policy + 一个 reward"同时学会多个极限动作的?
💡 参考答案
ETH 路线为不同动作各训一个 specialist 再切换;Extreme Parkour 只用一个 policy。单 policy 是怎么让跳、跨、倒立都出现的?相比 specialist 切换,这条路省了什么?
💡 参考答案
能。Unitree A1 真机跳上 0.5 m box、跳过 0.8 m gap、倒立走。
靠 DR + ROA + 强制 latency 的工程化 sim-real 路线。📎
所有 reward 项都用 inner-product 形式(universal reward design principle)。
tracking 用世界系内积防绕路;clearance 惩罚贴边走;stylized 用内积做倒立姿态。
skill 的多样性靠 curriculum 涌现,靠 W 开关切步态。📎
ANYmal-C 是 T01 感知分水岭(CPG + belief encoder,稳走但学不出极限动作)。
Extreme Parkour 去掉 CPG,纯 RL 学极限动作。
两者是 T12 敏捷线索的前后节点:ANYmal-C 是感知起点,Extreme Parkour 是敏捷分水岭。
先查三处:(1) reward 是不是世界系内积(不是 base-frame);(2) terrain curriculum 有没有"过半长度升、不到 v_cmd·T 降"的 schedule;(3) 强制 latency 在部署 pipeline 里有没有补齐(深度 0.08 s、proprioception 0.016 s)。📎