⏱ ~33 min
里程碑
⭐ 为何重要

首个开源的真人形(Unitree H1)全身实时遥操作框架,用单目 RGB 捕捉人体关键点并实时映射为全身控制。打通了『用真人示教驱使人形采集大规模数据』的链路,是后续 OmniH2O、HumanPlus、HOVER 等人形遥操作与数据收集工作的开山之作。

建立在
机器人Unitree H1
数据集AMASS
上真机
物理感知
实时
输入模态vision,proprioception

P-H2O-2024 · Learning Human-to-Humanoid Real-Time Whole-Body Teleoperation

作者 / 机构:Tairan He, Zhengyi Luo(共同一作), Wenli Xiao, Chong Zhang, Kris Kitani, Changliu Liu, Guanya Shi(CMU)
发表:IROS 2024(arXiv 2024.03 首发,arXiv:2403.04436v1)
代码 / 项目页human2humanoid.com;后续与 OmniH2O 同仓 LeCAR-LAB/human2humanoid
在线索中的位置T07 人形遥操栈第一个 learning-based 全身实时 teleop 节点;OmniH2O(见 P-OmniH2O-2024)的直接前作、PHC/PULSE 的下游应用、HOVER/HumanPlus 的对照基线。
PDF 核实源papers_pdf/H2O_2403.04436.pdf 正文 Sec.IV–V + Table I/II/III。下文 reward 17 项精确权重(Penalty 3 / Regularization 8 / Task 6)、DR 8 项范围、proprioception 66 维 + goal 72 维 = state 138 维分解、Table III 对比数字均与 PDF 对齐(2026-07 已核对)。
一句话定位:用"sim-to-data 运动过滤 + privileged imitator + Sim2Real RL imitator"三段式,第一次让一台全尺寸 humanoid(Unitree H1,19-DoF)靠一个 RGB 相机实时跟人走、跳、踢、推、打拳。


动机

2024 年初,全身人形遥操还停在 model-based MPC 一系(如 Darvish [6]、Zhang [11]),它们共同的硬伤是:(1) 为算力妥协必须用 simplified dynamics,能跟踪的动作很有限;(2) 依赖 contact measurement / 外部传感器(exoskeleton、force plate),部署门槛高、不能 scale。另一方面,graphics 社区用 RL 已经能让 avatar 跟踪 webcam 输入的人体运动(PHC [Luo 2023]、PULSE [Luo 2023]),但这些方法假设不切实际的 torque / joint limit、还要靠非物理的 assistive force,离真机很远。H2O 要回答的问题是:能不能把"graphics 里训 avatar 跟踪"那一套,加上严格的 sim2real,搬到一台真实全尺寸 humanoid 上、并且只用一个 RGB 相机在线驱动? 关键障碍是训练数据——AMASS 里大量动作(cartwheel、超 wide step)对电机驱动的人形根本不可行,naive retargeting 训出的 policy 会被这些不可行样本带坏。

方法核心

整套 pipeline 分三段:(a) sim-to-data 过滤(b) Sim2Real RL imitator 训练(c) RGB 在线部署

1. Retargeting:用 fitted SMPL shape 解决"in-toed"伪影

人形骨架(H1,19 DoF)与 SMPL kinematic tree 差异显著。H2O 没有直接拷贝 joint angle(这会让末端位置漂移),而是先把 SMPL 的 shape 参数 $\beta$ 拟合到 H1:选 12 个对应关节(肩、肘、腕、髋、膝、踝),在 rest pose 上对 $\beta$ 做梯度下降,最小化这 12 个关节位置误差,得到 $\beta'$。关键 motivation:H1 在 rest pose 两脚间距远大于 SMPL 默认值,naive 拟合会产生 "in-toed"(脚尖内八)的稳定伪影;用 $\beta'$(人造一个"宽站距"的 SMPL body)就能消除这个伪影、产出平衡的 humanoid 动作。

之后用 Adam 优化器对每段 AMASS 序列做 IK:固定 translation $p$ 与 pose $\theta$、换上 $\beta'$,最小化 12 个关节位置差。AMASS 13K 序列 → 10K retargeted 序列 $\hat{Q}_{retarget}$。

