具身操作 Benchmark 深度教程长文版 · 一章一页 · RoboCasa365 · D52

总览 / RoboCasa365 · D52

RoboCasa365:65 原子 × 300 组合的厨房泛化阶梯

Atomic→Composite、seen/unseen 组合与 lifelong 阶段全文。

接近原文长文版仅排版加工 · 未删减压缩RoboCasa365 · D52

可以。这个项目更适合按照“任务集—仿真引擎与机器人本体—评估协议与基线—对策略训练/评估 harness 的适配优化”来理解。

1. 任务集

RoboCasa365 的核心任务集包含:

  • 65 个 Atomic Tasks
  • 300 个 Composite Tasks
  • 合计 365 个任务

任务代码主要位于:

1.1 Atomic Tasks

Atomic Tasks 是单技能、短时序任务,主要用于学习基础操作能力,例如:

  • 开关柜门、冰箱门、烤箱门、抽屉
  • 从 counter、cabinet、drawer、sink、stove 等位置抓取和放置物体
  • 打开微波炉、搅拌机、电水壶、烤面包机
  • 开关水龙头、炉灶和微波炉
  • 调节水温、烤箱温度和炉灶火力
  • 推拉烤箱架、洗碗机架和烤箱托盘
  • 厨房导航

代表任务包括:

OpenCabinet
CloseDrawer
PickPlaceCounterToCabinet
PickPlaceCounterToSink
TurnOnMicrowave
TurnOnStove
AdjustWaterTemperature
SlideOvenRack
NavigateKitchen

文档中将 Atomic Tasks 描述为:

  • 65 个原子任务
  • 10 个宏观技能集合
  • 14 类设施或厨房设备

参考:

docs/tasks/atomic_tasks.md

1.2 Composite Tasks

Composite Tasks 是多步骤厨房活动,通常由多个原子技能组成,任务长度从 2 个子任务到十几个子任务不等。

主要活动包括:

  • 烹饪和加热
  • BoilEggs
  • SearingMeat
  • StirVegetables
  • ToastBagel
  • OvenBroilFish
  • 饮品制作
  • PrepareCoffee
  • MakeIceLemonade
  • PrepareSmoothie
  • SweetenCoffee
  • 食材准备
  • SetUpCuttingStation
  • GatherCuttingTools
  • WashLettuce
  • PrepareCheeseStation
  • 清洁
  • ClearSink
  • RinseSinkBasin
  • ScrubCuttingBoard
  • LoadDishwasher
  • 分类和收纳
  • OrganizeCondiments
  • ArrangeUtensilsByType
  • OrganizeMugsByHandle
  • RestockPantry
  • 冰箱与冷冻室管理
  • LoadFridgeByType
  • MoveFreezerToFridge
  • MaximizeFreezerSpace
  • StoreLeftoversByType
  • 摆盘、餐桌和上菜
  • BuildAppetizerPlate
  • PlateSteakMeal
  • ArrangeBuffetDessert
  • ServeSteak

例如,MakeIceLemonade 需要从不同位置拿取柠檬和冰块,并将其放入饮料中;DivideBuffetTrays 则需要把不同类别的食物分别放到两个托盘中。

1.3 任务集的实验切分

项目通过 dataset_registry.py 注册了多种任务集合:

all_tasks
all_atomic_tasks
all_composite_tasks

pretrain50
pretrain100
pretrain200
pretrain300

atomic_seen
composite_seen
composite_unseen
target50

lifelong_learning_phase1
lifelong_learning_phase2
lifelong_learning_phase3
lifelong_learning_phase4

其中比较关键的是:

任务集含义
pretrain300大规模预训练任务集,覆盖 300 个任务
atomic_seen目标评估中的 18 个原子任务
composite_seen目标评估中训练阶段见过的 16 个组合任务
composite_unseen目标评估中训练阶段没见过的组合任务
target5050 个目标任务的组合
lifelong_learning_phase1全部 65 个 Atomic Tasks
lifelong_learning_phase220 个 2–3 stage 任务
lifelong_learning_phase320 个 4–5 stage 任务
lifelong_learning_phase420 个 6+ stage 任务

因此,该项目不仅测试单任务成功率,也专门测试:

  • 多任务学习
  • 组合任务泛化
  • 未见任务组合泛化
  • 长时序学习
  • 持续学习和灾难性遗忘

2. 引擎与机器人本体

2.1 仿真引擎

RoboCasa 基于:

  • MuJoCo 3.3.1
  • robosuite >= 1.5.2
  • Gymnasium
  • Python

