Introduction
This section introduces FastSim's core concept system, covering the unified simulation abstraction (UniSim), scene and entity management, controllers and command queues, and the pluggable extension mechanism.
FastSim's core design is config-driven — simulation environments and workflows are described through YAML/JSON configuration files, with Manager modules handling instantiation and scheduling at runtime. The stereotype mechanism is the central hub, binding configuration types (Config) to runtime entities (Model), allowing new entity types to be registered without modifying framework core code. The config system also supports config inheritance via the FROM keyword.
Module responsibilities:
- UniSim: Simulation engine startup and stepping with unified
step / reset / is_runninginterfaces. Currently supports IsaacLab (GPU-accelerated), MuJoCo (lightweight CPU), and PyBullet (open-source CPU) backends. - SceneManager: Builds entities (base / object / robot / sensor / light) from configuration and synchronizes state each step. Supports ModularRobot (composable multi-arm, multi-end-effector robots).
- ControllerManager: Executes the command queue in the simulation main loop with sync/async dispatch.
- ExtensionManager: Enables extensions from configuration — recording, teleoperation, benchmarks, pipeline batch processing, snapshots, domain randomization, ROS bridge, and more.
- TaskManager: Converts YAML-defined action sequences and goal conditions into executable tasks. Supports interactive debugger and snapshot breakpoint resume.
Topic Pages
UniSim Unified API
UniSim is the backend-agnostic abstraction layer defining simulation initialization, stepping, and state query interfaces. All upper-layer modules are decoupled from the actual backend through UniSim.
Scene
Scene describes the composition of the simulation world and entity instantiation, managed by SceneManager. Covers entity types (base, object, robot, sensor, light), the three-phase update rhythm, and asset path resolution rules.
Controller
Controller layer defines how entities are controlled within the simulation loop. Covers Command queue dispatch, priority, sync/async execution, built-in controller APIs (SpawnableController, RobotController, MotionPlanController, ActionController), and the main/control thread safety boundary.
Extension
Extension is the pluggable module layer. Covers all built-in extensions:
- data_collect, record, replay — observation collection, recording, and trajectory replay
- server — REST API exposure; benchmark — episode-based policy evaluation
- teleop — real-time teleoperation from keyboard, SpaceMouse, WebSocket, GELLO, VR
- pipeline — batch multi-job execution in a single session
- snapshot — save/restore full simulation state
- task_executor — automatic task execution in controller thread
- domain_randomization — scene randomization (pose, lighting, texture, physics)
- ros_bridge — bidirectional ROS 2 communication