Hana's Blog
UniDex 论文精读:从第一视角人类视频到通用灵巧手控制Blur image
Arxiv ID 2603.22264
幻觉翻译 2603.22264
publication pending

UniDex 把第一视角人类视频转成机器人轨迹,用 FAAS 对齐不同灵巧手的功能动作,再以 3D VLA 完成高自由度工具操作和零样本跨手迁移。

推荐指数:

1. 论文概述#

一句话总结#

【Paper】 UniDex 不是单一模型,而是一套面向通用灵巧手控制的 foundation suite:用人类视频构建 UniDex-Dataset,用 Function–Actuator–Aligned Space(FAAS)统一动作表示,用 UniDex-VLA 预测 82 维动作块,再用 UniDex-Cap 低成本采集可转换的人类示教。

核心贡献#

【Paper】

  1. UniDex-Dataset:来自 H2O、HOI4D、HOT3D 和 TACO 的第一视角 RGB-D 视频,经过重定向后得到约 9M 个 image–pointcloud–action 帧、5.2 万条轨迹,覆盖 8 种灵巧手和 6–24 个 active DoF。
  2. 人到机器人转换:用基于指尖的 IK 和 6-DoF dummy-base 交互校准解决运动学差距;遮掉人手并渲染机器人手解决视觉差距。
  3. FAAS + UniDex-VLA:把功能相似的 actuator 放到相同坐标,结合 Uni3D 点云编码器、PaliGemma 风格骨干和 conditional flow matching,形成跨手策略。
  4. UniDex-Cap:用 Apple Vision Pro、RealSense L515 和 3D 打印支架同步采集人类手势与 RGB-D,并研究人类数据和机器人数据 co-training 的交换率。

UniDex-Dataset visualization from paper Figure 3

2. 背景与相关工作#

【Paper】 灵巧手比平行夹爪更难做 foundation model,原因集中在三点:真实机器人遥操作昂贵;不同手的形态、关节数和耦合关系差异很大;高 DoF 控制需要同时处理接触几何与长时序协调。已有 VLA 大多从 gripper-centric 数据预训练,灵巧手方法则常针对抓取或单一硬件。

【Analysis】 UniDex 的切入点是把“数据稀缺”和“动作空间不统一”拆开解决:先把廉价、丰富的人类视频变成 robot-centric 数据,再让策略学习功能坐标而非某一套 URDF 的关节编号。这样,跨手迁移不再完全依赖推理时的额外 IK。

3. 问题定义#

【Paper】 在时间 tt,策略接收

ot=[Pt,t,qt],o_t = [P_t,\,\ell_t,\,q_t],

其中 PtP_t 是由单帧 RGB-D 裁剪、下采样得到的彩色点云,t\ell_t 是自然语言指令,qtq_t 是 FAAS 表示的本体状态。策略建模 p(Atot)p(A_t\mid o_t),输出长度为 HH 的动作块

At=[at,at+1,,at+H1].A_t=[a_t, a_{t+1},\ldots,a_{t+H-1}].

【Paper】 FAAS 动作维度为 82:左右手各 9 维腕部 pose(6D rotation + 3D translation)共 18 维,左右手各 32 个手指 actuator slot 共 64 维。论文实验使用单臂或双臂设置,缺失的一侧由统一槽位保留。

【Code】 官方 config/model/unidex.yamlhorizon_steps 设为 30,action_dimproprio_dim 均为 82,点云大小在各数据集配置中为 10,000 点;预训练数据采样到约 15 fps,真实微调配置再降到约 5 fps。

4. 方法#

4.1 Overall Architecture#

UniDex-VLA architecture from paper Figure 4

【Paper】 数据流是:RGB-D → 彩色点云 PtP_t → Uni3D 点云 token;语言和点云 token 与 proprioception 一起进入 PaliGemma 风格的 joint backbone;action expert 在 flow time 条件下输出 FAAS 动作块。训练阶段从噪声动作学习向真实动作的向量场,推理阶段用 10 次 forward Euler 积分得到动作块。

4.2 核心模块#

UniDex-Dataset 与人到机器人转换#

Human-to-robot retargeting pipeline from paper Figure 2

  • 输入:第一视角 RGB-D、MANO/数据集提供的人手 pose、语言片段和目标 robot hand URDF。
  • 运动学模块:提取人手指尖目标 XX^\star,在真实机器人 base 前插入 6-DoF dummy base;PyBullet 多末端 IK 同时优化手指关节和 base offset。
  • 交互校准:GUI 暴露 dummy base 的三维平移、三维旋转及 IK 参数。人工只需要在接触丰富的片段上调 slider,再把校准应用到同一数据集和手型的大部分轨迹。
  • 视觉模块:先从 RGB-D 建点云,用 WiLoR + SAM2 去除人手点,再把重定向的机器人手 mesh 放回场景并重新投影,减少遮挡顺序和外观差异。
  • 输出:每一帧的 RGB、点云、FAAS state/action 以及语言指令,写入 HDF5/Zarr 等训练格式。

【Code】 HandAdapter/hand_processor.py 使用 PyBullet 读取 URDF、关节上下限和 mimic joint 关系;src/dataset/base_retarget.py 将 RGB-D 转为点云,深度大于 1.15 m 的点会被截断,并按 hand-specific joint map 重排关节值。

FAAS#

FAAS mapping from paper Figure 5

【Paper】 FAAS 不把“第 7 个 URDF 关节”当作语义,而是把 actuator 映射到拇指、食指、中指、无名指、小指的功能位置。每只手 32 个手指槽中,前 21 个是跨手共享的 base actuator,剩余位置留给 Shadow 等手型的额外 DoF 和未来手型。

【Analysis】 这是一种 function-centric interface:不同手的连杆长度和耦合可以不同,但“拇指-食指捏合”“手指弯曲包住手柄”这些控制意图相近。共享坐标降低了预训练策略看到的 embodiment entropy,同时保留未使用槽位以避免强行压缩所有手型。

UniDex-VLA 的 3D 感知与 action expert#

  • 点云编码器:Uni3D 使用 ViT 风格的分组点云编码,官方配置默认 uni3d_l,输出再经 projector 对齐到 2048 维语言模型 token 空间。
  • 语言/视觉骨干:代码复用 PaliGemma 的 token embedding 和 18 层 joint model;点云 token、文本 token 和 proprio token 采用分段 causal mask。
  • 本体与动作:proprio 先过线性层;动作先经 ActionEncoder,再由 action decoder 投影回 82 维。
  • 输出形式:腕部 state 是绝对 pose,动作块中的腕部 action 是相对第一个动作帧的 pose;手指 state/action 都在 FAAS 中表达。

4.3 关键公式#

指尖重定向#

对第 ii 个指尖,论文定义

xi(q;Toffset)=Trans(ThandToffsetTi(q)),x_i(q;T_{\mathrm{offset}})=\operatorname{Trans}\left(T_{\mathrm{hand}}T_{\mathrm{offset}}T_i(q)\right),

并堆叠成误差

e(q,Toffset)=[x1x1xmxm].e(q,T_{\mathrm{offset}})= \begin{bmatrix}x_1-x_1^\star\\\vdots\\x_m-x_m^\star\end{bmatrix}.

其中 qq 是机器人关节,Ti(q)T_i(q) 是从机器人 base 到指尖的正运动学,ToffsetT_{\mathrm{offset}} 是 dummy base 到真实 base 的刚体变换。【Analysis】 dummy base 让 IK 不必用手指关节“硬吃掉”人机腕部坐标系偏差,因此接触位置和关节可行性可以同时改善。

对于 mimic joint,论文与代码都采用

qjs=kqjm+c,q_{j_s}=kq_{j_m}+c,

其中 jmj_m 是 master,jsj_s 是从属关节,k,ck,c 来自 URDF 约束;代码会迭代修正并重新检查指尖误差。

Conditional flow matching#

论文给出的训练目标是

