一句话定位
ExBody 让 Unitree H1 人形机器人用单一策略网络实时复现从 CMU MoCap / 文本扩散 / YouTube 视频得到的多样人类上半身动作,同时腿部只被要求鲁棒地跟踪 root 速度命令——通过**“上半身严格模仿、下半身放松只跟速度”的目标解耦**,把图形学里的角色动画技能真正落到真机上(RSS 2024)。
背景与定位
这是基于学习的真机人形全身表现性控制的开山工作之一(作者自称”first work on learning-based real-world humanoid control with diverse motions”)。它站在两条线的交叉点:
- 图形学 physics-based character animation(DeepMimic / AMP / phc-perpetual-humanoid-control / ASE)——能在仿真里模仿海量动作,但依赖真机没有的特权信息(世界坐标、根速度、每刚体 keypoint)、无力矩上限、且角色 DoF 远多于真机(SMPL 人形 69 DoF、23 个球关节 vs H1 只有 19 DoF),大执行器增益(~60 kg/m,比真机可行值大一个量级),无法直接迁移。
- 腿足 RL locomotion(learning-to-walk-in-minutes-massively-parallel-rl、extreme-parkour-legged-robots、robot-parkour-learning、real-world-humanoid-locomotion-rl)——能做鲁棒真机行走,但通常只优化速度/朝向/步态,动作”单调、缺乏表现力”,且只用很小的参考动作集。
核心洞见(作者反复强调):不要精确模仿参考动作。人类动作的下半身特征直接套到形态差异巨大的 H1 上会过约束,导致脆弱、抖动的策略。ExBody 的范式是 goal-conditioned RL 模仿——把目标空间拆成”表现目标 $\mathcal{G}^e$(只管上半身关节+keypoint)“与”根运动目标 $\mathcal{G}^m$(管全身的速度/姿态/高度)“,前者要严格追踪、后者可用手柄任意指令,从而既保留表现力又保住行走鲁棒性。该解耦思路后续被 H2O/OmniH2O/HumanPlus 等一系列 humanoid teleoperation/imitation 工作继承。
模型架构
这是一个 RL 全身控制器(不是 VLA),非视觉、纯本体感知闭环。
- 策略主干:Actor-Critic MLP,用 PPO 训练(代码基于
rsl_rl/legged_gym,README 证实)。论文正文未披露 actor 隐藏层维度。无 VLM、无视觉编码。 - 目标条件(goal-conditioned) $\pi:\mathcal{G}\times\mathcal{S}\mapsto\mathcal{A}$,$\mathcal{G}=\mathcal{G}^e\times\mathcal{G}^m$:
- 表现目标 $\mathcal{G}^e=\langle\mathbf{q},\mathbf{p}\rangle$:$\mathbf{q}\in\mathbb{R}^{9}$ 是上半身 9 个执行器的关节角,$\mathbf{p}\in\mathbb{R}^{18}$ 是 6 个 keypoint 的 3D 位置(左右肩、左右肘、左右手)。刻意排除下半身(髋/膝/踝)的关节与 keypoint。
- 根运动目标 $\mathcal{G}^m=\langle\mathbf{v},rpy,h\rangle$:线速度 $\mathbf{v}\in\mathbb{R}^3$、身体 roll/pitch/yaw $\in\mathbb{R}^3$、根链接高度 $h$。部署时可直接由手柄给出。
- 观测 $\mathcal{S}$(proprioception,全部真机可得):$s_t=[\omega_t, r_t, p_t, \Delta y, q_t, \dot q_t, \mathbf{a}_{t-1}]^T$——根角速度、roll、pitch、期望-当前 yaw 差、关节位置、关节速度、上一步动作。故意不观测当前线速度 $\mathbf{v}$、绝对高度 $h$、绝对 yaw——这些是真机特权信息(见与 PHC/ASE 的对比表)。
- 动作 $\mathbf{a}_t\in\mathbb{R}^{19}$:19 个关节 PD 控制器的目标位置,PD 用每关节 $k_p^i, k_d^i$ 算力矩(具体增益值论文正文未给)。
- 机器人本体:Unitree H1,总质量 ~51.5 kg、身高 ~1.8 m、19 DoF;肩/髋各 3 个相互垂直的旋转电机(等效球关节),其余关节各 1 DoF。
- 一致性/记忆:单网络、单步反应式;行走步频不是预定义的,策略在回放上半身动作时自主学会把步频与上半身姿态同步。
对比图形学工作(论文 Table I):
| 指标 | ExBody(本文) | PHC | ASE |
|---|---|---|---|
| DoF | 19 | 69 | 37 |
| 动作片段数 | 780 | 11000 | 187 |
| 动作总时长(h) | 3.7 | 40 | 0.5 |
| 真机 | ✓ | ✗ | ✗ |
| 单网络 | ✓ | ✗ | ✓ |
| 观测线速度(特权) | ✗ | ✓ | ✓ |
| 观测 keypoint(特权) | ✗ | ✓ | ✓ |
| 观测机器人高度(特权) | ✗ | ✗ | ✓ |
数据
- 训练集:从 CMU MoCap 里半自动筛选出 780 个片段、共 13383.0 s ≈ 3.7 h 的单人平地动作。类别分布:
- Walk 546 片段 / 9076.6 s
- Dance 78 / 1552.3 s
- Basketball 36 / 766.1 s
- Punch 20 / 800.0 s
- Others 100 / 1188.0 s
- 筛选规则(附录明确列出关键词):保留含
walk / navigate / basketball / dance / punch / fight / push / pull / throw / catch / crawl / wave / high five / hug / drink / wash / signal / balance / strech / leg / bend / squat / traffic / high-five / low-five的动作;排除含ladder / suitcase / uneven / terrain / stair / stairway / stairwell / clean / box / climb / backflip / handstand / sit / hang的动作(因框架无法处理明显环境交互/粗糙地形/坐姿)。 - 数据先验的价值:作者画出 root movement 目标的分布(CMU 采样 1338 个数据点)——前进偏多、侧走对称、roll 小、pitch 偏向前倾、高度窄集中在标称值附近。与”在球坐标里随机采样再查碰撞”(如 [13])相比,来自真人的分布天然不违反自碰撞约束,且很多动作”先原地站、再起步走”,形成天然课程。实验证明这个先验对策略学习帮助巨大。
- 动作重定向(retargeting):直接把局部关节旋转映射到机器人骨架。肩/髋的 3 个垂直旋转电机视作 1 个球关节,用四元数 $\mathbf{q}_m=(q_x,q_y,q_z,q_w)$ 经四元数→轴角→指数映射转成 3 个旋转关节角 $\mathbf{m}=\theta\mathbf{a}$;肘/躯干/膝/踝等 1D 关节则把旋转角投影到对应轴。重定向代码派生自 ASE。
- 真机测试集:11 个 CMU 动作(共 202.3 s,含 Punch / Wave Hello / Mummy Walk / Zombie Walk / 夸张步幅 / High Five / Basketball Signals / Adjust Hair / Drinking / Direct Traffic / Hand Signal / Russian Dance)+ 3 个文本扩散动作(MDM 生成的 Boxing / Hug / Shake Hands,各 4.0 s)。项目页还展示了从 YouTube 舞蹈视频(Uptown Funk、Hiphop)重定向的动作。
- 多来源可插拔:部署时目标动作可来自静态 MoCap、扩散生成模型(Text2Motion)、或 video-to-pose 模型——训练/推理解耦。
训练方法
- 框架:goal-conditioned RL,massively parallel 仿真(isaac-gym),4096 个并行环境,PPO。
- RSI(Reference State Initialization)——关键组件:每个环境在初始化/reset 时,从动作数据集里随机采一个状态 $\mathbf{g}=[\mathbf{g}^e,\mathbf{g}^m]$ 并把机器人置于该状态。消融显示这是策略能学起来的决定性因素(去掉后策略”自杀”,见评测)。
- 奖励(表现 + 根运动追踪,Table III):
- 上半身 DoF 位置 $\exp(-0.7|\mathbf{q}_{ref}-\mathbf{q}|)$,权重 3.0
- 上半身 keypoint 位置 $\exp(-|\mathbf{p}_{ref}-\mathbf{p}|)$,权重 2.0
- 线速度 $\exp(-4.0|\mathbf{v}_{ref}-\mathbf{v}|)$,权重 6.0(全奖励里最高)
- roll & pitch $\exp(-|\mathbf{\Omega}_{ref}^{\phi\theta}-\mathbf{\Omega}^{\phi\theta}|)$,权重 1.0
- yaw $\exp(-|\Delta y|)$,权重 1.0
- 正则奖励(Table VI,保证可 sim2real 的步态):脚抬高 $\max(|h_{feet}|-0.2,0)$ 权重 2.0、腾空时间 10.0、拖地 -0.1、接触力 -3e-3、绊倒(水平力>4×竖直力) -2.0、关节加速度 -3e-7、动作变化率 -0.1、能量 -1e-3、自碰撞 -0.1、关节限位违反 -10.0、下半身关节偏离默认位 -10.0(把腿约束在合理姿态)、竖直线速度 -1.0、水平角速度 -0.4、投影重力 -2.0。
- PPO 超参(Table VII):折扣 0.99、GAE 0.95、每 rollout 21 步、5 epoch、4 minibatch、熵系数 0.01、value loss 系数 1.0、clip 0.2、reward normalization、LR 1e-3、Adam。
- AMP 基线超参(Table VIII,仅用于对比):判别器隐层 [1024,512]、replay buffer 1e6、demo buffer 2e5、demo fetch 512、learning batch 4096、LR 1e-4、reward 系数 4.0、梯度惩罚 1.0。
- Text2Motion:用预训练 transformer-based MDM 从文本生成动作,每次请求 10 个 repetition、人工挑最合理的一个重定向到 H1。
- sim2real:在高度随机化的挑战性地形上训练以保证迁移与”不只是复读”;README 显示在 8k 迭代后加入 delay 以贴近真机时延。
Infra(训练 / 推理工程)
- 仿真/训练硬件:Isaac Gym GPU 并行,4096 环境;论文未披露 GPU 型号、卡数、GPU-hours、总训练迭代数或墙钟时长(README 提到 delay 在 8k 迭代后加入,可推知训练远超 8k 迭代,但未给确切数)。
- 精度 / 并行策略:未披露。
- 推理 / 部署:控制频率、推理 FPS、时延、板载算力(onboard 计算硬件)均未披露(论文只描述部署效果与手柄指令,未给控制 Hz)。策略用
save_jit.py导出 TorchScript 部署(README)。 - 代码栈:
legged_gym+rsl_rl+ Isaac Gym,PyTorch 1.10 / CUDA 11.3,Python 3.8;重定向依赖 ASE 的 poselib + fbx SDK。
评测 benchmark
主要是仿真定量消融 + 真机定性/稳定性对比,作者明确表示”单个 tracking error 数字没有对比就无意义”,故用分布可视化 + 消融表。
仿真消融(Table IV,4096 环境采 10000 条轨迹,报 mean episode 指标;指标越高越好)——列出 Motion Sample / Random Sample 两种命令来源下的 MEL(回合长)、MELV(线速度追踪)、MERP(roll-pitch 追踪)、MEK(key body 追踪):
| 方法 | MEL | MELV | MERP | MEK |(Motion Sample) |---|---|---|---|---| | ExBody(本文) | 16.87 | 318.67 | 754.92 | 659.78 | | ExBody+AMP | 17.28 | 205.60 | 765.85 | 635.51 | | ExBody+AMP NoReg | 16.16 | 87.83 | 714.74 | 561.56 | | No RSI | 0.23 | 0.63 | 10.09 | 7.25 | | Random Sample | 16.50 | 181.85 | 704.73 | 326.66 | | Full Body Tracking | 13.28 | 246.11 | 584.40 | 397.25 |
结论:
- ExBody 的线速度追踪 MELV 全场最高(Motion Sample 318.67 / Random Sample 132.14),得益于 RSI 带来的探索。
- No RSI 直接崩溃(MEL 0.23)——策略学会”尽快自杀”以避免负奖励,找不到正奖励状态。
- Random Sample 命令(不用数据集分布而均匀随机采 $\mathbf{g}^m$)会退化成”初始化后立即跪下保持稳定、完全放弃根运动目标”。
- Full Body Tracking(连下半身一起严格模仿)所有指标都更差:腿部出现大量伪影,“参考是单步、机器人却走多步来稳住”。
- AMP 作为正则能小幅提升 MEL/MERP,但以牺牲线速度追踪(MELV)为代价;且 AMP 步态膝屈少、抬脚净空不足、脚趾非水平、易绊倒,不利 sim2real;AMP NoReg 出现高频抖动,不可迁移——说明”AMP 奖励本身不足以替代正则”。
- 分布匹配:ExBody rollout 的 root movement 分布与训练集一致,且能泛化到比训练集更大的随机速度命令范围;采样 10000 个手部相对位置,重定向数据集与学到策略的分布”几乎一致”。
真机稳定性(Table V,14 个动作各 10 s,报 mean absolute roll+pitch,越低越稳):ExBody 均值 0.051 rad vs ExBody+AMP 0.087 rad——本文在几乎每个动作上都更稳(如 Shake Hand 0.036 vs 0.099、Direct Traffic 0.037 vs 0.094)。真机 High Five 时本文膝屈更大、抬脚净空更足,AMP 则直腿易绊。
真机演示:dance(含与真人共舞)、hug、highfive、punch、shake hand、traffic/basketball 手势、挥手开波感应门;在碎石、木屑、斜坡混凝土、草地、路缘等地形以 zombie/mummy/夸张步幅等风格鲁棒行走;并在 NVIDIA GTC 2024 现场 live demo。
创新点与影响
贡献:
- 提出 ExBody(Expressive Whole-Body Control)——首个基于学习、能在真机人形上复现多样表现性全身动作的框架。
- 上/下半身目标解耦:上半身严格模仿人类动作换取表现力,下半身放松为”只鲁棒跟踪 root 速度命令”,绕开人机形态差异导致的过约束,是全文最核心的设计。
- 从大规模人类 MoCap 学习:用 780 片段 / 3.7 h 的 CMU 子集(远大于此前腿足 RL 的小参考集)+ RSI,同时提升表现力与行走鲁棒性;证明真人动作分布是比手工采样更好的先验/课程。
- 可插拔动作来源:训练与动作生成解耦,部署时目标可来自 MoCap、文本扩散(MDM)、YouTube 视频重定向,用户也可用手柄直接给根命令。
- 系统性论证图形学角色动画为何难迁真机(特权信息、无力矩限、DoF 过多、AMP mode collapse),并给出可 sim2real 的正则/奖励配方。
影响:奠定了”人类 MoCap → 重定向 → goal-conditioned RL → 真机 humanoid whole-body”这一范式,是后续 H2O / OmniH2O / HumanPlus / 各类 humanoid teleoperation & motion imitation 工作的重要前身;RSS 2024 录用。
作者自述局限:
- 重定向把 MoCap 关节角直接映到 DoF 更少的 H1 会丢信息,导致重定向行为偏离原动作;需要更高保真的重定向方法。
- 人形机器人又重又贵,摔倒会损坏部件,亟需可靠的保护与恢复系统以减少维修成本。
- (方法固有)下半身不做精确模仿,因此无法复现需要精确腿部动作的动作(如踢腿、复杂舞步的脚部细节)。
原始链接
- arXiv abs:https://arxiv.org/abs/2402.16796
- PDF:https://arxiv.org/pdf/2402.16796
- 项目页(RSS 2024):https://expressive-humanoid.github.io/
- 代码:https://github.com/chengxuxin/expressive-humanoid
- 结果视频:https://youtu.be/UGA9YAg3e-M
一手源存档(sources/)
- exbody—github-readme — GitHub README(安装 / 数据重定向 / 训练 / 部署流程,
legged_gym+rsl_rl+Isaac Gym,8k 迭代后加 delay) - exbody—project-page — 项目页快照(RSS 2024、YouTube 舞蹈重定向、演示分区、BibTeX)
- arXiv 原文 PDF(arxiv 2402.16796,不入 git;正文 + 附录 A/B/C 全读)