深度⏱ ~2 min
里程碑
⭐ 为何重要

人形 teleop 的标杆之作,核心贡献是把 kinematic body pose 确立为 universal teleop interface,让 VR/RGB 相机/exoskeleton/语音 等任意人机输入都能经统一 retargeting 映射到带灵巧手的全身人形。它承上 H2O/ExBody、启下 HOMIE/HOVER,把遥操升级成可规模化采集数据再学习自主策略的数据飞轮。在 action_gen 脉络里它是「以人动作为控制信号」范式的核心节点。

机器人Unitree H1 + Inspire dexterous hands
数据集AMASS
上真机
实时
输入模态vision,language,proprioception

论文:Tairan He†, Zhengyi Luo†, Xialin He†(†共一), Wenli Xiao, Chong Zhang, Weinan Zhang, Kris Kitani, Changliu Liu, Guanya Shi et al. OmniH2O: Universal and Dexterous Human-to-Humanoid Whole-Body Teleoperation and Learning. Carnegie Mellon University(LeCAR Lab)+ Shanghai Jiao Tong University。arXiv:2406.08858, 2024;正式收录 ICML 2025 (PMLR v270 he25b)。🌐

一句话直觉

让人用动作实时遥控人形机器人。秘诀是规定一套"姿态接口",无论什么输入都先翻译成它。📎像 USB-C 的接口分层思想,把异构输入归一到一层几何姿态。注意:它不含力/触觉,且只跟头+双手 3 个点。这里"姿态"指每个身体部位的位置和朝向。

是什么·为什么

要解决的问题:让人用全身动作远程操控人形机器人。还要能从遥操数据学自主技能。📎

老办法的痛点:2024 年中之前的接口各做各的。有的只抓摄像头看到的躯干。有的得穿动捕服。有的只能控单只手。📎每种输入对应一套目标空间,数据跨不了机器人。

转身一·统一姿态接口:规定一个统一的中间表示——所有刚体的位置和朝向。它叫"运动学姿态"。📎无论你戴头显、用摄像头还是穿外骨骼,都先把人的动作翻译到这套姿态。一份训练数据从此能跨硬件复用。

转身二·老师教学生:先在仿真里训一个"老师"策略。老师有特权——能看到每个刚体的真实速度和参数,所以学得快。再用老师"教"出一个能上真机的"学生"。教法是学生走到哪、老师就在那里给标准答案,学生跟着对齐。

这一步真正难的是训老师。老师要靠二十多项精心设计的奖励才训到 94.77%。蒸馏本身反而简单。关键是有一个已解的老师,给逐状态稠密标签。

还能串起来:遥操轨迹还能直接拿来训练自主技能。一份接口、一条"采数据 → 学技能"的闭环。

一句话类比:OmniH2O 之于人形遥操,像 USB-C 的接口分层。把异构输入归一到一层几何姿态。但目前不含力/触觉,且只跟头+双手 3 个点。

怎么做

核心机制·两个策略:训一个老师、一个学生。📎老师在仿真里有特权信息(每个刚体的真实速度、动力学参数)。它用 PPO 训到 94.77% 成功率。学生部署到真机没这些特权,靠"看老师怎么做"学。蒸馏几乎无损——student 94.10% vs teacher 94.77%。📎

关键设计·特权老师 + DAgger 蒸馏:student 能到 94% 的前提是先有一个用特权信息训到 94.77% 的老师。老师在仿真里看得到每个刚体的真实速度和动力学参数。它配 20+ 项 reward 工程(见下「Reward 分三类」)才训成。这是这页真正难、真正贵的部分。有了已解的老师,蒸馏怎么交付就是 DAgger。📎学生不在固定数据集上学,在仿真里不停 rollout。学生走到哪、老师就在那里给"标准答案"。具体做法是把学生状态反推回特权状态、让老师给出参考动作。loss 是两者动作的平方距离(DAgger loss):

$$\mathcal{L}=\|a^{\text{priv}}_t - a_t\|_2^2$$

