Scene

Scene is the declarative description of the simulation world — you specify entities, their types, and asset sources in YAML, and SceneManager converts this into interactive simulation entities at runtime.

Entity Types

CategoryConfig KeyStereotypeDescription
Basebase_configground_plane / usd / emptyScene foundation, one per scene
Objectobject_cfg_dictrigid / articulated / softRigid bodies, articulated objects, or deformable bodies
Robotrobot_cfg_dictgeneral_robotRobots with modular composition and planner support
Sensorsensor_cfg_dictcameraSensors, primarily cameras
Lightlight_cfg_dictgeneral_lightLight sources

Modular Robot

FastSim uses a unified general_robot stereotype with modular composition via modules to describe robot structure — including base, arms, end-effectors, and extras. This supports single-arm, dual-arm, and more complex robot configurations.

yaml
robot_cfg_dict:
  my_robot:
    stereotype: general_robot
    asset_path: assets://robots/franka.usd
    use_planner: true
    modules:
      arms:
        main_arm:
          actuator_name: panda_arm
          ee_link_name: panda_hand
      end_effectors:
        gripper:
          actuator_name: panda_gripper

Each arm module supports independent ee_link_name and ik_joint_names, and can be configured with independent planners for multi-arm robots.

Update Rhythm

Each frame of FastSim.step() follows a strict three-phase pattern:

text
① SceneManager.pre_physics_update()  ← Write target values to simulator
② UniSim.step()                      ← Physics advances one frame
③ SceneManager.post_physics_update() ← Read latest state from simulator

Asset Path Resolution

FormatExampleDescription
Absolute/data/robots/ur5.usdDirect filesystem path
Relative./assets/cube.usdRelative to config file directory
root_key://assets://robots/ur5.usdMaps to general.root_paths.assets
HTTP(S)https://example.com/ur5.usdRemote asset, auto-downloaded and cached