L(θ)=E[vθ(Atτ,ot)u(AtτAt)].\mathcal L(\theta)=\mathbb E\left[\left\|v_\theta(A_t^\tau,o_t)-u(A_t^\tau\mid A_t)\right\|\right].

【Code】 实现中采样 x0N(0,I)x_0\sim\mathcal N(0,I),令 x1=Atx_1=A_t,并用

ψt=(1(1σmin)t)x0+tx1,dψ=x1(1σmin)x0,\psi_t=(1-(1-\sigma_{\min})t)x_0+tx_1, \qquad d_\psi=x_1-(1-\sigma_{\min})x_0,

训练网络输出 vθ(ψt,ot)v_\theta(\psi_t,o_t),实际损失是逐元素 MSE;配置中的 flow_sig_min=0.001。因此,阅读代码时应把论文的向量场范数写法理解为“实现采用 MSE 的 flow matching 版本”。

推理使用

Aτ+Δτ=Aτ+Δτvθ(Aτ,ot),A^{\tau+\Delta\tau}=A^\tau+\Delta\tau\,v_\theta(A^\tau,o_t),

初值是高斯噪声,num_inference_steps=10,所以 Δτ=0.1\Delta\tau=0.1

4.4 Training#

Algorithm 1 UniDex-VLA flow-matching training
输入:
机器人状态 qtq_t、点云 PtP_t、指令 t\ell_t、真实动作块 AtA_t
输出:
训练后的向量场策略 vθv_\theta
  1. 从数据集读取一帧点云、语言、FAAS state 和 30 步 FAAS action chunk。
  2. 采样 tU(0,1)t\sim U(0,1)x0N(0,I)x_0\sim\mathcal N(0,I),构造带噪动作 ψt\psi_t
  3. Uni3D 编码点云;joint backbone 融合点云、文本、proprio 与 action/time token。
  4. action decoder 预测向量场 vθv_\theta,以 dψd_\psi 为目标计算 MSE。
  5. 用 AdamW、梯度裁剪和学习率调度器更新参数。

【Code】 论文附录报告预训练使用 8 张 H800、总 batch size 128、AdamW 初始学习率 10410^{-4}、权重衰减 101010^{-10} 和最大梯度范数 1.0;附录描述的模型约训练 3 epochs/30k steps。仓库默认配置给出等价的 8 卡、单卡 batch 4、梯度累积 4 和 32 epochs 示例,实际步数取决于数据缓存规模。

【Code】 真实任务 post-training 使用 2 张 H800、总 batch size 8、学习率 2.5×1052.5\times10^{-5};普通示教训练 50 epochs,DemoGen 增广数据训练 2 epochs。仓库中的 finetune.yaml 将 checkpoint、数据路径和 hand side 留给用户配置。

4.5 Inference#

Algorithm 2 UniDex-VLA action inference
输入:
当前点云 PtP_t、语言指令 t\ell_t、FAAS proprioception qtq_t
输出:
长度 30 的 FAAS 动作块
  1. 把 RGB-D 转换、裁剪并下采样为点云 token,拼接文本与 proprio token。
  2. 缓存点云/文本/proprio 的 joint backbone key-value。
  3. 初始化 A0N(0,I)A^0\sim\mathcal N(0,I)
  4. 重复 10 次:编码当前动作和时间,预测向量场并做 AA+0.1vθA\leftarrow A+0.1v_\theta
  5. 裁剪动作范围,把 FAAS action chunk 解码到目标手的 actuator,再交给机器人控制器执行。

【Code】 PointCloudUniDexInference 使用 KV cache 固定视觉、语言和 proprio 条件,只在 10 个 Euler 步中更新 action expert;horizon_steps=30【Analysis】 这使一次推理输出一小段连续动作,而不是每个控制周期重新独立采样单步关节命令,有助于保持接触动作的时间一致性。

4.6 代码实现对照#

