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
| Category | Config Key | Stereotype | Description |
|---|---|---|---|
| Base | base_config | ground_plane / usd / empty | Scene foundation, one per scene |
| Object | object_cfg_dict | rigid / articulated / soft | Rigid bodies, articulated objects, or deformable bodies |
| Robot | robot_cfg_dict | general_robot | Robots with modular composition and planner support |
| Sensor | sensor_cfg_dict | camera | Sensors, primarily cameras |
| Light | light_cfg_dict | general_light | Light 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
| Format | Example | Description |
|---|---|---|
| Absolute | /data/robots/ur5.usd | Direct filesystem path |
| Relative | ./assets/cube.usd | Relative to config file directory |
| root_key:// | assets://robots/ur5.usd | Maps to general.root_paths.assets |
| HTTP(S) | https://example.com/ur5.usd | Remote asset, auto-downloaded and cached |