Implementation:Haosulab ManiSkill RoboCasaStructuralFixtures
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Scene_Building |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool providing structural fixture classes (Box, Wall, Floor) for constructing the physical boundaries and surfaces of RoboCasa kitchen environments.
Description
This module defines the structural building blocks used to create the walls, floors, and simple box shapes in RoboCasa kitchen scenes.
Box -- A simple textured box with configurable size, position, and material. Uses SAPIEN actor builder to create a static actor with box visual and collision shapes. Supports wood textures by default. Provides build() method for constructing the actor and set_pos()/set_euler() for pose control.
Wall -- A wall fixture that supports placement on different sides of the kitchen (back, front, left, right, floor). Key features:
- Automatic rotation based on
wall_sideparameter using predefined quaternions - Position adjustments for wall thickness and backing
- Backing mode for creating depth behind the wall
- Extended backing for forming perfect corner boxes
- Uses
add_plane_repeated_visualfor tiled texture rendering with configurable texture repeat - Collision shapes use box geometry regardless of visual style
Floor -- Extends Wall with wall_side="floor". Uses a horizontal plane collision (with a 45-degree rotation quaternion) and supports tiled floor textures. Only adds plane collision in scene index 0 to avoid duplicate ground planes.
All classes track their is_articulation property as False since they are purely static structures.
Usage
Used by the RoboCasa scene builder to create the physical room structure (walls and floor) around the kitchen fixtures.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/utils/scene_builder/robocasa/fixtures/others.py
Signature
class Box:
def __init__(self, scene: ManiSkillScene, pos, size, name="box",
texture="textures/wood/dark_wood_parquet.png",
mat_attrib={"shininess": "0.1"}, tex_attrib={"type": "cube"},
rng=None, *args, **kwargs): ...
def build(self, scene_idxs: list[int]): ...
def set_pos(self, pos): ...
def set_euler(self, euler): ...
@property
def is_articulation(self) -> bool: ...
class Wall:
def __init__(self, scene: ManiSkillScene, name="wall",
texture="textures/bricks/white_bricks.png",
pos=None, quat=None, size=None, wall_side="back",
backing=False, backing_extended=[False, False],
default_wall_th=0.02, default_backing_th=0.1,
rng=None, *args, **kwargs): ...
def build(self, scene_idxs: list[int]): ...
def get_quat(self) -> list: ...
@property
def is_articulation(self) -> bool: ...
class Floor(Wall):
def __init__(self, scene: ManiSkillScene, size, name="wall",
texture="textures/bricks/red_bricks.png", *args, **kwargs): ...
def build(self, scene_idxs: list[int]): ...
Import
from mani_skill.utils.scene_builder.robocasa.fixtures.others import Box, Wall, Floor
I/O Contract
| Class | Key Parameters | Description |
|---|---|---|
Box |
pos, size, texture |
Static textured box with collision |
Wall |
pos, size, wall_side, backing, texture |
Side wall with automatic rotation and thickness handling |
Floor |
size, texture |
Horizontal floor plane with tiled texture |
Wall side orientations and their quaternions:
| Side | Quaternion |
|---|---|
| back | [-0.707, 0.707, 0, 0] |
| front | [0, 0, 0.707, -0.707] |
| left | [0.5, 0.5, -0.5, -0.5] |
| right | [-0.5, 0.5, -0.5, 0.5] |
| floor | [0.707, 0, 0, 0.707] |
Usage Examples
# Create a back wall
wall = Wall(
scene=scene,
name="back_wall",
pos=[0, 2.0, 1.0],
size=[3.0, 0.02, 1.0],
wall_side="back",
texture="textures/bricks/white_bricks.png",
)
wall.build(scene_idxs=[0])
# Create a floor
floor = Floor(
scene=scene,
size=[3.0, 3.0, 0.01],
pos=[0, 0, 0],
texture="textures/bricks/red_bricks.png",
)
floor.build(scene_idxs=[0])