LeRobot documentation
NVIDIA RoboLab
NVIDIA RoboLab
RoboLab 是一个包含 120 个桌面操作任务 的基准测试,针对 DROID 机器人(配备 Robotiq 2F-85 夹爪的 Franka Panda 机械臂),使用 NVIDIA Isaac Lab 进行仿真,并通过 Isaac Sim 的 RTX 渲染器进行渲染。任务涵盖抓取与放置、堆叠、分类、重新定向以及语言条件变体(空间关系、颜色、计数、模糊指令),难度分为简单、中等和复杂三个等级。
- 论文:RoboLab:用于分析任务通用策略的高保真模拟基准
- GitHub: NVlabs/RoboLab
- 项目页面和排行榜:research.nvidia.com/labs/srl/projects/robolab
要求和许可证
- 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_camera | 720 × 1280 × 3 | 机器人左侧的外部摄像头 |
observation.images.wrist_cam | 720 × 1280 × 3 | 手腕摄像头 |
observation.state | 8 | joint_0.pos … joint_6.pos(弧度),gripper.pos(0 为张开,1 为闭合) |
action | 8 | 7 个关节的绝对关节目标值,然后是夹爪:大于 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 ...
环境配置参考
| 参数 | 默认 | 描述 |
|---|---|---|
task | empty: 全部 120 | 以逗号分隔的任务名称 |
cameras | "WRIST_LEFT" | RoboLab 的 robolab/registrations/droid/camera_presets.py 中的一个相机预设,例如用于两个外部相机的 WRIST_LEFT_RIGHT |
instruction_type | "default" | 每个任务给出的指令类型:default、vague 或 specific |
observation_height, observation_width | unset: 720 × 1280 | 首先在 GPU 上调整相机帧的大小,例如从服务器发送更小的帧 |
与排行榜对比
RoboLab 的排行榜使用默认指令、WRIST_LEFT 相机以及关节位置动作,针对每个任务评估 10 个回合,这些均为 LeRobot 的默认设置。该排行榜未说明其数据出自哪个 Isaac Sim 版本,而 RoboLab 的默认版本是 Isaac Sim 5.0:不同版本的 Isaac Sim 在物理和渲染方面存在差异,因此基于 Isaac Sim 6.0.1 配置得出的数据无法直接进行比较。