读法:等号右边是"老师给的目标动作"和"学生实际输出"之差的 L2 范数平方。这是 DAgger 思路——on-policy 收集学生失败状态、再让老师标注。它不是固定数据集的行为克隆。同结构 student 没有老师监督、直接吃稀疏 RL reward 只能到 47%。📎⚠️ 因果别讲反:47%→94% 的跃升主要归功于有一个已解的特权老师给逐状态稠密标签。DAgger 只是标签投递方式。换 BC、换 GAIL 之类只要能从已解老师取标签,都会拿到接近的数。光有 DAgger 形式、没特权老师,根本无从蒸馏。

关键设计·只跟 3 个点:学生跟踪的不是全关节角,而是头+两手 3 个点的位置。📎消融:3 点、8 点、22 点成功率都在 94% 附近。3 点(VR 可得)几乎无损。

跺脚病怎么治的:前作 H2O 用"脚空中时间"做奖励,机器人就原地跺脚刷分。📎OmniH2O 改用"每步最大脚高度"做奖励。把每步脚抬起超过 25 cm 的部分作为正向信号、权重 1000。这鼓励"要么静止、要么大步走"。配合课程式 penalty 调整:episode 短时减 penalty 让 RL 探索,长时加 penalty 收敛到稳定。

常见误区(先抛一个):觉得 student 一定丢精度——其实几乎追平 teacher。决定 student 成败的不是输入少了多少。关键是有没有一个训好的特权老师给逐状态稠密标签。DAgger 只是交付方式。

深度

老师和学生具体看什么(数字来自 Appendix Table 1/2):

Policy状态维Sim2RealSucc ↑Eg-MPJPE (mm) ↓Empjpe (mm) ↓
Privileged teacher91394.77%126.5170.68
H2O13887.52%148.1381.06
OmniH2O166594.10%141.1177.82

📎。Student 状态维 = 25 步历史 × 63 + 当前 90 = 1665;teacher 状态维 = 913。注:PDF Fig.3 caption 写「26 history step × 63」(含当前帧),按 25 历史 + 1 当前理解;1665 = 25×63 + 90。

问题形式化与接口定义:任务形式化为 goal-conditioned RL 的 MDP $\mathcal{M}=\langle \mathcal{S},\mathcal{A},\mathcal{T},R,\gamma\rangle$,状态 $s_t=(sp_t, sg_t)$(proprioception + goal),动作 $a_t$ 是 PD 控制器目标关节角,用 PPO 最大化 $\mathbb{E}\sum_{t=1}^{T}\gamma^{t-1}r_t$。📎关键决定:显式定义硬件无关的 kinematic pose 作为目标空间

$$q_t \triangleq (\theta_t, p_t),\qquad \dot{q}_t \triangleq (\omega_t, v_t)$$

记号约定:$\hat{\cdot}$(戴帽)= VR/pose generator 输入空间,$\bar{\cdot}$(戴横)= MoCap 数据集真值,无修饰 = 仿真或真机值。这一层处在异构输入(视觉/VR/外骨骼)与机器人具体动力学之间——两边都能稳定映射到它。

Retargeting + 可行性过滤:训练数据来自 AMASS(约 14K 序列),按 H2O 的 retargeting pipeline 映射到 humanoid 骨架。📎H2O 已知"不停小碎步无法静止站立"缺陷,OmniH2O 用「standing / squatting」增广解决——对每个序列额外生成「固定下半身+根位置」的稳定变体,让训练分布含足够静止/蹲姿(Appendix H 消融确认)。

Reward 分三类(共 20+ 项,Appendix E/F)

  • Penalty(终止/超限/动作平滑):关节超位置限 $\mathbb{1}(d_t\notin[q_{\min},q_{\max}])$ 权重 $-125$、超速度限 $-50$、终止 $-250$、torque 超限 $-2$;上/下半身 action rate 不同权重(下 $-3$、上 $-0.625$,鼓励上身高频、下半身稳定)。
  • Regularization(脚接触/朝向/不打滑):stumble $\mathbb{1}(F^{xy}_{feet}>5F^z_{feet})$、slippage $\|v^{feet}_t\|^2\mathbb{1}(F_{feet}\ge1)$ 权重 $-37.5$、feet orientation $\|g^z_{feet}\|$ 权重 $-62.5$。
  • Task reward(tracking):每个刚体位置/姿态/速度的指数核——body position $r=\exp(-0.5\|p_t-\hat p_t\|^2_2)$ 权重 30,VR-3-points body position 权重 50(更高,因为是 deployable 输入),DoF position $\exp(-0.25\|\hat d_t-d_t\|^2)$ 权重 32。

