里程碑
机器人Unitree G1/H1
数据集AMASS
上真机
物理感知
实时
输入模态proprioception

HOVER:一个策略通吃所有控制模式

Tairan He, Wenli Xiao, Toru Lin 等(NVIDIA + CMU + UC Berkeley + UT Austin + UC San Diego)。arXiv:2410.21229(2024 年 10 月,v2 2025 年 3 月)。 项目页 · locomotionmulti-mode distillation

🧠 一句话心智模型:人形机器人不同任务想用不同命令——有的给「走多快」(速度),有的给「手抬高」(关节角),有的给「手腕 3D 位置」(VR 头盔)。HOVER 把所有这些命令拼成一个超长向量,然后用 0/1 掩码说「这次只听这几个通道」。结果一个网络同时是「走步控制器」「VR 遥操器」「动捕追踪器」,还能随时切换

🎯 为什么重要:「换任务=换策略」让开发变噩梦

在 HOVER 之前,人形机器人控制领域的现状是:

核心痛点:每个团队都用不同的命令格式——
  • ExBody:上半身用关节角 + 下半身用速度
  • H2O:8 个关键点的 3D 位置
  • OmniH2O:头部 + 双手的 3D 位置
  • HumanPlus:全身关节角 + 速度
每发一篇论文都要从头训一个新策略,互不兼容。换任务 = 换接口 = 换网络。

HOVER 的观察是:这些「控制模式」本质上都是对人形机器人同一个动作目标的不同描述方式。如果能用统一向量表示,再让策略学会「按需激活某些维度」,就能一个模型搞定所有。

VR 头盔 RGB 相机 外骨骼 机械臂 摇杆 统一命令空间(一条超长向量) 运动学位置 关键点 3D 位置 头/手/脚/肘… 局部关节角 每个 motor 角度 Motor 0…18 速度/高度/RPY v / h / roll/pitch/yaw HOVER 统一策略 ↑ 每个 bit 一个掩码:0/1 决定该维度是否激活
图 1:HOVER 的统一命令空间。所有控制设备都映射到同一个向量上,靠掩码选择「这次听谁的」。

💡 核心思想:Oracle 蒸馏 + 双重掩码

HOVER 训练分两步:先训一个「看一切」的 oracle再蒸馏出一个「看局部」的学生。学生用的命令是被掩码过的。

阶段 1:Oracle 教师策略 输入:所有 rigid body 状态(特权) + 全部参考目标(完整) 3 层 MLP [512, 256, 128] PPO 在 AMASS 重定向数据上 → 学到「完整目标下怎么做」 这是「上限」——什么都能看见 Reward:task + penalty + regularization DAgger 蒸馏 学生自己 rollout → oracle 给「正确动作」 阶段 2:HOVER 学生策略 输入:本体感知(25 帧历史)+ 掩码目标 Mode mask 上半身走哪种模式 下半身走哪种模式 Sparsity mask 每个 bit 独立 Bernoulli(0.5) 目标 = M_mode ⊙ M_sparsity ⊙ goal_full 每 episode 开始随机抽一次 监督:L = ||a_oracle − a_student||²
图 2:两阶段训练。Oracle 看得见一切,学到「理想动作」;HOVER 学生只能看部分命令,但通过 DAgger 反复让学生 rollout、Oracle 给监督,学生学会「给什么命令都能跑」。

🛠️ 工程关键设计

设计心智为什么必要
① 三类原子命令运动学位置 / 局部关节角 / 根(速度+高度+RPY)覆盖了之前所有工作的命令格式(Table I),且维度互相独立
② 上下半身独立 Mode mask上半身和下半身可以各选一种模式(如「上半身关节 + 下半身速度」)对应 ExBody 那种混合模式;也对应「上半身操作 + 下半身走路」的真实需求
③ Sparsity mask (Bernoulli 0.5)每个具体维度(如左手、右脚)独立以 50% 概率被激活支持「只跟左手」「只跟头」这种稀疏模式,模拟真机部分目标缺失
④ AMASS 数据 + sim-to-data 重定向先把人动重定向到 H1,过滤不可行动作获得大规模、可行的训练数据
⑤ DAgger 在线蒸馏学生自己 rollout,Oracle 给动作标签,监督学习避开 BC 的分布偏移;学生见到的状态分布和部署时一致
⑥ 25 帧历史堆叠本体感知 = [q, q̇, ω, g, a] 过去 25 帧堆叠替代显式状态估计器(如速度估计),让网络从历史推断
🔮 直觉:「Oracle → 蒸馏」为什么比直接 RL 好?
直接用 mask 训 RL 会让策略「四不像」——每个 episode 只见一种 mask,信号太稀疏。HOVER 改用 Oracle 蒸馏:Oracle 永远看完整目标,所以它学到的是纯粹的「动作能力」(怎么平衡、怎么动),学生把这个能力迁移过来,再学「在掩码下也能调用相同能力」。结果 HOVER 在 32/32 指标上超过 Multi-Mode RL(Fig.4 雷达图)。

