HOVER:一个策略通吃所有控制模式
🎯 为什么重要:「换任务=换策略」让开发变噩梦
在 HOVER 之前,人形机器人控制领域的现状是:
- ExBody:上半身用关节角 + 下半身用速度
- H2O:8 个关键点的 3D 位置
- OmniH2O:头部 + 双手的 3D 位置
- HumanPlus:全身关节角 + 速度
HOVER 的观察是:这些「控制模式」本质上都是对人形机器人同一个动作目标的不同描述方式。如果能用统一向量表示,再让策略学会「按需激活某些维度」,就能一个模型搞定所有。
💡 核心思想:Oracle 蒸馏 + 双重掩码
HOVER 训练分两步:先训一个「看一切」的 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 帧堆叠 | 替代显式状态估计器(如速度估计),让网络从历史推断 |
直接用 mask 训 RL 会让策略「四不像」——每个 episode 只见一种 mask,信号太稀疏。HOVER 改用 Oracle 蒸馏:Oracle 永远看完整目标,所以它学到的是纯粹的「动作能力」(怎么平衡、怎么动),学生把这个能力迁移过来,再学「在掩码下也能调用相同能力」。结果 HOVER 在 32/32 指标上超过 Multi-Mode RL(Fig.4 雷达图)。
📊 结果:一个模型 > 15 个专门策略
| 对比(仿真) | 结果 |
|---|---|
| ExBody 模式 vs Specialist | HOVER 至少 7/12 指标更优(论文原文保证);E_mpjpe 185mm vs 275mm |
| HumanPlus 模式 vs Specialist | HOVER 至少 7/12 指标更优;E_mpjpe 182mm vs 266mm |
| H2O 模式 vs Specialist | HOVER 至少 7/12 指标更优;E_mpjpe 121mm vs 137mm |
| OmniH2O 模式 vs Specialist | HOVER 至少 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_mpjpe | 36.8 mm(vs specialist 39.3) |
| 支持模式切换 | 走路时从 ExBody 切到 H2O,转弯时从 HumanPlus 切到 OmniH2O |
| VR 头盔随机遮蔽测试 | 头/手位置随机 mask,仍能流畅追踪 |
🌐 在领域中的位置
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。