跳转至

详读 · Parkour in the Wild(多专家蒸馏 + RL 微调 → 通用可扩展敏捷运动策略)

卡片版见 卡片-ParkourInTheWild。本页是全文精读:定位 → 动机 → 方法(逐模块) → 实验(全表数字) → 消融 → 局限 → 核心洞见 → 外部评价 → 审稿人视角 → 对我们。 来源:arXiv 2505.11164(v1, 2025-05-16)· IJRR 2025(International Journal of Robotics Research)正式发表。 作者:Nikita Rudin(1 ETH Zurich Robotic Systems Lab / 2 NVIDIA Switzerland)、Junzhe He、Joshua Aurand、Marco Hutter(ETH RSL)。 资助:NVIDIA、瑞士 SNF(NCCR Robotics)、欧洲 ERC;属 ANYmal Research 社区项目。

⚠️ 配套图无法在本环境抽出,相关图表(Fig.1 真机部署、Fig.2 三段式总览、Fig.3 网络架构、Fig.4 深度噪声、Fig.5 重复微调曲线、Fig.6 技能融合对比、Fig.7 架构消融、Fig.8 主动感知、Fig.9 真机场景)均以文字描述。所有数字以 txt 为准。

0. 一句话定位

针对"单技能 RL 策略只能在训练的窄域里用、加新任务要从头训、无法复用已有技能"这个痛点,提出三段式流水线:(1) 用 RL 分别训 9 个地形专家(用 elevation map 做特权感知);(2) 用 DAgger 在线蒸馏把 9 个专家压进一张基础策略网络,并把感知模态换成 4 路机载深度相机;(3) 用 RL 微调这张基础策略,在 9 个旧地形 + 15 个真实废墟 3D 扫描地形上统一打磨。结论:得到一个敏捷四足运动策略,在已知地形上反超各自专家、对未见废墟有泛化、且可通过"加地形再微调"持续扩展技能而不遗忘,并在 ANYmal D 上仅靠深度图完成室内外搜救场景部署。卖点不是某个新模型,而是"可规模化、可持续扩展"的腿足运动训练范式本身。

1. 问题与动机

  • RL 已成熟但"窄":RL 让四足走出实验室、能过复杂障碍(Cheng 2024、Zhuang 2023、Hoeller 2023),但每个策略只能用在它训练的窄域;新任务要从头训,无法复用已训策略里的知识
  • 缺一个"复用 + 组合 + 可扩展"的系统:理想控制器应能把单个技能的能力组合成通用控制器,保留单技能性能又能适应新场景;部署到真实世界必然遇到没学过的情况,流水线必须能补训缺失技能且不遗忘已有技能
  • 感知难题:敏捷运动时状态估计不可靠,标准地形重建(高程图)失效;障碍物常在接近阶段不在视野内,无法重建却仍要执行正确动作。
  • 作者对比的三条旧路线(都不够):① 分层(Hoeller 2023,高层选专家);② VAE 技能隐空间编码;③ 标准多专家蒸馏。结论:标准形态下没有一个能在"没有专家的复杂地形"上达到合理性能——分层/隐空间陷入局部最优只解部分地形;蒸馏能在所有地形拿到非平凡性能但逊于专家、对未见地形泛化差但蒸馏策略可当"基础模型"反复 RL 微调——这是全文的关键转折。

2. 方法详解

2.0 总览(Fig.2)

三阶段:① 9 个技能各自 RL 训练(用 elevation map)→ ② DAgger 监督蒸馏成单网络(改用深度图)→ ③ RL 微调(无专家监督,9 旧地形 + 15 个真实废墟 3D 扫描新地形;Fig.2 只画了 15 个里的 4 个)。观测分配见 Table 3:专家用基座线/角速度、重力向量、关节位置速度、目标位置/朝向/剩余时间 + 小范围高程图(2m×1m);学生把高程图换成 4 张深度图;critic 额外吃大范围高程图(6m×3m)与 Lidar 扫描。

2.1 第一段:专家技能训练(Expert skill training)

  • 紧跟 Hoeller 2023 的运动模块训练流程;用 Rudin 2022a 的位置式任务描述(目标位置+朝向+到达时间)+ Mittal 2024 的对称性数据增强
  • 技能集 = 5(沿用)+ 4(新增)= 9:沿用 walk / climb / climb-down / jump / crouch;新增 跳矮墙(low wall)、踏脚石(stepping stones)、过窄梁(beams)、爬乱石堆(rock pile / boulders)
  • 每个专家要专门的 curriculum、reward 调参、训练流程(例:矮墙策略用爬墙策略权重初始化)。调参繁琐但只需一次性做;训好即冻结存档、后续不再改。

