Management & validation
Manage elements and feature switches with structured validation for consistency and reproducibility.
Simulation development framework
UniSim provides a unified abstraction across simulator backends. Define scenes and tasks with config files—iterate faster and reuse more.
Submit a config file to define the scene and enabled modules; FastSim parses, builds, and validates.
simulation:
stereotype: isaaclab
launch_config:
device: cuda
enable_cameras: true
headless: false
livestream: 0
# physics / init knobs supported by the backend …
dt: 1/120
intiailize_steps: 30scene:
name: lab_pick_place
position: [0, 0, 0]
rotation: [1, 0, 0, 0]
base_config:
name: ground
stereotype: ground_plane
source: primitive
ground_size: [24, 24]
object_cfg_dict:
work_table:
stereotype: rigid
source: primitive
primitive_type: cuboid
primitive_size: [0.8, 1.2, 0.05]
position: [0.5, 0.0, 0.4]
mass: 5e3
# … more objects / sensors as needed
robot_cfg_dict:
franka_panda:
name: franka_panda
stereotype: general_robot
source: local
asset_path: asset://Franka/franka_panda.usd
position: [0, 0, 0]
init_joint_position:
panda_joint2: -0.52
panda_joint4: -1.57
actuator_cfg_dict:
arm:
joint_names_expr: ["panda_joint1", "panda_joint2", "…"]
stiffness: 8000.0
damping: 800.0
use_planner: true
planner_cfg:
stereotype: curobo
lazy_init: true
# …task:
name: pick_and_place_demo
description: Pick-and-place style task
goal_config:
stereotype: sequential_goals
# …
actions:
- name: open_gripper
stereotype: release
robot_name: franka_panda
ee_type: gripper
- name: pick_object
stereotype: pick
robot_name: franka_panda
target_name: target_box
pick_up_distance: 0.05
ee_type: gripper
pose_source: local
pose_data: ./grasp_pose.json
- name: place_object
stereotype: place
robot_name: franka_panda
target_name: work_table
pose_frame: world
ee_type: gripper
# …extension:
extension_cfg_dict:
session_recorder:
extension_type: record
stereotype: record
enable: true
# … topics / output paths
http_api:
extension_type: server
stereotype: server
enable: true
host: 0.0.0.0
port: 5000
debug: falsemanage and validate simulation elements and features via UI / code / config files.
Manage elements and feature switches with structured validation for consistency and reproducibility.
Support UI, code, and config-file entry points for different workflows and teams.
From scenes and entities to tasks and extensions—with user-defined configs and registrations.
Project scanning, paths, and asset resolution rules—the foundation for every run.
Backend selection, key parameters, and compatibility fields to unify access across simulators.
Maps/geometry/environment elements and reusable scene templates.
Task flow, actions/goals, and validation rules for composability and replayability.
Typed configs generate entities and components (robots, sensors, objects), with extensions and registration.
Module selection and parameter wiring for planning/control—easy to swap, reuse, and benchmark.
Recording/replay, benchmarks, ROS integration, and serviceization—enabled and orchestrated on demand.
Introduce custom fields and validation via extension points without breaking compatibility over time.
customize simulators, planners, generated elements, behavior goals and feature modules—with automatic registration.
Extensibility
Capabilities register under a shared contract; runtime assembly is driven by configuration so modules evolve independently while staying decoupled from the core simulator and task orchestration.
Extension types are declared and indexed for discovery and validation. New implementations can coexist with existing ones—better collaboration, compatibility, and safer iteration.
After configuration is loaded, instances and dependencies are bound by convention, wiring simulation pipelines, tasks, and extensions into one coherent runtime—with less repetitive manual wiring and integration code.
Extensible integration types
task execution, Benchmark, data record/replay, ROS communication, visual builder and cloud service—plus RL and teleoperation.
Run task workflows automatically and evaluate success, performance, and stability.
UniSim’s unified abstraction lets the same config and code run across diverse simulation backends.
Scenes, tasks, controllers, and extensions depend only on UniSim’s stable API—decoupled from concrete simulator implementations.
Step / reset / spawn / lifecycle: a stable boundary between application logic and backends.
Simulator backends


Choose options and copy the install command to match your machine, then run demos or your own scenes.