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 — это бенчмарк из 120 задач манипуляции на столе для робота DROID (манипулятор Franka Panda с захватом Robotiq 2F-85), смоделированный в NVIDIA Isaac Lab и отрисованный с помощью RTX-рендерера Isaac Sim. Задачи включают подбор и размещение, складывание, сортировку, изменение ориентации, а также варианты с языковым условием (пространственные отношения, цвета, подсчёт, нечёткие инструкции) и классифицируются по сложности: простая, средняя или сложная.

Требования и лицензии

  • GPU: графический процессор NVIDIA RTX (Isaac Sim использует рендеринг на базе RTX). Одно окружение одной задачи занимает около 7 ГБ видеопамяти, включая Isaac Sim; каждое следующее окружение в рамках той же задачи добавляет примерно 1–2 ГБ (в руководстве RoboLab указано, что на GPU с 48 ГБ памяти можно разместить от 30 до 100 окружений в зависимости от задачи). Кроме того, вашей политике требуется собственная память.
  • Isaac Sim: RoboLab работает на Isaac Sim 6.0.1 и Isaac Lab 3.0 beta 2, то есть на стеке Isaac Sim 6 от RoboLab. Использование Isaac Sim означает принятие лицензии NVIDIA Isaac Sim; Docker-образ принимает её за вас, как и собственный образ RoboLab.
  • Ресурсы: сцены, объекты и модели роботов RoboLab (около 6 ГБ, из git LFS) в основном распространяются по лицензии CC BY-NC-SA 4.0, некоторые — на других условиях; см. THIRD_PARTY_NOTICES.md RoboLab. LeRobot не распространяет их: при сборке образа они загружаются с NVlabs.
  • Docker для описанной ниже конфигурации: BuildKit (docker buildx) для сборки образа и NVIDIA Container Toolkit, чтобы контейнер мог использовать GPU.

Запустите в режиме сервера (рекомендуется)

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), см. примечание о Vulkan в разделе Simulation.

Запустите локально

После установки Isaac Sim и RoboLab в вашем окружении, добавьте --env.server.endpoint, и lerobot-eval запустит RoboLab в отдельном процессе. Сначала установите стек RoboLab, затем LeRobot без его зависимостей, как это делает Docker-образ:

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, …): запускайте их в режиме обслуживания.

Задачи

Каждая из 120 задач RoboLab представляет собой отдельный набор с уникальным идентификатором задачи, поэтому lerobot-eval выводит процент успеха по каждой задаче и общий. Параметр --env.task принимает список названий задач через запятую, например BananaInBowlTask,RubiksCubeAndBananaTask; оставьте его пустым, чтобы использовать все 120 задач. Названия задач, инструкции и уровень сложности перечислены в метаданных задач RoboLab.

Все окружения задачи разделяют один мир Isaac Lab на GPU: --eval.batch_size=N запускает 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 — закрыто)
action8Абсолютные целевые значения для 7 суставов, затем захват: закрыт при значении выше 0.5

Робот работает с частотой 15 Гц (физика — 120 Гц, 8 шагов физики на действие), и LeRobot записывает его как robot_type="Franka", как в DROID. У каждого эпизода есть временной лимит задачи (от 20 до 300 с, то есть от 300 до 4500 шагов); успешный эпизод завершается как terminated, а тот, у которого закончилось время, — как truncated. Инструкция к задаче — это описание задачи в env.

Sim robot

RoboLab также может выполнять роль реального робота DROID в lerobot-rollout, lerobot-record и других инструментах для роботов (см. Симуляция: локальная или серверная):

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 × 1280Сначала изменяйте размер кадров камеры на GPU, например, чтобы отправлять с сервера кадры меньшего размера

Сравнение с таблицей лидеров

Лидерборд RoboLab оценивает 10 эпизодов на каждую задачу с использованием инструкции по умолчанию, камер WRIST_LEFT и действий, основанных на позициях суставов, что является настройками по умолчанию в LeRobot. В нём не указано, какая версия Isaac Sim использовалась для получения приведённых результатов, при этом версия по умолчанию в RoboLab — Isaac Sim 5.0: физика и рендеринг различаются между версиями Isaac Sim, поэтому результаты, полученные в конфигурации Isaac Sim 6.0.1, не подлежат прямому сравнению.

Update on GitHub