2.2 第二段:蒸馏(Distillation)

  • 目标:在每个地形 i 上,学生策略 π_student(o_student) ≈ π_expert,i(o_expert)。这要求学生学会两件事:① 从观测推断当前是哪类地形(内部映射 o_student↦i);② 预测该专家会做的动作。
  • 算法 = DAgger(Ross 2011)在线监督(Algorithm 1):用 Rudin 2022b 的大规模并行仿真,把机器人分配到各地形、各自配对应专家。每步同时查询学生和对应专家;学生动作(加零均值高斯噪声)送进仿真,把"学生观测 + 专家动作"收进数据集 D,再用 MSE 监督训练学生。
  • 为什么加动作噪声:① 防止过拟合到少数轨迹、蒸馏策略更鲁棒;② 让学生对动作噪声鲁棒,为下一阶段 RL 微调(探索时也加噪声)打基础。
  • 感知模态切换:专家用 elevation map(特权信息);学生因高程图鲁棒性/泛化差,改用 4 张深度图(机器人前 2 + 后 2)。
  • 网络架构(Fig.3):三段拼接——
  • CNN:每张深度图单独过 3 个卷积+max-pool 层 + 2 个全连接层,输出维度 64
  • LSTM:4 张图的 CNN 特征拼接 + 本体感知,过 2 层 LSTM(记忆用来推断视野外的障碍物);
  • MLP:LSTM 输出再拼本体感知 + 任务指令,过 3 层全连接(ELU 激活)出动作。
  • 学生动作空间与专家相同;本体感知 = 基座线/角速度、关节位置速度、上一动作、基座系重力向量。

2.3 第三段:RL 微调(RL fine-tuning)

  • 为什么需要:蒸馏后单技能性能下降、对未见地形泛化低(Table 4)。根因——蒸馏不直接训练"解任务",而是"猜该模仿哪个专家、那专家会怎么做",多模态导致 ill-posed。
  • 为什么不能纯 RL 从头训:探索低效,策略坍缩到单一模式,只学会解部分地形/任务。
  • 但"先蒸馏到足够好、再 RL 微调"可行,能提升所有任务性能。然而朴素做法不稳定:一旦施加 RL loss,性能会持续退化。靠三个关键组件绕开:
  • 基础策略在微调噪声下的最大性能与鲁棒性(蒸馏阶段就加动作噪声 + 降低 RL 策略分布的初始标准差);
  • 保守的 RL 超参
  • critic 网络预训练——初期冻结策略权重,调超参专门让 critic 高效收敛,待 critic 足够准再开始更新策略。
  • 微调阶段无专家监督,奖励见 Table 2(追踪位置/朝向为正奖励,关节速度/力矩/加速度/动作变化率/碰撞/超限/不动等为惩罚,碰撞与终止重罚)。

2.4 深度图噪声模型(sim-to-real 关键)

ANYmal 的 Realsense D435i 靠立体匹配 + 红外投影,会有缺数据(边缘/某些表面/过近/左右侧)和远距精度退化。仿真直接渲染真深度容易但模拟立体匹配不现实,故对仿真和真实图都做处理对齐(Fig.4): - 仿真端:先渲染低分辨率 48×32,再 5 步退化——① 裁剪:深度截到 2m,<0.15m 视为空(设 2m);② 边缘噪声:按深度梯度阈值找边缘,边缘附近像素随机置空或与邻像素打乱;③ 空洞:用缓慢演化的 Perlin 噪声阈值选补丁置最大深度(保证时间一致性);④ 盲区:去掉最左 1–5 列(模拟近距立体匹配盲区);⑤ 高斯模糊:整图模糊去细节。 - 真实端:同样裁剪深度 + 降采样到目标尺寸 + 同一高斯模糊。

3. 实验数字(全量)

3.1 各地形成功率(Table 4,核心表)

仿真采集 1000 次 rollout、随机地形、90% 最大训练难度。列:πw…πss = 9 个专家(Walk/Climb/Climb-down/Jump/Tables/Rock-pile/Low-wall/Beams/Stepping-stones);πD = 蒸馏策略;πRL = 微调策略;πRL* = 在 Climb-down-on-stones 上再微调一次的策略。

