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 로봇(Franka Panda 암과 Robotiq 2F-85 그리퍼 구성)을 위한 120개의 테이블 위 조작 작업 벤치마크입니다. 작업은 픽 앤 플레이스, 스택킹, 분류, 재배향 및 언어 조건 변형(공간 관계, 색상, 카운팅, 모호한 지시)을 포함하며, 난이도는 단순, 중간, 복잡으로 등급이 나뉩니다.

요구 사항 및 라이선스

  • GPU: NVIDIA RTX GPU (Isaac Sim은 RTX로 렌더링합니다). 하나의 태스크에 대한 하나의 env는 Isaac Sim을 포함하여 약 7 GB의 VRAM을 사용합니다. 같은 태스크에서 추가되는 각 env는 약 1~2 GB를 추가로 사용합니다 (RoboLab 가이드에 따르면, 태스크에 따라 48 GB GPU에 30~100개의 env를 실행할 수 있습니다). 정책(policy)에는 이 외에 자체 메모리가 필요합니다.
  • 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 자체 이미지와 마찬가지로 이를 대신 동의해 줍니다.
  • Assets: RoboLab의 장면, 객체 및 로봇 모델(약 6 GB, git LFS에서 제공)은 대부분 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은 lerobot-env-server 뒤에서 자체 Docker 이미지로 실행하고, 정책은 평소 사용하던 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개 작업은 각각 하나의 작업 ID를 가진 독립적인 스위트이므로 lerobot-eval은 작업별 및 전체 성공률을 보고합니다. --env.task에는 쉼표로 구분된 작업 이름 목록을 지정하며, 예를 들어 BananaInBowlTask,RubiksCubeAndBananaTask와 같습니다. 비워 두면 120개 전체가 대상이 됩니다. 작업 이름, 지침 및 난이도는 RoboLab의 task metadata에 나열되어 있습니다.

태스크의 모든 env는 GPU에서 하나의 Isaac Lab world를 공유합니다: --eval.batch_size=N은 해당 world에서 N개의 에피소드를 동시에 실행합니다.

관찰과 행동

키Shape콘텐츠
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, 액션당 8개의 물리 스텝), DROID와 마찬가지로 robot_type="Franka"로 LeRobot에 기록됩니다. 각 에피소드는 해당 작업의 시간 제한(20~300초, 즉 300~4,500 스텝)을 가지며, 성공한 에피소드는 terminated로, 시간 초과로 종료된 에피소드는 truncated로 처리됩니다. 작업의 지시문은 env의 작업 설명입니다.

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 × 1280서버에서 더 작은 프레임을 전송하기 위해 GPU에서 먼저 카메라 프레임을 리사이즈합니다.

리더보드와 비교

RoboLab의 리더보드는 LeRobot의 기본값인 기본 지시문, WRIST_LEFT 카메라, 관절 위치 액션을 사용하여 각 태스크당 10에피소드를 평가합니다. 어떤 Isaac Sim 버전으로 수치를 산출했는지 명시하지 않으며, RoboLab의 기본값은 Isaac Sim 5.0입니다. Isaac Sim 버전 간에 물리 시뮬레이션과 렌더링이 다르므로, 이 Isaac Sim 6.0.1 환경에서 산출된 수치는 직접 비교할 수 없습니다.

Update on GitHub