RoboCerebra

RoboCerebra 是一个长时程操作 benchmark,用于评估 VLA 中的 高层 inference、规划和记忆。episode 通过语言基础的中间指令串联多个子目标,构建在 LIBERO 的 simulation 器栈(MuJoCo + robosuite,Franka Panda 7-DOF)之上。

可用任务

RoboCerebra 复用了 LIBERO 的 simulation 器,因此评估针对 LIBERO libero_10 长时程套件运行:

套件CLI 名称任务数描述
LIBERO-10libero_1010串接 3–6 个子目标的长时程厨房/客厅任务

统一 dataset 中的每个 RoboCerebra episode 都被分割为多个带有自然语言指令的子任务,统一 dataset 将其作为独立的监督信号暴露出来。

安装

RoboCerebra 依附于 LIBERO,因此你只需 libero 附加项:

pip install -e ".[libero]"
RoboCerebra 需要 Linux(MuJoCo / robosuite)。在训练或评估前设置渲染后端:
export MUJOCO_GL=egl  # for headless servers (HPC, cloud)

评估

RoboCerebra 评估针对 LIBERO 的 libero_10 套件运行,使用 RoboCerebra 的相机命名(image + wrist_image)以及一个额外的空相机槽位,以便三视角训练的 policy 接收到预期的输入布局:

lerobot-eval \
  --policy.path=lerobot/smolvla_robocerebra \
  --env.type=libero \
  --env.task=libero_10 \
  --env.fps=20 \
  --env.obs_type=pixels_agent_pos \
  --env.observation_height=256 \
  --env.observation_width=256 \
  '--env.camera_name_mapping={"agentview_image": "image", "robot0_eye_in_hand_image": "wrist_image"}' \
  --eval.batch_size=1 \
  --eval.n_episodes=10 \
  --eval.use_async_envs=false \
  --policy.device=cuda \
  '--rename_map={"observation.images.image": "observation.images.camera1", "observation.images.wrist_image": "observation.images.camera2"}' \
  --policy.empty_cameras=1

推荐的评估 episode 数

libero_10 套件上 每个任务 10 个 episode(共 100 个)以实现可复现的 benchmark。与 RoboCerebra 论文中使用的协议一致。

policy 输入和输出

observation:

  • observation.state —— 8 维本体感觉 state(7 个关节位置 + gripper)
  • observation.images.image —— 第三人称视角,256×256 HWC uint8
  • observation.images.wrist_image —— 腕部相机视角,256×256 HWC uint8

action:

  • Box(-1, 1, shape=(7,)) 中的连续控制 —— end-effector 增量(6D)+ gripper(1D)

训练

位于 lerobot/robocerebra_unified 的统一 dataset 暴露两个 RGB 流和语言基础的子任务标注:

特征形状描述
observation.images.image(256, 256, 3)第三人称视角
observation.images.wrist_image(256, 256, 3)腕部相机
observation.state(8,)关节位置 + gripper
action(7,)EEF 增量 + gripper

在其上 fine-tune SmolVLA 基础模型:

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/robocerebra_unified \
  --env.type=libero \
  --env.task=libero_10 \
  --output_dir=outputs/smolvla_robocerebra

复现已发表的结果

发布的 checkpoint lerobot/smolvla_robocerebralerobot/robocerebra_unified 上训练,并使用 评估 部分中的命令进行评估。CI 在每个触及该 benchmark 的 PR 上以 --eval.n_episodes=1 运行相同命令作为冒烟测试。

在 GitHub 上更新