Skip to content

NVIDIA-ISAAC-ROS/isaac_ros_map_localization

Repository files navigation

Isaac ROS Map Localization

NVIDIA-accelerated Map localization.

image

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.

image

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:

  1. Buffer FlatScan messages received on a topic and trigger the localization using an std_srvs/Empty service call.
  2. 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.

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

Occupancy Grid Localizer Node



~50 sq. m



19.5 fps


57 ms @ 30Hz

8.34 fps


130 ms @ 30Hz

5.75 fps


190 ms @ 30Hz

50.1 fps


21 ms @ 30Hz

50.1 fps


12 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