Simulation configuration

The simulation block declares the simulation backend and runtime parameters. The stereotype field decides which engine to use; UniSimFactory instantiates the matching UniSim subclass.

Source: fastsim/configs/simulation_cfg.py (SimulationConfig)

Common fields (all backends)

FieldTypeDescription
stereotypestrBackend identifier (e.g. isaaclab / mujoco / pybullet); must be registered in UniSim registry
dtfloatPhysics timestep in seconds (must be > 0); typical 0.0166667 (60Hz)
initialize_stepsintInit steps after reset to stabilize physics; default 60
num_envsintParallel environment count (GPU parallel simulation); default 1
env_spacingfloatSpacing between parallel envs in meters; default 2.5

List available registered backends:

bash
fastsim show-registry

IsaacLab backend

When stereotype: isaaclab, the config class is IsaacLabConfig (source: fastsim/simulators/isaaclab/isaaclab_config.py). Adds the following on top of common fields:

FieldTypeDescription
devicestrCompute device, cpu or cuda:<index> (e.g. cuda:0)
render_intervalintRender one frame every N physics steps; must be >= 1
gravitylist[3]Gravity vector (x, y, z), default [0.0, 0.0, -9.81]
physics_prim_pathstrPhysics scene prim path, default /physicsScene
enable_scene_query_supportboolEnable scene queries (raycast etc.)
use_fabricboolUse Fabric data interface for accelerated access
create_stage_in_memoryboolCreate USD Stage in memory
launch_configLaunchConfigIsaac Sim AppLauncher params (incl. headless, livestream, enable_cameras, device)
physics_configPhysicsConfigPhysX physics engine parameters
render_configRenderConfigRendering parameters (DLSS, shadows, etc.)

Configuration example

yaml
simulation:
  stereotype: isaaclab
  dt: 0.0166667
  initialize_steps: 60
  device: cuda:0
  render_interval: 1
  gravity: [0.0, 0.0, -9.81]
  create_stage_in_memory: true
  launch_config:
    headless: false
    livestream: 0
    enable_cameras: true
    device: cuda
  physics_config: {}
  render_config: {}

MuJoCo backend

When stereotype: mujoco, uses the MuJoCo physics engine. Lightweight CPU simulator, fast startup, suitable for quick iteration and debugging.

yaml
simulation:
  stereotype: mujoco
  dt: 0.002
  initialize_steps: 60

Source: fastsim/simulators/mujuco/mujuco_config.py

PyBullet backend

When stereotype: pybullet, uses the PyBullet physics engine — open-source CPU simulator with built-in OpenGL rendering.

yaml
simulation:
  stereotype: pybullet
  dt: 0.002
  initialize_steps: 60

Source: fastsim/simulators/pybullet/pybullet_config.py

Common errors

ErrorCauseFix
Simulation config is requiredConfig file missing simulation block or stereotypeAdd the complete simulation block
Invalid simulator stereotypestereotype value not in registryRun fastsim show-registry to check available values; for custom backends, ensure scan_project is enabled