跳转至

RoboCasa365

RoboCasa365 是一个大规模仿真框架,用于训练和基准测试日常厨房任务中的通用机器人。它在 2,500 个厨房环境中提供 365 个不同的操作任务、3,200+ 个物体资源和 600+ 小时的人类演示数据,使用 PandaOmron 12-DOF 移动机械臂(全向底座上的 Franka 机械臂)。

RoboCasa365 基准测试概览

可用任务

RoboCasa365 将其 365 个任务组织成两个系列和三个上游基准测试组,LeRobot 将其作为一流的 --env.task 快捷方式公开:

系列 任务数 描述
Atomic ~65 单技能任务:拾取放置、门/抽屉操作、电器控制
Composite ~300 跨 60+ 类别的多步任务:烹饪、清洁、整理等

原子任务示例: CloseFridgeOpenDrawerOpenCabinetTurnOnMicrowaveTurnOffStoveNavigateKitchenPickPlaceCounterToStove

复合任务类别: 烘焙、煮沸、冲泡、切碎、清理桌子、解冻食物、装载洗碗机、泡茶、微波食物、洗碗等。

--env.task 接受三种形式:

  • 单个任务名称(CloseFridge
  • 逗号分隔列表(CloseFridge,OpenBlenderLid,PickPlaceCoffee
  • 基准测试组快捷方式 — atomic_seencomposite_seencomposite_unseenpretrain50pretrain100pretrain200pretrain300 — 自动扩展到上游任务列表并自动设置数据集 splittargetpretrain)。

安装

RoboCasa 及其依赖 robosuite 未在 PyPI 上发布,RoboCasa 自己的 setup.py 硬编码了 lerobot==0.3.3,这与此仓库的 lerobot 冲突。因此 LeRobot 公开 robocasa extra — 将这两个包作为可编辑克隆手动安装(在 robocasa 上使用 --no-deps 以跳过其隐藏的 lerobot 固定):

# 按照标准 LeRobot 安装说明后。

git clone https://github.com/robocasa/robocasa.git ~/robocasa
git clone https://github.com/ARISE-Initiative/robosuite.git ~/robosuite
pip install -e ~/robocasa --no-deps
pip install -e ~/robosuite

# Robocasa 的运行时依赖(其 setup.py 会拉取的那些,减去
# 错误的 lerobot 固定)。
pip install numpy numba scipy mujoco pygame Pillow opencv-python \
            pyyaml pynput tqdm termcolor imageio h5py lxml hidapi \
            tianshou gymnasium

python -m robocasa.scripts.setup_macros
# 轻量级资源(lightwheel 物体网格 + 纹理)。足以
# 开箱即用的默认环境。
python -m robocasa.scripts.download_kitchen_assets \
  --type tex tex_generative fixtures_lw objs_lw
# 可选:完整的 objaverse/aigen 注册表(~30GB)以获得更丰富的物体
# 多样性。在评估时通过 --env.obj_registries 启用(见下文)。
# python -m robocasa.scripts.download_kitchen_assets --type objs_objaverse

Tip

RoboCasa 需要 MuJoCo。在训练或评估之前设置渲染后端:

export MUJOCO_GL=egl  # 用于无头服务器(HPC、云)

物体注册表

默认情况下,环境仅从 lightwheel 注册表(--type objs_lw 提供的内容)采样物体,这避免了当 objaverse / aigen 包不在磁盘上时出现 Probabilities contain NaN 崩溃。如果您已下载完整的资源集,请在运行时启用完整注册表:

--env.obj_registries='[objaverse,lightwheel]'

评估

以下所有评估片段都镜像 CI 命令(参见 .github/workflows/benchmark_tests.yml)。--rename_map 参数将 RoboCasa 的原生相机键(robot0_agentview_left / robot0_eye_in_hand / robot0_agentview_right)映射到发布的 smolvla_robocasa 策略训练时使用的三相机(camera1 / camera2 / camera3)输入布局。

单任务评估(推荐用于快速迭代)

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_eye_in_hand": "observation.images.camera2", "observation.images.robot0_agentview_right": "observation.images.camera3"}'

多任务评估

传递逗号分隔的任务列表:

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=CloseFridge,OpenCabinet,OpenDrawer,TurnOnMicrowave,TurnOffStove \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_eye_in_hand": "observation.images.camera2", "observation.images.robot0_agentview_right": "observation.images.camera3"}'

基准测试组评估

运行整个上游组(例如所有 18 个 atomic_seen 任务,split=target):

lerobot-eval \
  --policy.path=lerobot/smolvla_robocasa \
  --env.type=robocasa \
  --env.task=atomic_seen \
  --eval.batch_size=1 \
  --eval.n_episodes=20 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.robot0_agentview_left": "observation.images.camera1", "observation.images.robot0_eye_in_hand": "observation.images.camera2", "observation.images.robot0_agentview_right": "observation.images.camera3"}'

推荐评估回合数

每个任务 20 个回合用于可重现的基准测试。与发布结果中使用的协议匹配。

策略输入和输出

观测(保留原始 RoboCasa 相机名称):

  • observation.state — 16 维本体感觉状态(底座位置、底座四元数、相对末端执行器位置、相对末端执行器四元数、夹爪 qpos)
  • observation.images.robot0_agentview_left — 左智能体视图,256×256 HWC uint8
  • observation.images.robot0_eye_in_hand — 腕部相机视图,256×256 HWC uint8
  • observation.images.robot0_agentview_right — 右智能体视图,256×256 HWC uint8

动作:

  • Box(-1, 1, shape=(12,)) 中的连续控制 — 底座运动(4D)+ 控制模式(1D)+ 末端执行器位置(3D)+ 末端执行器旋转(3D)+ 夹爪(1D)。

训练

单任务示例

Hub 上有一个即用型单任务数据集: pepijn223/robocasa_CloseFridge

CloseFridge 上微调 SmolVLA 基础模型:

lerobot-train \
  --policy.type=smolvla \
  --policy.repo_id=${HF_USER}/smolvla_robocasa_CloseFridge \
  --policy.load_vlm_weights=true \
  --policy.push_to_hub=true \
  --dataset.repo_id=pepijn223/robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --output_dir=./outputs/smolvla_robocasa_CloseFridge \
  --steps=100000 \
  --batch_size=4 \
  --eval_freq=5000 \
  --eval.batch_size=1 \
  --eval.n_episodes=5 \
  --save_freq=10000

评估生成的检查点:

lerobot-eval \
  --policy.path=${HF_USER}/smolvla_robocasa_CloseFridge \
  --env.type=robocasa \
  --env.task=CloseFridge \
  --eval.batch_size=1 \
  --eval.n_episodes=20

重现发布结果

发布的检查点 lerobot/smolvla_robocasa 使用评估部分中的命令进行评估。CI 在每个触及基准测试的 PR 上运行 10 个原子任务的冒烟评估(每个一个回合),选择不需要 objaverse 资源包的以固定装置为中心的任务。