里程碑

DexMimicGen:60 个人 demo「变」出 21K 条双臂灵巧手训练数据

Zhenyu Jiang, Yuqi Xie, Kevin Lin(共一) 等 · NVIDIA Research + UT Austin + UC San Diego · arXiv:2410.24185v2 (2025-03;PDF 未列 venue)。 项目页 · 开源代码 · imitation learning数据生成双臂灵巧手dataset infra 线索 T02

🧠 一句话心智模型:MimicGen 那套「少量人 demo + 仿真 SE(3) 等变换 + 开环 replay」在单臂夹爪上能放大 1000 倍数据,但搬到双臂灵巧手就崩了——因为左臂和右臂不再是一个统一序列,而是三件事的交织:各自独立(并行)、必须同步(协调)、必须排队(顺序)。DexMimicGen 给这三件事各配一套最小执行约束,于是同样的 SE(3) 等变换机制可以接着用,双臂灵巧手的数据瓶颈被同一根杠杆撬开了

🎯 为什么重要:人形/双臂灵巧手的"数据荒"

2024 年起人形机器人兴起,可训练数据从哪来成了最大的拦路虎:

  • 真机遥操采数:双手 + 多指 = 需要 Apple Vision Pro + VisionProTeleop + OmniH2O retargeting 一整套专门接口,单条 demo 采集成本远高于单臂 iPhone + RoboTurk;
  • 纯 RL 探索:双臂 + 多指带来高维动作空间(论文实验使用 Fourier GR1 + 两只 6-DoF Inspire 灵巧手),接触丰富,reward shaping 几乎写不出来;
  • 已有的 MimicGen 范式用不上:它假设"任务 = 单一固定子任务序列",但双臂任务里两只手的子任务节奏根本不对齐(一只手先抓完、另一只手还在调整)。
核心矛盾:双臂协调问题不是 SE(3) 变换本身的问题——它依然是 contact 前末端轨迹对物体的几何等变性;真正的问题是子任务编排(scheduling):哪只手在什么时候做什么,什么时候要等,什么时候可以并行。MimicGen 的单一序列假设在这层崩了。

DexMimicGen 的解法是承认双臂子任务有三种基本类型,给每类写最小必要的执行约束,其它一切照搬 MimicGen。这种"分层最小改动"的工程哲学让整套系统立刻能用——论文报告 60 条源 demo 放大到 21K 条(350×),真机 Can Sorting 把 4 条人 demo 放大到 40 条就让 Diffusion Policy 从 0% → 90%

💡 核心思想:双臂子任务的三分类 + 三种执行约束

把"双臂协调"按"是否需要时序对齐、是否需要顺序依赖"两个正交维度拆开,正好三类,每类一种最小解法:

① Parallel · 并行 两臂各自独立抓不同物体 例:Piece Assembly 开局 左右各抓一块 L: pick cube L: place R: pick tri R: place 解法 · 异步队列 每只手一个 action queue 各按自己节奏 dequeue 空了就用 MimicGen 等 变换填下一段 不要求时序对齐 ② Coordination · 协调 两臂共同完成同一目标 例:Tray Lift 一起抬托盘 Box Cleanup 合盖子 L 段 R 段 ⇄ wait ⇄ 解法 · 同步执行 segmentation 强制两臂同 一时刻结束此段 执行时每只手在段尾等对方 共用一个 SE(3) 变换 相对位姿保不变 ③ Sequential · 顺序 一只手必须等另一只做完 例:Pouring 先倒球 再端碗放 pad 上 pre: 倒球 post: 端碗 阻塞:post 等 pre 完成 解法 · ordering constraint 在 task config 里显式声明 pre-subtask 与 post-subtask post 那只手在 pre 完成 前阻塞 顺序强制保安全
图 1:双臂子任务三分类。三类各配一种最小执行约束——其余机制(SE(3) 等变换、开环 replay、segmentation)完全照搬 MimicGen。

这套分类法本身有方法论价值:它把"双臂协调问题"归约到两个正交维度——是否需要时序对齐(同步 vs 异步)、是否需要顺序依赖(并行 vs 串行)。任何新的双臂任务都可以用这三类组合描述。

🛠️ 怎么做:三阶段生成 + 三种本体 + 真机 real2sim2real

三阶段数据生成流程(以 Tray Lift 为例)

