枢纽
上真机
物理感知
实时
输入模态proprioception

XHugWBC:一个策略,控制一整座「人形机器人动物园」

Yufei Xue, Yunfeng Lin 等(上海交大 + 上海 AI Lab)。ICML 2026 / arXiv:2602.05791v3(2026 年 6 月)。 项目页 · locomotioncross-embodimentwhole-body control

🧠 一句话心智模型:别再给每台人形机器人单独训一个控制策略了——给所有机器人造一个「物理合法的随机化身工厂」,让一个策略在几百万台随机生成的「假机器人」上训练;再配一个语义统一的关节地址(左肩永远是第 5 号),同一套网络权重就能零样本迁移到 12 台仿真 + 7 台真机人形上。

🎯 为什么重要:每出一台新人形,就要重训两个月

过去三年,人形机器人公司像雨后春笋——Unitree G1/H1-2、Booster T1、Fourier N1、Agibot X2、Dobot Atom、EngineAI PM01、Leju Kuavo……每家的 DoF 数、关节排列、腰/臂/头有无、连杆动态都不一样。但学界主流的 whole-body control(WBC)方案长这样:

核心痛点:一个策略 = 一台机器人 = 一次数月训练。换一台?从头再来。这是「per-robot training」的诅咒——硬件迭代越快,训练成本越被甩在后面。

更糟的是,以往想做 cross-embodiment 的工作(MetaMorph、MorAL、URA、HOVER 等)都假设

  • 状态-动作空间已经对齐(你假设所有机器人都有同样的关节向量);
  • or 形态差异很小(比如四足之间);
  • or 用一个高维 descriptor 序列描述机器人,让网络去硬学。

这些假设在人形上全部崩盘:人形的 DoF 从 12(纯双腿)到 32(全自由度)跨度巨大,髋关节可能是 R-P-Y / Y-P-R / R-Y-P 不同排列,腰可能 0/1/3 DoF,手腕可能锁死……

旧范式:per-robot Unitree G1 → 策略 A Booster T1 → 策略 B Fourier N1 → 策略 C 新人形 → 从头训 每个数月,不可扩展 XHugWBC:一个 generalist 策略 化身工厂 物理一致随机化 32 维语义地址 "左肩" 永远是 #18 图+Transformer hybrid-mask ↓ 零样本部署 ↓ 12 仿真 + 7 真机人形 · 全部 100% 存活 一次训练 → 一群机器人
图 1:范式跃迁。右边三个绿色块就是 XHugWBC 的三大支柱——化身工厂(生成训练数据)、语义统一地址(对齐不同机器人)、图感知 Transformer(建模拓扑)。

💡 核心思想:让「训练分布」覆盖「所有可能的合理人形」

XHugWBC 的赌注是:如果训练时见过足够多「物理合法」的随机人形,真机器人就只是分布内的一个样本。但要让这个赌注成立,必须解决三个工程问题。下面是它的整体管线(论文 Fig.2):

(a) 化身工厂 Template URDF 物理一致 随机化 J=LL⊤ → 12~32 DoF 各种 合法人形化身 → 训练数据 (b) 统一关节地址 + 图 局部关节 q_r (DoF 12~32) → 全局地址 q_global ∈ ℝ³² 邻接矩阵 A 关节语义 "左肩" 在所有机器人 都是 index 18 输入维度恒定 = 32 (c) Hybrid-mask Transformer 第 1 层:按图 mask 的注意力 只看「拓扑邻居」(如膝→髋) 后续层:全局自注意力 跨关节全局协调 State Estimator Per-node 动作
图 2:XHugWBC 训练管线。左侧生成训练分布,中间把异构机器人映射到统一接口,右侧用一个图感知 Transformer 输出动作。

🛠️ 三个工程关键:让「跨机器人训练」真的不崩

设计心智为什么必要
① 物理一致的化身工厂 用伪惯性矩阵 $J=LL^\top$(Cholesky)参数化每个刚体,扰动在无约束 $\mathbb{R}^{10}$ 中进行;$J'=L'L'^\top$ 永远正定 naive 随机化会让惯性矩阵失去物理意义(质量分布违反三角不等式),仿真器数值爆炸、策略学到的动态根本不可能出现在真实硬件上——sim-to-real 直接失败
② 32 维语义全局关节地址 定义 $N_{\max}=32$ 个有语义的「插槽」(左髋/右肩/腰yaw/...),每台机器人的关节按角色填入对应位置,无此关节则填 0;附带一个二值「可控」指示 $I^{(t)}$ 策略输入维度恒定为 32,与具体机器人解耦;同时保留了「这个关节是什么角色」的语义信息(不是 descriptor 序列那样让网络硬学)
③ 邻接矩阵 + Hybrid-mask Transformer 从机器人 URDF 抽出 kinematic tree(parallel linkage 折叠掉),得到 $N_{\max}\times N_{\max}$ 邻接矩阵 $A$;Transformer 第一层按 $A$ 做掩码注意力,后续层解除 mask 全局交换 让网络先尊重局部拓扑(左肘只跟左肩/左腕亲近)再全局协调;比纯 MLP(忽略结构)和纯 GCN(丢失全局)都好
🔮 直觉:为什么必须「物理一致」?
朴素做法:把每个 link 当盒子,独立随机化 mass / 长宽高。但这会产生「重心在体外」「转动惯量为负」这种物理不可能的刚体。仿真器(Isaac Gym)会硬撑着跑下去,但策略学到的「踢腿时机」是基于这些垃圾动态的——一到真机就翻车。XHugWBC 用 Cholesky 参数化保证 $J\succ 0$,所有化身都物理合法,这是它能在 7 台真机上零样本存活的地基。