论文概念官方代码位置实际行为
人到机器人重定向HandAdapter/hand_processor.pyPyBullet URDF、末端 IK、mimic joint 修正与 RGB-D 投影
数据集窗口src/dataset/{H2o,HOI4D,Hot3D,Taco}.py从四类第一视角数据构造语言对齐窗口,统一成点云/状态/动作
点云处理src/dataset/base_retarget.pyRGB-D 转 Open3D 点云、深度截断、mask 和 hand mesh 合成
FAAS 维度config/model/unidex.yamlaction_dim=82proprio_dim=82horizon_steps=30
flow matchingsrc/unidex/unidex.pypsi_t 插值、MSE 向量场损失、10 步 Euler 推理
训练入口train.py / finetune.pyHydra 配置预训练和真实机器人微调

【Analysis】 代码仓库覆盖数据准备、重定向、预训练和微调,但发布的默认配置仍需要用户自行下载数据、MANO/SAM2/WiLoR、Uni3D 与 PaliGemma 权重;不能把“提供代码”理解为开箱即用的完整数据包。

5. 实验#

5.1 Experimental Setup#

【Paper】 实验使用 7-DoF Franka 机械臂,末端可换 Inspire(6 active DoF)、Wuji(20 active DoF)和 Oymotion(6 active DoF)灵巧手,统一由 RealSense L515 提供第一视角 RGB-D。五个任务分别是 Make Coffee、Sweep Objects、Water Flowers、Cut Bags 和 Use Mouse,每个任务只收集 50 条 teleoperation 示教。

5.2 Main Results#

Main results from paper Figure 9

【Paper】 20 次试验的五任务平均结果如下:

方法Average Task ProgressFinal Success Rate
DP29.0±19.9%29.0\pm19.9\%22.0±22.5%22.0\pm22.5\%
DP335.0±17.1%35.0\pm17.1\%30.0±18.7%30.0\pm18.7\%
π0\pi_038.0±7.4%38.0\pm7.4\%35.0±10.0%35.0\pm10.0\%
UniDex-VLA(无预训练)32.5±18.5%32.5\pm18.5\%23.0±12.0%23.0\pm12.0\%
UniDex-VLA81.0±12.1%81.0\pm12.1\%76.0±17.8%76.0\pm17.8\%

【Paper】 在最难的 Cut Bags 上,相对最强竞争方法的平均 task progress 提升为 84.6%。【Analysis】 这里的优势更像“预训练运动先验 + 统一动作接口”的叠加,而不是单纯更大的语言模型:无预训练版本仍使用 FAAS,但性能接近普通 baseline。

5.3 Ablation Study#

【Paper】 主要消融是 UniDex-VLA(No Pretrain):同一 FAAS 和微调流程下去掉 UniDex-Dataset 预训练,平均 task progress 从 32.5% 提升到 81.0%,说明大规模跨手数据提供了可迁移的指尖协调和工具使用先验。

Zero-shot cross-hand transfer from paper Figure 8

【Paper】 在跨手零样本实验中,策略在 Inspire 上训练 Make Coffee 后直接部署到未微调的 Oymotion 和 Wuji,平均 task progress 分别为 60% 和 40%;π0\pi_0 与无预训练版本接近 0–10%。

5.4 Generalization#

Spatial generalization from paper Figure 6

【Paper】

  • 空间泛化:在 Make Coffee 中移动 kettle 和 dripper 的桌面位置,并用点云编辑与 DemoGen 生成 OOD 摆放,UniDex-VLA 覆盖更大的工作空间。
  • 物体泛化:把黑色 kettle 换成更小的紫色 kettle,改变颜色、尺寸、把手和壶嘴形状,模型仍保持较好表现。
  • 人机 co-training:UniDex-Cap 使用 Vision Pro + RealSense L515;在 Make Coffee 上,增加转换后的人类示教会持续提高 task progress,但没有机器人数据时成功率仍接近 0。高性能区域显示约 2 条人类示教可替代 1 条机器人示教,采集速度约快 5.2 倍。

UniDex-Cap setup from paper Figure 12

Human–robot co-training from paper Figure 13

6. 方法分析#