阶段做了什么关键 trick
① Source demo segmentation把人 demo 按臂分别切分成 object-centric 子任务段;记录每段的参考物体位姿;末段标为 coordination人工标注或启发式;coordination 段必须强制两臂同一时刻结束,否则后续 synchronization 失效
② 场景随机化 + 源 demo 选择论文难度档 0/1/2 三种 reset 分布(默认/更广/位置交换);每次随机选一条源 demo档 1/2 让数据覆盖到源 demo 没见过的初始配置
③ 迭代生成双臂并行维护各自的 action queue:空了就用 MimicGen 等变换把源段变换到当前物体位姿填进队列;dequeue 一个动作执行;遇 coordination 等对方对齐;遇 sequential post 阻塞等 pre指关节动作直接 replay——指动作相对末端无需重变换
④ 成功过滤全部子任务都成功执行才保留 demo;否则 reset 重来仿真开环 replay + 物理过滤保证每条 demo 都可行

三种本体 + 三种控制器(Fig.4 · 9 个任务)

本体控制器遥操接口典型任务
双臂 Panda + parallel-jaw 夹爪OSC(操作空间控制)iPhone + RoboTurkThreading / Piece Assembly / Transport
双臂 Panda + 灵巧手OSC + 指关节位置控制Apple Vision Pro + VisionProTeleop + OmniH2O retargetingBox Cleanup / Drawer Cleanup / Tray Lift
GR-1 humanoid + 灵巧手IK 控制(基于 mink 库)——humanoid 双臂共享 torso,OSC 不稳同上 + 人→机校准(固定初始 pose 算相对变换)Pouring / Coffee / Can Sorting

coordination 段的两种变换方案

方案怎么做适用
Transform(默认)取"第一只手开始此段时的物体位姿" $T_W^{o'}$ 与源段物体位姿 $T_W^{o_i}$,两臂共用 $T_{o'}^W (T_W^{o_i})^{-1}$一般 coordination 段
Replay直接 replay 源轨迹不做变换,保运动学可行handover 阶段(Can Sorting / Transport)——保证两臂交接不出界

📊 关键结果:60 → 21K,0% → 90%

任务source demo (DP)DexMG 1000 最佳最佳 policy
Can Sorting0.797.3DP
Tray Lift3.388.7DP
Transport52.783.3DP
Box Cleanup62.094.7BC-RNN
Coffee14.784.7BC-RNN
Drawer Cleanup0.780.0BC-RNN
Piece Assembly3.380.7DP
Threading1.369.3DP
Pouring0.779.3DP

Table I(档 0 分布):3 seeds 取每 seed 最大成功率。所有任务 DexMG 1000 条都大幅超越 source demo——平均从 ~15% 提升到 ~85%。总产出:21K demos from 60 source demos

四个关键消融

实验对比结果说明
vs DemoNoise 基线
(同源 demo + 加噪 replay)
DexMG 1000 vs DemoNoise 1000DexMG 高出 52.6 ~ 61.3 pp
(Pouring +52.6 / Tray Lift +58.6 / Piece Assembly +61.3)
不只是"加噪",等变换机制是核心;DemoNoise 还无法生成档 1/2
数据规模效应
(Fig.5)
100 / 500 / 1000 / 5000 demos100→1000 提升显著;1000→5000 diminishing returns(任务相关)1000 条/任务是性价比拐点
coordination 方案对比Transport 任务 Replay vs TransformReplay 63.3% vs Transform 46.0%;Can Sorting 相当(97.3% vs 98.6%)handover 类任务默认选 Replay
sequential 约束消融Drawer Cleanup 有约束 vs 无约束 vs 同源 demo50.7% / 48.0% / 56.7%
Pouring 88.7% / 76.7% / 79.3%
使用不同源 demo 时约束有效

policy 架构反直觉发现

反 RoboMimic 结论Diffusion Policy 普遍最好;而 BC-RNN-GMM 反而不如 BC-RNN / DP,尤其在灵巧手任务上。RoboMimic 在单臂夹爪上发现"加 GMM 头有益",这个结论在双臂灵巧场景不成立——作者推测双臂任务的多模态分布与单臂本质不同。

真机 real2sim2real:Can Sorting(Sec.VI.D)

