Top-level Fields1

FieldTypeRequiredDefaultDescription / Constraints
extension_cfg_dictdict[str, ExtensionBaseConfig]optional{}Extension config dict; key is instance name (also the unique runtime lookup key), value is the extension config object
Enabled in declaration order; data_collect must be declared before record and benchmark

ExtensionBaseConfig: Common Fields (all extensions)

classExtensionBaseConfigfastsim/extensions/extension_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequiredExtension type (data_collect / record / replay / server / benchmark / teleop / pipeline / snapshot / task_executor / domain_randomization / ros_bridge)
enablebooloptionaltrueWhether to auto-call enable(sim) on simulation startup; set false to defer manual activation

DataCollectorConfig: Observation Collection (stereotype: data_collect)

Registers multiple observers, each collecting a specific data type from the scene. Observations are consumed by the record / benchmark extensions.

classDataCollectorConfigstereotypedata_collectfastsim/extensions/data_collect/data_collector_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
observer_cfgslist[ObserverConfig]optional[]List of observers to register; each typed by stereotype
classRobotObserverConfigstereotyperobot_observerfastsim/extensions/data_collect/observer_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequired"robot_observer"
namestringrequiredRobot instance name (matches key in scene.robot_cfg_dict)
target_joint_nameslist[str]optional[]Joint names to observe
target_link_nameslist[str]optional[]Link names to observe
observe_joint_positionsbooloptionalfalseCollect joint positions
observe_positionbooloptionalfalseCollect robot position
observe_rotationbooloptionalfalseCollect robot rotation
observe_joint_velocitiesbooloptionalfalseCollect joint velocities
observe_joint_accelerationsbooloptionalfalseCollect joint accelerations
observe_joint_position_targetsbooloptionalfalseCollect joint position targets
observe_joint_velocity_targetsbooloptionalfalseCollect joint velocity targets
observe_link_posebooloptionalfalseCollect link pose
observe_ee_posebooloptionalfalseCollect end-effector pose
observe_ee_arm_nameslist[str]optional[]Arm names for EE observation (ModularRobot); empty = all arms
observe_ee_statebooloptionalfalseCollect per-arm EE state
observe_arm_statesbooloptionalfalseCollect per-arm joint state
observe_module_summarybooloptionalfalseCollect module structure summary
classSensorObserverConfigstereotypesensor_observerfastsim/extensions/data_collect/observer_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequired"sensor_observer"
namestringrequiredSensor instance name (matches key in scene.sensor_cfg_dict)
image_save_formatenumoptionaljpegImage save format
jpeg / png / npy
observe_intrinsic_matrixbooloptionalfalseCollect camera intrinsic matrix
observe_extrinsic_matrixbooloptionalfalseCollect camera extrinsic matrix
observe_rgbbooloptionalfalseCollect RGB image
observe_depthbooloptionalfalseCollect depth map
observe_depth_npybooloptionaltrueAdditionally save raw depth as .npy (float32 meters)
observe_normalsbooloptionalfalseCollect normals
observe_semantic_segmentationbooloptionalfalseCollect semantic segmentation
observe_instance_segmentationbooloptionalfalseCollect instance segmentation
classObjectObserverConfigstereotypeobject_observerfastsim/extensions/data_collect/observer_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequired"object_observer"
namestringrequiredObject instance name (matches key in scene.object_cfg_dict)
observe_positionbooloptionalfalseCollect object position
observe_rotationbooloptionalfalseCollect object rotation
observe_scalebooloptionalfalseCollect object scale
target_joint_nameslist[str]optional[]Joint names to observe (for articulated objects)
observe_joint_positionsbooloptionalfalseCollect joint positions
observe_joint_velocitiesbooloptionalfalseCollect joint velocities
observe_joint_accelerationsbooloptionalfalseCollect joint accelerations
observe_joint_target_positionsbooloptionalfalseCollect joint target positions
observe_joint_target_velocitiesbooloptionalfalseCollect joint target velocities
classTaskObserverConfigstereotypetask_observerfastsim/extensions/data_collect/observer_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequired"task_observer"
namestringrequiredTask instance name

RecorderConfig: Recording & Export (stereotype: record)

Depends on a data_collect extension; asynchronously writes per-frame observations to disk, then post-processes on termination (HDF5, video, etc.).

