Hana's Blog
RoboTwin 2.0 论文精读:用可规模化仿真数据提升双臂操作鲁棒性Blur image
Arxiv ID 2506.18088
幻觉翻译 2506.18088
publication pending

RoboTwin 2.0 把 MLLM 代码生成、仿真反馈、RoboTwin-OD 资产库和五轴域随机化组合成可扩展的双臂数据工厂,并用 embodiment-aware grasping 提升 sim-to-real 鲁棒性。

推荐指数:

1. 论文概述#

【Paper】 RoboTwin 2.0 面向双臂协作操作,提供数据生成器、超过 100,000 条专家轨迹、50 个任务、5 种双臂 embodiment 和统一 benchmark。核心不是提出一个新的 policy 网络,而是把“任务程序如何生成、场景如何变、不同机器人如何执行”变成可自动扩展的基础设施。

RoboTwin 2.0 系统总览(论文 Figure 1)

一句话总结#

【Analysis】 RoboTwin 2.0 将仿真从“干净场景中的固定脚本”升级为一个带视觉反馈的程序合成闭环:MLLM 写任务代码,仿真执行十次暴露失败,VLM 定位原因,代码代理再修复;随后在物体、杂乱、光照、背景、桌高和语言上做结构化随机化,生成能迁移到真实双臂平台的数据。

核心贡献#

【Paper】

  1. RoboTwin-OD:731 个物体实例、147 个类别,带 placement、functional、grasp point/axis 与多粒度语言描述。
  2. MLLM + simulation-in-the-loop 的专家代码生成器,在 10 次模拟试验和最多 5 轮修复中筛选可执行程序。
  3. 五个域随机化轴:clutter、lighting、background、tabletop height、language;并针对不同 DoF 的机器人生成候选抓取姿态。
  4. 50+ 双臂任务、5 种 embodiment 和 benchmark;代码生成 ASR 提升 10.9 个百分点,合成数据显著改善 VLA 的仿真与真实环境鲁棒性。

2. 背景与相关工作#

【Paper】 双臂任务涉及交接、协同装配、工具使用和双物体同步移动。真实示教同时覆盖多种物体、语言、光照和硬件,采集成本随组合数快速增长,因此 simulation-based synthesis 很有吸引力。

已有工作主要有三类短板:

  • 生成质量不可控:一次生成的脚本可能抓空、放错位置或根本无法运行,失败轨迹会污染训练集。
  • 随机化过于表面:只换颜色或相机,而没有把 clutter、物理可行性、桌面高度和语言变化一起纳入。
  • 忽视 embodiment 差异:Franka 的高 DoF 机械臂可以 top-down 抓取,Piper 等低 DoF 平台可能只能侧向接近;相同脚本并不等于相同可达性。

【Analysis】 因而 RoboTwin 2.0 的研究问题是数据工厂问题:如何让“任务程序质量”“环境覆盖度”和“跨机器人可执行性”同时可扩展,而不是只增加轨迹数量。

3. 问题定义#

【Paper】 给定任务名称与自然语言目标,系统要输出能在指定 embodiment 上完成任务的 Python task program,并由它生成视觉、本体感知和动作轨迹。单条 episode 的 observation 包括多视角 RGB、关节状态和语言 instruction;action 是由 task API 驱动的末端位姿/夹爪控制序列,而非一个统一的离散 action token。

维度RoboTwin 2.0 设定
任务50+ 个双臂协作任务,如 Handover Block、Stack Bowls、Open Laptop
资产RoboTwin-OD 731 instances / 147 categories
EmbodimentAloha-AgileX、Piper、Franka、UR5、ARX-X5
数据每个任务支持 clean 与 domain-randomized 轨迹;论文报告超过 100,000 条
目标生成高成功率专家程序,并评估 Easy/Hard 环境中的泛化

4. 方法#

4.1 Overall Architecture#

RoboTwin 2.0 Pipeline(论文 Figure 2)

上图中的数据流是:RoboTwin-OD 与 skill API 提供可操作对象和动作原语,MLLM 生成 task code,模拟器执行并记录结果,VLM observer 给出视觉诊断,修复后的程序再进入随机化数据采集与 benchmark。

4.2 核心模块#

RoboTwin-OD 与 affordance annotations#

【Paper】 534 个自建 RGB-to-3D 物体、153 个 Objaverse 物体和 44 个 PartNet-Mobility articulated 物体组成资产库。每个对象有 15 条经人工核验的描述,以及 placement point、functional point、grasp point 和 grasp axis。