维度配置 / 数字
硬件Fourier GR1 + 两个 6-DoF Inspire 灵巧手;2 个 Intel RealSense D435i(头戴第一人称 + 前方第三人称)
Digital twin 初始化头戴 RGB-D 初始帧 + GroundingDINO 分割物体 RGB mask → mask 内深度均值定位物体 $x,y$ → 初始化 sim 物体位姿
流程4 条真机源 demo → 仿真中 replay 当 source → DexMG 生成新轨迹 → 成功则控制动作序列发回真机执行
生成数据量40 条真机 demo(除环境 reset 外全自动)
结果Diffusion Policy 在 40 条 DexMG 数据上 90% 成功率,对比 4 条源 demo 训练的 policy 0%
🔮 直觉:为什么 4 → 40 条就能从 0% 跳到 90%?因为 source demo 只覆盖一种物体位姿,policy 学不到泛化;DexMG 通过等变换把这 4 条"骨架"投射到 40 种不同的物体初始位姿,相当于把"动作的相对几何"从"绝对位置"中解耦出来——这正是 IL 需要的。

跨 benchmark 泛化:BiGym

把 DexMG 应用到 BiGym 的 3 个 humanoid 移动操作任务,每任务生成 1000 demo,生成成功率

BiGym 任务生成成功率
FlipCup29.1%
DishwasherLoadPlates43.6%
CupBoardsCloseAll76.4%

成功率落差说明:MimicGen 范式在长程 mobile manipulation 上有边界——更多源 demo + 更聪明的 segmentation 是后续工作(HumanoidMimicGen 等)要解决的。

🌐 在领域中的位置:NVIDIA 合成数据栈的中间一阶

RoboTurk / RoboSuite MimicGen (2023)·单臂夹爪 SE(3) 等变换 DexMimicGen (2024)·双臂灵巧手 ⭐ HumanoidMimicGen·全身 loco-manip GR00T Mimic / GR00T-Dreams·生成式轨迹

DexMimicGen 是 NVIDIA 「合成数据栈」从「轨迹变换」过渡到「生成式轨迹」的中间一阶——把上一代单臂 MimicGen 工程化到双臂灵巧手,给下一代 HumanoidMimicGen / GR00T Mimic 留下了相同的 task description language 与代码底座。同期它也是双臂灵巧 IL 论文的标准实验基线之一(配合 MimicGen、BiGym、RoboCasa)。关联线索:T02 dataset infrastructureT11 dexterous manipulation

❓ 常见误区

DexMimicGen 是新算法吗?

不是。它不是新 policy,也不是新 RL 算法,而是一个数据生成系统。policy 还是 BC-RNN / BC-RNN-GMM / DiffusionPolicy 这些现成的——DexMG 只负责把 5-10 条人 demo 放大成 1000 条训练数据。论文的创新全部在「如何正确编排双臂子任务」这一层。

为什么不直接用自动重放(DemoNoise)?

重放只在源 demo 见过的位姿上有效,无法覆盖档 1/2 这种新初始配置。DexMG 的 SE(3) 等变换把"动作对物体的相对几何"显式解耦出来,所以能投射到新位姿。论文 Table III 显示 DexMG 比 DemoNoise 高 52.6 ~ 61.3 个百分点

coordination 段为什么要"两臂同时结束"?

因为 coordination 的定义就是"两臂末端相对位姿与源 demo 对齐"。如果两臂结束时刻错开,"相对位姿"就没有对应时刻——同步就无从谈起。所以这个约束必须在 segmentation 阶段就强制做好,是后续 synchronization 策略的前提。 humanoid 为什么用 IK 不用 OSC?

因为 GR-1 humanoid 的双臂共享同一个 torso,运动学树比双臂 Panda 复杂——OSC 在每只手上独立算 delta → joint torque 会耦合出错。IK 直接把全局 target end-effector pose 翻译成 joint positions,绕开耦合。论文用了 mink 库的 IK 实现。

真机 pipeline 真的全自动吗?

除了环境 reset 都自动。流程是:每次 reset 物体后,头戴相机拍一帧 RGB-D → GroundingDINO 分割 → 物体 $x,y$ 输入仿真 → DexMG 在 digital twin 中生成新轨迹 → 成功则动作序列发真机执行。Digital twin 充当真机数据生成的安全层——失败的不发。

DexMG 的边界在哪?

(1) 依赖人工 segmentation——每加一个新任务都要人手标子任务边界或写启发式;(2) 依赖源 demo 质量 + teleop 接口——双臂 + 多指 teleop 仍需 AVP + OmniH2O,硬件门槛高;(3) 开环 replay——若新场景几何与源 demo 差异大(更窄间隙),不重新规划会失败;(4) BiGym 上 29-76% 生成成功率——长程 mobile manipulation 的边界明显。这些都留给 HumanoidMimicGen、GR00T Mimic 等后续工作。