依赖版本在 setup.py 中有明确约束:

mujoco==3.3.1
numpy==2.2.5
scipy==1.15.3
numba==0.61.2
gymnasium
tianshou==0.4.10
lerobot==0.3.3

robocasa/__init__.py 会检查 MuJoCo、NumPy 和 robosuite 版本,确保实验环境一致。

2.2 Kitchen 环境

核心环境类是:

class Kitchen(ManipulationEnv, metaclass=KitchenEnvMeta):

代码位于:

robocasa/environments/kitchen/kitchen.py

它在 robosuite 的 ManipulationEnv 之上增加了:

  • 厨房布局和风格采样
  • 厨房 fixture 建模
  • 物体采样与摆放
  • 物体属性约束
  • 任务相关的 fixture 引用
  • 厨房电器状态更新
  • 物体绝对位姿和相对末端位姿观测
  • 相机配置
  • 生成式纹理
  • 干扰物和 clutter
  • 移动机器人底座初始化
  • 可重复的 episode metadata 序列化

环境支持从不同对象注册表采样物体,例如:

objaverse
lightwheel
aigen

也支持按照物体属性筛选:

graspable
washable
microwavable
cookable
fridgable
freezable
dishwashable

2.3 场景和资产

项目提供:

  • 2500+ 厨房场景
  • 3200+ 3D 物体
  • 厨房柜体、冰箱、烤箱、洗碗机、微波炉、水槽、炉灶等 fixture
  • 人工设计和 AI 生成的物体
  • 多种厨房布局和风格
  • 纹理随机化和生成式纹理

场景由 KitchenArena 和 scene registry 管理。环境会随机组合:

layout_id
style_id
fixture configuration
object instances
object placement
texture configuration
camera configuration

这使得同一个任务可以在不同厨房布局、物体实例和视觉风格下执行。

2.4 机器人本体

当前 Kitchen 环境主要面向:

PandaOmron

也就是带移动底座和躯干的 Franka Panda 风格机械臂本体。代码中会将旧名称 PandaMobile 兼容映射为 PandaOmron

环境要求当前使用单机器人:

assert len(robots) == 1

本体控制由 robosuite 的 composite controller 负责,包含:

  • 机械臂末端位置控制
  • 机械臂末端姿态控制
  • 夹爪控制
  • 移动底座控制
  • 躯干控制
  • 移动底座控制模式切换

gym_wrapper.py 会进一步把这些底层控制量转换成较统一的接口:

hand.gripper_close
body.end_effector_position
body.end_effector_rotation
body.base_motion
body.control_mode

视觉观测默认使用:

robot0_agentview_left
robot0_agentview_right
robot0_eye_in_hand

并支持:

  • RGB 图像
  • 深度图
  • 机器人状态
  • 物体状态
  • 语言任务描述

3. 评估指标、评估协议和分数基线

3.1 核心指标:Task Success Rate

RoboCasa 的核心评估指标是:

任务成功率(Task Success Rate)

在环境代码中,任务奖励默认为稀疏奖励:

reward = float(self._check_success())

Gym wrapper 中也会直接根据 _check_success() 返回二值结果:

is_success = self.env._check_success()
reward = 1.0 if is_success else 0.0
info["success"] = reward > 0

因此,单个 rollout 的结果是:

成功:1
失败:0

最终报告:

平均任务成功率 = 成功 rollout 数 / 总 rollout 数

3.2 标准评估协议

官方 benchmark 的通用流程是:

  1. 指定 task_set
  2. 指定 split
  3. 随机采样 50 个场景
  4. 每个场景运行一次 rollout
  5. 记录二值任务成功信号
  6. 汇总 50 个 rollout 的平均成功率

两个主要 split 是:

Split含义
pretrain约 2500 个厨房场景和预训练对象
target与预训练分离的 10 个目标厨房场景和目标对象

因此,target split 主要用于测量场景、物体和任务组合的泛化能力。

项目 v1.0.1 还统一增加了任务 horizon,官方文档提示:

所有任务的 horizon 长度统一增加到原来的 1.5 倍。

这对复现实验很重要,否则旧版本和新版本的成功率不可直接比较。

3.3 Multi-task Learning 基线

多任务学习使用:

  • 300 个任务
  • 65 个 Atomic Tasks
  • 235 个 Composite Tasks
  • 每个任务 100 条 human demonstrations
  • 总计约 482 小时数据

官方结果如下,单位为平均任务成功率:

Task SplitDiffusion Policyπ₀π₀.₅GR00T N1.5
Atomic-Seen15.7%34.6%39.6%43.0%
Composite-Seen0.2%6.1%7.1%9.6%
Composite-Unseen1.25%1.1%1.2%4.4%
Average6.1%14.8%16.9%20.0%

参考:

docs/benchmarking/multitask_learning.md

这组结果反映出:

  • Atomic Tasks 相对容易;
  • Composite Tasks 明显更难;
  • Composite-Unseen 是更强的组合泛化测试;
  • GR00T N1.5 在这组官方多任务基线上最高。

3.4 Foundation Model Learning 基线

Foundation Model Learning 分成两阶段:

预训练

  • 300 个任务
  • human 数据约 482 小时
  • MimicGen 合成数据约 1615 小时
  • 总计 2000+ 小时

目标任务微调

目标任务分成:

  • Atomic-Seen:18 个原子任务
  • Composite-Seen:16 个已见组合任务
  • Composite-Unseen:16 个未见组合任务

GR00T N1.5 官方结果:

Task TypePretraining OnlyTarget Only 100%Pretraining + Target 100%
Atomic-Seen41.9%60.6%68.5%
Composite-Seen0.0%35.0%40.6%
Composite-Unseen0.2%33.3%42.1%
Average15.1%43.7%51.1%

这说明:

  • 单纯预训练对复杂组合任务的直接成功率很低;
  • 目标任务数据能显著提升性能;
  • “预训练 + 目标任务微调”整体最好;
  • 对 Composite-Unseen 任务也有明显收益。

3.5 Lifelong Learning 基线

持续学习被拆为四个阶段:

阶段任务类型任务数量
Phase 1Atomic Tasks,1 stage65
Phase 22–3 stage20
Phase 34–5 stage20
Phase 46+ stage20

每个阶段训练完成后,都会重新评估之前所有阶段的任务,以测试:

  • 新任务学习能力
  • 旧任务保持能力
  • 长时序任务能力
  • 灾难性遗忘

GR00T N1.5 的官方结果:

PhaseAtomic2–3 Stage4–5 Stage6+ Stage
Phase 141.5---
Phase 213.924.5--
Phase 313.94.811.3-
Phase 410.61.72.74.3

这个结果说明,随着任务阶段数增加,长时序任务和旧知识保持都变得更加困难。


4. 对 harness 做了什么优化

这里需要区分一下:

代码中没有发现名为 harness 的独立目录或通用 harness 框架。

RoboCasa 对 harness 的支持主要体现为:环境接口标准化、任务集注册、评估脚本约定、模型输入输出适配和数据集 soup 管理

代码搜索中没有找到名为 harness 的实现,因此不应把它描述成项目内置的一个具体模块。

4.1 统一任务集和数据集注册

dataset_registry.py 把任务、数据集路径、horizon 和实验任务集合统一注册:

TASK_SET_REGISTRY
DATASET_SOUP_REGISTRY
ATOMIC_TASK_DATASETS
COMPOSITE_TASK_DATASETS

这样外部训练或评估 harness 可以通过任务集名称调用,而不需要自己维护任务列表:

pretrain300
atomic_seen
composite_seen
composite_unseen
lifelong_learning_phase1

同时,每个任务还包含:

human_path
mg_path
target path
horizon

这解决了任务名称、数据路径和 episode 长度分散管理的问题。

4.2 标准化 Gymnasium 接口

RoboCasaGymEnv 将 robosuite 环境包装成 Gymnasium 环境:

env = gym.make(
    "robocasa/PickPlaceCounterToCabinet",
    split="pretrain",
)

它提供:

reset()
step()
render()
close()
observation_space
action_space

这使 RoboCasa 可以接入:

  • Diffusion Policy
  • OpenPI / π₀
  • GR00T
  • robomimic
  • 其他 Gym-compatible policy training loop

4.3 统一观测字段

项目把 robosuite 原始观测映射成更适合通用策略模型的字段:

state.gripper_qpos
state.base_position
state.base_rotation
state.end_effector_position_relative
state.end_effector_rotation_relative

视觉观测映射成:

video.robot0_agentview_left
video.robot0_agentview_right
video.robot0_eye_in_hand

语言标注映射成:

annotation.human.task_description

这个设计明显是为了适配视觉—语言—动作模型的通用输入格式。

4.4 统一动作空间

动作被拆成比较通用的控制语义:

