XL-VLA:一个 VLA 模型,操控四种不一样的灵巧手
🎯 为什么重要:每出一只新灵巧手,就要重训一次 VLA?
这是当前 VLA 领域最痛的瓶颈之一。这两年灵巧手硬件井喷:
- 硬件多样:Ability Hand(5 指 12 DoF mimic 6)、Inspire(12/6)、X-Hand1(12 DoF 全主动)、Paxini DexH13(4 指 16 DoF mimic 3)——自由度、肌腱耦合、关节配置完全不同。
- 数据贵:每只手要重新遥操收集演示。XL-VLA 自己就采了 2000 段(4 手 × 10 任务 × 50 段),这还只是研究规模。
- VLA 不能直接跨手:π0 等主流 VLA 虽然能通过调整序列长度吃下不同动作,但关节空间语义完全不对齐——「食指弯曲」在不同手上是不同维度的不同值,强行共训只会互相干扰。
更深层的问题:机器人硬件更新速度远快于数据采集速度。如果不能跨 embodiment 复用数据和模型,VLA 就永远被困在「一手一模型」的孤岛。XL-VLA 给出的答案是:把「手的特异性」吸收进一个轻量 MLP 层,让 VLA 主体完全 embodiment-agnostic。
💡 核心思想:共享 latent 空间 + 每手一对 MLP
方法分两步走。第一步是独立于 VLA 训练一个跨手 latent 自编码器;第二步是把这个 latent 当作 π0 的动作 token,冻住编码/解码器,只训 VLA。
这个架构最不显然的设计是L2 重定向损失。光靠每只手各自「q → z → q」的重建,得到的 latent 仍然各自为政。作者用可微前向运动学(FK)把每只手的关节映射到指尖位置,然后要求:同一个 latent z 在不同手上解码出来,指尖相对距离和方向要一致。这就是「语义对齐」——「捏」这个动作在四只手上对应同一个 z。
🛠️ 三个损失让 latent 既准又通
| 损失 | 公式(简化) | 作用 |
|---|---|---|
| L1 重建 | $\frac{1}{|H|}\sum_h \text{MSE}(\hat{q}^{(h)}, q^{(h)})$ | 每只手「自己能否完美还原」——保证 latent 不丢任何一只手的运动学细节 |
| L2 重定向(核心) | 对拇指-食指、拇指-中指、拇指-无名指、拇指-小指 4 对,比较不同手解码后的 pinch 距离 + 方向 | 跨手语义对齐——「捏」在不同手上是同一个 latent |
| L3 KL 正则 | $\text{KL}(q(z|q) \| \mathcal{N}(0, I))$ | latent 空间平滑,便于采样、插值;权重 β=10⁻⁵ 很小避免过度约束 |
| 训练数据 | 不需要任何演示!每只手在关节限位内随机采关节向量,自编码 + 跨手解码 | 完全自监督,无需配对的跨手轨迹 |
| 权重 | λ_dis=2000, λ_dir=5.0, λ_expdis=12.0, β=10⁻⁵ | 距离项权重大(让 pinch 距离严格对齐),方向项中等,KL 很小 |
因为关节角度在不同手上没有对应——Ability 的第 3 个关节和 Paxini 的第 3 个关节可能完全是不同的物理量。但「拇指和食指的距离」是有语义的——它就是「捏」这个动作的几何本质。用 FK 把关节映射到指尖位置,就在不同手之间建立了一个共同语言。这就是为什么 XL-VLA 能让「同一个 latent」解码出不同手上的同一个动作。
| 组件 | 实现 | 备注 |
|---|---|---|
| VLA 主干 | π0(PaliGemma + Action Expert) | 用预训练权重初始化 |
| 动作表示 | 64 帧 action chunk @ 20 Hz = 3.2 秒 | 每个 chunk 编码成单个 latent向量 z |
| VLA 训练 | 冻住 enc/dec,只训 Action Expert | 把原 π0 的 state token 替换成 latent token |
| 数据 | 10 任务 × 4 手 × 50 演示 = 2000 段 | 遥操采集,双臂 xArm7 + Unitree G1 |
| 训练资源 | 8 × NVIDIA H100,60K steps,batch 128 | — |
📊 关键结果:平均成功率 0.32 → 0.72(+40 个百分点)
| 维度 | π0(baseline) | XL-VLA | 提升 |
|---|---|---|---|
| 4 只手 × 10 任务平均成功率 | 0.32 | 0.72 | +40 pp(+125% 相对) |
| Ability Hand | 0.37 | 0.73 | +36 pp |
| Inspire Hand | 0.27 | 0.68 | +41 pp |
| Paxini DexH13 | 0.35 | 0.78(最高) | +43 pp |
| X-Hand1(最特殊) | 0.29 | 0.70 | +41 pp |
| 最佳任务提升:Pour Sugar | 0.23 | 0.88 | +65 pp |
| Sort Cans / Handover Bottle / Re-arrange Boxes | 0.08-0.45 | 0.55-0.95 | +45-55 pp |
| 零样本(任务-手组合未见) | — | 稳定泛化(Fig.4) | 关键能力 |
🌐 在领域中的位置
XL-VLA 是「灵巧手 VLA 跨 embodiment」的代表性工作。它的策略——「用几何对齐的 latent 吸收 embodiment 差异」——比传统「在动作 token 上加 emb tag」更优雅,效果也更显著。和 UltraDexGrasp(跨物体泛化)、EAGLE(跨人形机器人)合在一起看,整个具身领域都在向「跨 embodiment 复用模型」这个方向收敛。
❓ 常见误区
latent 对齐 = 把所有手的关节角度统一到同一个维度?
不是。统一维度(如零填充到 16 维)只是工程层面,不能解决语义对齐。XL-VLA 的关键是「同一个 latent 在不同手上解码出来的指尖行为一致」,这是通过 L2 重定向损失 + 可微 FK 实现的。latent 空间本身是统一维度的,但每只手的 enc/dec 是独立的 MLP。
训练 latent 自编码器需要「配对的跨手动作」吗?
不需要,这是 XL-VLA 的一大优势。每只手只需在自己的关节限位内随机采关节向量(不依赖任何演示或 IK 轨迹),然后:(1) 自编码(自己还原自己)→ L1;(2) 同一个 latent 在别的手上解码 → L2 重定向。整个流程完全自监督,所以增加新手只需要标定 FK 即可。
为什么用 π0 作主干,而不是 RT-2 或 OpenVLA?
π0 是当前 SOTA 的 VLA 之一,且采用「flow matching action expert」设计,能输出连续动作 chunk(适合灵巧操作的高频控制)。更重要的是,π0 的 Action Expert 可以替换——XL-VLA 把原 state token 换成 latent token,冻住 enc/dec,主体照常训练。这套设计理论上也可以移植到其他 VLA。
2000 段演示够吗?是不是「数据少」限制了效果?
这正是 XL-VLA 想解决的问题——跨手训练让每只手不需要单独采 2000 段。如果按传统「每手每任务 50 段」算,4 手 × 10 任务 = 2000 段;如果再加上「新手的 0 段」,XL-VLA 的优势就出来了(零样本 transfer)。论文 Fig.4 的 unseen-task 泛化实验验证了这一点。在数据 scaling 曲线上(论文有但本卡未画),更多数据会继续提升。
「Paxini 缺小指」怎么处理?
巧思在 L2 损失里:对于缺某根手指的手,自动跳过包含那根手指的 pinch 对。Paxini DexH13 只有 4 指(无小指),所以「拇指-小指」对在评估 L2 时被丢弃。这种「软对齐」让缺指手也能纳入统一框架。