Reward curriculum(论文 Sec. E):对每个 reward 项 $r_{t,i}$ 定义 scale $s_{t,i}=\min(s_{\text{current}}, 1)$ 当 $r_{t,i}\ge0$,否则 $s_{t,i}=s_{\text{current}}$;$s_{\text{current}}$ 当平均 episode 长度 $<40$ 时乘 0.9999,$>120$ 时乘 1.0001,上界 1。本质:episode 短时减弱 penalty 让 RL 探索,长时增强 penalty 收敛到稳定行为。

Domain Randomization(Appendix Table 16):摩擦 $U(0.2,1.1)$、base CoM offset $U(-0.1,0.1)$ m、link mass $U(0.7,1.3)\times$ 默认、PD gain $U(0.75,1.25)\times$ 默认、torque RFI $0.1\times$ limit、control delay $U(20,60)$ ms、motion reference offset ±2 cm;外部扰动每 5 s 推 1 m/s;地形 mix(flat/rough/low obstacles)。

关键消融(Table 1/2):

  • 有特权老师监督(DAgger 蒸馏)比没老师直接 RL:成功率从 47% → 94%(同 architecture)。📎47%→94% 的跃升主要归功于有逐状态稠密标签的老师(训老师要 20+ 项 reward 工程,是这页真正难的部分),DAgger 只是标签投递方式——别把"有老师 vs 没老师"错讲成"DAgger vs RL"。
  • 历史步数:5/25/50 步成功率都在 94% 附近,0 步 93.8%(仅低 0.3pp,真正下降的是运动质量 MPJPE);25 步是性能/效率 sweet spot。
  • 跟踪点数:3 / 8 / 22 points 成功率都在 94% 附近——3 点几乎无损。
  • 全局线速度:去掉后 sim 不变、real 反而更稳(VIO/MLP 估计噪声大于隐式历史估计,Table 2(a))。这是关键工程洞察:不显式估计速度,让 policy 从 25 步历史隐式学到。
  • 网络架构:MLP > 1D-conv(GRU/LSTM),与 H2O 历来发现一致。

真机结果(20 个站立序列):OmniH2O Eg-MPJPE 47.94 mm(H2O 87.33 mm),Empjpe 41.87 mm(H2O 53.32 mm)——约 H2O 的一半误差。📎

OmniH2O-6 数据集:VR teleop 采集 6 任务(Catch-Release / Squat / Rock-Paper-Scissors / Hammer-Catch / Boxing / Basket-Pick-Place),30 Hz 同步 RGBD 头戴相机 + 头/手 motion goal(相对根坐标系)+ 电机关节目标。简单任务约 5 分钟数据、复杂任务约 10 分钟(合计约 40 分钟真机示教)即可训 LfD 自主策略。

灵巧手控制:与全身 policy 解耦。VR 估手姿态 → 直接 IK 解算关节目标 → 喂现成的低层 hand controller。不进 RL(手自由度太多,PD 控制已够),但接口仍属 kinematic pose 范畴,可替换为 MoCap glove 或 RGB 估手。📎

局限

  1. 几何层接口、不含力/触觉:kinematic pose 只描述位置和朝向,不描述接触力。闭环稳定性高度依赖 WBC 对抗动态扰动,敏捷动作(踢/跳/转)仍会失败——后续 ASAP [2502.01143] 用 residual delta dynamics 补 sim-real gap 才部分解决。🌐
  2. 不解决操作员认知负荷:操作员要同时控全身+灵巧手,长时间操作很累——HOMIE [2502.13013] 把下半身委托给 RL 才部分缓解。🌐
  3. 3 点跟踪的隐式补全:仅跟踪头+双手 3 个点,全身关节冗余由 policy 隐式补全——极端姿态可能映射出非自然全身姿态。
  4. AMASS 依赖:训练分布由 AMASS 决定,AMASS 之外的动作风格(如武术、舞蹈特定流派)覆盖差。

研究者视角

