Implementation:Haosulab ManiSkill RoboCasaAccessories
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Scene_Building |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool providing accessory and miscellaneous fixture classes for RoboCasa kitchen environments, including coffee machines, toasters, stools, and wall-mounted accessories.
Description
This module defines several accessory fixture classes used for decorative and functional objects in RoboCasa kitchens:
Accessory -- Base class for all accessories/miscellaneous objects. Extends Fixture with duplicate_collision_geoms=False. Serves as the parent for specific accessory types.
CoffeeMachine -- A coffee machine accessory that supports simulated coffee pouring. Features:
_turned_onstate trackingupdate_state()checks if the robot gripper is pressing the start button to toggle the machine on- Coffee liquid sites that become visible when the machine is turned on
check_receptacle_placement_for_pouring()to verify a mug is placed under the pour spoutgripper_button_far()distance check helper
Toaster -- Simple toaster accessory with a natural language property returning "toaster".
Stool -- Simple stool accessory with a natural language property returning "stool".
WallAccessory -- Base class for wall-mounted accessories (outlets, clocks, paintings, lights). Features:
- Attaches to a
Wallobject and computes its position based on wall side (back, front, left, right) - Adjustable
protrusionparameter controlling how far the accessory extends from the wall - Automatic rotation alignment based on the wall's orientation
- Special handling for light fixtures (pre-rotated by 90 degrees)
Usage
Used by the RoboCasa scene builder to populate kitchen scenes with decorative and functional accessories. Referenced in the FIXTURES registry as "accessory", "coffee_machine", "toaster", "stool", and "wall_accessory".
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/utils/scene_builder/robocasa/fixtures/accessories.py
Signature
class Accessory(Fixture):
def __init__(self, scene, xml, name, pos=None, *args, **kwargs): ...
class CoffeeMachine(Accessory):
def __init__(self, *args, **kwargs): ...
def get_reset_regions(self, *args, **kwargs) -> dict: ...
def get_state(self) -> dict: ...
def update_state(self, env): ...
def check_receptacle_placement_for_pouring(self, env, obj_name, xy_thresh=0.04) -> bool: ...
def gripper_button_far(self, env, th=0.15) -> bool: ...
@property
def nat_lang(self) -> str: ...
class Toaster(Accessory): ...
class Stool(Accessory): ...
class WallAccessory(Fixture):
def __init__(self, scene, xml, name, pos, attach_to=None, protrusion=0.02, *args, **kwargs): ...
def _place_accessory(self): ...
Import
from mani_skill.utils.scene_builder.robocasa.fixtures.accessories import (
Accessory, CoffeeMachine, Toaster, Stool, WallAccessory
)
I/O Contract
| Class | Key Parameters | Description |
|---|---|---|
Accessory |
xml, name, pos |
Base accessory loaded from MJCF |
CoffeeMachine |
inherited | Interactive coffee machine with pour simulation |
WallAccessory |
attach_to (Wall), protrusion (float) |
Mounts on a wall, auto-positions based on wall side |
Usage Examples
# Create a wall-mounted clock
clock = WallAccessory(
scene=scene,
xml="fixtures/accessories/clock.xml",
name="kitchen_clock",
pos=[1.0, None, 2.0],
attach_to=back_wall,
protrusion=0.02,
)