Skip to content

TRAILab/IsaacSim-Warehouse-Husky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Husky Navigation in Warehouse with Isaac Sim Simulation

This repository contains files for the simulation project built in Isaac Sim 4.5.0 for Clearpath Husky A200 robot navigation in a cusom warehouse environment. This projected has been tested on Linux Ubuntu 22.04.

Table of Contents

Technical Setup and Installations

Isaac Sim 4.5 Installation

To install Isaac Sim 4.5.0, system and driver requirements must be satisfied. These requirements are mentioned in Isaac Sim 4.5.0 Requirements.

You can also download and run the Isaac Sim Compatibility Checker 4.5.0, which is an application that checks whether the technical requirements for Isaac Sim 4.5.0 are met for your system. In order to download Isaac Sim Compatibility Checker 4.5.0, please visit Isaac Sim Compatibility Checker 4.5.0, move to "Latest Release" section, find "Isaac Sim Compatibility Checker" name and click on the corresponding operating system.

Note -- Here is the setup we had for our simulation project in Isaac Sim 4.5.0:

Component Version
Operating System Ubuntu 22.04.5
GPU NVIDIA GeForce RTX 4090
RAM ~ 32 GB
NVIDIA Driver 570.172.08
CUDA Toolkit 12.8
Python 3.10
ROS 2 Humble

Once the requirements are met, you can follow the Isaac Sim 4.5.0 installation instructions using the following link: Install Isaac Sim 4.5.0. To download Isaac Sim 4.5.0, please visit Isaac Sim 4.5.0, move to "Latest Release" section, find "Isaac Sim" name and click on the corresponding operating system.

After installing Isaac Sim, open the terminal and go to the folder where all the downloaded Isaac Sim files are placed. You can open the Isaac Sim GUI by simply running:

 ./isaac-sim.sh

Hub Workstation Cache

Hub Workstation Cache is needed for optimized and smooth functioning of the simulation. It is a service that helps speed up USD workflows on your local workstation.

To install and activate Hub Workstation Cache, follow the following link: Hub Workstation Cache

ROS 2 Installation and Activation in Isaac Sim

NVIDIA Isaac Sim provides a ROS 2 bridge for ROS system integration. As mentioned, ROS 2 Humble is used with Isaac Sim to help for robotic operations. You can visit the following link to install and activate ROS 2 in Isaac Sim: ROS and ROS 2 Installation.

In this link, you can focus on "Getting Started", "Running Native ROS" and "Enabling the ROS Bridge Extension" sections, but for further information, a full read is recommended.

It is also recommended to install ROS2 Humble first on your machine and then proceed to ROS 2 activation in Isaac Sim mentioned in the above provided link.

Loading Assets

To create a simulation in Isaac Sim, assets and components must be added. Theoretically, there are two options to load Isaac Sim assets.

Option 1: The simplest way to do that is to visit the link for Download Assets, and then, move to "Latest Release" section, find "Isaac Sim Assets" name and download the 3 packs if you have space in your system. After that, all the downloaded assets can be dragged and used inside of the simulation.

Option 2: Assets can also be loaded using the Omniverse Launcher App. To do that, you can follow the following video from around minute 6:00 to 9:12: Omniverse Tutorial. This demonstrates how to use **Nucleus" to connect to NVIDIA AWS servers where you can access online all the necessary assets to import in a simulation.

However, note that this option only works if you already have Omniverse Launcher App. Since Omniverse Launcher App is depricated since October 1st, 2025, further investigation is needed to figure out how to access the assests online.

Isaac Sim Tutorial

The main goal of creating a simulation in Isaac Sim is to import a robot inside a scene, incorporate ROS functionalities and also perform specific tasks related to an actual project.

To achieve that, you can consult ROS 2 Tutorials (Linux and Windows) for full tutorial about Isaac Sim.

Here are other useful resources:

Importing URDF for Husky A200 Robot to Isaac Sim

To import the URDF for the Husky robot in Isaac Sim, first you need to find an appropriate file with .urdfextension for your robot. However, if you only have access to the xacro file for your robot, you can convert a xacro file to a URDF file using the following command:

xacro xacro -o <output_name>.urdf <input_file>.urdf.xacro

Once you get the URDF file for your robot, you can follow the instructions mentioned in the following link to import the Husky robot to Isaac Sim: Import URDF

GUI Overview

Here is a short overview of the default GUI from Isaac Sim 4.5 on start-up. For more detailed tutorial about Isaac Sim 4.5 GUI environment, please visit: GUI

