跳转至

RoboCerebra

RoboCerebra 是一个长时域操作基准测试,评估 VLA 中的高级推理、规划和记忆。回合将多个子目标与语言接地的中间指令链接在一起,构建在 LIBERO 的模拟器堆栈(MuJoCo + robosuite,Franka Panda 7-DOF)之上。

可用任务

RoboCerebra 重用 LIBERO 的模拟器,因此评估针对 LIBERO libero_10 长时域套件运行:

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

数据集中的每个 RoboCerebra 回合都被分割成多个带有自然语言指令的子任务,统一数据集将其作为独立的监督信号公开。

安装

RoboCerebra 依赖于 LIBERO,因此 libero extra 就是您所需要的:

pip install -e ".[libero]"

Tip

RoboCerebra 需要 Linux(MuJoCo / robosuite)。在训练或评估之前设置渲染后端:

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

评估

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

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

推荐评估回合数

每个任务 10 个回合libero_10 套件(总共 100 个)用于可重现的基准测试。与 RoboCerebra 论文中使用的协议匹配。

策略输入和输出

观测:

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

动作:

  • Box(-1, 1, shape=(7,)) 中的连续控制 — 末端执行器增量(6D)+ 夹爪(1D)

训练

lerobot/robocerebra_unified 的统一数据集公开两个 RGB 流和语言接地子任务注释:

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

在其上微调 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

重现发布结果

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