2. Sim-to-data:privileged imitator 做数据清洗

直接拿 10K 序列训 policy 会被不可行样本(如 cartwheel)拖垮。H2O 提出的 "sim-to-data" 流程:

  • 训练一个 privileged imitator $\pi_{privileged}$(仿 PULSE [32]),输入包含全刚体状态:$sp^{privileged}_t = [p_t, \theta_t, v_t, \omega_t]$(全刚体位置/朝向/线速度/角速度,real-world 拿不到的特权信息),goal 含一阶差分 $sg^{privileged}_t = [\hat\theta_{t+1}\ominus\theta_t, \hat p_{t+1}-p_t, \dots]$。
  • 不加 domain randomization,让它表现上限尽量高,作为"可行性 oracle"。
  • $\pi_{privileged}$ 训完后跑一遍 $\hat{Q}_{retarget}$,把它跟踪失败的序列丢掉——这筛出约 8.5K / 10K 序列,得到 clean dataset $\hat{Q}_{clean}$。

这是把"仿真里的 tracking 上限"当数据质量度量——本质是 sim-as-data-critic 思路,被后续 ExBody、OmniH2O、BeyondMimic 直接沿用。

3. Sim2Real imitator:reward + DR + early termination

状态空间(专为 real-time RGB 部署设计;PDF Table III 中 H2O state $S\subset\mathbb{R}^{138}$):

  • proprioception $sp_t = [q_t, \dot{q}_t, v_t, \omega_t, g_t, a_{t-1}]$(DoF 位置 $q_t\in\mathbb{R}^{19}$、DoF 速度 $\dot{q}_t\in\mathbb{R}^{19}$、根线速度 $v_t\in\mathbb{R}^3$、根角速度 $\omega_t\in\mathbb{R}^3$、projected gravity $g_t\in\mathbb{R}^3$、上一动作 $a_{t-1}\in\mathbb{R}^{19}$),共 $19+19+3+3+3+19 = 66$ 维。
  • goal $sg_t = [\hat{p}^{kp}_t, \hat{p}^{kp}_t - p_t, \dot{\hat{p}}^{kp}_t]$:8 个 keypoints(双肩、双肘、双手、双踝,$8\times 3=24$ 维)的参考位置 + 与当前 humanoid 对应点的位置差 + 速度,共 $24\times 3 = 72$ 维。没有全关节角目标,因为实时 RGB(pose estimator 输出)只能稳定给到 keypoint。
  • $66 + 72 = 138$ 维,与 H2O-reduced 的 $66 + 24 = 90$ 维对应(reduced 只保留 raw keypoint 位置、去掉差分与速度)。
  • action $a_t \in \mathbb{R}^{19}$:19 维关节 target,由 PD 控制器($\tau = K_p(a_t - q_t) - K_d\dot{q}_t$)转 torque。

Reward(三类共 17 项 = Penalty 3 + Regularization 8 + Task 6,Table I 精确表达式 + 权重):

  • Penalty(3 项硬约束):torque 超限 $\mathbb{1}(\tau_t \notin [\tau_{\min}, \tau_{\max}])$ 权重 $-0.2$;DoF 超位置限 $\mathbb{1}(q_t \notin [q_{\min}, q_{\max}])$ 权重 $-100$;termination $\mathbb{1}_{\text{termination}}$ 权重 $-200$。
  • Regularization(8 项塑形):DoF 加速度 $\|\ddot{q}_t\|_2^2$ 权重 $-8.4\times10^{-6}$;DoF 速度 $\|\dot{q}_t\|_2^2$ 权重 $-3\times10^{-3}$;action rate $\|a_t - a_{t-1}\|_2^2$ 权重 $-0.9$;torque L1 $\|\tau_t\|$ 权重 $-9\times10^{-5}$;feet air time $T_{air} - 0.25$ 权重 $+8\times10^{2}$(鼓励每步抬脚 ≥0.25s——H2O 的核心步态奖励,后续被 OmniH2O 用 "max-feet-height-per-step" 替换,因为它会导致"原地跺脚"伪影);feet contact force $\|F^{feet}_{xy}\|_2^2$ 权重 $-0.1$(防脚侧向力过大);stumble $\mathbb{1}(F^{feet}_{xy} > 5 F^{feet}_z)$ 权重 $-10^3$(横向力超过 5× 垂直力,跌倒信号);slippage $\|v^{feet}_t\|_2^2 \mathbb{1}(F_{feet}\ge1)$ 权重 $-30$。
  • Task reward(6 项 dense 指数核):DoF position $\exp(-0.25\|\hat{q}_t - q_t\|_2^2)$ 权重 24;DoF velocity $\exp(-0.25\|\dot{\hat{q}}_t - \dot{q}_t\|_2^2)$ 权重 24;body position $\exp(-0.5\|p_t - \hat{p}_t\|_2^2)$ 权重 40;body rotation $\exp(-0.1\|\theta_t \ominus \hat{\theta}_t\|)$ 权重 16;body velocity $\exp(-10\|v_t - \hat{v}_t\|_2^2)$ 权重 60;body angular velocity $\exp(-0.01\|\omega_t - \hat{\omega}_t\|_2^2)$ 权重 60。