GUI Overview

Running Our Simulation Project

We will describe how to load and run our simulation project.

  1. Clone the repository:
git clone https://github.com/TRAILab/Isaac-sim-husky-navigation.git

In general, this would work, but if it doesn't use SSH keys to clone the repository successfully.

  1. Isaac Sim folder: Using one terminal, go to the folder where all the downloaded files for Isaac Sim 4.5 are placed. Make sure you perform the following:
source /opt/ros/humble/setup.sh 
  1. Project (cloned) repository: Open another terminal, go to the project repository. Perform the following:
source /opt/ros/humble/setup.sh
colcon build --symlink-install
source install/setup.bash
  1. Load Isaac Sim project: Using the terminal where you opened your Isaac Sim folder on, open the simulation GUI:
source /opt/ros/humble/setup.sh 
./isaac-sim.sh

Once the simulation GUI opens up, go to the menu bar, click on "File" > "Open", and a new window will open up. On the new window, navigate to the project folder and then go to Isaac-sim-husky-navigation/src/assets/. There are two files inside of the assets: warehouse_scenario_1.usd and warehouse_scenario_2.usd. We will describe these files and give recommendations on which one to open (click on).

Note that warehouse_scenario_1.usd contains simply the husky robot and the default warehouse environment. On the other hand, warehouse_scenario_2.usd contains the husky robot and our own custom complex warehouse environment that we created for the agentic RAG research project.

For simplicity, click to open warehouse_scenario_1.usd.

For both files, we imported the Isaac Sim assets online by connecting to AWS servers through "Nucleus" from the the Omniverse Launcher App. You can either do that or you can import assets from your local computer if you have locally downloaded all the Isaac Sim assets in your computer as mentioned in Loading Assets "Option 1".

Note: When you open a .usd file, you might notice that some Isaac Sim assets are not loaded. This is because we loaded all the Isaac Sim assets online through AWS servers. If an asset is not visible when the simulation from .usd file is loaded, go to "Stage" in the GUI, delete the asset that is not visible (by right-clicking and deleting the parent or the highest hierarchy corresponding to that asset), and then, reimport the same asset locally from the computer by dragging the .usd file associated with it to the "Stage" in GUI.

  1. Running the Navigation Stack: Now that the simulation and the warehouse_scenario_1.usd file is loaded, run the simulation. Check if you get any errors in red in the terminal where you opened your Isaac Sim folder on.

Once you see the simulation is running perfectly, go to the other terminal where you opened your project folder (cloned repository). To run the navigation stack, simply run the following:

ros2 launch husky_sim_navigation husky_navigation_ground_truth_with_amcl_simple_warehouse.launch.py 

