Implementation:Haosulab ManiSkill KitchenObjects
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Scene_Building |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool providing the comprehensive kitchen object category registry for RoboCasa environments, defining metadata, physics properties, and model references for all manipulable kitchen objects.
Description
This module is the central registry for all kitchen object categories used in RoboCasa tasks. It defines two main data structures:
OBJ_CATEGORIES is a dictionary mapping object category names to their configuration dictionaries. Each category includes:
types-- classification tags (e.g., "fruit", "meat", "drink", "packaged_food", "dairy", "sweets", etc.)- Boolean flags:
graspable,washable,microwavable,cookable,freezable aigen/objaversesub-configs with model folders, scales, and exclusion lists
The module defines approximately 80+ object categories spanning the full range of kitchen items including: fruits (apple, banana, lemon, orange, etc.), vegetables (avocado, bell pepper, broccoli, corn, etc.), proteins (steak, fish, hot dog, etc.), baked goods (bagel, baguette, bread, cake, etc.), beverages (beer, wine, soda can, etc.), condiments (ketchup, jam, etc.), kitchenware (bowl, cup, mug, pan, pot, plate, etc.), and many more.
OBJ_GROUPS organizes categories into functional groups such as:
- "food" -- all edible items
- "containers" -- bowls, cups, mugs, etc.
- "cookware" -- pans, pots, etc.
- Various specialized groups for task-specific selections
Each category entry provides separate configurations for AI-generated (aigen) and Objaverse model sources, allowing the system to select from different 3D model libraries.
Usage
Used by the RoboCasa scene builder and task definitions to select and instantiate kitchen objects. Tasks reference categories by name to specify which objects should appear in a given scenario.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/utils/scene_builder/robocasa/objects/kitchen_objects.py
Signature
# Module-level constants
OBJ_CATEGORIES = dict(
liquor=dict(types=("drink", "alcohol"), graspable=True, ...),
apple=dict(types=("fruit"), graspable=True, washable=True, ...),
avocado=dict(types=("vegetable"), graspable=True, ...),
# ... 80+ categories
)
OBJ_GROUPS = dict(
# Groups of categories organized by function
food=[...],
containers=[...],
cookware=[...],
# ...
)
BASE_ASSET_ZOO_PATH = str(ROBOCASA_ASSET_DIR / "objects")
Import
from mani_skill.utils.scene_builder.robocasa.objects.kitchen_objects import (
OBJ_CATEGORIES, OBJ_GROUPS, BASE_ASSET_ZOO_PATH
)
I/O Contract
| Data Structure | Type | Description |
|---|---|---|
OBJ_CATEGORIES |
dict |
Maps category name to config dict with types, booleans, model info |
OBJ_GROUPS |
dict |
Maps group name to list of category names |
BASE_ASSET_ZOO_PATH |
str |
Filesystem path to the objects asset directory |
Each category config dictionary follows this schema:
| Key | Type | Description |
|---|---|---|
types |
tuple |
Category classifications (e.g., "fruit", "meat") |
graspable |
bool |
Whether the object can be grasped by a gripper |
washable |
bool |
Whether the object can be washed |
microwavable |
bool |
Whether the object can be microwaved |
cookable |
bool |
Whether the object can be cooked |
freezable |
bool |
Whether the object can be frozen |
aigen |
dict |
AI-generated model config (model_folders, scale, exclude) |
objaverse |
dict |
Objaverse model config (model_folders, scale, exclude) |
Usage Examples
from mani_skill.utils.scene_builder.robocasa.objects.kitchen_objects import (
OBJ_CATEGORIES, OBJ_GROUPS
)
# Look up properties of an object category
apple_config = OBJ_CATEGORIES["apple"]
print(apple_config["graspable"]) # True
print(apple_config["types"]) # ("fruit")
# Get all food categories
food_categories = OBJ_GROUPS.get("food", [])