RoboTwin-OD 对象库(论文 Figure 6)

【Code】 官方仓库把对象与任务 API 放在 assets/、envs/ 和 envs/utils.py,具体任务类(例如 envs/stack_bowls_two.py)通过 grasp_actor、place_actor、move 等原语读写这些标注。这样新物体主要是资产和关键点配置问题,而不是重新手写整套控制器。

MLLM expert code generation#

MLLM 专家代码生成闭环(论文 Figure 3)

【Paper】 code-generation agent 读取 API 列表、函数调用示例、层级约束和任务描述,先生成 Python 程序。每轮执行 10 次,日志记录不可运行代码、左右臂抓取失败、错误放置和规划失败;VLM observer 逐帧查看关键步骤,报告失败时间点与可能原因。代码代理融合定量日志和定性视觉诊断,最多连续修复 5 轮,达到设置的成功率阈值即停止。

【Code】 code_gen/task_generation_mm.py 会写出 envs_gen/gpt_task.py(其中 task 是任务名),调用 insert_observation_points 注入观测点,再由 run() 汇总 success_rate、error_message 和 run_records。仓库默认每个候选程序最多尝试 5 次,test_gen_code.py 中的模拟评估以 10 次 rollout 形成成功率。

五轴 domain randomization#

五轴域随机化与纹理库(论文 Figure 4)

【Paper】

  1. Clutter:从 OD 采样任务无关物体,使用碰撞感知放置,并排除与目标物视觉/语义相似的 distractor。
  2. Background:由 1,000 个表面描述生成 20,000 张候选纹理,经人工筛选得到 11,000 张。
  3. Lighting:随机化颜色温度、光源类型、数量、强度和位置。
  4. Tabletop height:在合理范围内改变桌面高度,改变视角和空间关系。
  5. Language:MLLM 生成任务模板与对象描述,再组合成多种 instruction。

【Code】 envs/_base_task.py 读取 domain_randomization 配置;官方 env_cfg/task_config/demo_randomized.yml 打开 random_background、cluttered_table、random_light,并把 random_table_height 设为 0.03。get_cluttered_table() 负责杂乱物体插入,table_z_bias 通过均匀采样改变桌高。

Embodiment-aware grasp adaptation#

【Paper】 对每个对象预先标注多个抓取轴和接近方向,再叠加带 reachability bias 的角度扰动,并行尝试 motion planning。该模块为同一语义任务生成“适合当前手臂”的候选姿态,而不是强迫所有机器人复用一种 grasp。

4.3 关键公式#

【Paper】 令任务程序为 PP,场景随机变量为 ξ\xi,模拟器执行结果为 r(P,ξ){0,1}r(P,\xi)\in\{0,1\}。代码生成阶段的目标可写成:

P=argmaxP  EξDsim[r(P,ξ)]P^* = \arg\max_P \; \mathbb{E}_{\xi\sim\mathcal{D}_{sim}}[r(P,\xi)]

其中 Dsim\mathcal{D}_{sim} 包含动力学、感知和场景随机性。论文用 10 次 rollout 的平均值估计该期望;达到阈值便接受程序。

【Analysis】 对策略训练而言,随机化数据近似扩大了训练分布:

minθ  E(o,a)DcleanDrand[(πθ(o),a)]\min_\theta\;\mathbb{E}_{(o,a)\sim\mathcal{D}_{clean}\cup\mathcal{D}_{rand}}[\ell(\pi_\theta(o),a)]

这不是论文提出的新损失,而是解释为什么 clean 与 randomized 轨迹混合后,policy 对未见背景、clutter 和桌高变化更稳定。

4.4 Training#

【Paper】 论文将生成的专家轨迹用于 ACT、DP、RDT、Pi0、DP3 等 policy。域随机化预训练实验使用 32 个任务、9,600 条轨迹(每任务 300 条),再在 5 个未见任务上用 50 条 clean demonstrations 做单任务适配。真实实验中 RDT 使用 1,000 条合成轨迹与 10 条真实示教,另设 synthetic-only 对照。

【Code】 数据采集入口是 scripts/collect_data.py 与 collect_data.sh;demo_clean.yml 和 demo_randomized.yml 控制场景开关,默认保存 RGB、qpos 和双腕相机数据。策略训练本身不在 RoboTwin 主仓库中,而是通过 XPolicyLab/外部 policy 代码读取 HDF5 或转换后的 LeRobot 数据。

