EAGLE:一个策略,控制五台不一样的人形机器人
🎯 为什么重要:每来一台新机器人,就要重训一次?
现在的人形机器人圈有个尴尬:每出一个新机型(Unitree H1、G1、Booster T1、Fourier N1、PNDbotics Adam...),就要把整个 RL 训练 + reward 调参流程从头跑一遍。原因不是「模型不够强」,而是几个硬障碍:
- 自由度不同:H1 是 19 DoF、G1 是 29 DoF、T1 是 23 DoF,动作向量维度都对不齐,更别说共享网络权重。
- 动力学差异:质量分布、关节刚度、电机响应都不一样,在 H1 上调好的 reward 搬到 G1 上可能崩。
- 形态学差异:腿长、质心高度、髋部结构都不同,同一个「走」动作其实是不一样的轨迹。
- 已有跨体方案不够:URDF 随机化的方法只能跟低维速度指令;diffusion motion prior 方法也只支持走,无法做蹲、倾身、抬高度等丰富指令。
EAGLE 想解决的就是这个「fleet-level」问题:一个工厂出 N 款机器人,能不能只训一个策略?并且这个策略不仅要会走,还要会蹲下、会倾身——这些是真正干活(搬东西、钻桌底、够高处)必须的。
💡 核心思想:通才-专才循环蒸馏
核心是一个迭代式的「分叉-合流」循环。每一轮:
- 分叉(specialize):把当前通才 $\pi_g$ 拷贝 N 份,每份在对应机器人上单独 fine-tune 成专才 $\pi_{s_i}$。
- 合流(generalize):通才 $\pi_g$ 跑 rollout,但动作标签用专才的,让通才「学生」去模仿专才「老师团」的联合输出。
关键是「合流」不是简单动作模仿。由于通才和专才共享同一网络结构,作者引入了表征级对齐损失 $L_e = \|e_{\pi_g}(s_t) - e_{\pi_s}(s_t)\|^2$,让通才在隐空间上向专才靠拢——这比只对齐输出动作更稳定。
🛠️ 让一个网络吃下五种机器人的几个关键工程
| 问题 | EAGLE 的解法 | 为什么必要 |
|---|---|---|
| 动作维度不齐 | 统一到 $D_a=32$ 维向量,用机器人特定置换矩阵 $P_{m_i}$ 把原生动作嵌入固定全局索引;执行时用 $S_i$ 反映射回去 | 让一个网络头能输出 5 种不同 DoF 的动作;关节语义稳定(如「右髋 pitch」永远是 index 0) |
| 机器人「长得不一样」怎么告诉网络? | Embodiment-aware observation:给 critic 额外输入躯干 + 双脚的质量、质心位置、惯性矩阵(每个刚体 10 维,共 $m \times 10$);actor 任务是预测它 | t-SNE 显示加了这维度后不同机器人 latent 分簇清晰;不加则混成一团 |
| 指令要丰富 | 命令向量 $c_t = [v_x, v_y, \omega, h, p]$ 5 维:前 3 维任务(线/角速度),后 2 维行为(基座高度、身体俯仰) | 把「走」拓展到「蹲」「倾身」「抬高度」,这是搬运/操作的前提 |
| reward 不能每台重调 | 所有 reward term 跨机器人共享权重,只调 target(如 $h^{\text{target}}$ 按各机 Nominal 高度设) | 避免「为 G1 调好的 reward 拖垮 H1」 |
| 蒸馏稳定性 | DAgger 风格(通才采样 + 专才打标)+ 表征对齐 $L_e$(权重 β=1)+ PPO 探索项(保持探索能力) | 纯 KL 蒸馏(Kickstarting)在 G1/T1/Adam 上会崩,$E_{vx}$ 误差 5 倍于 PPO |
单次蒸馏相当于「老师讲一遍,学生听一遍」。循环式是「学生学完回去当老师,再讲给下一版自己听」——每轮专才都从一个更强的通才起点出发,能探索到更精的技能;这些新技能再被吸回通则,知识在两阶里来回放大。论文 Fig.3 的 error 曲线清楚显示每一轮 specialists(黄点)和 generalist(▲)都同时下降。
📊 关键结果:跨 5 种机器人,零样本 sim-to-real
| 维度 | 数字 | 对比 |
|---|---|---|
| 仿真覆盖 | 5 种机器人:H1 (19 DoF), G1 (29), T1 (23), N1 (23), Adam (25);4096 并行环境 | — |
| 真机覆盖 | 4 种零样本:H1 / G1 / T1 / N1 | 跨 morphology 不掉链 |
| H1 线速度误差 $E_{vx}$ | 0.051 m/s | PPO:0.108;COMPASS:0.725;Kickstarting:0.323 |
| H1 达到「单机器人专家」水平 | EAGLE-specialist $E_{vx}=0.048$,超过单机 PPO (0.067) | 跨体训练有时反向帮助单机 |
| 行为丰富度 | 同一策略可执行 走、倾身、蹲(h + p 命令) | PPO + URDF 随机化的方法做不到 |
| 跨体失败率 | EAGLE 在 5×5=25 个 robot-metric 对上从未「灾难性失败」 | Kickstarting 在 G1/Adam/T1 上失稳(T1 上 $E_{vx}$ 误差 5×;G1/Adam 误差增幅较小) |
| 表征可视化 | t-SNE 上 5 种机器人 latent 形成清晰分簇 | 说明 embodiment cue 被网络有效利用 |
🌐 在领域中的位置
EAGLE 把「跨 embodiment」从「低维速度命令 + 容易崩」推进到「高维全 身命令 + 稳定可部署」。它是 HugWBC 命令空间(5 维 $[v_x, v_y, \omega, h, p]$)和经典 DAgger 蒸馏的结合,但加入了表征对齐 + 循环迭代这两个关键改进。后续工作(如结合 URDF 随机化进一步泛化到未见机器人)是自然延伸。
❓ 常见误区
「跨 embodiment」不就是零填充对齐维度吗?
不是。零填充 + 置换矩阵($P_{m_i}$)只是让网络能吃下不同维动作的工程技巧。真正让策略学会区分不同机器人的是embodiment-aware observation——给 critic 喂入质量、质心、惯性这些物理量。消融实验显示,去掉这一项 $E_{vx}$ 误差会从 0.108 跳到 0.290(H1),t-SNE 上不同机器人 latent 也混成一团。
它和 HugWBC 是什么关系?
HugWBC 提供命令空间设计(5 维 $[v_x, v_y, \omega, h, p]$ 分任务/行为两类)和 reward term 体系。EAGLE 直接继承这套,但加入了:(1) 跨 5 种机器人的统一训练,(2) 通才-专才循环蒸馏,(3) embodiment-aware observation。可以理解为 HugWBC 是「单机版基座」,EAGLE 是「跨机版扩展」。
循环蒸馏几轮才停?
论文用「重复直到通才性能收敛」作停止判据(算法 1 写的是 while πg doesn't converge do),未给固定轮数;Fig.3 给出多轮的误差下降曲线,但正文未点出具体轮数。每轮内部,DAgger 蒸馏会跑若干 epoch(算法 1 中的 $T$)。整体训练成本明显高于单轮,但摊到 5 种机器人上反而比训 5 个独立策略省。
真机零样本 transfer 真的能跑吗?
能。论文 Fig.6 给出 H1/G1/T1/N1 四台真机人形机器人执行「走、倾身、蹲」三种行为的照片。策略纯仿真训练(用 UniCon 做接口),没做真机微调。观察包含 5 帧历史本体感受($K=5$)和步态时钟以增强鲁棒性。论文在 Discussion 中明确说明训练时未使用 URDF / morphology domain randomization,并将其列为未来工作方向(「A promising direction is to combine our distillation framework with explicit URDF randomization or morphology randomization during training...」)。