Implementation:Haosulab ManiSkill RoboCasaStove
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Scene_Building |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for creating stove, stovetop, and oven fixtures in RoboCasa kitchen environments, supporting knob-based burner control and flame visualization.
Description
This module defines three stove-related fixture classes:
Stove -- The main stove fixture class with interactive knob joints that control burner flames. Features:
- Seven burner locations defined in
STOVE_LOCATIONS: "rear_left", "rear_center", "rear_right", "front_left", "front_center", "front_right", "center" update_state(env)toggles burner flame visibility based on knob joint angles. Flames appear (alpha 0.5) when the knob is rotated between 0.35 and 2*pi-0.35 radians.set_knob_state(env, rng, knob, mode)sets individual knob joints to "on" (random angle) or "off" (0.0).get_knobs_state(env)returns a dictionary mapping each burner location to its knob angle.get_reset_regions(env, locs)returns placement regions for each burner location, used for placing objects like pots and pans on the stove.- Lazy-loaded
knob_jointsandburner_sitesproperties that search the XML tree.
Stovetop -- A subclass of Stove that represents only the top cooking surface (without the full stove body). Typically embedded as an interior object in a counter.
Oven -- A separate fixture class extending Fixture directly, representing a standalone oven unit.
Usage
Used in RoboCasa kitchen scenes. The Stove is a standalone fixture, while Stovetop is typically embedded inside a counter. The Oven is placed separately.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/utils/scene_builder/robocasa/fixtures/stove.py
Signature
STOVE_LOCATIONS = [
"rear_left", "rear_center", "rear_right",
"front_left", "front_center", "front_right", "center",
]
class Stove(Fixture):
def __init__(self, xml="fixtures/stoves/stove_orig", name="stove", *args, **kwargs): ...
def get_reset_regions(self, env, locs=None) -> dict: ...
def update_state(self, env): ...
def set_knob_state(self, env, rng, knob, mode="on"): ...
def get_knobs_state(self, env) -> dict: ...
@property
def knob_joints(self) -> dict: ...
@property
def burner_sites(self) -> dict: ...
@property
def nat_lang(self) -> str: ...
class Stovetop(Stove):
def __init__(self, xml="fixtures/stoves/stove_orig", name="stove", *args, **kwargs): ...
class Oven(Fixture):
def __init__(self, xml="fixtures/ovens/samsung", name="oven", *args, **kwargs): ...
@property
def nat_lang(self) -> str: ...
Import
from mani_skill.utils.scene_builder.robocasa.fixtures.stove import Stove, Stovetop, Oven
I/O Contract
| Method | Input | Output | Description |
|---|---|---|---|
get_reset_regions |
env, locs |
dict |
Maps burner locations to placement offsets and sizes |
set_knob_state |
env, rng, knob, mode |
None | Sets knob to "on" (random angle) or "off" (0.0) |
get_knobs_state |
env |
dict |
Maps burner locations to knob angles (radians) |
update_state |
env |
None | Shows/hides flame sites based on knob positions |
Usage Examples
# Standalone stove
stove = Stove(scene=scene, name="kitchen_stove")
stove.set_pos([0.5, 0, 0.45])
stove.build(scene_idxs=[0])
# Get placement regions for putting a pot on a burner
regions = stove.get_reset_regions(env, locs=["front_left", "front_right"])
# Embedded stovetop in counter
stovetop = Stovetop(scene=scene, name="cooktop")
counter = Counter(scene=scene, name="cook_counter", interior_obj=stovetop)