classRecorderConfigstereotyperecordfastsim/extensions/record/recorder_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
backend_root_pathstringrequiredRoot directory for recording output (supports root_key:// paths)
record_backendstringoptionallfsStorage backend type
record_fpsintoptional30Recording frame rate (used for frame throttling)
postprocess_listlist[str]optional[]Post-processing types to run on termination
hdf5 / video / preview_video / npy_to_npz
use_recorder_stepbooloptionaltrueUse the recorder's own step counter instead of the global simulation step
record_scenebooloptionaltrueExport current scene config as scene.yaml next to recording so replay can restore scene without original config
scene_filenamestringoptionalscene.yamlFilename for the exported scene config (relative to backend_root_path)
data_collector_namestringoptionaldata_collectDataCollector extension instance name (must match the key in extension_cfg_dict)
record_observer_nameslist[str]optional[]Observer names to record; empty = record all
record_task_summarybooloptionalfalseExport task_summary.json on termination

ReplayConfig: Trajectory Replay (stereotype: replay)

Reads a trajectory from record.h5 and drives entities in simulation to replay it. Additional cameras (ReplayCameraConfig) can be added for multi-angle recording.

classReplayConfigstereotypereplayfastsim/extensions/replay/replay_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
replay_cameraslist[ReplayCameraConfig]optional[]Additional cameras for replay; see ReplayCameraConfig
hdf5_pathstringrequiredPath to record.h5 (supports root_key:// paths)
spawnable_nameslist[str]optional[]Entity names to load; empty = load all
scene_cfg_pathstringoptionalScene config file path to use during replay
terminate_sim_when_finishedbooloptionaltrueWhether to terminate simulation when replay finishes
skip_rollbackbooloptionalfalseSkip frames belonging to rolled-back segments so replay stays visually continuous (reads dead_segments from hdf5 root attrs)
fpsintoptional30Replay frame rate
classReplayCameraConfigfastsim/extensions/replay/replay_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
widthintrequiredImage width in pixels
heightintrequiredImage height in pixels
positionlist[3]requiredCamera position [x, y, z] in meters
rotationlist[4]requiredCamera rotation as quaternion [w, x, y, z]
data_typeslist[str]optional["rgb"]Data types to collect (same as CameraConfig)

ServerConfig: REST API Server (stereotype: server)

Starts a Flask HTTP server, auto-registering all @apiclass-decorated controller methods as POST /{class}/{method} routes.

classServerConfigstereotypeserverfastsim/extensions/servitize/server_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
hoststringoptional0.0.0.0Listen address
portintrequired5000Listen port
1024–65535
debugbooloptionalfalseFlask debug mode (disable in production)

BenchmarkConfig: Episode Evaluation (stereotype: benchmark)

Runs user-defined policy evaluation in a separate thread per episode, assessing goal conditions and reporting success rate. Policy class must extend Policy and implement the required interface.

classBenchmarkConfigstereotypebenchmarkfastsim/extensions/benchmark/benchmark_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
required_observer_nameslist[str]optionalnullObserver names required for the benchmark to run; null skips check
data_collector_namestringrequireddata_collectDataCollector extension instance name
goalslist[GoalConfig]required[]Goal conditions evaluated at the end of each episode
policyPolicyConfigrequiredPolicy config; stereotype specifies the user-defined policy type
timeoutfloat | nulloptionalnullBenchmark timeout in seconds; null = no timeout
action_frequencyfloatrequired60.0Policy control frequency in Hz
stop_sim_on_endboolrequiredtrueWhether to terminate the simulation when the benchmark finishes
result_output_pathstringoptional""Benchmark result JSON output path (supports asset:// / output:// / demo:// schemes); empty = do not write
classPolicyConfigfastsim/extensions/benchmark/policy.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequiredPolicy type; must match the key registered with @stereotype.register_config
...anyoptionalAny additional fields defined in the user's PolicyConfig subclass, parsed by @configclass

TeleopConfig: Teleoperation (stereotype: teleop)

Enables teleoperation with various input devices: keyboard, spacemouse, web, gello, vr.

classTeleopConfigstereotypeteleopfastsim/extensions/teleop/teleop_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
driverslist[TeleopDriverConfig]requiredList of teleop drivers; each typed by stereotype. See TeleopDriverConfig
control_frequencyfloatoptional30.0Control frequency in Hz
classTeleopDriverConfigfastsim/extensions/teleop/teleop_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stereotypestringrequiredDriver type
keyboard / spacemouse / web / gello / vr
targetTeleopTargetConfigrequiredTeleop target configuration; see TeleopTargetConfig
classTeleopTargetConfigfastsim/extensions/teleop/teleop_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
robot_namestringrequiredTarget robot instance name
arm_namestringoptionalTarget arm module name (required for ModularRobot)

PipelineConfig: Batch Jobs (stereotype: pipeline)

Runs multiple episodes in pipeline mode, auto-resetting the scene and executing tasks/policies per episode. Ideal for batch data collection and automated testing.

classPipelineConfigstereotypepipelinefastsim/extensions/pipeline/pipeline_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
job_list_filestringrequiredJob list JSON file path mapping job_name → config_path
stop_on_failurebooloptionalfalseWhether to stop the entire pipeline when a job fails
skip_postprocess_on_failurebooloptionalfalseWhether to skip post-processing when a job fails
reload_basebooloptionaltrueWhether to rebuild the base when switching jobs. false = keep prior base, only update layout (hot-swap)
reload_objectsbooloptionaltrueWhether to rebuild objects when switching jobs. false = only re-pose same-named objects
reload_robotsbooloptionaltrueWhether to rebuild robots when switching jobs. false = keep robot and planner (skip planner warmup), only re-pose and re-init joints

SnapshotConfig: State Snapshot (stereotype: snapshot)

Provides simulation state snapshot save/restore, supporting in-memory snapshots and .npz file persistence for debugging and rollback.

classSnapshotConfigstereotypesnapshotfastsim/extensions/snapshot/snapshot_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
snapshot_pathstringrequiredSnapshot .npz file path
target_entitieslist[str]optional[]Entity names to snapshot; empty = all entities

TaskExecutorConfig: Task Executor (stereotype: task_executor)

Executes the action sequence declared in the task config in a separate control thread, then evaluates goal conditions. Supports an interactive debugger that enters a REPL on action failure.

classTaskExecutorConfigstereotypetask_executorfastsim/extensions/task_executor/task_executor_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
stop_sim_on_task_endbooloptionaltrueWhether to terminate simulation after task completion
assert_action_successbooloptionaltrueWhether to fail if action goals are not met
interactive_debugbooloptionalfalseWhether to enter interactive debugger REPL on action failure
restore_snapshot_pathstringoptionalnullSnapshot file path to restore before task execution
restore_target_entitieslist[str]optional[]Target entity names for snapshot restore

DomainRandomizationConfig: Domain Randomization (stereotype: domain_randomization)

Randomizes physics properties, poses, and materials of scene entities during each episode reset to improve sim-to-real transfer.

classDomainRandomizationConfigstereotypedomain_randomizationfastsim/extensions/domain_randomization/domain_randomization_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
seedintoptionalnullRandom seed; null = non-deterministic (for reproducibility)
pose_randomizerslist[PoseRandomizerConfig]optional[]List of pose randomizers controlling object position/rotation ranges
physics_randomizerslist[PhysicsRandomizerConfig]optional[]List of physics randomizers (mass, friction, etc.)
lighting_randomizerslist[LightingRandomizerConfig]optional[]List of lighting randomizers
camera_randomizerslist[CameraRandomizerConfig]optional[]List of camera randomizers (pose, intrinsics perturbation)
material_randomizerslist[MaterialRandomizerConfig]optional[]List of material randomizers. Each entry has targets (spawnable name or USD prim path, /* wildcard binds children) and material_pool. Each material can be either synthesized (color / roughness / metallic / diffuse_texture) or referenced from an external file (asset_path + source: local/remote/platform; supports .usd / .usda / .usdc / .mdl)

RosBridgeConfig: ROS 2 Bridge (stereotype: ros_bridge)

Integrates the simulator with ROS 2, auto-publishing observations to topics and subscribing to external control commands.

classRosBridgeConfigstereotyperos_bridgefastsim/extensions/ros_bridge/ros_bridge_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
node_namestringrequiredfastsim_bridgeROS 2 node name
namespacestringoptional""ROS 2 node namespace
domain_idintrequired0ROS_DOMAIN_ID
0–232
publish_fpsintrequired30Publishing rate in Hz; 0 = every simulation step
topic_prefixstringrequired/fastsimPrefix for all auto-generated topic names
data_collector_namestringrequireddata_collectDataCollector extension instance name
publish_observer_nameslist[str]optionalnullObserver names to publish; null = publish all
command_cfgslist[RosBridgeCommandConfig]optional[]List of command subscription configurations
classRosBridgeCommandConfigfastsim/extensions/ros_bridge/ros_bridge_cfg.py
FieldTypeRequiredDefaultDescription / Constraints
target_namestringrequiredTarget entity name (e.g. robot name)
target_typestringrequiredrobotEntity type
robot / object / sensor
command_typestringrequiredjoint_positionCommand type
joint_position / ee_pose / gripper
topicstringoptionalnullCustom topic name; null = auto-generated

Example

extension blockYAML
extension:
  extension_cfg_dict:
    my_data_collect:            # ← 键名即运行时实例名
      stereotype: data_collect
      enable: true
      observer_cfgs:
        - stereotype: robot_observer
          name: arm
          observe_joint_positions: true
          observe_ee_pose: true
        - stereotype: sensor_observer
          name: wrist_cam
          observe_rgb: true
          observe_depth: true

    record:
      stereotype: record
      enable: true
      backend_root_path: datasets://runs/run001
      record_fps: 30
      postprocess_list: [hdf5, video]
      data_collector_name: my_data_collect

    server:
      stereotype: server
      enable: false
      host: 0.0.0.0
      port: 8080
      debug: false

    teleop:
      stereotype: teleop
      enable: false
      control_frequency: 30.0
      drivers:
        - stereotype: keyboard
          target:
            robot_name: arm
            arm_name: main_arm

    task_runner:
      stereotype: task_executor
      enable: true
      stop_sim_on_task_end: true
      assert_action_success: true
      interactive_debug: false

    domain_rand:
      stereotype: domain_randomization
      enable: true
      seed: 42
      pose_randomizers:
        - target_names: [cube, bottle]
          position_range: [-0.1, 0.1, -0.1, 0.1, 0, 0]