扩散生成 + RL 跟踪:把人形全身地形行走推上真机
🎯 为什么重要:两条老路都有硬伤
2025–2026 年人形 whole-body loco 已经有两条成熟路线,但各自有硬伤:
| 路线 | 能做什么 | 硬伤 |
|---|---|---|
| ① 纯 reward-shaping RL (ANYmal / ANYmal-C 路线移到人形) | 纯 RL 学 loco,reward 全靠手设计 | 探索效率低;倾向"下身主导"——脚在动、上半身僵着;遇到 parkour / 大台阶这种需要全身协调(手撑、膝顶、跳落后手缓冲)的任务几乎学不出来 |
| ② Imitation-based RL (DeepMimic / PHC / OmniH2O / Exbody2) | 用参考 motion 引导,能学到协调的 whole-body skill | 只会"复现"——参考是离线 choreographed 的,无法根据地形的 depth/高度图在线调整节奏与落脚点 |
💡 核心思想:三阶段管线 + 闭环 fine-tuning 让 tracker 变成 motion filter
直接拼 pre-trained generator + pre-trained tracker 不行——generator 产出的参考有 artifact(foot sliding、不连续),tracker 没见过这种 OOD 参考、直接跟踪会摔。Stage (c) 同时做两件事:(1) 闭环条件——generator 不吃自己的上一步预测,而吃真实 robot state,把 generator 锚定到现实、避免误差累积;(2) 噪声注入——generator 推理时 + tracker observation 都加噪,让 tracker 学会"参考烂也能稳"。作者把这个机制解释为:tracker 被训成了 "motion filter"——跟踪参考、但用 exteroceptive terrain 观测压制不安全行为。
🛠️ 怎么做:tracker observation、reward、与硬件栈
Tracker observation 与 action(Sec.III-B-1)
| 类别 | 维度 | 内容 |
|---|---|---|
| 参考 state | $\mathbb{R}^{3+3+23+9\times3}$ | linear vel + angular vel + joint pos/vel + 9 个 key body positions(base frame) |
| Proprioception | $5 \times (\mathbb{R}^{3+3+23+23})$ | 5 帧连续 base angular vel + projected gravity + joint pos/vel + previous action |
| Terrain | $\mathbb{R}^{17\times 11}$ | height scan(在 fine-tuning 阶段保留——与 OmniRetarget "terrain 非必要"的结论不同) |
| Action | $\mathbb{R}^{23}$ | 23 维 target joint positions(PD 控制目标) |
Reward 设计(Table I,全抄)
| 组 | 项 | 表达式(权重见公式前) |
|---|---|---|
| $r_{\text{mimic}}$ (六项 imitation) | Base pose tracking | $3\exp(-4\|p_b^w - p_b^{w\ast}\|^2 - 4(1 - \langle q_b, q_b^\ast\rangle)^2)$ |
| Base velocity tracking | $\exp(-\|v_b^b - v_b^{b\ast}\|^2) - 0.1\|\omega_b^b - \omega_b^{b\ast}\|^2$ | |
| Joint position tracking | $2.5\exp(-2\sum_{i=1}^{23} 0.25(q_i - q_i^\ast)^2)$ | |
| Joint velocity tracking | $0.5\exp(-2\sum_{i=1}^{23} 0.01(\dot q_i - \dot q_i^\ast)^2)$ | |
| Body pos tracking (base frame) | $2\exp(-\sum_{i=1}^{9}\|p_{l,i}^b - p_{l,i}^{b\ast}\|^2)$ | |
| Body pos tracking (global frame) | $\exp(-\sum_{i=1}^{9}\|p_{l,i}^w - p_{l,i}^{w\ast}\|^2)$ | |
| $r_{\text{reg}}$ (七项 regularization,全负惩罚) | Action rate 1st order | $-0.1\sum(a_t - a_{t-1})^2$ |
| Action rate 2nd order | $-0.05\sum(a_t - 2a_{t-1} + a_{t-2})^2$ | |
| Joint position limits | $-10\sum\max(q_i - q_{\lim,i}, 0)$ | |
| Joint velocity limits | 同上形式(论文未给完整系数) | |
| Torque limits | $-0.001\sum\max(\tau_i - \tau_{\lim,i}, 0)$ | |
| Joint torques | $-0.00001\sum\tau_i^2$ | |
| Body linear acceleration | $-0.01\sum_{i=1}^{9}\|\ddot p_{l,i}^w\|^2$ | |
| $r_{\text{task}}$ (仅 fine-tuning) | Target heading tracking | $1.5\langle v_b^b, d_b\rangle / \|v_b^b\|$(heading 内积) |
硬件部署栈(Sec.III-D)
| 模块 | 配置 |
|---|---|
| 本体 | Unitree G1 humanoid · neck 关节是 passive(剧烈动作会让头摆、破坏 base pose estimation) |
| State estimation | DLIO + Livox MID360 LiDAR + IMU |
| Terrain perception | Elevation Mapping CuPy(由 DLIO base pose 喂入) |
| Motion generator | TensorRT 加速 → 推理 ~0.02 s |
| Generator 运行平台 | Jetson Thor(背挂) |
| Tracker + 其他模块 | Jetson Orin(G1 内置) |
| Receding horizon | 0.5 s prediction horizon,每 0.25 s 更新一次参考(4 Hz) |
📊 关键结果:极端地形上 ~99% 成功率 + 真机人形协调涌现
仿真 quantitative(Table III · 500 robots × 随机初始 pose)
| 任务 | Tracker-only | Tracker + Gen. | 差 |
|---|---|---|---|
| Box climbing (40-80cm × yaw 变化) | 0.859 ± 0.252 | 0.987 ± 0.014 | +0.128 |
| Vaulting (25-55cm) | 0.805 ± 0.231 | 0.990 ± 0.026 | +0.185 |
| Ascending stairs (15-25cm) | 0.845 ± 0.300 | 0.997 ± 0.005 | +0.152 |
| 极端场景 | Tracker-only | Tracker + Gen. |
|---|---|---|
| 80 cm 箱子 | 0.230 | 0.962 |
| 25 cm 台阶 | 0.114 | 0.986 |
| 70 cm 箱子 | 0.606 | 0.966 |
| 55 cm 跨栏 | 0.348 | 0.920 |
Fine-tuning 消融(Fig.4)
fine-tuned tracker vs pre-trained tracker(都接同一 generator),在 climbing up/down、vault、stair 上/下五个任务上 fine-tuning 全胜,地形越高差距越大——证明 fine-tuning 不是 marginal refinement,是 systemic robustness 提升。
硬件 demo(Fig.3 · 真机 G1)
| 任务 | 表现 |
|---|---|
| Box climbing(最惊艳) | G1 爬 75 cm 箱子、再跳下;能直上直下、能 90° 转身侧跳、能从角上爬;爬上时用膝盖和手撑、跳下时用手缓冲——完全是 human-like 全身协调,不是下身主导 |
| Stairs + Vaulting | 连续跨栏、stair 上下;可连续穿越多个不同高度的 hurdle |
| Local navigation | 能绕开箱子到达目标(tracker 部分覆盖 generator 的参考、从侧面绕过) |
| Mixed terrain | vault + stair + box 一条线上 traversal,即使这种组合训练时未见过 |
🌐 在领域中的位置:generator + tracker 范式首次上真机人形
同期对照路线:APEX、Perceptive Humanoid Parkour、ANYmal Parkour 都走「训 N 个专家 + DAgger distill 成一个 student」的重 pipeline——本文用 motion generator 直接替代 expert pool,工程量数量级降低。这是 humanoid loco 工程方法的分水岭。关联线索:T01 sim2real loco、T05 扩散谱系、T12 敏捷地形穿越。
❓ 常见误区
扩散模型推理那么慢,怎么跑 50 Hz 控制环?
不是 50 Hz。generator 是 4 Hz——0.5 s 预测 horizon,每 0.25 s 更新一次参考(receding horizon)。tracker 才是高频。具体加速:(1) 2 步 denoising(不是默认的几十/上百步);(2) TensorRT 加速到 ~0.02 s;(3) Jetson Thor 双计算单元分工——generator 跑 Thor,tracker 跑 Orin。再多 denoising 步质量更好但实时性掉,这是 diffusion-based loco 的固有张力。
generator 和 tracker 为什么不合成一个网络?
这是当前工作的工程妥协,作者明确承认局限。两模型训练目标不完全对齐:generator 学"运动学可行的 motion 分布",tracker 学"动力学可执行的跟踪"。分开训更稳定但多一份复杂度。未来可能被 unified policy(如 MaskedMimic 路线)或 flow matching / consistency model 替代。
为什么不直接用 multi-expert distillation(APEX、ANYmal Parkour 那套)?
因为 distillation pipeline 非常重——要训 N 个专家、做 expert assignment、设计数据分布、DAgger distill。本文用 motion generator 直接替代 expert pool:generator 在线生成参考 = 自动选专家。作者强调这是"不需要 carefully designed distillation procedures"的核心优势。代价是 generator 训练需要参考数据,而参考数据的覆盖率决定了能做的动作类型。
"闭环 fine-tuning"和普通 RL fine-tuning 有什么区别?
关键在于 generator 接谁的 state。开环条件:generator 接自己的上一步预测(autoregressive)——误差累积、容易飘。闭环条件:generator 接真实 robot state——把 generator 锚定到现实。同时往 generator 推理 + tracker observation 都加噪声——让 tracker 学会扛 noisy 参考。这两个 trick 把 tracker 训成了"motion filter"。
tracker 真的需要 terrain height scan 吗?
fine-tuning 阶段需要。OmniRetarget 论文(Yang et al. 2025)的结论是"terrain 非必要",但本文作者发现:在 fine-tuning 阶段保留 exteroceptive input 给 tracker,能让后续 fine-tune 更顺——因为 tracker 要学会用 terrain 观测压制 generator 产出的不安全行为。这也正是 tracker 学成 "motion filter" 的关键感知输入。
75 cm 箱子是 cherry-pick 吗?
不是。Table III 显示 80 cm 箱子 Tracker+Gen. 成功率 0.962,70 cm 是 0.966,60 cm 是 0.996——大范围 box 高度都稳定通过。500 个机器人 × 随机初始 pose 的统计结果,不是单次成功。视频里展示的 75 cm 是真机演示(仿真做到 80 cm)。
主要局限是什么?
(1) 依赖 LiDAR elevation mapping——mapping 一退化整 pipeline 崩,作者明确未来方向是 neural mapping(AME-2)或 belief encoder(ANYmal-C);(2) 数据集只有 ~1 小时,遇到完全新地形(冰雪、泥泞)泛化未验证;(3) 只在 G1 验证,跨本体未测;(4) 2 步 denoising 是工程妥协;(5) 仅 loco 不含 manipulation。