Use Isaac ROS packages in your ROS 1 Noetic with NITROS-enabled performance.
The Isaac ROS NITROS Bridge brings accelerated computing to versions of ROS where it is not supported, by improving the performance of bridging between ROS versions.
Isaac ROS provides accelerated computing ROS packages for robotics development in ROS 2 with NITROS; this is enabled with the addition of type adaptation (REP-2007) and type negotiation (REP-2009) in ROS 2 Humble, which is not available in previous versions of ROS.
Accelerated computing is essential to move beyond the limits of single threaded performance on a CPU. To take advantage of this, it may not be practical to migrate to a new version of ROS 2 for robotics applications that were developed previously. Some developers have chosen to bridge between their current version of ROS, and what is used with Isaac ROS. This improves existing robotics applications with the addition of accelerated computing; unfortunately, the ROS bridge includes a CPU based memory copy bridge toll.
Isaac ROS NITROS Bridge packages improves performance with a ROS bridge. The bridge toll is removed by moving data from CPU to GPU to avoid CPU memory copies. This significantly improves performance across processes in different versions of ROS. In addition the data in GPU memory can be used in place, by accelerated computing.
Illustrated above is the use of NITROS Converters between ROS Noetic and ROS 2 Humble. When sending an image from ROS Noetic to ROS 2 Humble, the NITROS converter moves the image to GPU accelerated memory avoiding CPU memory copies. On the Humble side of the bridge the NITROS converter adapts the image in GPU memory into a NITROS image for use with accelerated computing. This also works the other direction from ROS 2 Humble to ROS Noetic. When sending an NITROS image from Humble to Noetic, the NITROS Converter maintains the image in GPU accelerated memory avoiding CPU memory copies over the bridge, moving the image into CPU accessible memory in Noetic.
This same principle can be applied to ROS 2, for example between Foxy and Humble to take advantage of Isaac ROS in Humble, from applications developed in Foxy without migrating versions of ROS.
Illustrated above is the use of the ROS bridge without the benefits of NITROS converters. Images sent from Noetic to Humble and visa-versa are copies across the ROS processes using the CPU limiting performance and increasing latency.
By avoiding unnecessary CPU memory copies the Isaac ROS NITROS bridge improves accelerated computing performance and reduces end to end latency across versions of ROS.
Isaac ROS NITROS Bridge can move 1080p images between ROS 1 Noetic and Isaac ROS NITROS packages up to 3x faster than the available ros1_bridge. See Isaac ROS Benchmark scripts for NITROS bridge and ros1_bridge.
Please visit the Isaac ROS Documentation to learn how to use this repository.
Update 2024-09-26: Update for Isaac ROS 3.1