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

O RoboLab é um benchmark de 120 tarefas de manipulação em bancada para um robô DROID (um braço Franka Panda com uma garra Robotiq 2F-85), simulado com NVIDIA Isaac Lab e renderizado com o renderizador RTX do Isaac Sim. As tarefas abrangem pick-and-place, empilhamento, classificação, reorientação e variantes condicionadas por linguagem (relações espaciais, cores, contagem, instruções vagas), classificadas como simples, moderadas ou complexas.

Requisitos e licenças

  • GPU: uma GPU NVIDIA RTX (o Isaac Sim renderiza com RTX). Um env de uma task consome cerca de 7 GB de VRAM, incluindo o Isaac Sim; cada env adicional na mesma task adiciona cerca de 1 a 2 GB (o guia do RoboLab cabe de 30 a 100 envs em uma GPU de 48 GB, dependendo da task). Sua policy precisa de memória própria além disso.
  • Isaac Sim: o RoboLab roda aqui com o Isaac Sim 6.0.1 e o Isaac Lab 3.0 beta 2, a pilha Isaac Sim 6 do RoboLab. Ao usar o Isaac Sim, você aceita a licença do NVIDIA Isaac Sim; a imagem Docker a aceita por você, assim como a própria imagem do RoboLab.
  • Ativos: as cenas, objetos e modelos de robôs do RoboLab (cerca de 6 GB, do git LFS) são licenciados principalmente sob CC BY-NC-SA 4.0, com alguns sob outros termos; consulte o THIRD_PARTY_NOTICES.md do RoboLab. O LeRobot não os distribui: a imagem os baixa do NVlabs quando você a compila.
  • Docker, para a configuração de servidor abaixo: BuildKit (docker buildx) para compilar a imagem e o NVIDIA Container Toolkit para que o container possa usar a GPU.

Execute-o em modo de servidor (recomendado)

O Isaac Lab 3.0 beta fixa transformers==4.57.6 (portanto huggingface-hub<1.0), numpy==2.3.1 e packaging==26.0, o que as próprias dependências do LeRobot não aceitam. Execute o RoboLab em sua própria imagem Docker, atrás do lerobot-env-server, e sua política no seu ambiente LeRobot habitual:

# 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

O servidor executa qualquer uma de suas tarefas configuradas: o cliente abre a que ele solicita e o servidor a constrói no Isaac Sim em execução (alguns segundos). Iniciar o próprio Isaac Sim leva de segundos a alguns minutos. Se ele não encontrar uma GPU no contêiner (ERROR_INCOMPATIBLE_DRIVER), consulte a observação sobre Vulkan em Simulation.

Execute local

Com o Isaac Sim e o RoboLab instalados no seu ambiente, adicione --env.server.endpoint e lerobot-eval executa o RoboLab em seu próprio processo. Instale primeiro a pilha do RoboLab e, em seguida, o LeRobot sem suas dependências, como a imagem Docker faz:

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

Este ambiente não tem espaço para políticas que precisam do transformers 5 (π₀.₅, SmolVLA, …): execute-as servidas.

Tarefas

Cada uma das 120 tarefas do RoboLab é uma suíte própria com um id de tarefa, de modo que lerobot-eval relata uma taxa de sucesso por tarefa e no geral. --env.task aceita uma lista de nomes de tarefas separados por vírgula, por exemplo BananaInBowlTask,RubiksCubeAndBananaTask; deixe-o vazio para todas as 120. Os nomes das tarefas, as instruções e a dificuldade estão listados nos metadados das tarefas do RoboLab.

Todos os envs de uma tarefa compartilham um único mundo do Isaac Lab na GPU: --eval.batch_size=N executa N episódios simultaneamente nesse mundo.

Observações e ações

ChaveFormatoConteúdo
observation.images.over_shoulder_left_camera720 × 1280 × 3Câmera externa, à esquerda do robô
observation.images.wrist_cam720 × 1280 × 3Câmera de pulso
observation.state8joint_0.pos … joint_6.pos (radianos), gripper.pos (0 aberto, 1 fechado)
action8Alvos absolutos conjuntos para as 7 juntas, em seguida, o garra: fechada acima de 0.5

O robô opera a 15 Hz (física a 120 Hz, 8 passos de física por ação) e o LeRobot o registra como robot_type="Franka", como em DROID. Cada episódio tem o limite de tempo da sua tarefa (20 a 300 s, ou seja, 300 a 4.500 passos); um episódio que tem sucesso termina como encerrado (terminated), e um que esgota o tempo termina como truncado (truncated). A instrução da tarefa é a descrição da tarefa do ambiente (env).

Sim robô

O RoboLab também pode substituir um robô DROID real em lerobot-rollout, lerobot-record e nas outras ferramentas de robô (veja Simulação: local ou servida):

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 ...

Referência de configuração de ambiente

ParâmetroPadrãoDescrição
taskempty: todos os 120Nomes de tarefas separados por vírgula
cameras"WRIST_LEFT"Um preset de câmera do RoboLab em robolab/registrations/droid/camera_presets.py, por exemplo, WRIST_LEFT_RIGHT para ambas as câmeras externas
instruction_type"default"Qual instrução cada tarefa fornece: default, vague ou specific
observation_height, observation_widthunset: 720 × 1280Redimensione os quadros da câmera primeiro na GPU, por exemplo, para enviar quadros menores de um servidor

Comparando com o ranking

O leaderboard do RoboLab avalia 10 episódios por tarefa com a instrução padrão, as câmeras WRIST_LEFT e ações de posição das juntas, que são os padrões do LeRobot. Ele não especifica qual versão do Isaac Sim gerou seus números, e o padrão do RoboLab é o Isaac Sim 5.0: a física e a renderização diferem entre as versões do Isaac Sim, portanto os números deste setup do Isaac Sim 6.0.1 não são diretamente comparáveis.

Update on GitHub