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

Parkour in the Wild:先把 9 个专家「炖」成一个基础模型,再 RL 微调

Nikita Rudin, Junzhe He, Joshua Aurand, Marco Hutter(ETH Zurich + NVIDIA)。arXiv:2505.11164, 2025。 项目页 · legged locomotiondistillation 线索 T04foundation policy

🧠 一句话心智模型:把「9 个各有所长的专家策略」当成基础模型的「老师」——先用 DAgger 蒸馏成一个能模仿所有专家的通用学生,再用 RL 在更难的地形上微调。学生不仅不掉链子,还学出了老师都不会的新动作(比如调整身体姿态让相机看得更清)。

🎯 为什么重要:腿足控制缺一个「可扩展」的范式

RL 让机器狗走出实验室,但每篇论文训出来的策略都只能干一件事——能跳的不会爬,能爬的不会跳。新任务就要从零训一遍,之前的训练成果完全浪费。这是腿足领域迟迟没有「基础模型」的根本原因。

核心矛盾:直接把多任务训成一个策略理论上没问题,实际上学不动——RL 探索能力有限,任务一多就塌陷到某个子集,剩下的全不会。怎么办?

论文的回答:分两步——先把已会的(9 个专家)蒸馏到一个学生网络(不需要 RL 探索,只要模仿);再用这个有基础的学生去 RL 探索新地形(起点够好,不会塌陷)。

💡 核心思想:三阶段 pipeline

Stage 1:训 9 个专家 walk · climb · climb down jump · low wall tables · rock pile beams · stepping stones 每个专家单独训 用 elevation map (特权感知) → π_w, π_c, ..., π_ss Stage 2:DAgger 蒸馏 单一学生 π_D 4 个 depth 相机 → CNN + proprio → LSTM → MLP 学生查询当前 obs 下 每个专家会出什么动作 学生 + 高斯噪声执行 监督学习对齐专家 → foundation policy Stage 3:RL 微调 在更难的地形上 用 PPO 继续训 + 原 9 地形 + Parkour line(混合障碍) + 真实搜救场景 3D 扫描 → 学生学出 新行为(主动感知等) → π_RL 可部署 可循环:再加新地形 → 再微调
图 1:三阶段 pipeline。专家分立 → 蒸馏合一 → RL 微调扩展。第三步可循环——遇到新地形就加进训练集再训一轮,能力持续增长。

🛠️ 让 pipeline 真的跑通的四个关键

设计心智为什么必要
① 专家用 elevation map,学生用 depth训练阶段专家看「上帝视角」地形图;学生看 4 个 depth 相机原始图像专家用 elevation map 容易训;但真机上 elevation map 需要状态估计 + 地图构建,敏捷运动时会失效。学生直接吃 depth → 端到端,更鲁棒
② DAgger 训练时加动作噪声学生每一步把高斯噪声加到自己输出上再去执行防过拟合到「学生自己走出来的少数干净轨迹」;更重要的是让学生对动作噪声鲁棒,这样后面 RL 微调加探索噪声时不会崩
③ 深度相机仿真噪声模型把仿真 depth 退化(边缘噪声、Perlin 噪声空洞、盲点、高斯模糊)以匹配 RealSense D435i仿真里的 depth 太干净,直接迁移会 sim2real 失败。论文 §2.4 详细给出 5 步退化 pipeline,这是端到端 depth policy 跑通的关键
④ RL 微调三件套:critic 预训 + 保守 lr + 强基础先用冻结 policy 训 critic,再小 lr 微调;策略起始 σ 要小蒸馏得到的学生已经很好,RL 一旦激进更新会立刻把它毁掉(论文 §2.3 明确说"naive 微调性能会持续下降")。必须「轻柔」地 RL
🔮 神来之笔:「主动感知」自发涌现
论文 §3.5 报告了一个非常漂亮的现象。专家训练时看 elevation map(不受身体遮挡影响),所以学会「贴着障碍物停下再爬」——这减少站立阶段的扭矩。但学生只有 depth 相机,贴近时相机看不到障碍顶部。RL 微调后,学生自发学会了「离障碍物远一点停下 + 倾斜身体让顶部进入视野」——这是专家没有的策略,是学生为适应自己的感知模态自己发明的。这是基础模型范式的标志:微调产生涌现能力