📊 结果:一个模型 > 15 个专门策略

对比(仿真)结果
ExBody 模式 vs SpecialistHOVER 至少 7/12 指标更优(论文原文保证);E_mpjpe 185mm vs 275mm
HumanPlus 模式 vs SpecialistHOVER 至少 7/12 指标更优;E_mpjpe 182mm vs 266mm
H2O 模式 vs SpecialistHOVER 至少 7/12 指标更优;E_mpjpe 121mm vs 137mm
OmniH2O 模式 vs SpecialistHOVER 至少 7/12 指标更优;E_mpjpe 128mm vs 149mm
vs Multi-Mode RL(同 mask 但 from scratch)HOVER 在 32/32 项指标上全胜
Survival rate所有模式 98.4%–99.3%
真机(Unitree H1,19 DoF,~51.5kg,~1.8m)数字
20 个站立动作追踪HOVER 在 12 项中 11 项超过 specialist
ExBody 模式 E_mpjpe36.8 mm(vs specialist 39.3)
支持模式切换走路时从 ExBody 切到 H2O,转弯时从 HumanPlus 切到 OmniH2O
VR 头盔随机遮蔽测试头/手位置随机 mask,仍能流畅追踪
关键洞察:HOVER 不是「在某个任务上赢了 specialist」,而是在所有任务上都赢了 specialist。论文假设原因:蒸馏让 HOVER 学到了所有模式共享的运动能力(平衡、协调、人形 motion prior),而 specialist 过拟合到自己的奖励结构。

🌐 在领域中的位置

单模式专门策略(ExBody/H2O/OmniH2O/HumanPlus) MHC(多模式但限定类型) HOVER(任意掩码组合)⭐ BFM(行为基础模型 + 隐空间合成)

HOVER 是多模式通用 WBC 的里程碑。它证明了「Oracle 蒸馏」可以训出比专门策略更强的通用策略。后续 BFM 在它基础上引入 CVAE 隐空间、Bernoulli(0.5) 单阶段掩码,进一步扩展到行为合成与残差学习。属于 T-运动控制 线索中「统一命令空间」路线的代表作。

❓ 常见误区

HOVER 是怎么处理「上下身不同模式」的?

用两个独立的 Mode mask——上半身和下半身各选一种模式。比如「上半身 = 关节角追踪」+「下半身 = 速度追踪」就是 ExBody 模式。这让 HOVER 能直接替代所有先前工作的混合命令格式。

Sparsity mask 真的有用吗?

有用。它对应真机部署的常见情况:VR 头盔偶尔丢失手部追踪、相机被遮挡、某些关键点暂时不可观测。训时见过 50% 稀疏度,部署时部分缺失也能继续工作。论文里专门做了「随机 mask 头和手」的 VR 演示验证这一点。

为什么 oracle 用 MLP 而不是 Transformer?

作者沿用 OmniH2O 的架构:3 层 MLP [512, 256, 128]。原因:(1) 19 DoF 命令空间相对低维;(2) RL 训练 MLP 收敛更稳;(3) MLP 推理快,适合真机低延迟部署(具体控制频率论文未明示,待核)。

HOVER 能在模式之间平滑切换吗?

能。论文 Fig.6 演示:走路中突然从 ExBody 切到 H2O、转弯中从 HumanPlus 切到 OmniH2O,机器人不摔倒、不卡顿。这归功于统一的命令空间——切换只是改 mask,底层动作能力是连续的。

它和 BFM 是什么关系?

HOVER 是 BFM 的直接前身。BFM 把 HOVER 的「两阶段固定模式掩码」升级为「Bernoulli(0.5) 任意组合」,并加上 CVAE 隐空间用于行为合成。BFM 论文里 HOVER 是主要 baseline,BFM 几乎在所有指标上超过 HOVER。