Isaac ROS Map Localization
Overview
The Isaac ROS Map Localization module contains ROS 2 packages for lidar processing to estimate poses relative to a map. The Occupancy Grid Localizer processes a planar range scan to estimate pose in an occupancy grid map; this occurs in less than 1 second for most maps. This initial pose can be used to bootstrap navigation for mobile robots and has been integrated and tested with Nav2. This can remove the need for upwards of 30 seconds to manually estimate the position and direction of a robot with RViz, for example.
The Occupancy Grid Localizer is designed to work with planar and 3D LIDARs. It uses Flatscan for input to the GPU-accelerated computation estimating pose. Flatscan allows for representation of 3D LIDARs, which have variable angular increments between multiple beams.
LaserScan to Flatscan provides conversion from LaserScan, which by definition has equal angle increment between beams, to Flatscan.
PointCloud to FlatScan provides conversion from pointcloud output from 3D LIDARs to Flatscan.
Note
Localization can be performed multiple times during navigation.
Note
The input FlatScan Message header/frame_id is used to get the transform of the lidar with respect to the robot base_link frame.
Note
The output localization_result
is the
transform of base_link
with respect to the frame specified in the
loc_result_frame
(map) ROS parameter.
Note
Localization can be triggered in one of two ways:
Buffer FlatScan messages received on a topic and trigger the localization using an
std_srvs/Empty
service call.Trigger localization every time a FlatScan message is sent to a topic.
Refer to the Isaac ROS Occupancy Grid Localizer/Usage section for more details.
Quickstarts
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.
Packages
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 |
For best performance, ensure that power settings are configured appropriately. Jetson Orin Nano 4GB may not have enough memory to run many of the Isaac ROS packages and is not recommended. |
||
x86_64 |
|
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 |
Update to be compatible with JetPack 6.1 |
2024-09-26 |
Update 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-05-25 |
Performance improvements |
2023-04-05 |
Added |