Isaac Sim Container Workflows¶
Working procedures for the Isaac Sim container: launching it in different modes, accessing it, iterating on scenes and scripts, managing images, and troubleshooting.
Reference for this container: Isaac Sim Docker Configuration — file structure, service architecture, launch configuration, environment variables, networking, GPU access, and volume mounts.
Launch Modes¶
Isaac Sim supports multiple launch modes:
1. Standard Launch (ROS 2 Integration)¶
Default mode with ROS 2 bridge:
What happens:
- Launches Isaac Sim with ROS 2 bridge
- Runs the launch script named by
ISAAC_SIM_SCRIPT_NAME(or, withISAAC_SIM_USE_STANDALONE=false, opens the USD inISAAC_SIM_GUI) - Publishes sensor topics to ROS 2
- Optionally auto-plays simulation (via
PLAY_SIM_ON_START)
2. Standalone Python Launch¶
Launch with standalone Python script:
Use cases:
- Custom simulation logic
- Advanced scene setup
- Programmatic control
3. GUI-Only Mode (isaac-sim-gui)¶
The isaac-sim-gui compose service opens Isaac Sim's full GUI editor
(runapp.sh — no Pegasus launch script, no drones) for USD/scene editing on
any asset:
(The service sits behind its own isaac-sim-gui profile, so both the
--profile flag and the service name are needed; it does not conflict with
the one-active-simulator rule.)
Use cases:
- Authoring/editing USD scenes and assets (see Pegasus Scene Setup)
- Inspecting assets without bringing up the robot stack
Not for flying: the service is deliberately not on airstack_network
(networks: !reset null in simulation/isaac-sim/docker/docker-compose.yaml),
so no DDS traffic reaches the robot containers and no PX4 is launched. To fly,
use airstack up --sim isaac.
Example overrides¶
# Launch without a window (headless)
airstack up --sim isaac --headless
# Don't auto-play simulation
airstack up isaac-sim --no-play
# Launch with standalone script
ISAAC_SIM_USE_STANDALONE=true ISAAC_SIM_SCRIPT_NAME=custom_scene.py airstack up isaac-sim
See the environment variables table for the full list of configuration variables.
Omniverse Credentials¶
Isaac Sim requires NVIDIA Omniverse credentials.
Setup¶
-
Create credentials file:
-
Edit with your credentials:
-
File is git-ignored (don't commit credentials!)
Getting Credentials¶
- Create account at NVIDIA Omniverse
- Use your NVIDIA account credentials
- Required for downloading assets and extensions
Accessing Isaac Sim¶
Via GUI (Default)¶
If DISPLAY is configured:
Via tmux Session¶
Connect to the container and attach to tmux:
# Connect to container
airstack connect isaac-sim
# Attach to Isaac Sim tmux session
tmux a -t isaac
Useful tmux commands:
Ctrl-b d- Detach from sessionCtrl-b [- Scroll mode (arrow keys to scroll logs)Ctrl-c- Stop Isaac Sim
Via Streaming (Headless)¶
For remote access, use Isaac Sim streaming:
WebRTC streaming:
Access via web browser.
Development Workflow¶
Iterating on Scenes¶
-
Edit scene files on host (they're mounted):
-
Reload in Isaac Sim:
- File → Open
-
Or restart container with new scene
-
Changes persist (files on host)
Testing Standalone Scripts¶
-
Create script:
-
Launch:
-
View output:
Debugging¶
Enable debug logging:
Edit user.config.json to increase log verbosity.
View logs:
Image Management¶
Pulling Pre-built Images¶
# Pull Isaac Sim image (the AirLab registry is public — no login needed)
docker compose -f simulation/isaac-sim/docker/docker-compose.yaml pull
Building from Source¶
# Build Isaac Sim image
docker compose -f simulation/isaac-sim/docker/docker-compose.yaml build
# Build with no cache
docker compose -f simulation/isaac-sim/docker/docker-compose.yaml build --no-cache
Note: Isaac Sim base image is large (~20GB). Initial build takes time.
Troubleshooting¶
Isaac Sim won't start:
- Check GPU:
nvidia-smion host - Verify NVIDIA Container Toolkit:
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi - Check disk space:
df -h(need 25GB+ free) - Review logs:
airstack logs isaac-sim
GUI not displaying:
- Check
DISPLAY:echo $DISPLAY(should be:0or:1) - Allow X11:
xhost +local:docker - Verify X11 socket mounted: Check docker-compose volumes
ROS 2 topics not visible:
- Verify containers on same network:
docker network inspect airstack_network - Check ROS 2 domain IDs match
- Inspect DDS:
fastdds.xmlconfiguration - Test connection:
ros2 topic listin Isaac Sim container
rclpy / _rclpy_pybind11 warnings when starting Kit with python.sh:
Why this happens: Kit-Python vs system Python ABI
Jazzy’s setup.bash puts Python 3.12 ROS packages on PYTHONPATH. Isaac’s python.sh uses Kit Python (~3.10). Importing system rclpy from the wrong interpreter causes ABI errors in the log (topics from Omnigraph may still work).
Standalone launch uses PYTHONPATH="$ISAAC_SIM_PYTHONPATH" in the tmux command ($$ISAAC_SIM_PYTHONPATH in docker-compose.yaml so Compose does not treat it as a host variable). See container .bashrc and docker-compose.yaml: it drops lib/python3.12/site-packages and appends the bridge’s internal rclpy path.
Performance issues:
- Reduce scene complexity
- Lower physics timestep
- Disable raytracing (Settings → Rendering)
- Close other GPU-intensive applications
Omniverse login fails:
- Verify credentials in
omni_pass.env - Check network connectivity
- Ensure NVIDIA account is active
Extension not loading:
- Verify
user.config.jsonenables extension - Check extension path in volume mounts
- Review Isaac Sim logs for extension errors
See Also¶
- Isaac Sim Docker Configuration - Container reference: files, services, environment variables, mounts
- Isaac Sim Overview - Isaac Sim capabilities and features
- Pegasus Scene Setup - Creating custom scenes
- Docker Workflow - General Docker operations