Isaac ROS Argus Camera

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_argus_camera/isaac_ros_argus_sample_raw.png/ https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_argus_camera/isaac_ros_argus_sample_isp.png/

Overview

The Isaac ROS Argus Camera module contains an ROS 2 package for sensor processing to output images. Image sensors are connected on CSI and GMSL hardware interfaces to Jetson platforms. This package uses dedicated hardware engines to accelerate image processing. Output images are used in graphs of nodes for AI and CV perception packages, image compression for capture to disk by event recorders, and live-stream visuals for remote robot teleoperation.

Isaac ROS Argus Camera provides with several sensor capture and processing features, including AWB (auto-white-balance), AE (auto-exposure), and noise reduction. Leveraging hardware engines in Jetson, Argus provides multi-camera frame synchronization, with very high precision frame acquisition timestamping and jitter less than 100us.

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_argus_camera/isaac_ros_argus_camera_nodegraph.png/

In the example graph of nodes above, the Argus Camera module processes sensor image data from the camera for input to vision-based perception graphs, including DNN stereo disparity, AprilTag, VSLAM, and H.264 encode. Each of the nodes in green is GPU accelerated for a high-performance compute graph from Argus camera to vision-based perception functions.

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_argus_camera/isaac_ros_argus_camera_zeromemcpy.png/

Argus Camera uses dedicated hardware engines to access the full memory bandwidth in Jetson. Raw camera images are delivered via CSI or GMSL interfaces directly to the GPU accelerated memory. The ISP hardware processes the raw image directly into a GPU accelerated output image topic.

Widely available USB and Ethernet plug-in cameras can be used for robotics applications, but there is performance cost for this convenience. The I/O interface (USB or Ethernet) places the image from the camera directly into CPU-accessible memory. The camera driver makes a copy from the I/O interface using the CPU to make the image available to other applications. The Camera driver wrapper node in ROS performs another memory copy with the CPU from the driver to publish the image in ROS. Before a USB or Ethernet image arrives as a published topic, two CPU memory copy actions have been performed for every pixel. In contrast, the Argus Camera module processes sensor data into output image topics in ROS without the CPU touching a single pixel in the image.

Note

Argus Camera outputs sensor_msgs/Image at the sensor data rate, subject to performance capabilities of the Jetson platform(s). For example, a Hawk camera configured for 30fps (frames per second) stereo 1920x1080 will output time-synchronized left and right camera frames sensor_msgs/Image at 30fps.

Note

Argus Camera is not supported on x86_64 platforms with discrete GPUs that do not have a CSI or GMSL interface to connect to a camera.

Note

See Argus for more information on camera processing.

Quickstarts

Reference Cameras

NVIDIA has worked with our camera partners to provide the modules listed below which are compatible with the Isaac ROS Argus Camera package.

Camera Type

Connector

Resolution / Framerate

H/V FOV

Shutter

Supplier, HW Part, Link to purchase

Stereo Camera/Color

GMSL

1920x1200 at 60fps

121/73

Global

LI-AR0234CS-STEREO-GMSL2

Fisheye Camera/Color

GMSL

1920x1200 at 60fps

202/127

Global

LI-AR0234CS-GMSL2-OWL

Monocular Camera/Color

CSI

4056x3040 at 60fps

140/103

Global

IMX477 -140FOH

Monocular Camera/Color

CSI

3264x2464 at 21fps

90/90

Rolling

LI-NANO-CB-IMX219-090H

Packages

Supported Platforms

This package is designed and tested to be compatible with ROS 2 Humble running on Jetson with off-the-shelf cameras from NVIDIA partners (see the Reference Cameras section for more details).

Note

x86_64 system is not supported.

Note

Versions of ROS 2 earlier than Humble are not supported. This package depends on specific ROS 2 implementation features that were only introduced beginning with the Humble release.

Docker

To simplify development, we strongly recommend leveraging the Isaac ROS Dev Docker images by following these steps. This streamlines your development environment setup with the correct versions of dependencies on both Jetson and x86_64 platforms.

Note

All Isaac ROS Quickstarts, tutorials, and examples have been designed with the Isaac ROS Docker images as a prerequisite.

Customize your Dev Environment

To customize your development environment, reference this guide.

Updates

Date

Changes

2024-12-10

Support selecting camera module by index

2024-09-26

Updated for Isaac ROS 3.1

2024-05-30

Update to be compatible with JetPack 6.0

2023-10-18

Updated for Isaac ROS 2.0.0

2023-04-05

Update to be compatible with JetPack 5.1.1

2022-10-19

Updated OSS licensing

2022-08-31

Update to be compatible with JetPack 5.0.2

2022-06-30

Support NITROS acceleration

2022-03-18

Support CameraInfo from URL

2021-10-20

Initial release