Verification level
Visible native Isaac. The Run requests runtime.launch_profile: visible; a valid
run opens the native Isaac application and reads state through the FastSim API.
Prerequisites
- FastSim
0.1.0a6, UniRoboSim Core0.10.0, andunirobosim-isaaclab==0.10.1in the same environment. - Isaac Lab 3.0 / Isaac Sim 6.0 with compatible Python 3.12.
- An NVIDIA GPU and a working display.
Configuration
The runtime block requests a visible native window and chooses 60 Hz physics and
control clocks. Under scenario.scene.robots, alias arm selects the shared
two-joint USD. pose places
its root in the world. initial_state.joints sets both declared joints to zero.
Each key has one job:
robots: # All robot instances in this scene.
arm: # Alias used later by the control API.
use: robot://fastsim/demo-two-joint-arm
pose:
xyz_m: [0.0, 0.0, 0.0] # Root translation in world metres.
quat_xyzw: [0.0, 0.0, 0.0, 1.0] # Root rotation in XYZW order.
initial_state:
joints:
joint_1: 0.0 # Initial revolute position in radians.
joint_2: 0.0
Python flow
asyncio.run(main())creates the caller's async event loop.fastsim.app(RUN_FILE)compiles the Run and creates a lazy application facade.async withguarantees backend cleanup, including when the body raises an error.await simulation.start()prepares the world and starts continuous physics.run_info()returns stable Run identity; it does not expose private internals.pause()followed bysingle_step()establishes one explicit committed boundary, so the following state read has one unambiguous simulation tick.state()returns one coherent world/observation envelope from the same generation and simulation tick at that boundary.- The final
printlists the portable world-state field paths that this backend published.
Run it
cd demo/fundamentals/02_start_and_read_state
fastsim config validate run.yaml --json
python main.py
Expected result: a native Isaac window opens. The terminal reports application state
running, backend isaaclab, a positive generation, a non-negative tick, and
robots.arm.joint_position among the portable world fields. The window closes after
the context manager cleans up the application.
Common errors
backend provider ... not installed: install the Isaac Lab Adapter into the exact Python environment running the script.- No native window: confirm
runtime.launch_profile: visible,DISPLAY, and GPU access. declared joint names ...: the component manifest and USD joint names differ.latest world and observation snapshots do not share one committed tick: preserve thepause()andsingle_step()boundary used by this example.
Next
Continue with 03 — Lifecycle controls.