LeRobot documentation
NVIDIA RoboLab
NVIDIA RoboLab
RoboLabは、NVIDIA Isaac Labでシミュレートされ、Isaac SimのRTXレンダラーでレンダリングされるDROIDロボット(Robotiq 2F-85グリップを備えたFranka Pandaアーム)向けの120のテーブルトップ操作タスクからなるベンチマークです。タスクには、ピック&プレイス、積み上げ、仕分け、再配置、および言語条件付きのバリアント(空間関係、色、数え上げ、曖昧な指示)が含まれ、難易度はシンプル、中程度、複雑の3段階で評価されます。
- 論文: RoboLab: タスク汎用ポリシーの分析のための高忠実度シミュレーションベンチマーク
- GitHub: NVlabs/RoboLab
- プロジェクトページとリーダーボード: research.nvidia.com/labs/srl/projects/robolab
要件とライセンス
- GPU: NVIDIA RTX GPU(Isaac Sim は RTX でレンダリングされます)。1 つのタスクの 1 つの env には、Isaac Sim を含めて約 7 GB の VRAM が必要です。同じタスク内の追加の env ごとに、約 1〜2 GB が追加で必要になります(RoboLab のガイドでは、タスクによって異なりますが、48 GB の GPU に 30〜100 個の env を収めることができます)。ポリシーには、これとは別に独自のメモリが必要です。
- Isaac Sim: RoboLab は、Isaac Sim 6.0.1 と Isaac Lab 3.0 beta 2、すなわち RoboLab の Isaac Sim 6 スタックで動作します。Isaac Sim を使用するには、NVIDIA Isaac Sim ライセンスへの同意が必要です。Docker イメージは、RoboLab 独自のイメージと同様に、これを自動的に同意します。
- アセット: RoboLabのシーン、オブジェクト、ロボットモデル(git LFSから約6 GB)は、主にCC BY-NC-SA 4.0ライセンスですが、一部は他の条件が適用されます。詳細はRoboLabのTHIRD_PARTY_NOTICES.mdを参照してください。LeRobotはこれらを配布しません。イメージをビルドする際に、NVlabsからダウンロードされます。
- Docker、以下のサーブ構成のために: イメージのビルドには BuildKit (
docker buildx)、コンテナが GPU を使用できるようにするには NVIDIA Container Toolkit。
サーブして実行する(推奨)
Isaac Lab 3.0 beta は transformers==4.57.6(したがって huggingface-hub<1.0)、numpy==2.3.1 および packaging==26.0 を固定しており、これらは LeRobot 自身の依存関係では受け入れられません。RoboLab は独自の Docker イメージで、lerobot-env-server の背後で実行し、ポリシーはいつもの LeRobot 環境で実行してください。
# Build the image on first use (Isaac Sim and the assets: a long first build), then serve every task
lerobot-env-server --config_path=docker/sim/configs/robolab.yaml --docker=true
# In your LeRobot environment
lerobot-eval \
--policy.path=<your DROID joint-position policy> \
--env.type=robolab \
--env.task=BananaInBowlTask \
--env.server.endpoint=tcp/127.0.0.1:7448 \
--rename_map='{"observation.images.over_shoulder_left_camera": "observation.images.<exterior>", "observation.images.wrist_cam": "observation.images.<wrist>"}' \
--eval.batch_size=1 \
--eval.n_episodes=10サーバーは設定されたタスクのいずれかを実行します。クライアントが要求したタスクを開き、サーバーは実行中の Isaac Sim でそれを構築します(数秒かかります)。Isaac Sim 自体の起動には、数秒から数分かかります。コンテナ内で GPU が見つからない場合(ERROR_INCOMPATIBLE_DRIVER)、Simulation の Vulkan に関する注記を参照してください。
ローカルで実行する
環境にIsaac SimとRoboLabがインストールされている場合、--env.server.endpointを指定し、lerobot-evalを実行すると、RoboLabは独自のプロセスで実行されます。Dockerイメージと同様に、まずRoboLabのスタックをインストールし、その後、依存関係なしでLeRobotをインストールしてください。
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/NVlabs/RoboLab.git && git -C RoboLab lfs pull
uv venv --python 3.12 && source .venv/bin/activate
uv pip install "isaaclab[isaacsim]==3.0.0b2.post1" -e ./RoboLab \
--extra-index-url https://pypi.nvidia.com --index-strategy unsafe-best-match
uv pip install --no-deps -e ./lerobot
uv pip install draccus termcolor eclipse-zenoh # what the rest of LeRobot's simulation code imports
export OMNI_KIT_ACCEPT_EULA=YES # accepts the Isaac Sim licenseこの環境では、transformers 5 が必要なポリシー(π₀.₅、SmolVLA など)を収容する余地がありません。それらはサーブとして実行してください。
タスク
RoboLab の 120 のタスクはそれぞれ 1 つのタスク ID を持つ独自のスイートであり、lerobot-eval はタスクごとの成功率と全体の成功率を報告します。--env.task にはカンマ区切りのタスク名リストを指定します。例: BananaInBowlTask,RubiksCubeAndBananaTask。空にすると 120 個すべてのタスクが対象になります。タスク名、指示、難易度は RoboLab の タスクメタデータ に記載されています。
タスクのすべての env は GPU 上の 1 つの Isaac Lab world を共有します: --eval.batch_size=N を使用すると、その world 内で N エピソードが同時に実行されます。
観察とアクション
| キー | 形状 | コンテンツ |
|---|---|---|
observation.images.over_shoulder_left_camera | 720 × 1280 × 3 | ロボットの左側の外部カメラ |
observation.images.wrist_cam | 720 × 1280 × 3 | 手首カメラ |
observation.state | 8 | joint_0.pos … joint_6.pos(ラジアン)、gripper.pos(0: 開、1: 閉) |
action | 8 | 7つの関節の絶対的な目標位置、その後グリップ: 0.5以上で閉じる |
ロボットは 15 Hz で動作し(物理シミュレーションは 120 Hz、1 アクションあたり 8 ステップの物理ステップ)、DROID と同様に robot_type="Franka" として LeRobot に記録されます。各エピソードにはタスクの時間制限(20 秒から 300 秒、つまり 300 ステップから 4,500 ステップ)が設定されており、成功したエピソードは terminated として終了し、時間切れになったエピソードは truncated として終了します。タスクの指示は、環境のタスク説明です。
Sim ロボット
RoboLabは、lerobot-rollout、lerobot-recordおよびその他のロボットツールにおいて、実際のDROIDロボットの代わりを務めることもできます(シミュレーション: ローカルまたはサーブを参照):
lerobot-rollout \ --robot.type=sim --robot.env.type=robolab --robot.env.task=BananaInBowlTask --robot.task_id=0 \ --robot.env.server.endpoint=tcp/127.0.0.1:7448 \ --policy.path=<your policy> --fps=15 ...
環境設定リファレンス
| パラメータ | デフォルト | 説明 |
|---|---|---|
task | empty: すべて 120 | カンマ区切りのタスク名 |
cameras | "WRIST_LEFT" | RoboLabのrobolab/registrations/droid/camera_presets.pyにあるカメラプリセット。例えば、両方の外部カメラにはWRIST_LEFT_RIGHTを使用します |
instruction_type | "default" | 各タスクが与える指示の種類: default、vague、またはspecific |
observation_height, observation_width | unset: 720 × 1280 | GPU上で先にカメラフレームをリサイズする、例えばサーバーからより小さいフレームを送信する場合など |
リーダーボードとの比較
RoboLabのリーダーボードは、デフォルトの指示、WRIST_LEFTカメラ、および関節位置アクション(これらはLeRobotのデフォルト設定)を使用して、タスクごとに10エピソードを評価します。数値を生成したIsaac Simのバージョンは明記されておらず、RoboLabのデフォルトはIsaac Sim 5.0です。Isaac Simのバージョン間で物理演算やレンダリングが異なるため、このIsaac Sim 6.0.1環境で得られた数値は直接比較できません。