图谱定位:OmniH2O 是 T07 人形遥操栈的枢纽节点📎它把 2024 年中全身遥操从"每篇论文一个 ad-hoc 接口"推向"一个接口接所有输入",是 HOVER、Bunny-VisionPro、Open-TeleVision、HumanPlus 共享前提。更关键的是它跑通了"teleop 采集 → 自主技能学习"闭环——teleop 轨迹直接作为 IL 数据、用同一 kinematic pose 表示训练自主技能,首次在全身+灵巧手级别跑通,这正是 GR00T N1、Helix 依赖的数据管道。

演化谱系(pivot / 后继):

  • 建立在:H2O [Cheng 2024, arxiv:2403.04436](同团队前作,单 RGB teleop)、DAgger [Ross 2011]、PPO [Schulman 2017]、AMASS retargeting pipeline。🌐
  • 同期:HumanPlus [Fu 2024]、Bunny-VisionPro / Open-TeleVision(Vision Pro teleop)。
  • 后继:HOVER [He 2024, arxiv:2410.21229](mode concurrence 多模式蒸馏)、HOMIE [2502.13013](半自主、把下半身委托给 RL)、ASAP [2502.01143](residual delta dynamics 修敏捷动作 gap)。🌐

副产品·人形 RL 工程包:max-feet-height-per-step reward + reward curriculum + DAgger student-teacher,这套 trick 被后续 humanoid RL 工作大量复用。[未确认]

Open problems

  1. 力/触觉接口:当前 kinematic pose 是几何层,不含接触力。一个能把力反馈也纳入的 universal interface 尚未出现。[未确认]
  2. 敏捷动作的 sim-real gap:踢、跳、转等高动态动作仍会失败。ASAP 用 residual delta dynamics 是部分解,未根治。[未确认]
  3. 认知负荷:单操作员长时间全身 teleop 疲劳严重。半自主(HOMIE 那种)或多操作员协同是开放方向。[未确认]
  4. 极端姿态的全身冗余:3 点接口在常见姿态下靠 policy 隐式补全得很好,但舞蹈/杂技等极端姿态会暴露冗余解析的不适定性。

常见误区

"DAgger 蒸馏就是行为克隆" —— 错。行为克隆在固定数据集上学;DAgger 是 on-policy:student 在仿真里 rollout 到哪、teacher 就在那里标注,重点收集 student 的失败状态。📎

DAgger 是"学生边走边问老师",不是"学生刷老师留下的题库"。

"全身 teleop 一定要 MoCap 才能稳" —— 错。OmniH2O student 只跟 3 个 VR 点,且不显式喂全局线速度——去掉线速度后 real 反而更稳(VIO/MLP 估计噪声大)。📎

让 policy 从 25 步历史里隐式估速度,比显式估计更稳。

"student 一定丢精度 vs teacher" —— 错。这里 student 94.10% 几乎追平 teacher 94.77%,远超 H2O 87.52%。📎

决定精度的是有没有一个训好的特权老师给逐状态稠密标签(DAgger 只是交付方式、不是主角),不是"输入少了多少"。

"历史步数越多越好" —— 不一定。5/25/50 步成功率都在 94% 附近,0 步 93.8%(仅低 0.3 个百分点,真正下降的是运动质量 MPJPE)。📎同结构没老师、直接用 RL 训 student 反而崩到 47%——这不是"历史长度"问题,是"没有特权老师监督"问题。

历史长度有 sweet spot;决定成败的是有没有特权老师,不是历史窗口。

"OmniH2O 是 NVIDIA / UCSD 的工作" —— 不准确。它是 CMU(LeCAR Lab)牵头、CMU + SJTU 合作的产物,通讯作者是 CMU 的 Guanya Shi,3 位共一(Tairan He / Zhengyi Luo / Xialin He)均挂 CMU。🌐

纯学术机构合作,不是某工业实验室主导。

检查点

Q1

用 USB-C 或自己的类比,用自己的话解释:OmniH2O 的"姿态接口"为什么能让一份训练数据跨硬件复用?

💡 参考答案

  • 核心:姿态接口(运动学姿态 = 所有刚体的位置和朝向)是一个统一的中间表示,处在异构输入与机器人动力学之间。
  • 跨硬件复用的机制:无论 VR 头显、摄像头、外骨骼,都先把人的动作翻译到这套姿态;机器人这边也映射到同一接口。换硬件不影响另一边。
  • 类比锚:USB-C 的接口分层思想——把异构输入归一到一层几何姿态。
Q2

