Pollux Logo

Isaac Lab – Creating an Empty Simulation Scene

Isaac Lab is a reinforcement learning (RL) framework built on top of NVIDIA Isaac Sim, designed to simplify the creation and management of simulated robotics environments.

In this post, we’ll walk through how to build the most basic example in Isaac Lab: an empty simulation scene.

Although simple, this example introduces essential components such as:

  • CLI configuration
  • SimulationCfg setup
  • SimulationContext initialization
  • Running a rendering + physics loop

Mastering this foundation will help you scale to more complex simulations later on.

https://isaac-sim.github.io/IsaacLab/main/source/tutorials/00_sim/create_empty.html

Using CLI in Isaac Sim

Image

Isaac Lab is primarily designed to run in a command-line interface (CLI) environment to optimize performance and scalability.

Image

The AppLauncher enables customized runtime configurations using CLI arguments.

Common CLI flags include:

  • -headless: Run without GUI
  • -device cuda: Use CUDA-capable GPU
  • -enable_cameras: Activate camera sensors
  • -livestream: Enable live streaming
  • -verbose / -info: Debug and log output
  • -experience: Load predefined environment JSONs

argparse로 CLI 인자 처리

Image

You can use Python’s argparse to handle CLI inputs:

Image

Then launch the simulation with:

Image

This initializes the Omniverse simulation app and gives you control over its behavior.

Simulation Configuration and Context

ImageImage

To launch a simulation, you’ll need two key components:

1. SimulationCfg

Isaac Lab’s default simulation configuration class.

It defines:

  • device: Target device (e.g., "cpu" or "cuda:0")
  • dt: Physics time step (e.g., 0.01 = 100Hz)
  • physics_scene: Settings like gravity, collision rules, and friction
Image

2. SimulationContext

This wraps the actual simulation engine.

It uses the config to initialize the simulation backend.

Image

You can later call methods like sim.play(), sim.pause(), or sim.step() to control the simulation flow.

Setting the Camera View

Image

To visualize the simulation properly, set the camera position using:

Image
  • First argument: Camera position [x, y, z]
  • Second argument: Look-at target position

This determines the initial viewpoint in the scene.

Resetting the Simulation

Image
Before you start simulating, always call:

sim.reset()

This initializes the simulation timeline and avoids errors caused by uninitialized physics handles.

Failing to reset might lead to crashes or invalid behavior.

Main Simulation Loop

Once everything is initialized, use a loop to run the simulation:

while simulation_app.is_running():

sim.step()

print("Step completed")

  • sim.step() executes one physics frame
  • print() provides step-by-step logs (especially useful in headless mode)

This loop is the heartbeat of your simulation.

Conclusion

This tutorial walks you through the foundational steps for creating an empty simulation scene in Isaac Lab.

While basic, it introduces key components that will be reused and expanded in more complex examples:

  • Running Isaac Sim using CLI with AppLauncher
  • Using SimulationCfg and SimulationContext
  • Setting up camera views
  • Executing the simulation loop in a clean structure

Mastering this setup will prepare you for more advanced tasks like:

  • Spawning robots
  • Adding articulated joints and sensors
  • Integrating reinforcement learning policies
  • Managing large-scale multi-agent environments

Share this post:

Copyright 2025. POLLUX All rights reserved.