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 ROBELValveBuilder

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation, Articulated Object Building
Last Updated 2026-02-15 08:00 GMT

Overview

Concrete tool for procedurally building a ROBEL benchmark-style valve articulation with configurable spoke angles and dimensions.

Description

The robel.py module provides the build_robel_valve() function, which programmatically constructs a ROBEL-style valve articulation for dexterous manipulation tasks. The valve consists of:

1. Mount link -- A static base with a box collision shape and a cylindrical bearing. 2. Valve link -- A rotating component with multiple capsule-shaped spokes arranged at specified angles, connected to the mount via a revolute joint.

The valve geometry follows the original ROBEL benchmark dimensions (in meters):

  • Capsule height: 0.039854m, length: 0.061706m (scalable), radius: 0.0195m (scalable)
  • Bottom box: 0.04m x 0.04m x 0.03m
  • Bearing: radius 0.007m, height 0.032m

The first spoke is colored red for visual identification; remaining spokes are white. Each spoke uses a custom PhysxMaterial with friction coefficients (static: 1, dynamic: 0.8).

The revolute joint has infinite rotation limits, friction of 0.02, and damping of 2.

Usage

Called by the RotateValve task environments to build the valve object in the scene. The valve_angles parameter defines the angular positions of spokes (in radians, 0 to 2pi).

Code Reference

Source Location

Signature

def build_robel_valve(
    scene: ManiSkillScene,
    valve_angles: Sequence[float],
    name: str,
    radius_scale: float = 1.0,
    capsule_radius_scale: float = 1.0,
    scene_idxs=None,
) -> tuple[Articulation, float]: ...

Import

from mani_skill.utils.building.articulations.robel import build_robel_valve

I/O Contract

Inputs

Name Type Required Description
scene ManiSkillScene Yes The scene to build the valve in
valve_angles Sequence[float] Yes Angles (radians, 0 to 2pi) for each valve spoke
name str Yes Name for the articulation
radius_scale float No Scale factor for capsule length (default: 1.0)
capsule_radius_scale float No Scale factor for capsule radius (default: 1.0)
scene_idxs list[int] No Sub-scene indices to build in

Outputs

Name Type Description
valve Articulation The built valve articulation (fixed root link)
capsule_length float The actual capsule length used (after scaling)

Usage Examples

Basic Usage

import numpy as np
from mani_skill.utils.building.articulations.robel import build_robel_valve

# Build a 3-spoke valve
valve, capsule_length = build_robel_valve(
    scene=env.scene,
    valve_angles=[0, 2*np.pi/3, 4*np.pi/3],
    name="valve",
)

Related Pages

Page Connections

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