RoboTwin 2.0 是一个基于 SAPIEN 物理引擎构建的大规模双臂操作 benchmark。它为双臂机器人 policy 提供了标准化评估协议,涵盖 50 个任务(截至上游 main),并具有强大的域随机化(杂乱、光照、背景、桌面高度和语言指令)。

| 属性 | 值 |
|---|---|
| 任务 | 50 个双臂操作任务 |
| 机器人 | Aloha-AgileX 双臂(14 自由度,每臂 7 个) |
| action space | 14 维关节空间,在 [-1, 1] 内连续 |
| 相机 | head_camera、left_camera、right_camera |
| simulation 器 | SAPIEN(不是 MuJoCo) |
| 评估协议 | 每个任务 100 个 episode,50 个 demo_clean demonstration |
| 评估设置 | Easy(demo_clean)和 Hard(demo_randomized) |
RoboTwin 2.0 在上游 envs/ 目录中提供 50 个双臂操作任务。权威列表是 src/lerobot/envs/robotwin.py 中的 ROBOTWIN_TASKS 元组,逐字镜像自上游仓库。示例任务:
| 任务 | CLI 名称 | 类别 |
|---|---|---|
| 用锤子敲击方块 | beat_block_hammer | 工具使用 |
| 点击铃/闹钟 | click_bell | 精密按压 |
| 堆叠方块(2 / 3) | stack_blocks_two/three | 堆叠 |
| 堆叠碗(2 / 3) | stack_bowls_two/three | 堆叠 |
| 交接方块/麦克风 | handover_block | 双臂协调 |
| 提起锅 | lift_pot | 双臂提起 |
| 摇晃瓶子 | shake_bottle | 连续运动 |
| 转动开关 | turn_switch | 铰接物体 |
| 盖印章 | stamp_seal | 精密放置 |
| 扫描物体 | scan_object | 移动操作 |
向 --env.task 传入逗号分隔的列表,以在单次评估扫描中运行多个任务。
`open_laptop` 目前在上游已损坏(其 `check_success()` 使用了 `self.arm_tag`,而它只在脚本专家 `play_once()` 路径中被设置,因此在普通 policy 评估期间不可用)。在上游 bug 修复之前请避免使用它,或者修补该任务,使其在 `load_actors()` 中默认 `self.arm_tag = "left"`。
RoboTwin 2.0 dataset 以 LeRobot v3.0 格式在 Hugging Face Hub 上提供:
lerobot/robotwin_unified
它包含所有 50 个任务的超过 100,000 条预采集轨迹(79.6 GB,Apache 2.0 许可证)。无需格式转换——它已经是正确的 LeRobot v3.0 模式,包含视频 observation 和 action 标签。
你可以直接使用 HF Datasets 库加载它:
from datasets import load_dataset
ds = load_dataset("lerobot/robotwin_unified", split="train")RoboTwin 2.0 需要 Linux 和 NVIDIA GPU(建议 CUDA 12.1)。安装大约需要 20 分钟。
conda create -n robotwin python=3.10 -y conda activate robotwin
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e "."git clone https://github.com/RoboTwin-Platform/RoboTwin.git
cd RoboTwin
bash script/_install.sh
bash script/_download_assets.sh安装脚本会处理所有 Python 依赖,包括 SAPIEN、CuRobo、mplib 和 pytorch3d。
如果自动安装失败,请手动安装:pip install -r requirements.txt pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable" cd envs && git clone https://github.com/NVlabs/curobo.git && cd curobo pip install -e . --no-build-isolation然后应用所需的 mplib 修复:在
mplib/planner.py第 807 行,从条件中移除or collide。
RoboTwin 任务模块必须能被 LeRobot 导入。在 RoboTwin/ 目录中:
export PYTHONPATH="${PYTHONPATH}:$(pwd)"将此添加到你的 shell 配置文件中以使其永久生效。
使用官方协议(100 个 episode)在单个任务上评估 policy:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--eval.batch_size=1 \
--eval.n_episodes=100lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--eval.batch_size=1 \
--eval.n_episodes=5在一次运行中评估多个任务:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer,click_bell,handover_block,stack_blocks_two \
--eval.batch_size=1 \
--eval.n_episodes=100lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=adjust_bottle,beat_block_hammer,blocks_ranking_rgb,blocks_ranking_size,click_alarmclock,click_bell,dump_bin_bigbin,grab_roller,handover_block,handover_mic,hanging_mug,lift_pot,move_can_pot,move_pillbottle_pad,move_playingcard_away,move_stapler_pad,open_microwave,pick_diverse_bottles,pick_dual_bottles,place_a2b_left,place_a2b_right,place_bread_basket,place_bread_skillet,place_burger_fries,place_can_basket,place_cans_plasticbox,place_container_plate,place_dual_shoes,place_empty_cup,place_fan,place_mouse_pad,place_object_basket,place_object_scale,place_object_stand,place_phone_stand,place_shoe,press_stapler,put_bottles_dustbin,put_object_cabinet,rotate_qrcode,scan_object,shake_bottle,shake_bottle_horizontally,stack_blocks_three,stack_blocks_two,stack_bowls_three,stack_bowls_two,stamp_seal,turn_switch \
--eval.batch_size=1 \
--eval.n_episodes=100由于上游的 `self.arm_tag` bug(见**可用任务**部分),上面的内容刻意省略了 `open_laptop`。待上游修复发布后,请重新添加它。
默认情况下,包含所有三个相机:
| 相机键 | 描述 |
|---|---|
head_camera | 躯干安装的俯视图 |
left_camera | 左臂腕部安装相机 |
right_camera | 右臂腕部安装相机 |
若要使用相机的子集,请覆盖 --env.camera_names:
lerobot-eval \
--policy.path="your-hf-policy-id" \
--env.type=robotwin \
--env.task=beat_block_hammer \
--env.camera_names="head_camera,left_camera" \
--eval.batch_size=1 \
--eval.n_episodes=10RoboTwinEnvConfig 的关键参数:
| 参数 | 默认值 | 描述 |
|---|---|---|
task | "beat_block_hammer" | 逗号分隔的任务名称 |
fps | 25 | simulation FPS |
episode_length | 300 | 每个 episode 的最大步数 |
obs_type | "pixels_agent_pos" | "pixels" 或 "pixels_agent_pos" |
camera_names | "head_camera,left_camera,right_camera" | 逗号分隔的启用相机 |
observation_height | 240 | 相机像素高度 |
observation_width | 320 | 相机像素宽度 |
结果可以提交到 RoboTwin 2.0 排行榜。官方协议要求:
demo_clean demonstration 进行训练demo_clean)和 Hard(demo_randomized)设置的成功率有关提交说明,请参阅 RoboTwin 2.0 文档。
在 GitHub 上更新