关键行(专家对角值 → πD → πRL): - Walk:专家 94.6 → πD 99.3 → πRL 100.0(蒸馏甚至超过 Walk 专家,因知识复用)。 - Climb:98.8 → 98.1 → 99.5。 - Climb Down:99.9 → 84.3 → 99.7。 - Jump:98.4 → 93.5 → 98.0。 - Tables:99.4 → 78.9 → 100.0。 - Rock pile:92.2 → 82.6 → 96.5。 - Low wall:84.8 → 77.0 → 99.9(微调后大幅超专家)。 - Beams:97.3 → 85.2 → 99.5。 - Stepping stones:98.8 → 73.0 → 98.8(蒸馏掉点明显,精度类地形受感知模态切换影响)。 - 微调阶段新增地形:Parkour line(专家几乎全 0)→ πD 5.8 → πRL 98.5;Scanned meshes(train) → πD 11.9 → πRL 99.1。 - 从未见地形(泛化):Scanned meshes(test) πD 14.9 → πRL 94.9;Arranged rocks 62.9 → 93.2;Gap-climb(需爬+跳组合)πD 10.2 → πRL 82.0(πRL 86.6);Climb-down-on-stones(爬下+踏脚石组合)πD 11.3 → πRL 仅 54.4,单独再微调 πRL 才升到 92.4

结论性数字:蒸馏后相对专家平均掉 10.4%(在 Tables vs Climb、Climb-down vs Jump 这类技能歧义地形掉更多;精度类 Stepping-stones/Beams 也明显掉);微调后平均比对应专家高 3.1%(Low wall 提升最大)。泛化"喜忧参半":对未见废墟/乱石/Gap-climb 泛化好,但 Climb-down-on-stones 这种技能组合即便更简单也会失败 → 作者诚实下结论:"有泛化迹象,但 OOD 地形仍可能失败"。

3.2 重复微调(Sec 3.2 / Fig.5)

选一个所有策略都解不好的地形 Climb-down-on-stones 做持续学习实验,比四种起点: - 从头随机初始化:找不到可行解。 - 从蒸馏策略:先验足够"起步",达到非平凡性能。 - 从已微调策略(仅新地形):更快、最终更高。 - 从已微调策略(全地形 + 新地形)最终性能最好——尽管此时新地形只占采样的 3%。 - 结论:保持训练地形多样性很重要;且 Table 4 的 πRL 列显示,加新地形微调后老地形性能基本不变、新地形上升 → 持续微调是可行的"加技能不遗忘"方案。作者补充:需更多分析理解其极限,预期当需要专门动作的地形数继续增多*时性能会下降。

3.3 技能融合方法对比(Sec 3.3 / Fig.6)

对比三种把分散技能合一的方法:(ours) 蒸馏+RL 微调 vs VAE 隐空间编码(冻结 decoder 再训新策略)vs 分层(高层选专家);各分"从头训"与"在蒸馏环境预训练"两种。评测用 1000 robots × 100 随机地形、难度 50%–100%。三组地形:专家技能地形 / 微调新地形 / Gap-climb(测两技能插值)。 - 预训练版:ours 与 VAE 都好;新地形上 ours 更优(VAE 的 decoder 只在已知技能动作上训过,新动作更难)。分层达不到满意性能——即便只需"选对技能转发指令"也在专家地形上挣扎,会完全停用某些技能导致对应地形持续失败;Gap-climb 完全失败(需融合两技能,硬切换做不到)。 - 从头训版VAE 明显优于另两者(隐空间探索更高效);分层很快到其预训练水平但不再提升;标准 RL(=ours 去掉蒸馏的从头训)学得很慢、只解部分地形、其余卡死。(作者注:此对比对标准 RL "不完全公平",因 VAE/分层都需先训专家技能,VAE 还要先训 decoder。) - 结论:分层与无蒸馏纯 RL 不可扩展(技能/任务一多就崩);蒸馏+微调 与 VAE 都可行,但蒸馏+微调在新地形上略胜且更简单,故选为最终方法。

3.4 架构消融:是否需要记忆(Sec 3.4 / Fig.7)

