LeRobot documentation
RoboTwin 2.0
RoboTwin 2.0
RoboTwin 2.0は、SAPIEN物理エンジン上に構築された大規模なデュアルアーム操作ベンチマークです。50のタスク(アップストリームのmain時点)にわたって、バイマニピュレーションロボティクスポリシーの標準化された評価プロトコルを提供します。また、強いドメインランダム化(混雑、照明、背景、テーブルの高さ、言語指示)を備えています。
- 論文: RoboTwin 2.0: 頑健な両手ロボット操作のための強力なドメインランダム化を備えたスケーラブルなデータジェネレータおよびベンチマーク
- GitHub: RoboTwin-Platform/RoboTwin
- リーダーボード: robotwin-platform.github.io/leaderboard
- データセット: lerobot/robotwin_unified

概要
| プロパティ | 値 |
|---|---|
| タスク | 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_switch | Articulated 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" | カンマ区切りのタスク名 |
fps | 25 | シミュレーションFPS |
episode_length | 1200 | エピソードあたりの最大ステップ数 |
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エピソードを評価
- Easy(
demo_clean)とHard(demo_randomized)の各設定について、成功率を個別に報告します
提出手順については、RoboTwin 2.0 ドキュメントを参照してください。
Update on GitHub