This edition focuses on integrating ROS2 Humble with Isaac Sim on Ubuntu 22.04, specifically using ROS2 Humble and Isaac Sim 4.0.0. This integration enables powerful simulation capabilities for robotics development, bridging the gap between virtual simulation and real-world application.

Important Note: Ensure your system meets the requirements for Ubuntu 22.04, ROS2 Humble, and Isaac Sim 4.0.0 to avoid compatibility issues.

Documentation

For detailed setup and installation instructions, refer to the following resources:

First-Time Setup

Getting started with Isaac Sim involves a few critical steps to ensure smooth installation and operation.

Installation Instructions

Step 1: Check Compatibility

Before you begin, review the Nvidia Isaac Sim Compatibility to ensure your hardware and software meet the necessary requirements.

Step 2: Download Omniverse

  1. Visit Omniverse Downloads to download the Omniverse Launcher.
  2. Make the launcher executable:
    sudo chmod +x omniverse-launcher-linux.AppImage
  3. Install necessary packages:
    sudo apt update && sudo apt install fuse
  4. Run the launcher by double-clicking the AppImage file.
  5. Disable IOMMU: (This step is required for some systems. Skip if not needed.)
    sudo bash -c 'echo GRUB_CMDLINE_LINUX="amd_iommu=off" >> /etc/default/grub'
        sudo update-grub
        sudo reboot

Step 3: Install Components

Using the Omniverse Launcher, install the following essential components:

  • Cache
  • Nucleus
  • Isaac Sim

Step 4: Launch Isaac Sim

After installation, you can launch Isaac Sim from the Omniverse Launcher.

ROS2 Interfacing

Warning: Ensure all necessary terminals are started and sourced before launching Isaac Sim to avoid errors with ROS2 commands.

ROS2 - Adding Environment Variables

Add the following lines to your .bashrc file to set up the necessary environment variables:

# Isaac Sim ROS Variables
    export ROS_DOMAIN_ID=0
    export FASTRTPS_DEFAULT_PROFILES_FILE=/home/administrator/issac_sim/fastdds.xml

Install dependencies and build your ROS2 workspace with the following commands:

rosdep install -i --from-path src --rosdistro humble -y
    colcon build --symlink-install
    source install/setup.bash

ROS2 - Configuration in Isaac Sim

Enable Extensions

  1. Go to Windows -> Extension Manager.
  2. Enable the following extensions:
    • ROS2 Bridge
    • ROS2 Robot Description URDF

Set Up Environment

  1. Navigate to Create -> Isaac -> Environment -> Grid Room.

ROS2 - Importing the Robot

  1. Use the URDF Importer:
    • Navigate to Isaac Utils -> Workflows -> URDF Importer.
    • Add your robot model and configure the settings:
      • Ensure base_link is unchecked if it is a mobile robot.
      • Check the drive type, usually velocity for wheel-based robots.
      • Disable self-collision if URDF limits are correct.
      • Select the output directory.
  2. Play the animation to verify the import and then Stop.

ROS2 - Robot Controller Setup

Set Up Controllers

  1. Navigate to Isaac Utils -> Common Omnigraph.
  2. Add the following controllers:
    • Articulation Position Controller
    • Articulation Velocity Controller
  3. Select your robot and add it to the controller.

Configure Graphs

  1. Right-click on Graphs in the Stage and select Open Graphs.
  2. Modify values in the graphs to reflect changes on the robot.
  3. Add the following nodes to the graphs:
    • On Playback Tick node
    • Isaac Read Simulation Time node
    • ROS2 Publish Joint State node
      • Connect Tick to Exec In.
      • Connect Simulation Time to Timestamp.
    • ROS2 Subscribe Joint State node
      • Connect Tick to Exec In.
    • ROS2 Nodes
      • Connect Effort Command, Joint Names, Position Command, etc.

Launch Controller

This is available in the qre_go2 package (humble branch) that is available for our customers. However, one can create their own controller to interface with the go2 as all prior steps are open source. Run the following command to put the robot in a lying-down position:

ros2 launch go2_isaac_controller system.launch.py
Note: The go2_isaac_controller is a basic demo for interfacing with the GO2 robot via ROS2.

Support

For any issues or further assistance, please visit our forums. The community and experts are there to help you with troubleshooting and advanced configurations. Stay connected for more updates and tutorials!