OmniH2O 里的"老师"和"学生"分别是什么?为什么不能直接训一个能上真机的学生,要先训一个有特权的老师?

💡 参考答案

  • 老师:在仿真里训的策略,有特权——能看到每个刚体的真实速度和参数,所以学得快,能训到 94.77%。
  • 学生:能上真机的策略,没有特权信息。
  • 为什么要先训老师:学生部署到真机没特权信息,直接训学不动;老师有特权在仿真里学快、学稳,再用'老师教学生'把能力传给能上真机的学生。
Q3

把 student 从 47% 训到 94%,真正功劳最大的是哪一步?是 DAgger 吗?

💡 参考答案

  • 真正功劳最大的是'有一个用特权信息 + 20+ 项 reward 工程训到 94.77% 的老师'——它给逐状态稠密标签。
  • DAgger 只是标签投递方式(学生走到哪、老师就在那里给标准答案),不是主角。
  • 47%(没老师、直接 RL)→ 94%(有老师监督)的跃升主要归功于'有特权老师',不是'DAgger vs RL'的对比;换 BC/GAIL 只要从已解老师取标签都会接近。
Q4

USB-C 类比哪里和 OmniH2O 不像?

💡 参考答案

  • 不像一:USB-C 同传数据+电力;OmniH2O 的 kinematic pose 只描述位置和朝向,明确不含力/触觉(闭环稳定性靠 WBC 抗动态扰动)。
  • 不像二:USB-C 是行业冻结标准、针脚映射无歧义;OmniH2O 接口只是一条研究流水线(被 HOVER/HOMIE/ASAP 改了又改),且只跟头+双手 3 个点,全身关节靠学生隐式补全(极端姿态可能映射出非自然动作)。
  • 结论:'一种插头接所有外设'高估了接口的完整性,应说成'接口分层思想'而非万能插头。
Q5

OmniH2O 把遥操和学自主技能串成一条线,为什么这件事重要?

💡 参考答案

  • 机制:遥操轨迹用同一套 kinematic pose 表示,可以直接拿来当模仿学习的数据训练自主技能。
  • 为什么重要:跑通了'teleop 采集 → 自主技能学习'的闭环,首次在全身+灵巧手级别跑通;这正是 GR00T N1、Helix 等后人形数据管道依赖的前提。
  • 类比:一份接口、一条'采数据 → 学技能'的流水线,数据跨硬件复用降低了采集成本。

FAQ

Q1:能直接装到我自己的机器人上吗?

不能直接装。开源的是 LeCAR-LAB/human2humanoid 的训练代码(retargeting + privileged teacher + DAgger student),需要 Unitree H1 + Inspire 灵巧手 + VR 头显,加上 AMASS 数据库自己 retargeting 训一遍。🌐真机 policy 权重只部分开源。

Q2:为什么把灵巧手和全身 policy 解耦?

手的自由度太多(Inspire 每只手约 12 DoF,双手约 24 DoF),塞进全身 RL 会让训练不稳。VR 估手姿态 → 直接 IK 解算 → 喂现成 hand controller,PD 控制已经够用。接口仍属 kinematic pose,未来可以替换为 MoCap glove 或 RGB 估手。📎

Q3:DAgger 和行为克隆到底什么区别?

行为克隆(BC):先有一批固定数据集(专家轨迹),学生只在那上面学,学生遇到的"没见过"的状态没法补救。DAgger:学生 on-policy 在仿真里 rollout,每次学生走到一个新状态,老师就给那个状态标注正确动作。重点是不断收集学生的"失败状态"。OmniH2O 的 DAgger 还多一步——把 student 的非特权状态反推回 teacher 的特权状态,让 teacher 给标注。

Q4:3 个点真的够跟踪全身吗?

够。消融显示 3 / 8 / 22 点成功率都在 94% 附近。📎全身关节冗余由 policy 从 25 步历史里隐式补全。但极端姿态(比如舞蹈、杂技)可能映射出非自然全身动作——这是 3 点接口的代价。

Q5:训练需要多少算力?

论文未明示 RL 训练所用 GPU 型号(待核)。📎可以确定的是:AMASS 14K 序列的 retargeting + feasibility filter 是 CPU/工程密集,是非显存瓶颈——别把"RL 训练单卡可跑"误读成"整条流水线轻量"。