Implementation:Haosulab ManiSkill SimConfig
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, Configuration |
| Last Updated | 2026-02-15 08:00 GMT |
Overview
Concrete tool for defining simulation configuration dataclasses including physics settings, GPU memory allocation, material defaults, and type aliases.
Description
The types.py module defines the configuration dataclasses and type aliases used throughout ManiSkill for simulation setup.
Type aliases:
Array = Union[torch.Tensor, np.ndarray, Sequence]-- Universal array type.Device = Union[str, torch.device]-- Device specification type.DriveMode = Literal["force", "acceleration"]-- Drive control mode.
GPUMemoryConfig: Controls PhysX GPU memory allocation:
temp_buffer_capacity-- Pinned host buffer (default: 2^24).max_rigid_contact_count-- Contact buffer size (default: 2^19).max_rigid_patch_count-- Patch buffer size (default: 2^18).heap_capacity,found_lost_pairs_capacity,collision_stack_size, etc.
SceneConfig: PhysX scene physics parameters:
gravity-- Default [0, 0, -9.81].solver_position_iterations(15) /solver_velocity_iterations(1).- Contact/rest offsets, sleep threshold, bounce threshold.
- Flags: PCM, TGS, CCD, enhanced determinism, friction every iteration.
DefaultMaterialsConfig: Default physics material:
static_friction(0.3),dynamic_friction(0.3),restitution(0).
SimConfig: Top-level simulation configuration:
spacing-- Distance between parallel environments (default: 5m).sim_freq-- Simulation frequency in Hz (default: 100).control_freq-- Control frequency in Hz (default: 20).- Nested
gpu_memory_config,scene_config,default_materials_config.
Usage
Override in environment subclasses to customize simulation parameters. The SimConfig is specified in the environment class definition and applied during environment creation.
Code Reference
Source Location
- Repository: Haosulab_ManiSkill
- File: mani_skill/utils/structs/types.py
Signature
Array = Union[torch.Tensor, np.ndarray, Sequence]
Device = Union[str, torch.device]
DriveMode = Literal["force", "acceleration"]
@dataclass
class GPUMemoryConfig:
temp_buffer_capacity: int = 2**24
max_rigid_contact_count: int = 2**19
max_rigid_patch_count: int = 2**18
heap_capacity: int = 2**26
...
@dataclass
class SceneConfig:
gravity: np.ndarray # default [0, 0, -9.81]
solver_position_iterations: int = 15
solver_velocity_iterations: int = 1
...
@dataclass
class DefaultMaterialsConfig:
static_friction: float = 0.3
dynamic_friction: float = 0.3
restitution: float = 0
@dataclass
class SimConfig:
spacing: float = 5
sim_freq: int = 100
control_freq: int = 20
gpu_memory_config: GPUMemoryConfig = ...
scene_config: SceneConfig = ...
default_materials_config: DefaultMaterialsConfig = ...
Import
from mani_skill.utils.structs.types import Array, Device, SimConfig, GPUMemoryConfig, SceneConfig
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| spacing | float | No | Distance between parallel envs (default: 5m) |
| sim_freq | int | No | Physics simulation frequency (default: 100 Hz) |
| control_freq | int | No | Control step frequency (default: 20 Hz) |
Outputs
| Name | Type | Description |
|---|---|---|
| SimConfig | SimConfig | Complete simulation configuration |
| dict | dict | Serialized config via .dict() method |
Usage Examples
Basic Usage
from mani_skill.utils.structs.types import SimConfig, GPUMemoryConfig
# Custom simulation config
sim_config = SimConfig(
spacing=10,
sim_freq=200,
control_freq=50,
gpu_memory_config=GPUMemoryConfig(
max_rigid_contact_count=2**21,
),
)
print(sim_config.dict())