Algorithm 1 RoboTwin 专家数据生成与训练
输入:
任务描述、API/示例、RoboTwin-OD 资产、目标 embodiment 与随机化配置。
输出:
通过质量筛选的专家轨迹数据集与可复现实验配置。
  1. MLLM 根据任务约束生成 Python task program。
  2. 在模拟器中执行 10 次,记录每次成功/失败及错误类型。
  3. VLM 检查关键帧并定位逻辑、抓取或放置失败。
  4. 代码代理修复程序;最多 5 轮,达到阈值后接受。
  5. 对对象、场景、光照、桌高和语言采样,运行 task API 采集轨迹。
  6. 将 clean/randomized 轨迹提供给下游 imitation/VLA 训练。

4.5 Inference#

【Paper】 benchmark 推理时固定 50 条 clean demonstrations 进行单任务训练,再在 Easy(干净)和 Hard(clutter、光照、纹理、桌高随机化)各执行 100 次 rollout。真实部署在 COBOT-Magic 双臂平台上,测试 seen/unseen background 与 clean/cluttered 四种组合。

【Code】 scripts/eval_policy.sh 统一启动 policy server 与 simulator;eval_policy_multitask.py 从任务配置读取 domain randomization,eval_policy_xpolicylab.py 将观测中的 language instruction 传给策略。RoboTwin 本身负责环境与成功判定,具体 action decoding 由 ACT、RDT、Pi0 等适配器实现。

Algorithm 2 RoboTwin Benchmark 推理
输入:
策略 checkpoint、任务配置、语言 instruction 与 Easy/Hard 环境设置。
输出:
每个任务的 rollout success rate 与跨条件汇总结果。
  1. 加载指定 embodiment、对象实例和随机化种子。
  2. 渲染多视角 RGB/状态观测,并将 instruction 发送给 policy。
  3. 执行策略动作,直到任务成功、失败或达到 step limit。
  4. 重复 100 次,分别统计 Easy 与 Hard 成功率。

4.6 代码实现对照#

论文概念官方代码位置对照结论
MLLM 代码生成code_gen/task_generation_mm.py生成、插入观测点、执行和迭代修复均有实现
VLM observercode_gen/observation_agent.py读取 episode 图像,输出步骤级诊断
Task APIenvs/_base_task.py、envs/utils.pygrasp/place/move 等原语支撑任务脚本
域随机化envs/_base_task.py、env_cfg/task_config/demo_randomized.yml五轴中的视觉/空间轴在配置中可开关
数据采集scripts/collect_data.py支持多 embodiment、RGB/qpos/wrist camera 保存
Policy 训练XPolicyLab 与外部仓库RoboTwin 仓库提供环境和数据,不内置完整 VLA 训练器

5. 实验#

5.1 Experimental Setup#

RoboTwin 2.0 真实世界四种测试条件(论文 Figure 8)

【Paper】 评估分为四部分:自动专家代码生成、embodiment-aware grasping、策略鲁棒性预训练、真实世界 sim-to-real,以及 50 任务 benchmark。主要 backbone 包括 ACT、DP、RDT、Pi0、DP3。

5.2 Main Results#

【Paper】

实验关键结果
代码生成RoboTwin 2.0 + MM feedback 的 ASR 为 71.3%,Vanilla 为 62.1%;Top5-ASR 为 78.6%
迭代效率MM feedback 的平均修复轮数 CR-Iter 为 1.76,RoboTwin 1.0 为 2.42
抓取适配五种 embodiment 平均成功率从 52.2% 提升到 60.5%,增幅 8.3 个百分点
仿真鲁棒性RDT + randomized 平均 24.8%,相对其 pretrained baseline 提升 31.9%;Pi0 + randomized 为 29.1%
真实 few-shot10 条真实示教 + 1,000 条合成轨迹,在四种条件下平均提升 24.4 个百分点
真实 zero-shot仅合成数据在 unseen background 条件下仍提升 21.0/20.5 个百分点

【Analysis】 改进主要出现在低 DoF 平台和复杂环境:Franka/UR5 已有较大可达空间,抓取候选扩展的边际收益小;Piper 的成功率提升 22.7 个百分点,说明“数据多”之外,动作是否对 embodiment 可行同样关键。

5.3 Ablation Study#

【Paper】 代码生成消融把 Vanilla、仅执行日志反馈(FB)和日志 + VLM(MM FB)分开。RoboTwin 2.0 上 ASR 依次为 62.1%、66.7%、71.3%,说明符号日志和视觉诊断具有互补性;单独视觉反馈并不是替代执行器,而是帮助定位语义层错误。

