WholeBodyVLA:让人形机器人「边走边干活」的统一 VLA
🎯 为什么重要:人形机器人卡在「边走边抓」这一步
把双臂操作(grasping、placing)和移动(stepping、turning、squatting)拼成一套自主策略,一直是人形机器人的硬骨头。论文把它归结成两条死路:
- 模块化拼接(导航 + 抓取 切换):用高层 planner 在「移动」和「操作」之间切换。切换边界很脆,机器人移动完一站,姿态常常已经不是下一个动作想要的样子,误差一路累积。
- 纯端到端 VLA:理论美好,但要训出来需要大规模全身遥操作数据——MoCap / VR 遥操极其昂贵,根本凑不齐。
更细一层:即便有了高层决策,下层 RL 控制器也接不住。传统的 velocity-tracking RL 是为「持续巡航」设计的,不是为「走到位精确刹停 / 转完角对齐 / 蹲下来稳住」设计的——结果就是 stumble、path deviation、advance 时乱转;论文 §4.4 实测:velocity 版相对 LMO 掉 24% 成功率,这 24% 的 gap 里 91.7% 来自移动段子目标的失败。
💡 核心思想:统一 latent + 专用 RL 小脑 + 免动作视频预训练
WholeBodyVLA 的解法是「分三件事,统一在一个 latent 空间里」:
- 统一 latent 学习:用两个 Latent Action Model(LAM)—— 一个学操作(来自 AgiBot World),一个学移动(来自自己采的 egocentric 视频)—— 把「帧到帧的视觉变化」压缩成离散 latent action。然后让 VLA 同时预测这两类 latent,逼它在同一个动作空间里学会「移动 + 操作 怎么耦合」。
- LMO RL 小脑:下层换掉 velocity-tracking,改用离散命令接口 $u_t = [s_x, s_y, s_\psi, h^\star] \in \{-1,0,1\}^3 \times \mathbb{R}$(前进/侧步/转向 + 站立高度),让 RL 精确执行 start/stop/turn/squat。
- 真机接地:latent 学完后挂一个轻量 decoder,把 latent 落成「上半身关节角 + 下半身 locomotion 命令」,下半身命令交给 LMO。
两个 LAM 必须分开训——这是论文的关键发现。因为操作视频里相机静止、视觉变化来自手臂;移动视频里相机在动、视觉变化来自整个场景。混在一起会让模型注意力打架,且把「相机移动」误判成「手臂在动」,latent 编码变模糊(§3.1)。
🛠️ 工程实现:三件事各自的关键设计
| 组件 | 设计要点 | 为什么这样做 |
|---|---|---|
| ① 统一 latent 预训练 (双 LAM + VLA 联合) |
两个 VQ-VAE LAM(基于 DINOv2 特征),分别在移动视频 / AgiBot World 上学「帧间视觉变化」的离散码;VLA 主干(Prismatic-7B)以 MLE 联合预测 $c^{mani}_t$ 和 $c^{loco}_t$。 | 视频没有动作标签,但「视觉变化」本身就是动作的 proxy。联合预测逼模型学「走路 + 抓取 如何在同一个动作空间里耦合」。两 LAM 分开避免注意力打架。 |
| ② LMO RL 小脑 (discrete 命令 + 两阶段课程) |
命令 $u_t = [s_x, s_y, s_\psi, h^\star] \in \{-1,0,1\}^3 \times \mathbb{R}$(前/侧/转 的 ±1 flag + 站立高度)。Stage I:基础步态,关节范围课程化放宽。Stage II:固定巡航速度 + 方向精度损失 $J_{dir}$ + 从 AgiBot World 采的手臂扰动片段 + 静止惩罚 $J_{stand}$。 | velocity-tracking 是为巡航设计的,对 loco-manipulation 的「精确 start/stop、对齐航向、站稳」语义不对。离散 flag 自带 start/stop 语义,配合两阶段课程先稳后精。 |
| ③ 低成本数据采集 | 单个操作员 + 头戴相机(RealSense D435i 或 GoPro),做「前进 / 转向 / 蹲下」并走向可抓取目标直到接触(不必须真抓)。共采集 ~300 小时。 | 免除 MoCap / 遥操成本,且采集的「目标导向移动」直接对齐 loco-manipulation 语义。 |
| ④ 真机集成 | AgiBot X2(7-DoF 双臂 Omnipicker / 6-DoF 腿 / 1-DoF 腰 / 头戴 RealSense)。VLA 在 RTX 4090 上跑 ~10 Hz,LMO 在 NanoPi 板载 50 Hz,ZeroMQ over Ethernet 通信。 | 分工算力:感知/推理在工控机,实时闭环在板载,避开「云感知」带来的延迟。 |
| ⑤ 训练规模 | LAM 30k steps / batch 256;VLA 20k steps / batch 1024;LoRA 微调 10k steps / batch 64。8×H100 训 LAM+VLA,单 H100 训 RL。 | 标准 VLA recipe:大规模预训练 + 真机微调。三任务共训一个模型(非任务专用)。 |
📊 结果:相对 baseline +21.3%,工作空间 >5m / 负载 >50kg
| 维度 | 数字(PDF 校验) |
|---|---|
| 主结果(三任务均分) | WholeBodyVLA 78.0%,领先 Modular Design 64.0%、OpenVLA-OFT w/LMO 56.7%、GR00T w/LMO 42.0% |
| 绝对提升 | 论文声称相对 prior baseline 提升 21.3%(以及 24.0%)(Abstract / §1) |
| 工作空间 | 大空间 loco-manipulation,工作半径 > 5 m(Fig.1 标注) |
| 负载能力 | Cart Pushing 任务推送 > 50 kg 的推车(Fig.1 / §4.1) |
| 泛化(unseen loads) | Cart Pushing 在 60 kg 杠铃片 替换负载下仍最优(Fig.6 / §C.2) |
| 真机平台 | AgiBot X2 humanoid(7-DoF 双臂 Omnipicker / 6-DoF 腿 / 1-DoF 腰 / RealSense D435i) |
| w/o LAM 掉点 | 去掉 latent 预训练,成功率 ↓ 38.7%(Table 2: 78.0% → 39.3%) |
| 只用 manipulation LAM | 比 full pretraining 低 14.7%(移动段掉得最多) |
| LMO vs velocity-based RL | velocity 版成功率低 24%,其中 91.7% 的 gap 来自移动段(§4.4) |
| 数据效率 | 用 >50% 人类视频预训练 + 25 条真机轨迹 ≈ <25% 视频 + 200 条轨迹(Fig.3a) |
| 扩展任务(Fig.3c) | Terrain Traversal 76.0 · Long Horizon 32.0 · Vacuum Cleaning 64.0 · Stains Wiping 88.0 · Visual Navigation 80.0 |
| 执行频率 | VLA 主干 ~10 Hz;LMO 控制器 50 Hz |
🌐 在领域中的位置
WholeBodyVLA 把自己放在「把 VLA 真正塞进人形全身」的节点上:相比之前「模块拼接」(R2 S2 / Being-0 / HEAD)或「单边 VLA」(Humanoid-VLA 偏移动、GR00T 偏操作),它是第一个在 AgiBot X2 上做端到端大空间 loco-manipulation 的统一框架(论文自评,Table 1)。其「统一 latent + LMO」组合可能成为后续 generalist humanoid agents 的标准背骨。
❓ 常见误区
它是不是「又一个 VLA」?换个 backbone 跑人形?
不是。论文的重点不在 backbone,而在「统一 latent 预训练 + LMO 小脑」这个组合。前者用免动作视频解决数据稀缺,后者用离散命令 RL 解决执行精度。没有这两件事,Prismatic-7B 直接套在人形上跑不动 5m 级任务。
下半身为什么要单独一个 RL 策略?VLA 不能直接输出关节吗?
能,但跑不稳。论文的「w/o RL」变体就直接预测下肢关节,效果显著下降。原因:loco-manipulation 对「精确刹停、转向对齐、蹲位稳定」的要求是厘米/度级的,10 Hz 的 VLA 主干根本跟不上。LMO 以 50 Hz 闭环、且只接收离散意图(前进/侧步/转向/高度),把高层语义直接变成可执行的步态。
「免动作视频」真的能学到机器人能用的东西吗?
能,但有条件。LAM 学的不是「关节角」,而是「帧间视觉变化的离散码」。同一码在人和机器人上语义一致——论文 §C.5 展示了 latent「Go Forward / Turn Left / Squat」跨域检索的一致性。微调阶段再用真机遥操数据把 latent 接地成关节命令。所以视频不是直接当监督,而是「先学意图分布,再接地到具体机器人」。