枢纽
机器人Unitree G1
上真机
物理感知
实时
输入模态vision

Perceptive Humanoid Parkour (PHP):用 motion matching 把零散的人体动作「编织」成长跑路线

Zhen Wu, Xiaoyu Huang, Lujie Yang 等(Amazon FAR + UC Berkeley + CMU + Stanford)。arXiv:2602.15827, 2026。 项目页 · humanoid parkourmotion matching 线索 T06teacher-student

🧠 一句话心智模型:人形 parkour 的根本痛点是训练数据稀疏——每个高动态动作(爬墙、跳马、翻滚)只有几秒、一两次捕捉。解决思路:借游戏工业的 motion matching,把零散的原子技能用「最近邻搜索」缝成任意长度的连贯轨迹,再拿这些轨迹训一个能看 depth 的学生策略。结果:Unitree G1 学会爬上 1.25 m(= 96% 身高)的高墙、0.8 秒内跨过 2 m 障碍、连续 60 秒 parkour 跑酷。

🎯 为什么重要:人形 parkour 一直卡在「数据稀疏」

四足 parkour 已经能在复杂障碍场上跑(ANYmal Parkour、Extreme Parkour),但把同样思路搬到人形上一路碰壁。根本原因不是算力,而是训练数据

三重困难叠加
  • 数据稀疏:人体高速、接触丰富的动作(爬墙、跳马、空翻)需要专业捕捉场地和运动员,每个动作往往只有 1-2 次演示,每次几秒
  • 技能异质:不同动作(走、跑、爬、跳)在状态空间里是互不相交的小岛,怎么从一个动作过渡到另一个是开放问题。
  • RL 探索困难:高动态动作依赖几步内的爆发性扭矩,RL 难以从随机探索中发现这种解。

PHP 的回答分两层:
数据层:用 motion matching 在稀疏原子技能间生成大量过渡,把「孤岛」连成「路网」;
训练层:先训多个 motion-tracking 教师(用特权观测),再蒸馏成单个 depth 学生,蒸馏时混入 RL 信号(不只是 DAgger)。

💡 核心思想:把游戏工业的 motion matching 搬到机器人

Motion matching 是游戏工业(Gears of War、For Honor)用了十几年的成熟技术:每一帧从动作库里找一段最匹配当前姿态 + 期望未来轨迹的动作,无缝播放。它不学模型、不训网络——纯最近邻搜索,但生成质量高、可控性强。PHP 把它拿来当离线数据增广工具。

Locomotion 库 走、跑(大量帧) 原子技能库 vault, climb, drop, jump … 每个几秒、稀疏 Motion Matching 每 M 帧:当前姿态 + 期望 2D 速度 → 查询特征 x̂_t i* = argmin ‖x̂_t - x_i‖ 从匹配帧开始播放 短混合窗防不连续 纯最近邻,不训网络 长轨迹 1:Locomotion → Vault → Locomotion 不同接近距离 / 速度 / 朝向 自动生成 长轨迹 N:Locomotion → High Climb → Drop 通过 locomotion 共享 manifold 过渡 → 数千条 dense 训练轨迹 下游训练 pipeline 多个 RL Motion-Tracking 教师(特权观测) → 蒸馏到单一 depth 学生(DAgger + PPO 混合 loss) → 真机零样本部署 关键:DAgger 不足以学高动态动作,必须 RL 提供"成功导向"信号
图 1:PHP 总览。Motion matching 把稀疏原子技能稠密化为数千条长轨迹,再走「教师蒸馏」pipeline。Locomotion 是所有技能的「共享枢纽」,免去两两技能间单独捕捉过渡。

🛠️ 让 PHP 跑通的三个关键设计

