Skip to main content

Lesson 1: Isaac Sim Basics and Setup

Learning Objectives

By the end of this lesson, students will be able to:

  • Install and configure NVIDIA Isaac Sim
  • Understand the Omniverse platform and USD format
  • Create basic simulation environments
  • Load and control robots in Isaac Sim

Introduction to NVIDIA Isaac Sim

NVIDIA Isaac Sim is a high-fidelity simulation application built on NVIDIA Omniverse, designed for developing, testing, and validating AI-based robotic applications. It provides photorealistic rendering, accurate physics simulation, and seamless integration with the Isaac ecosystem.

Key Features of Isaac Sim

  1. Photorealistic Rendering: RTX-accelerated rendering for synthetic data generation
  2. Accurate Physics: PhysX engine for realistic physical interactions
  3. USD Support: Universal Scene Description for complex 3D scenes
  4. Synthetic Data Generation: Tools for creating labeled datasets
  5. ROS 2 Integration: Seamless integration with ROS 2 workflows
  6. AI Training Environment: Framework for reinforcement learning and imitation learning

System Requirements

Isaac Sim has significant hardware requirements due to its photorealistic rendering:

Minimum Requirements

  • GPU: NVIDIA RTX 4070 Ti (12GB VRAM) or higher
  • CPU: Intel Core i7 (13th Gen) or AMD Ryzen 9
  • RAM: 32 GB (64 GB recommended)
  • OS: Ubuntu 22.04 LTS or Windows 10/11
  • GPU: NVIDIA RTX 4090 (24GB VRAM) or RTX A6000
  • CPU: Intel Core i9 or AMD Threadripper
  • RAM: 64 GB or more
  • Storage: Fast NVMe SSD for scene loading

Installing Isaac Sim

Prerequisites

  1. Install NVIDIA GPU drivers (535 or later)
  2. Install CUDA Toolkit (12.0 or later)
  3. Ensure RTX-capable GPU is available

Installation Steps

  1. Download Isaac Sim from NVIDIA Developer website

  2. Extract the package:

    tar -xzf isaac-sim-2023.1.0.tar.gz
  3. Set up environment:

    cd isaac-sim
    export ISAACSIM_PATH=$(pwd)
  4. Install dependencies:

    python -m pip install -e .

Alternative: Docker Installation

For easier setup, you can use the Isaac Sim Docker container:

docker run --gpus all -it --rm \
--env "ACCEPT_EULA=Y" \
--env "ISAACSIM_USERNAME=your_username" \
--env "ISAACSIM_PASSWORD=your_password" \
--volume $HOME/isaac-sim-cache:/isaac-sim/cache/Kit \
--volume $HOME/isaac-sim-logs:/isaac-sim/logs \
--volume $HOME/isaac-sim-data:/isaac-sim/data \
--net=host \
--privileged \
--pid=host \
-e "DISPLAY" \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /tmp/.docker.xauth:/tmp/.docker.xauth:rw \
-e XAUTHORITY=/tmp/.docker.xauth \
nvcr.io/nvidia/isaac-sim:2023.1.0

Understanding Omniverse and USD

Universal Scene Description (USD)

USD is Pixar's scene description format that Isaac Sim uses for representing 3D scenes:

# Example USD file (scene.usda)
def Xform "Robot" (
prepend references = @./franka_panda.usd@
)
{
def Xform "base"
{
def Xform "link0"
{
def Xform "joint0"
{
# Joint properties
}
}
}
}

USD Key Concepts

  • Prims (Primitives): Basic objects in the scene
  • Properties: Attributes of prims (position, color, etc.)
  • Relationships: Connections between prims
  • Variants: Different configurations of the same object
  • Payloads: Deferred loading of heavy assets

Getting Started with Isaac Sim

Launch Isaac Sim

# Direct launch
./isaac-sim/python.sh

# Or via Omniverse Launcher (recommended)

Basic Interface Overview

When Isaac Sim launches, you'll see:

  1. Viewport: 3D scene rendering window
  2. Stage Panel: Scene hierarchy and object management
  3. Property Panel: Selected object properties
  4. Timeline: Animation and simulation controls
  5. Console: Scripting and logging output

Creating Your First Scene

Using the Isaac Sim Assets

Isaac Sim comes with a rich library of assets:

  1. Robots: Franka Panda, UR5, ABB, etc.
  2. Environments: Warehouse, office, home scenes
  3. Objects: Household items, tools, furniture
  4. Sensors: Cameras, LiDAR, IMU models

