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 机器人(配备 Robotiq 2F-85 夹爪的 Franka Panda 机械臂),使用 NVIDIA Isaac Lab 进行仿真,并通过 Isaac Sim 的 RTX 渲染器进行渲染。任务涵盖抓取与放置、堆叠、分类、重新定向以及语言条件变体(空间关系、颜色、计数、模糊指令),难度分为简单、中等和复杂三个等级。

要求和许可证

  • GPU:一块 NVIDIA RTX GPU(Isaac Sim 使用 RTX 进行渲染)。包含 Isaac Sim 在内,一个任务的一个环境大约占用 7 GB 显存;同一任务中每增加一个环境,大约额外占用 1 到 2 GB 显存(RoboLab 的指南指出,根据任务不同,48 GB 显存的 GPU 可以容纳 30 到 100 个环境)。此外,您的策略还需要额外的显存。
  • 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 的场景、物体和机器人模型(约 6 GB,来自其 git LFS)大多采用 CC BY-NC-SA 4.0 许可,部分采用其他条款;请参阅 RoboLab 的 THIRD_PARTY_NOTICES.md。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 自身的依赖项并不接受这些版本。请在独立的 Docker 镜像中运行 RoboLab,并将其置于 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。请先安装 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 等):请通过服务方式运行这些策略。

任务

RoboLab 的 120 个任务各自构成一个独立的测试套件,并拥有唯一的任务 ID,因此 lerobot-eval 会分别报告每个任务的成功率以及总体成功率。--env.task 接受以逗号分隔的任务名称列表,例如 BananaInBowlTask,RubiksCubeAndBananaTask;若留空,则运行全部 120 个任务。任务名称、指令和难度等级列于 RoboLab 的 任务元数据 中。

任务的各个 env 在 GPU 上共享同一个 Isaac Lab 世界:--eval.batch_size=N 会在该世界中同时运行 N 个 episode。

观察与操作

密钥形状内容
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 个物理步),LeRobot 将其记录为 robot_type="Franka",与 DROID 相同。每个 episode 都有该任务的时间限制(20 到 300 秒,即 300 到 4,500 步);成功的 episode 以 terminated 结束,超时的 episode 以 truncated 结束。任务的指令即为 env 的任务描述。

模拟机器人

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 的排行榜使用默认指令、WRIST_LEFT 相机以及关节位置动作,针对每个任务评估 10 个回合,这些均为 LeRobot 的默认设置。该排行榜未说明其数据出自哪个 Isaac Sim 版本,而 RoboLab 的默认版本是 Isaac Sim 5.0:不同版本的 Isaac Sim 在物理和渲染方面存在差异,因此基于 Isaac Sim 6.0.1 配置得出的数据无法直接进行比较。

Update on GitHub