📊 结果:单策略打平甚至超过 9 个专家

维度数字(来自论文 Table 4 / Fig.6)
基础 9 地形成功率微调后 π_RL 平均 ≈ 99%比对应专家还高 3.1%(蒸馏 π_D 平均 ~86%,相对专家平均掉 10.4%)
新地形泛化Parkour line(混合障碍)98.5%;真实搜救扫描训练集 99.1% / 测试集 94.9%;人为摆放石堆 93.2%
最难组合任务"Gap-Climb"(爬+跳组合):蒸馏 10.2% → 微调后 82.0%层级 baseline 0%——硬切换无法混合 Climb 与 Jump;VAE 在该地形表现居中)
可循环扩展新加 "Climb down on stones"(混合下蹲+踏石)从 π_D 11.3% / π_RL 54.4% → 加该地形再微调后 92.4%且不破坏旧任务
baseline 对比层级式(high-level 选 expert)在 9 技能就失败(部分技能从不被选);纯 RL from scratch 多任务塌陷
关键洞察:蒸馏 + RL 微调这条组合拳,是比层级控制和 VAE latent 更优的多技能合成范式。原因:层级硬切换无法混合技能(Gap-Climb 直接 0%);VAE latent 受限于已见过的动作分布,新动作难以生成。蒸馏 + RL 让策略在「连续动作空间」里被解放。

🌐 在领域中的位置

ANYmal-C(单任务 perceptive) ANYmal Parkour(5 技能层级) Parkour in the Wild(9 技能 + 可扩展)⭐ PHP / 人形 parkour(motion matching + distill)

Parkour in the Wild 是「腿足机器人基础模型」的工程化突破——它不是某个新算法,而是把已有的蒸馏 + RL 微调组合做对了、做扎实了,并第一次展示了可循环扩展的可行性。这条 pipeline 后来直接启发了人形 parkour 工作(如 PHP 用同样的"多 teacher 蒸馏 + RL 微调"框架)。关联线索:T12 蒸馏谱系

❓ 常见误区

这不是就是 ANYmal Parkour(Hoeller 2023)的延续吗?

是同一作者团队,但有关键升级:① 技能数从 5 → 9(Hoeller 2023 原 5 技能 walk/climb/climb down/jump/crouch 中保留 4 项,新增 tables、rock pile、low wall、beams、stepping stones 共 5 项,去 crouch);② 感知从「感知模块 + elevation map」改成「端到端 depth」;③ 核心贡献是可循环微调——ANYmal Parkour 是一次性训完,这篇展示「加新地形 → 再训一轮 → 不破坏旧的」的可持续扩展。层级 baseline 在 9 技能上直接失败,说明 5→9 不是量变是质变。

为什么一定要先蒸馏再 RL?不能直接 RL from scratch 训 9 个任务吗?

论文 Fig.6 下排专门做了这个对比。纯 RL from scratch 在 9 任务上塌陷——只会解决一部分任务,其他完全卡住(探索能力不足以同时找 9 种解法)。蒸馏的作用是给 RL 一个"已经会 9 件事"的起点,RL 只需要在这个基础上微调和组合,不需要重新发现。这就是「foundation model + fine-tuning」范式在腿足上的具体实例。

"主动感知"是真涌现还是只是个例?

论文 §3.5 明确说:「This behavior is consistent across different training runs and obstacle shapes」——多次训练、多种障碍都出现,并且对踏石、桌子等其他障碍也有不同的接近策略调整。这是少有的清晰、可复现的「基础模型涌现行为」案例,不只是孤例。