Skip to content

Commit cdd79e2

Browse files
chao11111nevalsar
andauthored
Add NVIDIA Isaac Sim Setup and ROS2 Workflow guide (#229)
This PR adds a comprehensive guide for NVIDIA Isaac Sim setup and ROS2 integration for MRSD projects. - Includes installation steps for local and remote (headless) workstations. - Covers scene management, robot model imports, and sensor setup. - Documents the Action Graph workflow for ROS 2 connectivity. - Provides a Nav2 integration example. --------- Co-authored-by: Nevin Valsaraj <[email protected]>
1 parent d62c66f commit cdd79e2

File tree

7 files changed

+185
-0
lines changed

7 files changed

+185
-0
lines changed

_data/navigation.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ wiki:
261261
url: /wiki/simulation/Spawning-and-Controlling-Vehicles-in-CARLA
262262
- title: NDT Matching with Autoware
263263
url: /wiki/simulation/NDT-Matching-with-Autoware/
264+
- title: NVIDIA Isaac Sim Setup and ROS2 Workflow
265+
url: /wiki/simulation/simulation-isaacsim-setup/
264266
- title: Interfacing
265267
url: /wiki/interfacing/
266268
children:
1.23 MB
Loading
1.8 MB
Loading
480 KB
Loading
782 KB
Loading

wiki/simulation/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ This section focuses on **simulation tools, techniques, and environments** for r
2121
- **[Simulating Vehicles Using Autoware](/wiki/simulation/simulating-vehicle-using-autoware/)**
2222
Details the process of simulating an Ackermann-drive chassis in Autoware. Includes configuring vehicle models, adding sensors, customizing worlds in Gazebo, and using path-planning algorithms like Pure Pursuit and OpenPlanner. Explores sensor simulation and integration with existing ROS packages for enhanced functionality.
2323

24+
- **[NVIDIA Isaac Sim Setup and ROS2 Workflow](/wiki/simulation/simulation-isaacsim-setup/)**
25+
Provides a complete guide for installing Isaac Sim, configuring sensor modules, and integrating it with ROS 2 frameworks like Nav2 and MoveIt. Covers both local and remote (headless) installations, and demonstrates scene management and robot model imports for MRSD projects.
26+
2427
- **[Spawning and Controlling Vehicles in CARLA](/wiki/simulation/Spawning-and-Controlling-Vehicles-in-CARLA/)**
2528
A hands-on tutorial for spawning and controlling vehicles in the CARLA simulator. Covers connecting to the CARLA server, visualizing waypoints, spawning vehicles, and using PID controllers for motion control. Demonstrates waypoint tracking with visual aids and includes example scripts for quick implementation.
2629

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
---
2+
date: 2026-03-10
3+
title: NVIDIA Isaac Sim Setup and ROS2 Workflow for MRSD Projects
4+
---
5+
6+
NVIDIA Isaac Sim is a high-fidelity robotics simulator built on Omniverse, enabling realistic sensor modeling, physics simulation, and ROS 2 integration for autonomous systems.
7+
8+
This tutorial provides a complete guide for MRSD teams to install Isaac Sim on both local and remote workstations, configure the Action Graph for simulation logic, attach sensors such as cameras and LiDAR, and connect the simulator to ROS 2 frameworks like Nav2 and MoveIt.
9+
10+
By following this tutorial, readers will learn to build fully integrated simulation pipelines suitable for perception, planning, and control workflows in MRSD projects.
11+
12+
## Key Concepts and Background
13+
14+
Isaac Sim sits at the intersection of several important technologies:
15+
16+
- **USD (Universal Scene Description)** forms the core data representation in Omniverse.
17+
- **PhysX** provides physically accurate simulation of rigid-body dynamics.
18+
- **RTX** ray tracing enables photorealistic sensor simulation.
19+
- **ROS 2** provides middleware that enables distributed autonomy modules.
20+
21+
Isaac Sim is fundamentally a USD-native simulator. Robot models imported as USD deliver far more reliable behavior than raw URDFs.
22+
This is an important point when integrating perception or planning algorithms on ROS2.
23+
If you are unfamiliar with USD concepts, refer to NVIDIA’s USD primer for an introduction.
24+
25+
26+
27+
## Installation and Initial Setup
28+
The following sections detail the necessary steps for installing and configuring Isaac Sim on both local and remote platforms.
29+
30+
### Please check Isaac Sim Requreiments for system requriement and compatibility
31+
[System Requirements](https://docs.isaacsim.omniverse.nvidia.com/4.5.0/installation/requirements.html#isaac-sim-short-requirements)
32+
33+
34+
### Local Workstation Installation
35+
1. Download the Latest Release of Isaac Sim to the default Downloads folder.
36+
37+
2. Unzip the package to the recommended Isaac Sim root folder and Run the Isaac Sim App Selector.
38+
39+
3. Run the commands below in Terminal for Linux.
40+
````bash
41+
mkdir ~/isaacsim
42+
cd ~/Downloads
43+
unzip "isaac-sim-standalone-4.5.0-linux-x86_64.zip" -d ~/isaacsim
44+
cd ~/isaacsim
45+
./post_install.sh
46+
./isaac-sim.selector.sh
47+
````
48+
49+
50+
51+
52+
### Remote/Headless Workstation Configuration
53+
For MRSD teams utilizing powerful remote servers without a connected monitor, Isaac Sim must be run in headless mode.
54+
55+
- Setup and install the [container prerequisites](https://docs.isaacsim.omniverse.nvidia.com/4.5.0/installation/install_container.html#container-setup).
56+
1. Install NVIDIA Driver
57+
2. Install Docker
58+
3. Install the NVIDIA Container Toolkit
59+
- Pull the Isaac Sim Container:
60+
````bash
61+
docker pull nvcr.io/nvidia/isaac-sim:4.5.0
62+
````
63+
64+
- Run the Isaac Sim container with an interactive Bash session:
65+
````bash
66+
docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
67+
-e "PRIVACY_CONSENT=Y" \
68+
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
69+
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
70+
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
71+
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
72+
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
73+
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
74+
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
75+
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
76+
nvcr.io/nvidia/isaac-sim:4.5.0
77+
````
78+
- Start Isaac Sim with native livestream mode:
79+
````bash
80+
./runheadless.sh -v
81+
````
82+
83+
84+
## Creating and Managing Scenes
85+
86+
Isaac Sim provides several sample scenes such as **industrial warehouses, office interiors, and outdoor blocks** that simplify early development.
87+
88+
- Load an example scene, simple room:
89+
````bash
90+
Create → Environment → Simple Room
91+
````
92+
![simple room](/wiki/simulation/assets/images/isaac_simpleroom.png)
93+
94+
You can browse other scene samples in Isaac Sim Asset Browser. It is accessible from the **Window > Browser tab.**
95+
96+
## Importing Robot Models
97+
98+
NVIDIA Isaac Sim supports a wide range of robots with differential bases, form factors, and functions.
99+
100+
These robots can be categorized as **wheeled robots, holonomic robots, quadruped robots, robotic manipulator and aerial robots (drones)**.
101+
102+
You can browse these robots in Isaac Sim Asset Browser under Robots folder.
103+
It is accessible from the **Window > Browser tab.**
104+
105+
For example, a popular wheeled robot for navigation is Nova Carter. We can import from the Robots/Carter/nova_carter.usd
106+
![nova carter](/wiki/simulation/assets/images/carter.png)
107+
108+
Here are some properties that can be tuned to correct the robot's behavior:
109+
110+
111+
- **Frictional Properties**
112+
113+
If your robot’s wheels are slipping, try changing the friction coefficients of the wheels and potentially the ground as well following steps [in Add Simple Objects](https://docs.isaacsim.omniverse.nvidia.com/4.5.0/gui/tutorial_intro_simple_objects.html#isaac-sim-app-tutorial-intro-simple-objects).
114+
115+
- **Physical Properties**
116+
117+
If no explicit mass or inertial properties are given, the physics engine will estimate them from the geometry mesh. To update the mass and inertial properties, find the prim that contains the rigid body for the given link (You can verify this by finding Physics > Rigid Body under its property tab). If it already has a “Mass” category under its Physics property tab, modify them accordingly. If there isn’t already a “Mass” category, you can add it by clicking on the +Add button on top of the Property tab, and select Physics > Mass.
118+
119+
- **Joint Properties**
120+
121+
If your robot is oscillating at the joint or moving too slow, take a look at the stiffness and damping parameters for the joints. High stiffness makes the joints snap faster and harder to the desire target, and higher damping smoothes but also slows down the joint’s movement to target. For pure position drives, set relatively high stiffness and low damping. For velocity drives, stiffness must be set to zero with a non-zero damping.
122+
123+
## Sensor Setup and Streaming
124+
125+
NVIDIA Isaac Sim also supports many realistic sensors modules, such as **stereo cameras, Lidars, IMU and more.** The sensor digital twins can be found in the **asset browser under the Sensors tab.**
126+
127+
For example, creating a Camera Sensor:
128+
To create the camera from the menu: **Create>Sensors>Camera and Depth Sensors>Intel>Intel Realsense D455**.
129+
The Intel Realsense Depth Camera D455 consists of multiple RGB and depth image sensors and a 6-axis IMU.
130+
![realsense](/wiki/simulation/assets/images/realsense.png)
131+
132+
[Camera, RTX, Physics Based Sensors](https://docs.isaacsim.omniverse.nvidia.com/4.5.0/sensors/index.html#sensors)
133+
134+
### Connecting to ROS2
135+
Isaac Sim connects to ROS 2 through the ROS 2 Bridge extension. One way is using ROS2 OmniGraph Nodes. Isaac Sim provides OmniGraph (OG) nodes that allow simulation data to be connected with ROS 2 topics. OG nodes encapsulate small computational functions and can be combined in an Action Graph to publish sensor data, broadcast transforms, or receive robot commands. Common templates such as TF publishers, camera publishers, and clock publishers can be added directly to a scene. Developers may also create custom OG nodes in Python or C++ for project-specific ROS 2 integrations.
136+
137+
[Commonly Used Omnigraph Shortcuts](https://docs.isaacsim.omniverse.nvidia.com/4.2.0/advanced_tutorials/tutorial_advanced_omnigraph_shortcuts.html#commonly-used-omnigraph-shortcuts)
138+
139+
- Example:[ROS 2 Clock Publisher Action Graph](https://docs.isaacsim.omniverse.nvidia.com/4.2.0/ros2_tutorials/tutorial_ros2_clock.html#running-ros-2-clock-publisher)
140+
141+
A simple Action Graph for publishing simulation time typically includes:
142+
143+
- On Playback Tick – triggers updates every simulation frame
144+
145+
- Isaac Read Simulation Time – outputs the current simulation time
146+
147+
- ROS 2 Publish Clock – publishes the time to a ROS 2 /clock topic
148+
149+
Simulation time is important because ROS 2 nodes often require synchronized time sources that differ from real-world system time.
150+
151+
## ROS2 Navigation
152+
153+
### Nav2 Setup
154+
155+
This diagram shows the ROS2 messages required for Nav2:
156+
![nav2](/wiki/simulation/assets/images/nav2.png)
157+
158+
1. Install Nav2, refer to the [Nav2 installation page](https://docs.nav2.org/getting_started/index.html#installation).
159+
160+
2. Enable the **omni.isaac.ros2_bridge Extension** in the Extension Manager window by navigating to Window > Extensions.
161+
162+
3. Generate Occupancy Map for Environment
163+
- Omniverse Isaac Sim mapping extension supports 2D occupancy map generation for a specified height.
164+
- [Occupancy Map Generator](https://docs.isaacsim.omniverse.nvidia.com/4.2.0/features/ext_omni_isaac_occupancy_map.html#ext-omni-isaac-occupancy-map)
165+
166+
4. Launch Nav2 with Pre-generated Map
167+
A more detailed example here: [Nav2 with Nova Carter in Small Warehouse](https://docs.isaacsim.omniverse.nvidia.com/4.2.0/ros2_tutorials/tutorial_ros2_navigation.html#nav2-with-nova-carter-in-small-warehouse)
168+
````bash
169+
ros2 launch carter_navigation carter_navigation.launch.py
170+
````
171+
5. Click on the Navigation2 Goal button and then click and drag at the desired location point in the map. Nav2 will generate a trajectory and the robot starts moving towards its destination.
172+
173+
174+
175+
## References
176+
- [Isaac Sim Documentation 4.2.0](https://docs.isaacsim.omniverse.nvidia.com/4.2.0/ros2_tutorials/index.html#ros-2-tutorials-linux-windows)
177+
- [Isaac Sim Documentation 4.5.0](https://docs.isaacsim.omniverse.nvidia.com/4.5.0/ros2_tutorials/index.html#ros-2-tutorials-linux-and-windows)
178+
- [Nav2, Open Navigation](https://docs.nav2.org/getting_started/index.html#navigating)
179+
-[Turtlebot3 bringup](https://emanual.robotis.com/docs/en/platform/turtlebot3/bringup/#bringup)
180+

0 commit comments

Comments
 (0)