After doing that, the RViz2 window will open showing the robot and the occupancy map as well as the point cloud from the LiDAR. To navigate to the point of your choice, simply click on "2D Goal Pose" in the sub-menu bar and click a location on the occupancy map (where it's white (nothing occupied)), and the robot should follow the path to that point selected (navigate to there).

Using Isaac Sim Inside a Docker container (Recommended for the STaR paper)

A Docker container can be used to load Isaac Sim and run our simulation scenarios. Two directories, docker and scripts, inside our main project directory (repository) can be used to build the Docker container. After cloning the main repository, place these two directories inside a new directory outside of the main project directory (repository).

The new directory must now contain the docker and scripts directories. Now, two other components must be added to the docker/isaac_sim directory. First, we need to add the compressed downloaded file representing the latest version of Isaac Sim (currently ** 5.1.0**). Download the latest version of Isaac Sim Second, download and unzip the compressed hub_workstation_cache.zip file representing the Hub Workstation for cache management of Isaac Sim simulation, and add it to docker/isaac_sim with the same directory name hub_workstation_cache (Download Hub Workstation Cache).

Now, we can build our Docker container:

  1. Open a terminal and go to the new directory containing the docker and scripts directories.

  2. Execute the follwing:

     ./scripts/docker_build.bash isaac_sim

    This could take minutes to be completed.

  3. Start the container:

     docker rm -f isaac-sim 2>/dev/null || true
     ./scripts/isaac_sim.bash /home/trailbot/data host
  4. Inside of the container, move to the Isaac Sim folder and start the full simulation window.

    cd /isaac-sim
    ./isaac-sim.sh

Now, to load our simulation scenarios (usd files), we need to also include some extra assets inside our project repository. This will be important especially to load the simulation scenario for the STaR paper. So, we will focus on how to load that simulation scenario. Download the compressed file representing the extra Isaac Sim assets (Download Extra-Assets), unzip it and then place the directory inside Isaac-sim-husky-navigation/src under the name ExtraAssets.

To find the usd file representing the STaR siimulation scenario, we can first look at the the following line inside scripts/isaac_sim.bash:

  -v ${HOST_NAV_REPO}:${PROJECT_ROOT}/src/Isaac-sim-husky-navigation:rw

This makes the host folder, which is in this case our main project repository, available inside the container, which is availble at the new directory you created that contains docker and scripts folders. More precisely, this line specifically makes the preject repository available at the src/Isaac-sim-husky-navigation inside the new directory created that contains docker and scripts folders.

Therefore, to load the usd file representing the STaR siimulation scenario, after you see the full Isaac Sim simulation window (after running ./isaac-sim.sh), navigate to File > Open. Find the directory of your container and navigate to src/Isaac-sim-husky-navigation/src/assets. Inside assets you can click to load an open the simulation scenario desired. To load the STaR paper simulation scenario, click on warehouse_scenario_2.usd. When you load this for the first time, it might take some time and you might have to redo it because of "Force Close" message, but it should eventually load-up.

Activating the Navigation Stack of a Simulation Running inside Docker Container

It is possible to activate the navigation stack inside the host environment for the simulation scenario running inside the Docker container. To do that, first, make sure the host and Docker container use the same ROS domain ID. This is key to allow ROS operations and the navigation stack to work successfully. Inside /scripts/isaac_sim.bash, the ROS domain ID (ROS_DOMAIN_ID) is set to 42. So, the ROS domain ID inside the Docker container is 42. To also set this inside host environment, open a new terminal and execute export ROS_DOMAIN_ID=42 (if you want permanent setting, you can set ROS domain ID inside ~/.bashrc as well and perform the source command). Now, to activate the navigation stack inside host environment, inside the new terminal, move to your main project repository (Isaac-sim-husky-navigation) and execute:

unset COLCON_PREFIX_PATH
unset AMENT_PREFIX_PATH
unset CMAKE_PREFIX_PATH
source /opt/ros/humble/setup.bash
colcon build --symlink-install
source install/setup.bash 

Now, inside the Docker container, run the simulation scenario that is opened, and inside the terminal for host environment, run the following to activate the navigation stack for the STaR paper simulation scenario:

ros2 launch husky_sim_navigation husky_navigation_ground_truth_with_amcl_complex_warehouse.launch.py  

Now, the RViz2 window will open showing the robot and the occupancy map as well as the point cloud from the LiDAR. To navigate to the point of your choice, simply click on "2D Goal Pose" in the sub-menu bar and click a location on the occupancy map (where it's white (nothing occupied)), and the robot should follow the path to that point selected (navigate to there).

Troubleshooting

Here are some issues that might be faced during loading and running the simulation:

  1. Isaac Sim is a huge simulation application. So, sometimes when you open the GUI or load a .usd file, it might ask you to "Force Quit" or "Wait". Press "Wait" and if it doesn't work, press "Force Quit" and restart the process again. The simulation also takes huge chunk of memory. So, make sure you do not leave the GUI open for too long. When not using the GUI, close it and you can re-open it later. Sometimes even a restart of the computer is needed if the simulation GUI is slow or not responding.

  2. Sometimes you may need to run a clean colcon build. To do that simply execute:

colcon build --symlink-install --cmake-clean-cache
  1. Isaac Sim GUI and assets loading requires opening a lot of watched folders for its extensions. Your computer might have a limit on the number of files it can watch, which could be insufficient for what Isaac Sim expects. This causes an issue called inotify exhaustion. Whenever you see an error like this
/home/trailbot/isaacsim/exts/isaacsim.ros2.bridge/isaacsim/ros2/bridge/ogn/python/nodes/icons: errno=28/No space left on device

simply solve the inotify exhaustion by executing:

# temporary fix (lasts until reboot)
sudo sysctl -w fs.inotify.max_user_watches=1048576
sudo sysctl -w fs.inotify.max_user_instances=4096
sudo sysctl -w fs.inotify.max_queued_events=1048576

Then, restart Isaac Sim, and the error would disappear.

If you face any other issues that you are not sure what to do, you can either contact me via slack or via email: mahan.mohammadi@alumni.utoronto.ca

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors