总览 / RoboCasa365 · D52
RoboCasa365:65 原子 × 300 组合的厨房泛化阶梯
Atomic→Composite、seen/unseen 组合与 lifelong 阶段全文。
可以。这个项目更适合按照“任务集—仿真引擎与机器人本体—评估协议与基线—对策略训练/评估 harness 的适配优化”来理解。
1. 任务集
RoboCasa365 的核心任务集包含:
- 65 个 Atomic Tasks
- 300 个 Composite Tasks
- 合计 365 个任务
任务代码主要位于:
robocasa/environments/kitchen/atomicrobocasa/environments/kitchen/compositerobocasa/utils/dataset_registry.py
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 类设施或厨房设备
参考:
1.2 Composite Tasks
Composite Tasks 是多步骤厨房活动,通常由多个原子技能组成,任务长度从 2 个子任务到十几个子任务不等。
主要活动包括:
- 烹饪和加热
BoilEggsSearingMeatStirVegetablesToastBagelOvenBroilFish- 饮品制作
PrepareCoffeeMakeIceLemonadePrepareSmoothieSweetenCoffee- 食材准备
SetUpCuttingStationGatherCuttingToolsWashLettucePrepareCheeseStation- 清洁
ClearSinkRinseSinkBasinScrubCuttingBoardLoadDishwasher- 分类和收纳
OrganizeCondimentsArrangeUtensilsByTypeOrganizeMugsByHandleRestockPantry- 冰箱与冷冻室管理
LoadFridgeByTypeMoveFreezerToFridgeMaximizeFreezerSpaceStoreLeftoversByType- 摆盘、餐桌和上菜
BuildAppetizerPlatePlateSteakMealArrangeBuffetDessertServeSteak
例如,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 | 目标评估中训练阶段没见过的组合任务 |
target50 | 50 个目标任务的组合 |
lifelong_learning_phase1 | 全部 65 个 Atomic Tasks |
lifelong_learning_phase2 | 20 个 2–3 stage 任务 |
lifelong_learning_phase3 | 20 个 4–5 stage 任务 |
lifelong_learning_phase4 | 20 个 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 的通用流程是:
- 指定
task_set - 指定
split - 随机采样 50 个场景
- 每个场景运行一次 rollout
- 记录二值任务成功信号
- 汇总 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 Split | Diffusion Policy | π₀ | π₀.₅ | GR00T N1.5 |
|---|---|---|---|---|
| Atomic-Seen | 15.7% | 34.6% | 39.6% | 43.0% |
| Composite-Seen | 0.2% | 6.1% | 7.1% | 9.6% |
| Composite-Unseen | 1.25% | 1.1% | 1.2% | 4.4% |
| Average | 6.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 Type | Pretraining Only | Target Only 100% | Pretraining + Target 100% |
|---|---|---|---|
| Atomic-Seen | 41.9% | 60.6% | 68.5% |
| Composite-Seen | 0.0% | 35.0% | 40.6% |
| Composite-Unseen | 0.2% | 33.3% | 42.1% |
| Average | 15.1% | 43.7% | 51.1% |
这说明:
- 单纯预训练对复杂组合任务的直接成功率很低;
- 目标任务数据能显著提升性能;
- “预训练 + 目标任务微调”整体最好;
- 对 Composite-Unseen 任务也有明显收益。
3.5 Lifelong Learning 基线
持续学习被拆为四个阶段:
| 阶段 | 任务类型 | 任务数量 |
|---|---|---|
| Phase 1 | Atomic Tasks,1 stage | 65 |
| Phase 2 | 2–3 stage | 20 |
| Phase 3 | 4–5 stage | 20 |
| Phase 4 | 6+ stage | 20 |
每个阶段训练完成后,都会重新评估之前所有阶段的任务,以测试:
- 新任务学习能力
- 旧任务保持能力
- 长时序任务能力
- 灾难性遗忘
GR00T N1.5 的官方结果:
| Phase | Atomic | 2–3 Stage | 4–5 Stage | 6+ Stage |
|---|---|---|---|---|
| Phase 1 | 41.5 | - | - | - |
| Phase 2 | 13.9 | 24.5 | - | - |
| Phase 3 | 13.9 | 4.8 | 11.3 | - |
| Phase 4 | 10.6 | 1.7 | 2.7 | 4.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:
- Cooking
- Cleaning
- Tidying
- Organizing
- Preparing
- 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).