action.gripper_close
action.end_effector_position
action.end_effector_rotation
action.base_motion
action.control_mode

wrapper 再将它们转换回 robosuite 的底层控制格式:

robot0_right_gripper
robot0_right
robot0_base
robot0_torso
robot0_base_mode

这样策略模型不需要直接理解每个 robosuite composite controller 的内部 action index。

4.5 处理视觉输入差异

Gym wrapper 对图像进行了统一处理:

  • 固定相机名称
  • 固定默认分辨率 256×256
  • RGB 图像上下翻转
  • 支持 RGB-D
  • 关闭渲染时返回黑色图像
  • 统一图像 dtype 和 shape
  • 给深度观测单独定义 observation space

这类处理可以减少不同模型 harness 之间对图像格式的重复适配。

4.6 语言任务描述支持

环境 metadata 中包含:

ep_meta["lang"]

Gym wrapper 将其输出为:

annotation.human.task_description

同时 Kitchen 环境支持 use_novel_instructions,可以从:

models/assets/novel_instructions/task_instruction_variants.csv

加载同一个任务的不同语言表达,用于测试语言指令泛化。

4.7 统一成功信号

wrapper 将任务完成状态统一映射为:

info["success"] = True / False
reward = 1.0 / 0.0

因此外部 harness 不需要理解每个任务内部复杂的 success condition,只需要读取:

info["success"]

这也是 RoboCasa 能够统一统计不同任务、不同模型和不同任务集成功率的关键。

4.8 支持多种策略训练和评估框架

文档直接提供了不同策略的训练和评估流程:

  • Diffusion Policy
  • OpenPI / π₀
  • GR00T N1.5
  • 旧版本 robomimic / BC-Transformer
  • MimicGen 数据生成

例如评估通常只需要提供:

checkpoint
task_set
split

典型形式:

python eval_robocasa.py \
  --checkpoint <checkpoint-path> \
  --task_set <task-set> \
  --split <split>

或者:

python examples/robocasa/main.py \
  --args.port 8000 \
  --args.task_set <task-set> \
  --args.split <split>

因此项目本身更像是:

RoboCasa 环境
    +
任务/数据集注册
    +
Gym/模型接口适配
    +
统一评估协议
    +
官方模型基线

而不是一个单独封装好的“万能训练 harness”。

4.9 数据生成和数据增强

项目还对数据侧做了较多工程优化:

  • 提供 human demonstrations
  • 通过 MimicGen 从少量源数据合成新轨迹
  • 支持 human + MimicGen 混合训练
  • 支持 dataset soup
  • 支持 10%、30%、100% 数据量消融
  • 支持 5×5、5×1 环境多样性消融
  • 支持真实数据和仿真数据 co-training
  • 支持 cotraining cameras

其中 MimicGen 已经支持 64/65 个 Atomic Tasks 的数据生成流程。


总结

从这四个维度看,RoboCasa 的定位可以概括为:

维度项目能力
任务集65 个原子任务 + 300 个组合任务,覆盖厨房操作、烹饪、清洁、收纳、上菜和长时序任务
引擎与本体MuJoCo 3.3.1 + robosuite,主要使用 PandaOmron 移动操作机器人,支持多厨房布局、物体和相机变化
评估指标与基线以二值 task success 和平均 success rate 为核心,提供多任务、foundation model、lifelong learning 三类 benchmark
Harness 优化通过 Gymnasium wrapper、任务集 registry、统一 observation/action schema、language field、success signal、dataset soup 和标准评估参数,降低 Diffusion Policy、π₀、GR00T 等模型接入成本

一句话总结:

RoboCasa 不只是一个 MuJoCo 厨房环境,而是一个将大规模任务集、场景随机化、示范数据、策略训练接口和标准化 benchmark整合在一起的机器人学习评测平台。

补充检索结果原文:

The six categories of RoboCasa365 composite tasks in the robocasa/robocasa repository are higher-level groupings that organize the 60+ activities and over 300 composite tasks for systematic policy training. According to the most direct source, these categories are:

  1. Cooking
  2. Cleaning
  3. Tidying
  4. Organizing
  5. Preparing
  6. Serving

Each of these six categories contains multiple activity types (like boiling, chopping, baking, clearing table, washing dishes, etc.), enabling generalist robots to learn skills spanning a wide range of real-world kitchen and household scenarios[[1]](https://robocasa.ai/docs/build/html/tasks/composite_tasks.html).


  1. Composite Tasks — RoboCasa 1.0.1 documentation