Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Haosulab ManiSkill RoboCasaStove

From Leeroopedia
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_joints and burner_sites properties 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

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)

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment