跳转至

RoboTwin 2.0

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

RoboTwin 2.0 基准测试概览

概览

属性
任务 50 个双臂操作任务
机器人 Aloha-AgileX 双臂(14 DOF,每臂 7 个)
动作空间 14 维关节空间,[-1, 1] 中的连续
相机 head_cameraleft_cameraright_camera
模拟器 SAPIEN(不是 MuJoCo)
评估协议 每个任务 100 个回合,50 个 demo_clean 演示
评估设置 Easydemo_clean)和 Harddemo_randomized

可用任务

RoboTwin 2.0 在其上游 envs/ 目录中提供 50 个双臂操作任务。规范列表是 src/lerobot/envs/robotwin.py 中的 ROBOTWIN_TASKS 元组,从上游仓库逐字镜像。示例任务:

任务 CLI 名称 类别
Beat block with hammer beat_block_hammer 工具使用
Click bell / alarm clock click_bell 精确按压
Stack blocks (2 / 3) stack_blocks_two/three 堆叠
Stack bowls (2 / 3) stack_bowls_two/three 堆叠
Handover block / mic handover_block 双臂协调
Lift pot lift_pot 双臂提升
Shake bottle shake_bottle 连续运动
Turn switch turn_switch 铰接物体
Stamp seal stamp_seal 精确放置
Scan object scan_object 移动操作

将逗号分隔的列表传递给 --env.task 以在单次评估扫描中运行多个任务。

Warning

open_laptop 目前在上游已损坏(其 check_success() 使用 self.arm_tag,它仅在脚本专家 play_once() 路径内设置,因此在正常策略评估期间不可用)。在上游错误修复之前避免使用它,或修补任务以在 load_actors() 中默认 self.arm_tag = "left"

数据集

RoboTwin 2.0 数据集在 Hugging Face Hub 上以 LeRobot v3.0 格式提供:

lerobot/robotwin_unified

它包含所有 50 个任务的超过 100,000 个预收集轨迹(79.6 GB,Apache 2.0 许可证)。不需要格式转换 — 它已经采用正确的 LeRobot v3.0 模式,带有视频观测和动作标签。

您可以使用 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 分钟。

1. 创建 conda 环境

conda create -n robotwin python=3.10 -y
conda activate robotwin

2. 安装 LeRobot

git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e "."

3. 安装 RoboTwin 2.0

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。

Warning

如果自动安装失败,请手动安装:

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

4. 将 RoboTwin 添加到 PYTHONPATH

RoboTwin 任务模块必须可由 LeRobot 导入。从 RoboTwin/ 目录内:

export PYTHONPATH="${PYTHONPATH}:$(pwd)"

将此添加到您的 shell 配置文件以使其永久生效。

评估

标准评估(推荐)

使用官方协议(100 个回合)在单个任务上评估策略:

lerobot-eval \
  --policy.path="your-hf-policy-id" \
  --env.type=robotwin \
  --env.task=beat_block_hammer \
  --eval.batch_size=1 \
  --eval.n_episodes=100

单任务快速检查

lerobot-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=100

完整基准测试(所有 50 个任务)

lerobot-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

Tip

由于上游 self.arm_tag 错误(参见可用任务部分),上面故意省略了 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=10

环境配置参考

RoboTwinEnvConfig 的关键参数:

参数 默认值 描述
task "beat_block_hammer" 逗号分隔的任务名称
fps 25 仿真 FPS
episode_length 300 每个回合的最大步数
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 排行榜。官方协议要求:

  • 在每个任务的 50 个 demo_clean 演示上训练
  • 每个任务评估 100 个回合
  • 分别报告 Easydemo_clean)和 Harddemo_randomized)设置的成功率

有关提交说明,请参阅 RoboTwin 2.0 文档