LeRobot documentation

NVIDIA RoboLab

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NVIDIA RoboLab

RoboLabは、NVIDIA Isaac Labでシミュレートされ、Isaac SimのRTXレンダラーでレンダリングされるDROIDロボット(Robotiq 2F-85グリップを備えたFranka Pandaアーム)向けの120のテーブルトップ操作タスクからなるベンチマークです。タスクには、ピック&プレイス、積み上げ、仕分け、再配置、および言語条件付きのバリアント(空間関係、色、数え上げ、曖昧な指示)が含まれ、難易度はシンプル、中程度、複雑の3段階で評価されます。

要件とライセンス

  • 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_camera720 × 1280 × 3ロボットの左側の外部カメラ
observation.images.wrist_cam720 × 1280 × 3手首カメラ
observation.state8joint_0.pos … joint_6.pos(ラジアン)、gripper.pos(0: 開、1: 閉)
action87つの関節の絶対的な目標位置、その後グリップ: 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 ...

環境設定リファレンス

パラメータデフォルト説明
taskempty: すべて 120カンマ区切りのタスク名
cameras"WRIST_LEFT"RoboLabのrobolab/registrations/droid/camera_presets.pyにあるカメラプリセット。例えば、両方の外部カメラにはWRIST_LEFT_RIGHTを使用します
instruction_type"default"各タスクが与える指示の種類: default、vague、またはspecific
observation_height, observation_widthunset: 720 × 1280GPU上で先にカメラフレームをリサイズする、例えばサーバーからより小さいフレームを送信する場合など

リーダーボードとの比較

RoboLabのリーダーボードは、デフォルトの指示、WRIST_LEFTカメラ、および関節位置アクション(これらはLeRobotのデフォルト設定)を使用して、タスクごとに10エピソードを評価します。数値を生成したIsaac Simのバージョンは明記されておらず、RoboLabのデフォルトはIsaac Sim 5.0です。Isaac Simのバージョン間で物理演算やレンダリングが異なるため、このIsaac Sim 6.0.1環境で得られた数値は直接比較できません。

Update on GitHub