P-HOVER-2024 · Versatile Neural Whole-Body Controller for Humanoid Robots
作者 / 机构:Tairan He†, Wenli Xiao†, Toru Lin, Zhengyi Luo, Zhenjia Xu, Zhenyu Jiang, Jan Kautz, Changliu Liu, Guanya Shi, Xiaolong Wang, Linxi "Jim" Fan‡, Yuke Zhu‡(†共一 · ‡GEAR Team Leads;NVIDIA + CMU + UC Berkeley + UT Austin + UC San Diego)
发表:arXiv 2410.21229(2024-10 投稿,v2 2025-03 修订),ICRA 2025
arxiv:2410.21229 · 代码:github.com/LeCAR-Lab/human2humanoid(KB 标注;PDF/项目页未显式列出,待核) · 项目页:hover-versatile-humanoid.github.io
在线索中的位置:T07 (humanoid teleop) + T10 (VLA+WBC) 的统一 controller 层;ExBody/H2O/OmniH2O/HumanPlus 的"统一继承者"。
一句话定位:用一个 DAgger-distilled 多模式 unified policy 替代 ExBody/H2O/OmniH2O/HumanPlus 这一堆 specialist controller——通过 mode mask + sparsity mask 让单一网络同时支持 kinematic-position / joint-angle / root-tracking 三类指令的任意子集组合(>15 种实际模式),且性能不输还略胜 specialist。
动机
2023–2024 涌现了一批 humanoid 全身控制器:ExBody(root + upper joint)、H2O(8 keypoints 位置)、OmniH2O(head + 两手位置)、HumanPlus(whole-body joint + root)。它们各自设计了一个 command space(指令的语义和维度都不同),导致:
- 接口碎片化:VR 手柄 / 键盘 / MoCap / exoskeleton / Vision Pro 各对应一种 command,部署时换设备就得重训 policy;
- specialist 互不兼容:ExBody 模式训出来的 policy 不能临时切到 OmniH2O 模式去握手,反之亦然;
- 重复造轮子:每个工作都重新训一个 oracle imitator,知识无法沉淀。
HOVER 的洞察:所有这些 controller 底层都在做同一件事——跟踪一个 motion reference,区别只是"指令维度子集不同"。所以可以设计一个统一 command space(包含所有模式可能用到的维度)+ 用 mask 决定激活哪些维度,然后从单一 oracle 蒸馏出一个能处理任意 mask 组合的 generalist policy。
方法核心
全部数字来自 PDF 正文 Sec.II–III + Table I/II/III/IV/V。
1. 统一 command space(Sec.II.B)—— 三类模式 × 两个身体区域
三类原子控制模式:
- Kinematic Position Tracking:target 是某些 rigid-body keypoint 的 3D 世界位置(如 head、hands、feet、shoulders、elbows)。
- Local Joint Angle Tracking:target 是每个 motor 的关节角度。
- Root Tracking:target root velocity、height、roll/pitch/yaw。
两个独立身体区域:upper body 和 lower body 各自独立选择激活哪些原子模式(可多选,PDF Sec.II-E 明确举例:"the upper body may track kinematic positions, while the lower body focuses on joint angle and root tracking",即下半身同时激活两类)。粗略组合 3 × 3 = 9 大类(单选近似),加上 sparsity mask 任意屏蔽具体维度 → 实际 >15 种应用模式(对应论文 Fig.1)。这覆盖了 ExBody/H2O/OmniH2O/HumanPlus 所有 prior work 的 command space(论文 Table I 列出对比;如 HumanPlus mode 的下半身就同时启用 joint-angle + root-tracking 两类)。
澄清任务提示中的"base/cervical/whole-body 三模式":论文未使用这种命名。实际"三"指三类原子控制模式(kinematic-position / joint-angle / root-tracking);"多模式同时激活"指 upper-body 和 lower-body 可以独立选不同模式,并通过 mask 在每个 episode 内固定下来。
Atomicity 原则:command space 每一维独立,任何子集都合法——这是后续 mask 机制的基础。
2. Motion retargeting(Sec.II.C)
把 AMASS 适配到 humanoid:3 步(与 H2O 一致):
- forward kinematics 计算 humanoid keypoints;
- fit SMPL 模型到 humanoid 骨架;
- 用 gradient descent 把 AMASS 序列重定向到 fitted SMPL,得到 humanoid 数据集 $\hat{Q}$(只保留 feasible motions)。
3. Oracle policy(specialist teacher,Sec.II.D)
Oracle 输入:
- proprioception $s_t^{p\text{-oracle}} = [p_t, \theta_t, \dot p_t, \omega_t, a_{t-1}]$:所有 rigid body 的位置、朝向、线/角速度、last action(特权信息,真机不可得);
- goal $s_t^{g\text{-oracle}} = [\hat\theta_{t+1}\ominus\theta_t,\ \hat p_{t+1}-p_t,\ \hat v_{t+1}-v_t,\ \hat\omega_{t+1}-\omega_t,\ \hat\theta_t,\ \hat p_t]$:参考姿态 + 一阶差分(同时给绝对参考和相对差)。
网络:3 层 MLP,[512, 256, 128](沿用 OmniH2O 结构)。
Reward(Table II 完整权重):penalty + regularization + task 三大类。重点:
- Torque limits / DoF pos/vel/accel limits:大负权重(−2.5e2、−1.25e2 等)硬约束;
- Action rate / torque / DoF velocity:smoothing(−1e−4 ~ −6.25);
- Feet air time / stumble / in-the-air / feet orientation / feet contact force / slippage / max feet height per step:步态相关;
- DoF position / body position / body velocity / body rotation / body angular velocity / root velocity / root rotation:tracking reward(task reward),权重 +8 ~ +3e1。
用 PPO 训练 + OmniH2O 的 domain randomization。oracle 是一个满血特权 + 全 reference 的 motion imitator,能 99.3% survive(Table III)。
4. Student policy(HOVER,Sec.II.E)—— 蒸馏 + mask 随机
Student 输入:
- proprioception $s_t^{p\text{-student}} = [q, \dot q, \omega^{\text{base}}, g]_{t-25:t} \cup [a_{t-25:t-1}]$:只保留真机可观测的(joint pos/vel、base angular vel、gravity 向量、action history),stack 最近 25 步(0.5 s @ 50 Hz),不包含全局位置/朝向(特权)。
- command input:$s_t^{g\text{-student}} = M_{\text{sparsity}} \odot M_{\text{mode}} \odot s_t^{\text{task}}$,其中 $s_t^{\text{task}} = [s_t^{\text{upper}}, s_t^{\text{lower}}]$。
两层 mask(Sec.II.E Command Mask,关键设计):
- Mode mask $M_{\text{mode}}$:选定 upper/lower body 各自激活哪些原子模式(kinematic-position / joint-angle / root-tracking,可多选;每 body region 对每个原子模式各有一个 bit)。
- Sparsity mask $M_{\text{sparsity}}$:在选定模式内再随机屏蔽具体维度。例:upper 用 kinematic-position 模式时,sparsity 可以只激活"左手"或"两手 + head"。
每个 mask bit 独立采样自 Bernoulli(0.5),episode 开始采一次、整 episode 固定。这种训练时随机 mask 让 student 学到"任意 command 子集都能用"的 generalist 能力。
5. Policy distillation via DAgger(Sec.II.E Policy Distillation)
每 episode:
采样 M_mode、M_sparsity(episode 内固定)
roll out student 在仿真 → 得到 (s^p-student, s^g-student) 轨迹
每步:
由当前真机态推算对应的 oracle state (s^p-oracle, s^g-oracle)
oracle 输出 â_t = π^oracle(s^p-oracle, s^g-oracle)
student 输出 a_t = π^student(s^p-student, s^g-student)
loss = ||â_t - a_t||_2^2
关键:student 看的是 masked / history-based input,oracle 看的是 privileged / 全 reference input;让 student 学会从"残缺指令 + 历史观察"推断出 oracle 的最优 action。这是 ANYmal-C privileged learning 范式在 humanoid 上的复刻,但加了 mask 随机化以支持多模式。
6. 实验(Sec.III)—— 三个问题逐一回答
硬件:Unitree H1(19 DoF,51.5 kg,1.8 m)。仿真 IsaacGym。
Q1: HOVER 是否能 ≥ specialist?(Table III,5 seeds)
- 论文总论:在每种 command mode 下,HOVER 在 12 个 metric 中至少 7 个优于对应 specialist(PDF Sec.III-A 原话 "outperforms prior work specialist controllers in at least 7 out of the 12 metrics")。
- ExBody mode:HOVER survive 99.1%(持平 specialist 99.1%),全局位姿误差 Eg-mpjpe 185 vs 275(约 −33%)、Empjpe 63.9 vs 83.1、Eupper-j 0.148 vs 0.166 都更小;但 Eacc 反而劣化(3.01 vs 2.63),Eroot-vel / Eroot-y 也微弱劣化——即 12 metric 中约 8 个优于、3 个劣于、1 个持平。
- HumanPlus mode:HOVER survive 98.9% vs specialist 98.4%;Eg-mpjpe 182 vs 266、Empjpe 64.5 vs 80.1、Eupper-j 0.145 vs 0.177 都更小;但 Eacc / Eroot-vel / Eroot-h / Eroot-y 反而劣化(specialist 不是"全输")。
- H2O mode / OmniH2O mode:同样,HOVER 普遍优于但不是全胜。
- 结论:generalist 在每种模式下都拿下多数 metric——可能因为统一训练数据多、正则化更强;但并非"全面碾压",Eacc / 部分 root 维度上 specialist 仍占优。
Q2: HOVER vs 从零训多模式 RL baseline?
- baseline = 同样 mask 随机化但用 RL 从零训(不蒸馏)。
- HOVER 在 Fig.4 的 8 种 mode × 4 metric(root orientation / upper joint / local body position / global body position)共 32/32 metric 全胜(PDF 原话 "consistently lower tracking error across 32/32 metrics and modes")。证明 oracle distillation 是关键。
Q3: 真机部署 + 多模式切换?(Sec.III.C + Fig.5/6)
- 20 段 standing motion 量化追踪:HOVER 在 12 个 metric 中 11 个优于 specialist。
- 模式切换 demo:行走中从 ExBody mode 切到 H2O mode(Fig.6a);转身倒走中从 HumanPlus mode 切到 OmniH2O mode(Fig.6b);Vision Pro teleop 中随机 mask 掉 head / hands,仍平滑追踪(Fig.6c)。
- 还展示 root pitch tracking、full-body kinematic tracking(动态跑步动作)。
7. 一些具体数字(论文实测)
- Oracle survive:99.3% ± 0.203;
- ExBody specialist:survive 99.1%、Eg-mpjpe 275;
- HOVER 在 ExBody mode 下:survive 99.1%、Eg-mpjpe 185(降 33%);Eacc 反而 3.01 > specialist 2.63;
- 真机 standing motion(Table V,3 mode × 4 metric = 12):HOVER 11/12 metric 更优。
为什么重要
- 第一个真正"多模式 unified"的 humanoid 全身 controller。ExBody/H2O/OmniH2O/HumanPlus 各为一个 specialist,HOVER 把它们全部覆盖、还略胜——证明 generalist 在 humanoid 控制上可行。
- mask + DAgger 蒸馏的工程范式:mode mask + sparsity mask 在 episode 内随机,让单一网络学到任意 command 子集的鲁棒响应。这个 idea 后续被 humanoid-VLA 系(如 GR00T N1、π0)反复借鉴。
- 运行时无缝切换模式:行走中切 ExBody↔H2O、HumanPlus↔OmniH2O 不摔——这对真实部署(设备切换、传感器遮挡)极有价值。
- 证明 specialist 训练是 overfit 浪费:每个 mode 训一个 specialist 不仅工程繁琐、还更差;generalist 是 free lunch。
局限
- 仍依赖 oracle imitator:oracle 本身要在仿真用大规模 AMASS + PPO 训练,离了高质量 retargeted motion 数据集就不行。
- student 输入是 25 步 history stack(无 RNN):context 有限,长程不确定性建模弱于 ANYmal-C 的 GRU。
- 未做高动态 / parkour 类动作:实验聚焦 standing motion 和 locomotion,没展示 jump/flip/parkour(这是 BeyondMimic / Extreme Parkour 的方向)。
- command space 不含 task goal:HOVER 是低层 controller,上层 task policy(VLA 或 HIT-like)仍需另接。
- VR/MoCap/exoskeleton 接口实现细节:论文给 conceptual 图,具体 device-driver 实现需查代码。
- "15+ modes" 实际是组合:不是 15 个独立训练的 skill,而是 mode × sparsity mask 笛卡尔积。论文未列全部 15+ 模式的精确清单(Fig.1 给示意)。
复现要点
基于 PDF + KB 标注的开源代码 github.com/LeCAR-Lab/human2humanoid(与 H2O/OmniH2O 共用仓库;PDF 正文与项目页未显式给 URL,待核)。
- Oracle training:PPO + IsaacGym,3 层 MLP [512, 256, 128];input 是特权 proprio + 全 reference goal(含一阶差分);reward 参考 Table II(务必加 torque/DoF limit 大负权重);domain randomization 沿用 OmniH2O。
- AMASS retargeting:3 步(FK → SMPL fit → gradient descent),生成 feasible motion 数据集 $\hat{Q}$。可直接用 H2O 的 retargeting 代码。
- Student input:proprio = [q, q̇, ω_base, g],stack 25 步;不能含全局位置/朝向(特权)。
- 两层 mask:每 episode 开始采 $M_{\text{mode}}$(upper/lower 各自决定激活哪些原子模式,可多选)+ $M_{\text{sparsity}}$(在选定 mode 内屏蔽维度),每 bit Bernoulli(0.5),episode 内固定。
- DAgger distillation:roll out student → 推算对应 oracle state → 查询 oracle 得 $\hat a_t$ → MSE loss。
- 网络:student 和 oracle 都用 3 层 MLP [512, 256, 128](同结构便于初始化)。
- 部署:Unitree H1 19 DoF,50 Hz;运行时上层只发 command + mask,policy 推理一次给全 19 维 action。
- 常见坑:(1) mask 必须 episode 内固定(每步变会让 policy 混乱);(2) student 不能看特权信息,否则 distillation 失效;(3) mode mask 必须独立作用于 upper/lower,不能整身只选一类(否则丢失组合泛化)。
相关
- 建立在:OmniH2O [He et al. 2024, arXiv:2406.08858](oracle 结构 + domain randomization + proprio history 25 步)、H2O、ExBody、HumanPlus、DAgger [Ross et al. 2011]、AMASS。
- 同期/后续:BeyondMimic [Liao et al. 2025](可扩展 tracking + diffusion)、Humanoid-VLA、GR00T N1(一个模型多技能 + 多模式)、ASAP [2025](残差 sim2real)。
- 本仓库笔记交叉引用:
- T07-humanoid-teleop-stack.md(HOVER 是 teleop 接口统一层)
- T10-vla-wbc-integration.md(HOVER 作为低层 WBC,接 VLA 高层)
- T04-motion-prior-amp-to-bfm.md(oracle imitator 是 reference-state alignment 的延续)
- P-HumanPlus-2024.md(被 HOVER 覆盖的 specialist 之一)
- P-OmniH2O-2024.md(oracle 结构来源)
- P-BeyondMimic-2025.md(高动态版继承者)
- C-sim2real-methods.md(teacher-student / privileged distillation 范式)