注意 goal state 只跟踪 8 个 keypoints,但 task reward 给全关节——这是用 dense 全身 reward 弥补稀疏 keypoint goal 的设计。

Domain Randomization(Table II,sim2real 关键):

  • 摩擦 $U(0.2, 1.1)$、link mass $U(0.7, 1.3)\times$default、base CoM offset $U(-0.1, 0.1)$ m、PD gains $U(0.75, 1.25)\times$default、torque RFI $0.1\times$limit、control delay $U(20, 60)$ ms、外部推扰每 5s 推 0.5 m/s、地形(flat/rough/low obstacles)。

Early termination(提采样效率):base height < 0.3 m;projected gravity 在 x 或 y 轴 > 0.7;平均 link 距离参考 > 0.5 m。

训练PPO(Isaac Gym,200 Hz 仿真),policy 输出 50 Hz,部署 50 Hz;推理时用 3D human pose estimatorHybrIK [27])从 RGB 出 keypoints 作 goal。

4. 部署:RGB → keypoints → policy → PD

实时环:1080p webcam(30 Hz)→ HybrIK pose estimator(30 Hz)→ 8 keypoints goal → RL policy(50 Hz)→ PD(200 Hz,onboard)→ H1。

部署 caveat(论文 Sec. VI-B 原话):root linear velocity $v_t$ 在真机上由外部 motion capture 系统(50 Hz)估计,其余 proprioception 来自 H1 板载传感器(200 Hz)。论文明确说"opt in to MoCap for this work due to its simplicity"——即 H2O 的"单 RGB"指的是 teleop goal 通道,机器人自身状态仍依赖 MoCap;这一限制后来被 OmniH2O 用 25 步历史 + DAgger 蒸馏绕开(用历史 proprioception 替代全局 $v_t$)。

关键实验(Table III)

在 uncleaned retargeted AMASS 数据集 $\hat{Q}_{retarget}$(10K 序列)上的 motion imitation(数字均取自 PDF Table III):

Policy状态维Sim2RealSucc ↑Eg-MPJPE ↓Empjpe ↓
Privileged(上限)$S\subset\mathbb{R}^{778}$85.5%50.043.6
H2O-reduced(仅 keypoints 位置)$S\subset\mathbb{R}^{90}$53.2%200.2115.8
H2O w/o sim-to-data$S\subset\mathbb{R}^{138}$67.9%176.695.0
H2O(full)$S\subset\mathbb{R}^{138}$72.5%166.791.7

消融结论:(1) sim-to-data 清洗提升 Succ 约 5 个点(67.9% → 72.5%);(2) goal state 加 position-difference + velocity(H2O-reduced → H2O:53.2% → 72.5%,贡献最大);(3) privileged 用了 778 维特权信息,sim2Real 退化到 72.5%——这是关键的 sim-real gap 量化(约 13 个点)。

真机演示:走、后跳、踢球、转、挥手、推、打拳、推婴儿车、抓箱丢桶。