域随机化消融比较 clean 与 randomized 预训练。RDT 的平均成功率从 14.6% 提升到 24.8%,Pi0 从 24.9% 提升到 29.1%;增益在未见任务和随机化测试中更明显。

5.4 Generalization#

【Paper】 benchmark 在 50 个任务上使用 50 条 clean demonstrations 训练,并用 100 rollouts 测 Easy/Hard。Hard 平均成功率为:RDT 13.7%、Pi0 16.3%、ACT 1.7%、DP 0.6%、DP3 5.0%。预训练 VLA 更抗域偏移,但 Pi0 从 Easy 到 Hard 仍下降 30.1 个百分点,说明通用预训练不能替代专门的 randomized data。

【Analysis】 DP3 在 clean few-shot 条件下较强,部分原因是仿真 point cloud 和背景分割近乎完美;这提醒我们 benchmark 的传感器假设会影响模型排名,真实部署时应报告感知噪声和标定误差。

6. 方法分析#

6.1 为什么有效?#

【Analysis】 RoboTwin 2.0 同时作用于三个误差源:MLLM 闭环减少“程序语义错误”,affordance/embodiment 适配减少“运动学不可行”,域随机化减少“训练与部署分布差异”。三者串联后,合成数据不再只是数量扩张,而是带有质量控制和覆盖度设计。

6.2 核心创新#

  1. 程序级闭环:把执行结果变成可解释的 code repair 信号。
  2. 结构化随机化:五个轴分别对应真实部署中的视觉、空间和语言变化。
  3. 跨 embodiment affordance:抓取姿态候选显式编码机器人可达性。
  4. 生成器 + benchmark 一体化:同一任务 API 同时用于采集、训练和评测,降低复现实验的接口成本。

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

【Analysis】 GenSim 类方法重点是从语言生成新任务;RoboTwin 2.0 更进一步,把任务生成、失败诊断、随机化和多机器人执行放在同一闭环。它的主要产物是“可反复运行的数据生成系统”,而非一次性的 task script 或单一 policy。

6.4 关键假设#

  • 模拟器中的碰撞、摩擦、相机和控制误差足以覆盖真实变化的主要部分。
  • 物体 affordance 标注和 skill API 能表达 50+ 任务的关键交互。
  • MLLM/VLM 的诊断能从十次 rollout 中定位可修复原因。
  • 语言、视觉和桌面随机化的组合不会引入与任务目标冲突的歧义。

7. 局限性#

7.1 作者明确提出的局限#

【Paper】 作者指出合成数据仍可能遗漏真实传感器噪声和罕见 edge case;embodiment adaptation 尚未建模 force/tactile feedback,因此对精细接触控制有限。未来工作包括提高 sim-to-real fidelity、支持更复杂的多物体任务与真实部署。

7.2 自己分析得到的局限#

【Analysis】

  1. VLM observer 依赖视觉帧和外部模型,诊断成本与延迟可能随任务长度增长;论文没有报告完整的 API 调用成本或失败诊断准确率。
  2. 50 个任务虽覆盖广,但大多仍是桌面短时操作;长时序、动态物体和接触力主导任务的外推尚未验证。
  3. 真实实验只在 COBOT-Magic 上展示四类任务,跨平台真实部署证据仍少于仿真 benchmark。
  4. benchmark 的 Hard 条件主要是视觉/空间随机化,尚未系统加入遮挡、深度缺失、执行器延迟等更强感知与控制扰动。

8. 启发与研究思考#

【Analysis】 RoboTwin 2.0 给 VLA 数据工程的启发是:扩充数据时要同时问“覆盖了哪些变化”“轨迹是否真的可执行”“是否适合目标硬件”。对后续研究,可以沿三条线推进:

  • 将 tactile、force 和接触事件加入 affordance 与 success checker,让随机化从视觉域扩展到交互域。
  • 把代码生成器产生的失败日志整理成可学习的 recovery policy,而不只用于离线修复脚本。
  • 在 benchmark 中拆分语言、视觉、运动学和传感器噪声的独立贡献,报告每个域轴的 scaling law。

如果你的目标是训练一个新的 bimanual VLA,较稳妥的起点是先用 demo_randomized 数据做跨任务预训练,再用少量真实 demonstrations 做 embodiment 与相机标定适配;不要只在 clean simulation 上追求高成功率。

RoboTwin 2.0 论文精读:用可规模化仿真数据提升双臂操作鲁棒性
https://agusexp25.top/blog/paper-deep-dive-robotwin-2
Author 菊花花
Published at August 27, 2026