6.1 为什么有效?#

【Analysis】

  1. 人类视频提供了工具接触和手指协同的多样先验,重定向后又保留了 robot-centric 的动作监督,减少了从零学习的负担。
  2. 点云直接表达深度和物体几何,比单目 RGB 更适合 kettle 把手、剪刀刃口等接触关系;同时点云可以做平移、替换物体等几何增广。
  3. FAAS 把跨手迁移的共享部分显式化,避免让模型把手型差异误当成任务语义。
  4. Flow matching 生成动作块,将高维动作预测变成条件向量场积分,并通过 action chunk 保持短时轨迹连贯。

6.2 核心创新#

【Paper】 真正的创新不是“把 VLA 换成点云”,而是把数据、动作接口、策略和采集硬件连成闭环:同一套人到机器人转换既服务大规模预训练,也服务 UniDex-Cap 的后训练。

6.3 与已有方法的本质区别#

【Analysis】 相比 gripper-centric VLA,UniDex 同时改变了感知粒度(显式 3D pointcloud)、动作语义(FAAS)和数据来源(人类视频转机器人轨迹)。相比只在人类参数空间中预测再做 IK 的方案,FAAS 直接输出目标手的统一 actuator 坐标,省去推理时额外的高 DoF IK 误差。

6.4 关键假设#

【Analysis】 方法依赖几个强假设:不同灵巧手存在足够稳定的功能同构;人手指尖轨迹经过一次或少量交互校准后能代表机器人接触;RGB-D 和手部 pose 的时间、外参能够可靠同步;来自人类视频的动作语义可被语言指令和 FAAS 共同解释。

7. 局限性#

7.1 作者明确提出的局限#

【Paper】 当前流程没有利用大规模 action-free 或弱标注的第一视角活动数据。作者将其列为进一步扩展灵巧手预训练规模的重要方向。

7.2 自己分析得到的局限#

【Analysis】

  • 重定向仍需按“数据集 × 手型”做交互校准,并对接触丰富片段抽查;当手型或相机分布变化更大时,人工成本可能重新成为瓶颈。
  • 论文主结果集中在两个手型、五个长时工具任务,尚未证明 FAAS 对更多双臂协作、触觉反馈或软体手同样稳定。
  • 9M 帧来自已有带手部标注的 RGB-D 数据,遮挡、深度噪声和语言自动标注质量会影响转换轨迹;完全无动作标注的视频不能直接进入当前监督式 flow matching。
  • 82 维固定槽位虽然方便扩展,但对新手型的功能映射仍需人工设计;空槽位并不会自动产生新的 actuator 语义。
  • UniDex-Cap 的 co-training 结果说明机器人数据仍不可完全替代,2:1 交换率只在 Make Coffee 的实验范围内成立,不能外推成普适的数据成本定律。

8. 启发与研究思考#

【Analysis】 UniDex 给出的路线很适合继续拆成三个研究问题:

  1. 从有动作到无动作预训练:利用视频中的物体运动、手部接触和语言弱标签,学习不依赖精确 action 的 3D affordance 表示。
  2. 从人工 FAAS 到可学习接口:把 actuator mapping 建模成带功能约束的匹配问题,让新手型通过少量 URDF、示教和接触数据自动加入共享空间。
  3. 从“2 条人类 ≈ 1 条机器人”到任务条件交换率:将示教质量、接触阶段、视角和手型纳入数据价值估计,而不是只用 demo 数量衡量 co-training。

对实践者而言,最值得复用的不是某个固定模型 checkpoint,而是这条工程原则:先把观测、动作和 embodiment 差异变成可检查的中间表示,再扩大数据和模型规模。UniDex 把这个中间表示具体化为 robot-centric pointcloud、FAAS 和可视化 retargeting GUI,这也是它能把跨手泛化实验落到真实机器人上的关键。

UniDex 论文精读:从第一视角人类视频到通用灵巧手控制
https://agusexp25.top/en/blog/paper-deep-dive-unidex
Author 菊花花
Published at August 25, 2026