Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Beluga AMCL

Beluga AMCL is a ROS node based on the Beluga library that aims to be fully compatible with the Navigation 2 AMCL node.
The compatibility between beluga_amcl and its longstanding counterparts in the ROS ecosystem provides a simple migration path for projects that want to be able to integrate the power and modularity of the Beluga library in an existing nav2_amcl-based project.

Table of Contents

ROS Interface

Parameters

Beluga AMCL currently supports almost all of the ROS parameters used in Navigation 2 AMCL.
See Beluga AMCL documentation for further reference.

Subscribed Topics

The subscribed topic names can be changed with the parameters map_topic, scan_topic, and initial_pose_topic.

Topic Type Description
map nav_msgs/OccupancyGrid Input topic for map updates.
scan sensor_msgs/LaserScan Input topic for laser scan updates.
initial_pose geometry_msgs/PoseWithCovarianceStamped Input topic for pose mean and covariance to initialize the particle filter.

Alternatively, and instead of the scan_topic, one may set the point_cloud_topic. Point clouds are assumed to be contained in a z = constant plane in the base frame of reference. It is further assumed this plane is the same plane where the map and pose estimates are defined. If this is not the case, Beluga AMCL will misbehave. It is on the user to filter point clouds and make sure these assumption hold.

Published Topics

Topic Type Description
particle_cloud geometry_msgs/PoseArray Output topic for particle cloud poses published at a fixed frequency.
particle_markers visualization_msgs/MarkerArray Output topic for particle cloud markers published at a fixed frequency.
likelihood_field nav_msgs/OccupancyGrid Output topic for likelihood field, published on update when applicable.
pose geometry_msgs/PoseWithCovarianceStamped Output topic for estimated pose mean and covariance in map frame.

Published Transforms

The frame names can be changed with the parameters global_frame_id, odom_frame_id and base_frame_id. Defaults are map, odom and base.

Transform Description
odom to base Input transform used by motion models and resampling policies.
base to laser Input transform used to convert laser scan points to base frame.
map to odom Output transform calculated from the estimated pose mean and the current odom-to-base transform.

Advertised Services

Topic Type Description
reinitialize_global_localization std_srvs/Empty Request to reinitialize global localization without an initial pose estimate.
request_nomotion_update std_srvs/Empty Trigger a forced update of the filter estimates.

Performance

Performance reports are periodically generated to track improvements and regressions. These reports are produced using the scripts in the beluga_benchmark package, which allow comparing the performance of beluga_amcl against nav2_amcl using a synthetic dataset.

Beluga Vs Nav2

Typical trajectory plot: the ground-truth and both AMCL trajectories are so close that they effectively overlap.

Further details on the benchmarking methodology and datasets can be found in the blog post Big shoes to fill: Validating the performance of Beluga AMCL

Compatibility notes

Beluga AMCL is a feature-by-feature re-implemention of the existing Nav2 AMCL package in ROS, but using the Beluga library as the underlying engine.

Notes on parameter and feature availability between Beluga AMCL and Nav2 AMCL can be found here.

Next Steps