设计心智为什么必要
① Locomotion 作为通用枢纽所有技能链路都走「Locomotion → 技能 → Locomotion」的形式,不在两个不同技能间直接过渡若要 N 个技能两两过渡,需 O(N²) 个过渡片段;通过 locomotion 中转只要 O(N)。Locomotion 是一个共享 manifold,能从不同步态相位/速度/方向进入任一技能
② 蒸馏 = DAgger + PPO(不只是 DAgger)Loss = λ_PPO·L_PPO + λ_D·L_D,课程从纯 DAgger 渐渐加 PPO纯 DAgger 学不出爬墙那种需要瞬间爆发扭矩的动作——对称的高/低位置 root 轨迹逐步 imitation loss 一样,但只有高的那个能上墙。RL 用episode 成败提供信号,鼓励出爆发扭矩
③ Adaptive Sampling + relaxed termination专家训练时按失败率重采样起点;学生训练时放宽 termination 阈值(0.5m → 1m)高动态技能(爬墙、跳马)训练初期大量失败,不重点采样永远学不会;学生蒸馏时若 termination 太严,镜像模式(左腿换右腿起跳)会被错误终止,引入巨大 reward 方差
🔮 关键反直觉:「DAgger 必须全程在线,不能丢」
论文做了一个重要的消融(§IV-B 3):如果先用 DAgger + RL 训练,后期把 DAgger 去掉只用 RL——策略会很快变得「抖动、不自然」。原因是高维动作空间下,纯 RL 没有足够信号约束逐帧动作合理性,DAgger 是关键的「正则项」。这与「先 DAgger 后 RL fine-tune」的常规做法不同——PHP 强调两者必须一直混着。RL 只是用来"鼓励爆发",不是用来"重新探索"。

📊 结果:人形 parkour 的当前 SOTA

维度数字(来自论文 Fig.4 / Table I / Table II)
高墙爬升G1(1.3 m 高)爬上 1.25 m 墙(96% 身高),3.63 秒完成;与人类 parkour 选手时间相当
跳马 / 越障0.4 m 高 × 0.5 m 障碍,0.8 秒从 toe-off 到 toe-on,前进 > 2 m(154% 身高),峰值速度 3.41 m/s
长跑酷课程60 秒连续穿越多障碍场,自主技能选择 + 无缝过渡
闭环适应执行中随机位移障碍 0.5 m,策略能在线调整接近策略,仍完成穿越
关键消融纯 DAgger(无 RL)76cm 障碍成功率 3%;DAgger+RL 90-95%(Table II)
baseline 对比纯 RL velocity tracking:36cm 小障碍 100% 但更高全失败;无 motion matching 数据:58cm 障碍 2%
关键洞察:PHP 胜在「数据 + 训练」双重工程化。Motion matching 把数据稀疏问题从「根本性障碍」降为「可控工程问题」;DAgger + RL 混合 loss 让蒸馏能学高动态技能。两个工程加起来,把人形 parkour 从演示性 demo 推到系统化能力

🌐 在领域中的位置

AMP(adversarial motion prior,动画) BeyondMimic / OmniRetarget(人形 motion tracking) Humanoid Parkour Learning(Zhuang 2024,基础跳跃) PHP(多技能 + 长时程 + 感知)⭐

PHP 是「人形 parkour 走向实用」的标志性工作。它第一次同时实现了:高动态(爬身高墙、3.4 m/s 越障)长时程(60 秒多障碍)感知驱动(用 depth 自主决策)真机部署(zero-shot sim2real)。技术栈上,它把游戏工业的 motion matching 引入机器人领域,为后续数据稀缺场景(如精细 manipulation)提供了「稠密化稀疏数据」的范式。关联线索:T12 motion matching 谱系

❓ 常见误区

Motion matching 听起来很「low」——它就是最近邻搜索,为什么不用扩散模型 / VAE / Transformer?

这正是论文的妙处。越简单的方法在低数据 regime 下越鲁棒。扩散模型 / MDM 在大量数据下能生成自然过渡,但在 parkour 这种「每个动作 1-2 次捕捉」的场景下,生成质量会显著退化(论文 §II-B 明确讨论这点)。Motion matching 是纯检索——它不发明新动作,只「重新组合」已有动作,所以保证物理可行。这正是稀缺数据下需要的特性。

1.25 m 墙真的算高吗?G1 1.3 m,那只是和自己一样高啊。

对人来说不算高,但对当前的人形机器人控制来说是巨大突破。注意三点:① 这是真机不是仿真;② G1 的手臂/手设计很简单,没有能抓住墙沿的夹持器,靠的是整个身体贴上去 + 摩擦;③ 论文用人类 parkour 选手做对比,机器人爬墙时间与人类相当——这是「人形机器人达到人类水平敏捷性」的标志事件。

为什么不直接端到端 RL 训练?非要 teacher-student + motion matching 这么复杂?

论文 Table I 的 baseline 给了答案:纯 RL velocity tracking 在 36 cm 障碍上能成功,但 58 cm 以上完全失败——它只学「迈步」,不会用上身支撑。End-to-end depth baseline(有 motion matching 数据但用 RL from scratch)在 58cm 上只有 19% 成功率。多阶段 pipeline 不是过度设计,是当前技术下的必要工程:每个阶段解决一个具体问题(数据稀疏、探索困难、感知迁移)。