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:
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
with fastsim.open(RUN_FILE) as simulation:
Compiles the Run, owns one application-loop thread, and guarantees cleanup when the block exits.
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.