LeRobot documentation

RoboTwin 2.0

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

RoboTwin 2.0

RoboTwin 2.0は、SAPIEN物理エンジン上に構築された大規模なデュアルアーム操作ベンチマークです。50のタスク(アップストリームのmain時点)にわたって、バイマニピュレーションロボティクスポリシーの標準化された評価プロトコルを提供します。また、強いドメインランダム化(混雑、照明、背景、テーブルの高さ、言語指示)を備えています。

RoboTwin 2.0 benchmark overview

概要

プロパティ値
タスク50のデュアルアーム操作タスク
ロボットAloha-AgileX 両腕型(14 DOF、各アーム7 DOF)
アクション空間[-1, 1] 内で連続的な 14 次元のジョイントスペース
カメラhead_camera, left_camera, right_camera
シミュレーターSAPIEN(MuJoCoではありません)
評価プロトコル100エピソード/タスク、50件のdemo_cleanデモ
評価設定イージー(demo_clean)と ハード(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_switchArticulated obj
スタンプシールstamp_seal精度の場所
オブジェクトのスキャンscan_objectモバイルマニピュレーション

--env.task にカンマ区切りのリストを渡すことで、1回の評価スイープで複数のタスクを実行できます。

`open_laptop` is currently broken upstream (its `check_success()` uses `self.arm_tag`, which is only set inside the scripted-expert `play_once()` path and therefore unavailable during normal policy eval). Avoid it until the upstream bug is fixed, or patch the task to default `self.arm_tag = "left"` in `load_actors()`.

データセット

RoboTwin 2.0 データセットは、Hugging Face Hub で LeRobot v3.0 形式 で利用できます:

lerobot/robotwin_unified

50すべてのタスクにわたって10万本以上の事前収集済み軌跡が含まれています(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統合は壊れており、LeRobotのデフォルトのPyTorch 2.15スタックではサポートされていません。そのベンチマークCIジョブは一時的に無効化されています。以下の手順はレガシーセットアップを説明するものであり、現在のデフォルト依存関係に対する動作するインストール手順ではありません。互換性修正とシミュレータ依存関係の分離は、PR #4888に先送りされています。

RoboTwin 2.0には、NVIDIA GPU(CUDA 12.1を推奨)を備えたLinuxが必要です。インストールには約20分かかります。

1. conda環境を作成します

conda create -n robotwin python=3.12 -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

インストールスクリプトは、SAPIEN、CuRobo、mplib、pytorch3dを含むすべてのPython依存関係を処理します。

If the automated install fails, install manually:
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)"

これをシェルプロファイルに追加して、恒久的に設定してください。

評価

標準的な評価(推奨)

公式プロトコル(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

マルチタスクスウィープ

1回の実行で複数のタスクを評価する:

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
`open_laptop` is intentionally omitted above because of the upstream `self.arm_tag` bug (see the **Available tasks** section). Re-add it once the upstream fix lands.

カメラ設定

デフォルトでは、3つのカメラすべてが含まれます:

カメラキー説明
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"カンマ区切りのタスク名
fps25シミュレーションFPS
episode_length1200エピソードあたりの最大ステップ数
obs_type"pixels_agent_pos""pixels" または "pixels_agent_pos"
camera_names"head_camera,left_camera,right_camera"カンマ区切りのアクティブなカメラ
observation_height240カメラのピクセル高さ
observation_width320カメラのピクセル幅

リーダーボードへの提出

結果はRoboTwin 2.0 リーダーボードに提出できます。公式プロトコルでは、以下が必須です:

  • 各タスクにつき50個のdemo_cleanデモデータを用いた学習
  • 各タスクにつき100エピソードを評価
  • Easy(demo_clean)とHard(demo_randomized)の各設定について、成功率を個別に報告します

提出手順については、RoboTwin 2.0 ドキュメントを参照してください。

Update on GitHub