Skip to content

NVIDIA-ISAAC-ROS/isaac_ros_image_pipeline

Repository files navigation

Isaac ROS Image Pipeline

NVIDIA-accelerated Image Pipeline.

Overview

Isaac ROS Image Pipeline is a metapackage of functionality for image processing. Camera output often needs pre-processing to meet the input requirements of multiple different perception functions. This can include cropping, resizing, mirroring, correcting for lens distortion, and color space conversion. For stereo cameras, additional processing is required to produce disparity between left + right images and a point cloud for depth perception.

This package is accelerated using the GPU and specialized hardware engines for image computation, replacing the CPU-based image_pipeline metapackage. Considerable effort has been made to ensure that replacing image_pipeline with isaac_ros_image_pipeline on a Jetson or GPU is as painless a transition as possible.

Note

Some image pre-processing functions use specialized hardware engines, which offload the GPU to make more compute available for other tasks.

image

Rectify corrects for lens distortion from the received camera sensor message. The rectified image is resized to the input resolution for disparity, using a crop before resizing to maintain image aspect ratio. The image is color space converted to YUV from RGB using the luma channel (the Y in YUV) to compute disparity using SGM. This common graph of nodes can be performed without the CPU processing a single pixel using isaac_ros_image_pipeline; in comparison, using image_pipeline, the CPU would process each pixel ~3 times.

The Isaac ROS Image Pipeline metapackage offloads the CPU from common image processing tasks so it can perform robotics functions best suited for the CPU.

Isaac ROS NITROS Acceleration

This package is powered by NVIDIA Isaac Transport for ROS (NITROS), which leverages type adaptation and negotiation to optimize message formats and dramatically accelerate communication between participating nodes.

Performance

Sample Graph

Input Size

AGX Orin

Orin NX

Orin Nano 8GB

x86_64 w/ RTX 4060 Ti

x86_64 w/ RTX 4090

Rectify Node



1080p



983 fps


2.5 ms @ 30Hz

569 fps


3.5 ms @ 30Hz

394 fps


5.2 ms @ 30Hz

2500 fps


0.88 ms @ 30Hz

2500 fps


0.66 ms @ 30Hz

Stereo Disparity Node



1080p



168 fps


7.5 ms @ 30Hz

75.4 fps


15 ms @ 30Hz

51.5 fps


22 ms @ 30Hz

350 fps


3.4 ms @ 30Hz

814 fps


1.8 ms @ 30Hz

Stereo Disparity Graph



1080p



157 fps


12 ms @ 30Hz

72.2 fps


20 ms @ 30Hz

49.6 fps


28 ms @ 30Hz

349 fps


2.5 ms @ 30Hz

791 fps


2.7 ms @ 30Hz


Documentation

Please visit the Isaac ROS Documentation to learn how to use this repository.


Packages

Latest

Update 2024-05-30: Update to be compatible with JetPack 6.0