Most FastSim control sources are asynchronous, but a small script does not always need asyncio. This example uses the blocking FastSimRun facade for application lifecycle operations.

Prerequisites

  • Python 3.11
  • FastSim 0.1.0a6
  • UniRoboSim Core 0.10.0
  • UniRoboSim Isaac Lab adapter 0.10.1
  • A working Isaac Lab 3.0 / Isaac Sim 6.0 installation

Run from this directory:

bash
python main.py

An Isaac Lab window remains visible while the program starts, pauses, advances one physics tick, and resets the demo arm.

Code flow

python
with fastsim.open(RUN_FILE) as simulation:

Compiles the Run, owns one application-loop thread, and guarantees cleanup when the block exits.

python
simulation.start()
simulation.pause()
simulation.single_step()
simulation.reset()

These are blocking calls. Each returns an immutable application snapshot. The runtime remains paused after single_step() and after reset().

Use this facade for scripts that only need lifecycle control. Use fastsim.app(...) when you need direct joint operations, scene queries, camera reads, or integration with another asynchronous system.

Verification level

Validated on the real visible Isaac Lab backend: start, pause, one physics step, reset, and clean context-manager shutdown.

Next: 13 · Scenario and Run information.