ROS & ROS2 Bridge

About

The ROS / ROS2 Bridge Extensions connect Omniverse Isaac Sim to ROS or ROS2. The Robot Operating System (ROS) is a set of software libraries and tools to help build robot applications. This extension provides a common set of components to define the data being published/received between Omniverse Isaac Sim and ROS.

Note

Only one of the ROS Bridge Extensions can be enabled at any given time. See Enable ROS/ROS2 Bridge Extension for more details.

Requirements

ROS Requirements

ROS2 Requirements

API Documentation

See the API Documentation for complete usage information.

ROS Bridge

The ROS Bridge Extension enables publishing and subscribing of several rostopics and rosservices that are commonly needed for robotic simulation.

This extension is enabled by default. If it is ever disabled, it can be re-enabled from the Extension Manager by searching for omni.isaac.ros_bridge.

You should now be able to run the samples below on the docker host if ROS is installed, or inside of the running container by first running roscore to start the ROS master node.

Note

Internally the ROS bridge runs a custom roscpp build of ROS Noetic so that it works properly with the Omniverse framework and python 3. This is backwards compatible with ROS Melodic.

Note

If communicating with another host (i.e real robot, an existing ROS stack, etc) please set the ROS_IP and ROS_MASTER_URI environment variables before starting Isaac Sim

Prerequisites

This extension requires a ROS installation capable of running roscore. The extension will continually check if rosmaster is available before starting up.

Note

Omniverse Isaac Sim does not run roscore by default, this is to be more flexible for use cases where Omniverse Isaac Sim is being integrated with existing ROS workflows.

ROS Specific Commands

There are also several API Commands specific to the ROS bridge that allow for more control over various functionality.

ROS2 Bridge

Similar to the ROS Bridge, the ROS2 Bridge Extension enables publishing and subscribing of several rostopics and rosservices that are commonly needed for robotic simulation.

This extension is enabled by default. If it is ever disabled, it can be re-enabled from the Extension Manager by searching for omni.isaac.ros2_bridge.

Prerequisites

It is recommended that ROS2 Foxy Fitzroy and Ubuntu 20.04 are used. See the ROS2 Release Documentation for exact requirements and installation instructions.

ROS2 Packages

A list of sample ROS2 packages created for Omniverse Isaac Sim:

  • isaac_ros2_messages: A custom set of ROS2 messages for 2d/3d bounding boxes and pose service messages.

  • carter_navigation: Contains the required launch file and ROS2 navigation parameters for the NVIDIA Carter robot.

  • carter_description: Description of the NVIDIA Carter robot model.

To install these ROS2 packages refer to the section, ROS2 Workspace.

Go to ROS2 Build a Package tutorial for more information.

ROS2 Specific Commands

There are also several API Commands specific to the ROS2 bridge that allow for more control over various functionality.

Common Components For ROS and ROS2

The following components can be created from the Create -> Isaac -> ROS menu and are compatible with both ROS and ROS2.

Custom Messages

The following set of ROS messages and services are provided for both ROS and ROS2 in their respective workspaces.

2D Bounding Box

1
2
3
4
5
6
    string name
    float64 confidence
    int64 xmin
    int64 ymin
    int64 xmax
    int64 ymax

2D Bounding Box Array

1
2
    std_msgs/Header header
    IsaacBoundingBox[] bboxes

3D Bounding Box

1
2
3
4
    string name
    float64 confidence
    geometry_msgs/Pose center
    geometry_msgs/Vector3 size

3D Bounding Box Array

1
2
    std_msgs/Header header
    BoundingBox3D[] bboxes

IsaacPose Service Type

The Pose Teleport Service uses a custom IsaacPose rosservice type:

1
2
3
4
5
6
    std_msgs/Header header
    string[] names
    geometry_msgs/Pose[] poses
    geometry_msgs/Twist[] velocities
    geometry_msgs/Vector3[] scales
    ---

Tutorials & Examples

The following tutorials and examples showcase how to best use this extension:

Tutorials

Examples

  • Navigation Example: Isaac Examples > ROS > Navigation

  • Stereo Camera Example: Isaac Examples > ROS > Stereo

  • April Tag Example: Isaac Examples > ROS > April Tag

  • Multiple Robot Navigation Example: Isaac Examples > ROS > Multiple Robot Navigation > Hospital Scene

  • Multiple Robot Navigation Example: Isaac Examples > ROS > Multiple Robot Navigation > Office Scene

  • MoveIt Example: Isaac Examples > ROS > MoveIt