Isaac ROS Nvblox#
Nvblox ROS 2 integration for local 3D scene reconstruction and mapping.
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.
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 + 5090 (Desktop) | x86_64 + 3090 (Desktop) | x86_64 + A3000 (Laptop) | AGX Thor | AGX Orin | Orin Nano |
|---|---|---|---|---|---|---|---|---|
| Replica | 0.05 | TSDF | 0.1 ms | 0.5 ms | 0.3 ms | 0.4 ms | 0.8 ms | 2.1 ms |
| Color | 0.3 ms | 0.7 ms | 0.7 ms | 0.8 ms | 1.1 ms | 3.6 ms | ||
| Meshing | 0.3 ms | 0.7 ms | 1.3 ms | 1.4 ms | 2.3 ms | 13 ms | ||
| ESDF | 0.3 ms | 0.8 ms | 1.2 ms | 1.0 ms | 1.7 ms | 6.2 ms | ||
| Dynamics | 0.7 ms | 1.7 ms | 1.4 ms | 1.4 ms | 2.0 ms | N/A(*) | ||
| Redwood | 0.05 | TSDF | 0.09 ms | 0.2 ms | 0.2 ms | 0.2 ms | 0.5 ms | 1.2 ms |
| Color | 0.3 ms | 0.5 ms | 0.5 ms | 0.6 ms | 0.8 ms | 2.6 ms | ||
| Meshing | 0.2 ms | 0.3 ms | 0.5 ms | 0.8 ms | 0.9 ms | 4.2 ms | ||
| ESDF | 0.3 ms | 0.8 ms | 1.0 ms | 1.0 ms | 1.5 ms | 5.1 ms | ||
| Dynamics | 0.4 ms | 1.0 ms | 0.7 ms | 0.8 ms | 1.2 ms | N/A(*) |
(*): Dynamics not supported on Jetson Nano.
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 Jazzy running on Jetson or an x86_64 system with an NVIDIA GPU.
Platform |
Hardware |
Software |
Storage |
Notes |
|---|---|---|---|---|
Jetson |
128+ GB NVMe SSD |
For best performance, ensure that power settings are configured appropriately. |
||
x86_64 |
|
32+ GB disk space available |
Isaac ROS Environment#
To simplify development, we strongly recommend leveraging the Isaac ROS CLI 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 CLI-managed environment as a prerequisite.
Customize your Dev Environment#
To customize your development environment, refer to this guide.
Updates#
Date |
Changes |
|---|---|
2025-10-24 |
Support for ROS 2 Jazzy |
2024-12-10 |
Optimized performance for always-on dynamic obstacle detection and 1 cm voxels |
2024-09-26 |
Update for ZED compatibility |
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. |