📊 结果:12 仿真 + 7 真机,100% 存活

维度数字(原文溯源)
仿真覆盖12 台不同人形(含训练时未见过的机器人)
真机覆盖7 台真机人形:Booster T1, Fourier N1, Unitree G1 (23/29 DoF 两版), Agibot X2, Dobot Atom, Unitree H1-2
零样本存活率所有评估机器人 100% survival(Tab.1, Tab.2)
Generalist vs Specialist 回报generalist ≈ 85% specialist;generalist 微调后 +10% over specialist(§4.2)
关键追踪误差(generalist)$E_{vx}$=0.084 m/s, $E_{vy}$=0.116 m/s, $E_\omega$=0.160 rad/s, $E_h$=0.044 m(Tab.1)

跨机器人 baseline 对比(Fig.5 zero-shot survival):

方法表现
XHugWBC(本文)所有测试机器人接近 100% 存活
MetaMorph(图 + MLP)多数机器人显著下降——高维 descriptor 难学
MorAL(模块化 MLP + 形态输入)大部分机器人性能掉得更狠
Naive Random(盒子近似 + 随机化)只在小范围内(质量分布相似的)能迁移

Sim-to-real gap(vx=0.6 m/s 直行 10s 的相对误差差 |E_real - E_sim|/E_sim,Tab.2):

机器人仿真 (m/s)真机 (m/s)相对 Gap
Booster T10.0520.06932.69%
Fourier N10.0640.09345.31%
Unitree G1 (23 DoF)0.0510.06527.45%(最小)
Unitree G1 (29 DoF)0.0470.06231.91%
Agibot X20.0610.09860.61%
Dobot Atom0.0630.131107.93%(最大)
Unitree H1-20.0650.11780.00%
关键洞察:sim-to-real gap 与机器人尺寸 + 减速比 + 关节间隙强相关——全尺寸人形(H1-2、Dobot Atom)gap 大;紧凑型(G1、Booster T1)gap 小。这说明 XHugWBC 学到的本体感觉是真实有效的,gap 来自硬件而非策略。t-SNE(Fig.4)也证实了:相似髋关节排列的机器人在隐空间里聚成一簇,按腰 DoF 形成同心环——策略真的理解了形态结构。

🌐 在领域中的位置

per-robot specialist(HugWBC / ExBody / OmniH2O) MetaMorph / URA(图 + descriptor) XHugWBC(物理一致 + 语义统一 + hybrid-mask)⭐ cross-embodiment VLA(一个大脑跨所有机器人)

XHugWBC 站在「通用人形控制器」路线的当前 SOTA:第一个在 7 台真机上证明零样本通用的 generalist WBC。它与 BFM(行为基础模型)思路对偶——BFM 跨任务共享一个底座,XHugWBC 跨硬件共享一个底座。两者结合(一个跨任务、跨机器人的「超人形基础模型」)是显然的下一步。

❓ 常见误区

85% 不如 specialist,那为什么还要用 generalist?

两条理由:(1) 零样本 85% 已经能开箱即用,避免新机器人数月训练;(2) 用 generalist 做初始化微调,收敛比 from-scratch 快得多,最终还能超过 specialist 10%——因为 generalist 在训练分布里学到了跨形态的通用先验,相当于隐式做了 multi-task 正则。

为什么不直接用 MetaMorph 的图 + descriptor?

MetaMorph 把 link 惯性、joint range 等原始数字塞给网络,希望它自己学。但人形形态差异巨大,descriptor 维度高、信噪比低,网络学不出有用表示。XHugWBC 反过来——用图结构(邻接矩阵)显式告诉网络拓扑,而把动态参数留给随机化覆盖。这是「先验 + 数据」的分工。

32 个全局 joint 槽位够吗?

对人形够。模板定义覆盖:双腿(髋3 + 膝1 + 踝2 ×2 = 12)+ 腰(roll/yaw/pitch 3)+ 双臂(肩3 + 肘1 + 腕3 ×2 = 14)+ 头(3)= 32。最少 12(仅双腿)、最多 32(全自由度)都能映射进来。如果将来要做手指/灵巧手,得扩槽位。

teleop 那部分是真的「跨任务」吗?

不是。论文里的 loco-manipulation(捡玩具、开门,Fig.7)是上身外部控制 + 下身 XHugWBC:用一个二值指示 $I^{(t)}$ 切换「上身听 teleop / 上身归 WBC」,下身始终维持平衡。这是「上身长任务、下身通用 WBC」的组合,不是 XHugWBC 本身做了长程任务规划。

它能直接用在双足之外(四足、轮式)吗?

不能。模板是「人形」先验:双足 + 双臂 + 头。如果换四足, kinematic tree 完全不同,全局地址定义得重做。这是一个「人形动物园」内的通用模型,不是「所有移动机器人」的通用模型。