Loading a Robot

  1. Open Isaac Sim
  2. Go to Window → Isaac Examples → 1a - Robot Bridge → Franka Cube Pick
  3. This loads a Franka robot with a cube in a simple environment

Basic Scene Setup Script

Here's a Python script to programmatically create a simple scene:

import omni
from omni.isaac.core import World
from omni.isaac.core.utils.stage import add_reference_to_stage
from omni.isaac.core.utils.nucleus import get_assets_root_path
from omni.isaac.franka import Franka
from omni.isaac.core.utils.prims import get_prim_at_path
import numpy as np

# Create a world object
my_world = World(stage_units_in_meters=1.0)

# Get the assets root path
assets_root_path = get_assets_root_path()

# Add a robot to the stage
if assets_root_path is not None:
# Load a Franka robot
my_franka = my_world.scene.add(
Franka(
prim_path="/World/Franka",
name="my_franka",
position=np.array([0, 0, 0]),
orientation=np.array([0, 0, 0, 1])
)
)

# Add a ground plane
my_world.scene.add_ground_plane("/World/GroundPlane")

# Play the simulation
my_world.reset()

USD Scene Structure

Basic USD Scene Example

#usda 1.0
(
metersPerUnit = 1
upAxis = "Y"
)

def Xform "World"
{
def Xform "GroundPlane"
{
def PhysicsGroundPlane "GroundPlane"
{
prepend references = </Isaac/Props/Prismarine/ground_plane.usd>
}
}

def Xform "Robot"
{
def Xform "Franka"
{
prepend references = </Isaac/Robots/Franka/franka_alt_fingers.usd>
}
}

def Xform "Light"
{
def DistantLight "DistantLight"
{
float intensity = 500
color color = (0.9, 0.9, 0.9)
}
}
}

Isaac Sim Extensions

Isaac Sim uses extensions to provide functionality:

Key Extensions

  • Isaac Sim Robotics: Core robotics functionality
  • Isaac Sim Sensors: Camera, LiDAR, IMU simulation
  • Isaac Sim Navigation: Path planning and navigation
  • Isaac Sim Manipulation: Grasping and manipulation
  • Isaac Sim Gym: Reinforcement learning environments

Enabling Extensions

Extensions can be managed through:

  1. Window → Extensions menu
  2. Programmatically in scripts
  3. Through configuration files

Practical Exercise: Basic Robot Setup

Create a simple scene with a robot and basic environment:

  1. Launch Isaac Sim
  2. Create a new stage (File → New Stage)
  3. Add a ground plane using the Create menu
  4. Add a robot (e.g., Franka Panda) from the Isaac assets
  5. Add a light source for proper illumination
  6. Run the simulation to see the robot in the environment

Python Script for the Exercise

import omni
from omni.isaac.core import World
from omni.isaac.core.utils.stage import add_reference_to_stage
from omni.isaac.core.utils.nucleus import get_assets_root_path
from omni.isaac.franka import Franka
from omni.isaac.core.utils.prims import get_prim_at_path
import numpy as np

# Initialize the world
my_world = World(stage_units_in_meters=1.0)

# Get assets root path
assets_root_path = get_assets_root_path()

if assets_root_path is not None:
# Add ground plane
my_world.scene.add_ground_plane("/World/GroundPlane", size=10.0)

# Add a Franka robot
franka_robot = my_world.scene.add(
Franka(
prim_path="/World/Franka",
name="franka",
position=np.array([0.0, 0.0, 0.0]),
)
)

# Reset the world to apply changes
my_world.reset()

# Print robot information
print("Robot added successfully!")
print(f"Robot position: {franka_robot.get_world_pose()[0]}")

# To run simulation continuously
while simulation_app.is_running():
my_world.step(render=True)
if my_world.is_playing():
if my_world.current_time_step_index == 0:
my_world.reset()

Troubleshooting Common Issues

Rendering Issues

  • Ensure GPU drivers are up to date
  • Check VRAM availability (minimum 8GB recommended)
  • Verify RTX-capable GPU is being used

Performance Issues

  • Reduce scene complexity
  • Lower rendering quality settings
  • Use simpler physics models during development

Asset Loading Problems

  • Verify Omniverse connection
  • Check assets root path
  • Ensure proper permissions for asset directories

Summary

This lesson introduced NVIDIA Isaac Sim, its installation, and basic scene creation. Isaac Sim provides a powerful platform for robotics simulation with photorealistic rendering and accurate physics.

Next Steps

In the next lesson, we'll explore synthetic data generation and how to create training datasets for AI models using Isaac Sim.