比较 有/无 LSTM × 深度图/高程图 两种感知(8 次运行均值): - 高程图下,MLP 与 LSTM 都行(不太需要记忆)。 - 深度图下必须有记忆(LSTM)才能提取有用信息;但即便有记忆,深度图的重建误差仍高于高程图——因为有些情况下深度信息不足以区分地形(如薄墙 vs 箱子,直到开始爬才分得清)。 - 高程图细节:小范围细粒度 1×[email protected] + 大范围粗粒度 3×[email protected],外加水平 Lidar 式扫描以区分悬垂障碍。

3.5 主动感知 / 涌现行为(Sec 3.5 / Fig.8)

专家用近乎完美、与机身俯仰/横滚无关、无遮挡的高程图;而深度相机刚性固连机身、随姿态变、视野受限。蒸馏只教学生模仿专家动作,不管该动作在新感知模态下是否次优RL 微调后策略学会改行为提升感知:例如爬箱专家会贴得很近停下(省力但箱顶出视野,要靠记忆盲爬),微调后策略主动离障碍远一点、并倾斜机身把箱顶纳入视野后再伸腿。该行为跨不同训练运行、不同障碍形状一致;对踏脚石/桌子也有类似但不那么直观的接近行为调整。

3.6 真机部署(Sec 3.6 / Fig.9)

  • 平台 ANYmal D,用 6 个深度相机中的 4 个(前 2 后 2),不用机载 Lidar 或任何外部传感器
  • 全部计算在机载 CPU 上 50Hz;深度图 15Hz 更新(相机内部以 60Hz 发 ROS 消息);训练时随机化各相机延迟,故部署无需同步机制,直接用每相机最新一帧。
  • 室内:能在孤立障碍与无结构障碍堆上执行正确技能;室外:搜救训练场的废墟堆(部署地形训练时未见)。鲁棒性强:对打滑/移动地面、脚卡裂缝或钢丝、高草/反光/直射阳光致深度退化等干扰稳健。
  • 诚实的不足:footstep 选择不完美(会踏错但快速恢复);爬/跳时比专家更多用膝盖落地——更安全但增加电机冲击、加速硬件磨损

4. 局限 / 存疑(作者自陈,诚实)

  • 精度不足:稀疏地形(梁/踏脚石)倾向"踏错再快速恢复"而非一次找准落脚点;无结构地形上脚常先撞障碍再跨过;钻桌有时要先撞到悬垂障碍才启动下蹲。→ 说明策略在感知失败时用本体感知"摸"障碍——是增强鲁棒性的好涌现行为,但也意味着感知质量限制了动作质量。
  • 长时记忆不足:让机器人慢慢逼近箱子到相机近距裁剪范围内——若立刻命令前进会直接爬上,若先站几秒再前进则会撞箱。LSTM 隐状态每步更新,站立时旧信息被稀释(无新信息进来)。作者建议换 Transformer + 注意力
  • 训练/调参成本仍高:理想的技能融合应"分别训技能并冻结、之后无需大量调参"。本方法的蒸馏阶段用冻结技能,但微调阶段会改变策略行为、重现了从头训的部分难题(各专家奖励/终止条件略异,需新的统一设置;微调过程偏向某些地形)。调参量比从头训少但仍可观。
  • 端到端深度图的代价:相比模块化(如 Hoeller 2023 的独立感知模块出 3D/2D 表征),端到端更易实现、不丢模块接口信息,但更难调试/归因(撞障碍时分不清是感知问题还是运动问题),且无法分模块单独微调。
  • 蒸馏本身的天花板:来自"互相矛盾的专家"的标准蒸馏是 ill-posed(同状态不同专家给不同动作)+ 感知模态切换加剧 → 蒸馏策略本身不足以直接真机部署,必须靠 RL 微调补。

5. 核心洞见

  • 真正贡献 = "把蒸馏策略当基础模型反复 RL 微调"这个范式,而非某个新网络。它同时解决了"纯 RL 从头训多任务会坍缩"和"标准蒸馏掉点不泛化"两个老问题——蒸馏给 RL 一个不会坍缩的好起点,RL 给蒸馏补上精度与泛化
  • 可扩展性是设计目标也是验证点:靠"加地形再微调"扩展、保持地形多样性、老技能不遗忘——这把"运动技能库"从"一次性训练"变成"可持续演进"的资产。
  • 端到端原始深度图 + 噪声模型足以替代脆弱的高程图/3D 重建,绕开敏捷运动下不可靠的状态估计;代价是可调试性与精度。
  • 涌现的主动感知说明 RL 微调不只是"补性能",还能让策略为自己的真实感知模态重新优化动作(专家在特权感知下学不到这点)。