为什么重要

  1. 第一个 learning-based 全身实时人形 teleop。在 H2O 之前,"全身 teleop" 是 MPC 的领地,且要 exoskeleton/force sensor。H2O 用 RL + 单 RGB 把 teleop 端的硬件门槛从"全身动捕/外骨骼"降到"一个摄像头"(机器人端仍依赖 MoCap 估 $v_t$,见上文部署 caveat),是 2024 全身 teleop 爆发的起点。
  2. sim-to-data 范式:用 privileged policy 作为 motion feasibility oracle 过滤 AMASS,这一思路被后续 ExBody、OmniH2O、BeyondMimic 直接复用,成为 humanoid RL 数据准备的标配。
  3. state space 只用 real-world 可得量(关节、projected gravity、 keypoints),明确把"特权信息"与"部署信息"分离,为 OmniH2O 的 teacher-student DAgger 蒸馏铺好接口。
  4. 量化了 sim-real gap:privileged 778 维 → 85.5%,部署版 → 72.5%,约 13 个点的"蒸馏要补"目标。OmniH2O 在自己更干净的 $\hat{Q}$ 上用 25 步历史 + DAgger 把 Succ 推到 94.1%、Eg-MPJPE 压到 141 mm(注:跨数据集,仅作方向性参考)。

局限与被超越

  1. 不停小碎步、无法静止站立:feet-air-time reward + 始终跟踪 reference velocity 导致 policy 学会"原地踏步保平衡"。OmniH2O 用 max-feet-height-per-step + standing/squatting augmentation 直接解决(见 P-OmniH2O-2024)。
  2. 只覆盖躯干 19 DoF、不含灵巧手:H2O 的 goal 是 keypoints,没定义 hand 接口——灵巧手 teleop 由 Bunny-VisionPro / Open-TeleVision 接力。
  3. 单一输入模态(RGB)VR、外骨骼、MoCap 都不能直接接入;OmniH2O 把 goal 抽象为 kinematic pose $q_t = (\theta_t, p_t)$ 后统一了 4 种输入。
  4. 敏捷动作 sim-real gap 大:踢/跳/转在真机易失败——ASAP [2502.01143] 用 residual delta dynamics 部分修复。
  5. 跟踪误差仍大(Eg-MPJPE 166.7 mm)——OmniH2O 把它压到 141 mm。

复现要点

  • 代码LeCAR-LAB/human2humanoid 提供 privileged teacher 与 sim2real imitator 入口;H1 URDF 公开。
  • 训练硬件:单 A100 即可(PPO + Isaac Gym);主要时间花在 AMASS 13K 序列的 retargeting + privileged 过滤。
  • 必须复刻的细节:(1) SMPL shape 拟合 $\beta'$(不做的话会出现 in-toed);(2) feet-air-time reward(但不推荐照抄,会跺脚——参考 OmniH2O 改 max-feet-height);(3) control delay DR [20, 60] ms(不加真机抖)。
  • 常见坑:(1) privileged imitator 不加 DR,否则它不再代表"可行性上限";(2) goal 用 raw keypoints 不够,必须加 position-difference 与 velocity 项;(3) early termination 阈值过松会让 policy 学到"倒下也算完成"。

相关

  • 建立在:PHC [Luo 2023, arxiv:2305.06456]、PULSE [Luo 2023](privileged motion imitator)、AMASS [Mahmood 2019]、PPO、DeepMimic [Peng 2018](motion imitation RL 范式)。
  • 直接引出OmniH2O [He 2024, arxiv:2406.08858](同团队,kinematic pose 通用接口 + teacher-student DAgger,详见 P-OmniH2O-2024);ExBody [Cheng 2024, arxiv:2402.16796](同期的 motion tracking 后端);HumanPlus [Fu 2024, arxiv:2406.10454](用 HST transformer 替代 MLP policy);HOVER [He 2024](多模式蒸馏)。
  • 下游数据管道:GR00T N1、Helix、π0 等 humanoid VLA 依赖的 teleop 数据大多源自 H2O/OmniH2O 这套采集栈。
  • 本仓库线索交叉引用T07 人形遥操栈(关键转折 4)、T01 sim2real-locomotion(teacher-student 同栈)、T10 VLA+WBC 整合(teleop 数据→VLA)。