Isaac ROS Nvblox

Nvblox ROS 2 integration for local 3D scene reconstruction and mapping.

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_nvblox/isaac_sim_nvblox_humans.gif/

Overview

Isaac ROS Nvblox contains ROS 2 packages for 3D reconstruction and cost maps for navigation. isaac_ros_nvblox processes depth and pose to reconstruct a 3D scene in real-time and outputs a 2D costmap for Nav2. The costmap is used in planning during navigation as a vision-based solution to avoid obstacles.

isaac_ros_nvblox is designed to work with depth-cameras and/or 3D LiDAR. The package uses GPU acceleration to compute a 3D reconstruction and 2D costmaps using nvblox, the underlying framework-independent C++ library.

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

Above is a typical graph that uses isaac_ros_nvblox. Nvblox takes a depth image, a color image, and a pose as input, with which it computes a 3D scene reconstruction on the GPU. In this graph the pose is computed using visual_slam, or some other pose estimation node. The reconstruction is sliced into an output cost map which is provided through a cost map plugin into Nav2. An optional colorized 3D reconstruction is delivered into rviz using the mesh visualization plugin. Nvblox streams mesh updates to RViz to update the reconstruction in real-time as it is built.

isaac_ros_nvblox offers several modes of operation. In its default mode the environment is assumed to be static. Two additional modes of operation are provided to support mapping scenes which contain dynamic elements: people reconstruction, for mapping scenes containing people, and dynamic reconstruction, for mapping scenes containing more general dynamic objects. The graph above shows isaac_ros_nvblox operating in people reconstruction mode. The color image corresponding to the depth image is processed with unet, using the PeopleSemSegNet DNN model to estimate a segmentation mask for persons in the color image. Nvblox uses this mask to separate reconstructed persons into a separate people-only part of the reconstruction. The Technical Details provide more information on these three types of mapping.

Quickstarts

Performance

The following tables provides timings for various functions of nvblox core on various platforms.

Dataset Voxel Size (m) Component x86_64 w/ 4090 (Desktop) x86_64 w/ RTX3500 Ada (Laptop) AGX Orin
Replica 0.05 TSDF 0.2 ms 0.2 ms 0.8 ms
Color 0.4 ms 0.5 ms 1.2 ms
Meshing 0.8 ms 1.1 ms 2.5 ms
ESDF 0.7 ms 0.8 ms 1.7 ms
Redwood 0.05 TSDF 0.2 ms 0.2 ms 0.6 ms
Color 0.4 ms 0.5 ms 1.1 ms
Meshing 0.4 ms 0.5 ms 1.1 ms
ESDF 0.8 ms 1.1 ms 1.7 ms

Packages

Camera System Requirements

The camera system providing data to this package must adhere to the specifications outlined below:

Specification

Required Specification

Minimum target imager framerate

30 Hertz

Maximum permissible jitter in imager framerate

+/- 2 milliseconds

Maximum expected offset between imagers within stereo camera

+/- 100 microseconds

Maximum expected offset between imagers across stereo camera

+/- 100 microseconds

Supported Platforms

This package is designed and tested to be compatible with ROS 2 Humble running on Jetson or an x86_64 system with an NVIDIA GPU.

Note

Versions of ROS 2 other than Humble are not supported. This package depends on specific ROS 2 implementation features that were introduced beginning with the Humble release. ROS 2 versions after Humble have not yet been tested.

Platform

Hardware

Software

Notes

Jetson

Jetson Orin

JetPack 6.0

For best performance, ensure that power settings are configured appropriately.

x86_64

Ampere or higher NVIDIA GPU Architecture with 8 GB RAM or higher

Ubuntu 22.04+ CUDA 12.2+

Docker

To simplify development, we strongly recommend leveraging the Isaac ROS Dev Docker images by following these steps. This will streamline 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-05-30

Multi-camera support, NITROS integration and performance improvements.

2023-10-18

General dynamic reconstruction.

2023-04-05

People reconstruction and new weighting functions.

2022-12-10

Updated documentation.

2022-10-19

Updated OSS licensing.

2022-08-31

Update to be compatible with JetPack 5.0.2. Serialization of Nvblox maps to file. Support for 3D LIDAR input and performance improvements.

2022-06-30

Support for ROS 2 Humble and miscellaneous bug fixes.

2022-03-21

Initial version.