🗣️ 外部评价

  • 🌐 IJRR 2025 正式录用(International Journal of Robotics Research,机器人领域顶刊,期刊级同行评审)→ 比预印本可信度更高。txt 未含可抓取的公开审稿意见正文(不引述具体评分)。
  • 🌐 作者血统与生态:出自 ETH RSL(ANYmal 组)+ NVIDIA;同作者团队的 RSL-RL(arXiv 2509.10771)与 Isaac Lab 是其大规模并行 RL 仿真底座(本文未声明随附代码,但方法可在该生态复刻)。背景与 Flexion 公司技术路线一脉相承,见 追踪-Flexion-Reflect
  • ⚠️ 未检索到独立第三方复现/吐槽帖(不编造);data/code 链接 txt 中未给出,标"待查"。

🧑‍⚖️ 审稿人视角(🤖)

  • 新颖性偏"系统/范式组合"而非单点创新:DAgger 蒸馏、深度图端到端、RL 微调都非首创;价值在于把它们组织成一个可规模化、可扩展、能真机落地的完整流水线,并用充分实验(Table 4 全表 + 4 组消融 + 真机)支撑"可扩展"这个核心 claim。属"工程集成扎实"的好系统论文。
  • 可复现性偏弱:txt 未给 GPU×步数、未给代码/权重/数据链接;专家训练"各需专门 curriculum/调参",外部团队重建九专家成本很高且细节不全。结论可信但别人想复刻门槛高
  • 关键基线公平性已被作者自承:标准 RL 从头训"对它不完全公平"(其他方法都先训了专家/decoder);技能融合对比用的是自家旧分层与自实现 VAE,未与同期其他单策略 parkour(如 Cheng 2024 Extreme Parkour)正面同台跑同一基准。
  • 泛化结论需谨慎:Climb-down-on-stones 即便"更简单"仍掉到 54.4,说明所谓"泛化"对需要新技能组合的 OOD 地形并不稳;作者已如实标注。
  • 真机证据偏定性:真机结果主要靠 supplementary video 与定性描述(鲁棒性、膝盖磨损),无真机成功率/trial 数量表,统计强度弱于仿真部分。
  • "可持续扩展"的极限未测:作者自己也说"地形再多预期会降"——目前验证到"加一个新地形不遗忘",没有展示加到几十个专门技能后的曲线,可扩展性是趋势性证据而非饱和证据。

6. 对我们

  • 它揭示 Flexion 运动层"通用可扩展技能库"的真实思路:Flexion(CEO 即本文一作 Rudin)宣传 Reflect 中层是 "VLA 模型 + RL 技能库 / general & extensible skill"。本文几乎就是这句话的技术原型——
  • "技能库" = 分别训练、可冻结存档、可复用的专家集合;
  • "通用" = 蒸馏成单网络 + RL 微调,让一个策略覆盖所有技能并反超专家;
  • "可扩展" = 往训练集加地形再微调一轮、不遗忘老技能。
  • 盯 Flexion 时,这是公开可得、最接近其运动层方法的论文(公司本身未发论文,见 追踪-Flexion-Reflect)。🤖
  • 可复用的范式(即便我们不做腿足)
  • "专家分训 → 蒸馏成基础模型 → RL 微调" 这套"多技能合一且可扩展"的流水线,对触觉×VLA 的"多技能/多任务合一"有方法论参照。
  • 持续学习不遗忘的工程做法:加新数据时保持旧数据多样性(新数据可只占很小比例 3%),从已微调模型继续训而非从头。
  • 端到端原始传感 + 噪声模型过 sim-to-real:五步深度噪声模型(裁剪/边缘/Perlin 空洞/盲区/模糊)+ 训练时随机化传感器延迟(部署免同步)这类工程细节可直接借鉴到任何 sim-to-real 管线。
  • 稳定"监督预训练→RL 微调"的三件套:预训阶段加动作噪声 + 保守 RL 超参 + 先冻结策略预训 critic——这是把"模仿学习基座 + RL 提升"接稳的通用技巧,对我们做 VLA + RL 后训同样适用。
  • 落地警示:复刻门槛高(九专家各需专门调参、需 ANYmal 级硬件 + 大规模并行仿真、无官方代码权重);端到端深度图难调试;蒸馏对"互相矛盾的专家"是 ill-posed,必须 RL 微调补——别指望"蒸馏一步到位"。🤖