Package Summary

Tags No category tags.
Version 2.0.2
License Apache License 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/Ekumen-OS/beluga.git
VCS Type git
VCS Version main
Last Updated 2024-06-18
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An AMCL node implementation for ROS2 using Beluga.

Additional Links

No additional links.

Maintainers

  • Gerardo Puga
  • Ivan Paunovic
  • Michel Hidalgo
  • Nahuel Espinosa

Authors

No additional authors.

Beluga AMCL

Beluga AMCL is a ROS node based on the Beluga library that aims to be fully compatible with both Navigation 2 AMCL and Navigation AMCL nodes.
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 (or amcl-based) project.

Table of Contents

ROS 2 Interface

Parameters

Beluga AMCL currently supports the majority of 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.

Published Topics

Topic Type Description
particle_cloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
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.

ROS 1 Interface

Parameters

Beluga AMCL currently supports the majority of ROS parameters used in AMCL.
See Beluga AMCL parameter reference for detailed information.

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.
initialpose geometry_msgs/PoseWithCovarianceStamped Input topic for pose mean and covariance to initialize the particle filter.

Published Topics

Topic Type Description
particlecloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
amcl_pose geometry_msgs/PoseWithCovarianceStamped Output topic for estimated pose mean and covariance in map frame.
diagnostics diagnostic_msgs/DiagnosticArray Output topic for node diagnostics.

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
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.
set_map nav_msgs/SetMap Set a new map and initial pose estimate.

Called Services

Topic Type Description
static_map nav_msgs/GetMap To retrieve map on initialization, if use_map_topic parameter is false

Performance

Performance reports are periodically generated and uploaded to track performance improvements and regressions. These reports are generated using a set of scripts in the beluga_benchmark package which can be used to compare the performance of beluga_amcl against that of nav2_amcl using a synthetic dataset.

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model likelihood field.

Beluga vs Nav2 AMCL

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model beam.

Beluga vs Nav2 AMCL

Further details can be found in the reports folder here.

Next Steps

CHANGELOG

Changelog for package beluga_amcl

2.0.2 (2024-06-18)

  • Expand grid concepts to n dimensions (#396)
  • Change NDT sensor model default params (#397)
  • Contributors: Ramiro Serra

2.0.1 (2024-05-24)

2.0.0 (2024-05-21)

  • Please clang-tidy on Ubuntu Noble (#379)
  • Add ROS 2 Jazzy to CI/CD and dev workflows (#378)
  • Restore particle cloud visualization using markers (#377)
  • Enable beluga_amcl ROS 2 nodes\' autostart (#376)
  • Use [geometry_msgs::msg::PoseArray]{.title-ref} instead of [nav2_msgs::msg::ParticleCloud]{.title-ref} (#372)
  • Fix tf broadcasting (#375)
  • Remove ament_index_cpp dependency (#374)
  • Improve ROS version detection logic (#366)
  • Add example for NDT sensor model in beluga_example (#360)
  • Add NDT AMCL node and tests. (#347)
  • Unify Beluga documentation (#346)
  • Add death tests and build in debug mode (#323)
  • Migrate [beluga_amcl]{.title-ref} to the new API (#328)
  • Relocate [make_random_state()]{.title-ref} method (#324)
  • Make test matchers and printers available to users (#300)
  • Motion and sensor models are not mixins (#291)
  • Integrate views with mixins (#284)
  • Transform points in laser frame to robot frame (#276)
  • Generalize planar laser scan support (#271)
  • Add new discrete landmark and bearing sensor models to the beluga library (#268)
  • Add [beluga_ros]{.title-ref} package (#270)
  • Make particle cloud message weights represent pdf (#260)
  • Add updated performance report (#255)
  • Fix missing control to force a filter update on pose updates (#248)
  • Change default AMCL params (#244)
  • Format pre-commit hook configuration (#245)
  • Add cmake-format to pre-commit hooks (#243)
  • Rename motion models in Beluga AMCL for ROS 1 (#242)
  • Replace ament_copyright with local script (#240)
  • Remove ament_flake8 from pre-commit hooks (#237)
  • Remove uncrustify and cpplint from pre-commit hooks (#236)
  • Refactor resampling policies into filter update control (#233)
  • Add ROS 2 Rolling CI infrastructure (#222)
  • Add ROS Noetic support to [beluga_amcl]{.title-ref} (#218)
  • Fix flaky transform test (#220)
  • Fix map to odom transform calculation (#212)
  • Add new report after recent performance updates (#208)
  • Fix small issues with plotter and update MessageFilter tolerance before generating new report
  • Disable branch and function coverage (#205)
  • Change default threading mode to the less cpu-consuming one (#203)
  • Optimize beam sensor model runtime performance (#200)
  • Add AMCL parameter reference page (#196)
  • Add tests for the AMCL node (#194)
  • Add support for map updates in laser localization filters (#189)
  • Add performance report for latest version with minor fixes to scripts (#193)
  • Rework occupancy grids (#188)
  • Improve documentation and guidelines (#186)
  • Initialize particle filter with last known estimate (#185)
  • Add service to reinitialize global localization (#157)
  • Update license year to 2023 (#175)
  • Add beam sensor model (#160)
  • Rename [importance_sample]{.title-ref} method to [reweight]{.title-ref} (#158)
  • Add support for per-axis resolution when clustering (#146)
  • Rename [mixin::make_unique]{.title-ref} to [make_mixin]{.title-ref} (#152)
  • Add system tests (#138)
  • Select mixin components at runtime (#126)
  • Migrate beluga from ament_cmake to cmake (#133)
  • Add new resampling policies (#119)
  • Update list of maintainers (#130)
  • Add script to run benchmarks (#117)
  • Fix small typo in screen logs (#122)
  • Fix typo in parameter description (#114)
  • Broadcast map-to-odom transform (#81)
  • Set initial pose from params (#105)
  • Refactor estimation mixin out of the particle filter (#104)
  • Make execution policy configurable (#100)
  • Avoid creating a dedicated tf thread (#97)
  • Set [beluga_amcl]{.title-ref} default build type to [Release]{.title-ref} (#92)
  • Add max_beams parameter to [beluga_amcl]{.title-ref} (#84)
  • Refactor laser_callback method (#89)
  • Update tf_sophus.hpp documentation style (#87)
  • Fix node clean up (#69)
  • Remove the use of aggregate initialization (#70)
  • Export AMCL as a loadable component (#63)
  • Add documentation for motion and sensor models (#61)
  • Add reinitialize method to the particle filter (#51)
  • Add initial pose subscriber (#45)
  • Add [sophus]{.title-ref} conversion utilities (#36)
  • Integrate differential drive motion model (#33)
  • Parallelize sensor model update (#32)
  • Add pose estimation publisher (#30)
  • Update header files in the beluga package (#29)
  • Decouple ROS message types from the observation model (#27)
  • Implement likelihood estimation for particles (#25)
  • Add likelihood field pre-computation (#24)
  • Add [beluga_amcl]{.title-ref} package and example launch file (#21)
  • Contributors: Gerardo Puga, Ivan Santiago Paunovic, Michel Hidalgo, Nahuel Espinosa, Olmer Garcia-Bedoya, Ramiro Serra

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged beluga_amcl at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.0.2
License Apache License 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/Ekumen-OS/beluga.git
VCS Type git
VCS Version main
Last Updated 2024-06-18
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An AMCL node implementation for ROS2 using Beluga.

Additional Links

No additional links.

Maintainers

  • Gerardo Puga
  • Ivan Paunovic
  • Michel Hidalgo
  • Nahuel Espinosa

Authors

No additional authors.

Beluga AMCL

Beluga AMCL is a ROS node based on the Beluga library that aims to be fully compatible with both Navigation 2 AMCL and Navigation AMCL nodes.
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 (or amcl-based) project.

Table of Contents

ROS 2 Interface

Parameters

Beluga AMCL currently supports the majority of 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.

Published Topics

Topic Type Description
particle_cloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
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.

ROS 1 Interface

Parameters

Beluga AMCL currently supports the majority of ROS parameters used in AMCL.
See Beluga AMCL parameter reference for detailed information.

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.
initialpose geometry_msgs/PoseWithCovarianceStamped Input topic for pose mean and covariance to initialize the particle filter.

Published Topics

Topic Type Description
particlecloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
amcl_pose geometry_msgs/PoseWithCovarianceStamped Output topic for estimated pose mean and covariance in map frame.
diagnostics diagnostic_msgs/DiagnosticArray Output topic for node diagnostics.

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
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.
set_map nav_msgs/SetMap Set a new map and initial pose estimate.

Called Services

Topic Type Description
static_map nav_msgs/GetMap To retrieve map on initialization, if use_map_topic parameter is false

Performance

Performance reports are periodically generated and uploaded to track performance improvements and regressions. These reports are generated using a set of scripts in the beluga_benchmark package which can be used to compare the performance of beluga_amcl against that of nav2_amcl using a synthetic dataset.

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model likelihood field.

Beluga vs Nav2 AMCL

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model beam.

Beluga vs Nav2 AMCL

Further details can be found in the reports folder here.

Next Steps

CHANGELOG

Changelog for package beluga_amcl

2.0.2 (2024-06-18)

  • Expand grid concepts to n dimensions (#396)
  • Change NDT sensor model default params (#397)
  • Contributors: Ramiro Serra

2.0.1 (2024-05-24)

2.0.0 (2024-05-21)

  • Please clang-tidy on Ubuntu Noble (#379)
  • Add ROS 2 Jazzy to CI/CD and dev workflows (#378)
  • Restore particle cloud visualization using markers (#377)
  • Enable beluga_amcl ROS 2 nodes\' autostart (#376)
  • Use [geometry_msgs::msg::PoseArray]{.title-ref} instead of [nav2_msgs::msg::ParticleCloud]{.title-ref} (#372)
  • Fix tf broadcasting (#375)
  • Remove ament_index_cpp dependency (#374)
  • Improve ROS version detection logic (#366)
  • Add example for NDT sensor model in beluga_example (#360)
  • Add NDT AMCL node and tests. (#347)
  • Unify Beluga documentation (#346)
  • Add death tests and build in debug mode (#323)
  • Migrate [beluga_amcl]{.title-ref} to the new API (#328)
  • Relocate [make_random_state()]{.title-ref} method (#324)
  • Make test matchers and printers available to users (#300)
  • Motion and sensor models are not mixins (#291)
  • Integrate views with mixins (#284)
  • Transform points in laser frame to robot frame (#276)
  • Generalize planar laser scan support (#271)
  • Add new discrete landmark and bearing sensor models to the beluga library (#268)
  • Add [beluga_ros]{.title-ref} package (#270)
  • Make particle cloud message weights represent pdf (#260)
  • Add updated performance report (#255)
  • Fix missing control to force a filter update on pose updates (#248)
  • Change default AMCL params (#244)
  • Format pre-commit hook configuration (#245)
  • Add cmake-format to pre-commit hooks (#243)
  • Rename motion models in Beluga AMCL for ROS 1 (#242)
  • Replace ament_copyright with local script (#240)
  • Remove ament_flake8 from pre-commit hooks (#237)
  • Remove uncrustify and cpplint from pre-commit hooks (#236)
  • Refactor resampling policies into filter update control (#233)
  • Add ROS 2 Rolling CI infrastructure (#222)
  • Add ROS Noetic support to [beluga_amcl]{.title-ref} (#218)
  • Fix flaky transform test (#220)
  • Fix map to odom transform calculation (#212)
  • Add new report after recent performance updates (#208)
  • Fix small issues with plotter and update MessageFilter tolerance before generating new report
  • Disable branch and function coverage (#205)
  • Change default threading mode to the less cpu-consuming one (#203)
  • Optimize beam sensor model runtime performance (#200)
  • Add AMCL parameter reference page (#196)
  • Add tests for the AMCL node (#194)
  • Add support for map updates in laser localization filters (#189)
  • Add performance report for latest version with minor fixes to scripts (#193)
  • Rework occupancy grids (#188)
  • Improve documentation and guidelines (#186)
  • Initialize particle filter with last known estimate (#185)
  • Add service to reinitialize global localization (#157)
  • Update license year to 2023 (#175)
  • Add beam sensor model (#160)
  • Rename [importance_sample]{.title-ref} method to [reweight]{.title-ref} (#158)
  • Add support for per-axis resolution when clustering (#146)
  • Rename [mixin::make_unique]{.title-ref} to [make_mixin]{.title-ref} (#152)
  • Add system tests (#138)
  • Select mixin components at runtime (#126)
  • Migrate beluga from ament_cmake to cmake (#133)
  • Add new resampling policies (#119)
  • Update list of maintainers (#130)
  • Add script to run benchmarks (#117)
  • Fix small typo in screen logs (#122)
  • Fix typo in parameter description (#114)
  • Broadcast map-to-odom transform (#81)
  • Set initial pose from params (#105)
  • Refactor estimation mixin out of the particle filter (#104)
  • Make execution policy configurable (#100)
  • Avoid creating a dedicated tf thread (#97)
  • Set [beluga_amcl]{.title-ref} default build type to [Release]{.title-ref} (#92)
  • Add max_beams parameter to [beluga_amcl]{.title-ref} (#84)
  • Refactor laser_callback method (#89)
  • Update tf_sophus.hpp documentation style (#87)
  • Fix node clean up (#69)
  • Remove the use of aggregate initialization (#70)
  • Export AMCL as a loadable component (#63)
  • Add documentation for motion and sensor models (#61)
  • Add reinitialize method to the particle filter (#51)
  • Add initial pose subscriber (#45)
  • Add [sophus]{.title-ref} conversion utilities (#36)
  • Integrate differential drive motion model (#33)
  • Parallelize sensor model update (#32)
  • Add pose estimation publisher (#30)
  • Update header files in the beluga package (#29)
  • Decouple ROS message types from the observation model (#27)
  • Implement likelihood estimation for particles (#25)
  • Add likelihood field pre-computation (#24)
  • Add [beluga_amcl]{.title-ref} package and example launch file (#21)
  • Contributors: Gerardo Puga, Ivan Santiago Paunovic, Michel Hidalgo, Nahuel Espinosa, Olmer Garcia-Bedoya, Ramiro Serra

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged beluga_amcl at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.0.2
License Apache License 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/Ekumen-OS/beluga.git
VCS Type git
VCS Version main
Last Updated 2024-06-18
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An AMCL node implementation for ROS2 using Beluga.

Additional Links

No additional links.

Maintainers

  • Gerardo Puga
  • Ivan Paunovic
  • Michel Hidalgo
  • Nahuel Espinosa

Authors

No additional authors.

Beluga AMCL

Beluga AMCL is a ROS node based on the Beluga library that aims to be fully compatible with both Navigation 2 AMCL and Navigation AMCL nodes.
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 (or amcl-based) project.

Table of Contents

ROS 2 Interface

Parameters

Beluga AMCL currently supports the majority of 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.

Published Topics

Topic Type Description
particle_cloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
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.

ROS 1 Interface

Parameters

Beluga AMCL currently supports the majority of ROS parameters used in AMCL.
See Beluga AMCL parameter reference for detailed information.

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.
initialpose geometry_msgs/PoseWithCovarianceStamped Input topic for pose mean and covariance to initialize the particle filter.

Published Topics

Topic Type Description
particlecloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
amcl_pose geometry_msgs/PoseWithCovarianceStamped Output topic for estimated pose mean and covariance in map frame.
diagnostics diagnostic_msgs/DiagnosticArray Output topic for node diagnostics.

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
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.
set_map nav_msgs/SetMap Set a new map and initial pose estimate.

Called Services

Topic Type Description
static_map nav_msgs/GetMap To retrieve map on initialization, if use_map_topic parameter is false

Performance

Performance reports are periodically generated and uploaded to track performance improvements and regressions. These reports are generated using a set of scripts in the beluga_benchmark package which can be used to compare the performance of beluga_amcl against that of nav2_amcl using a synthetic dataset.

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model likelihood field.

Beluga vs Nav2 AMCL

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model beam.

Beluga vs Nav2 AMCL

Further details can be found in the reports folder here.

Next Steps

CHANGELOG

Changelog for package beluga_amcl

2.0.2 (2024-06-18)

  • Expand grid concepts to n dimensions (#396)
  • Change NDT sensor model default params (#397)
  • Contributors: Ramiro Serra

2.0.1 (2024-05-24)

2.0.0 (2024-05-21)

  • Please clang-tidy on Ubuntu Noble (#379)
  • Add ROS 2 Jazzy to CI/CD and dev workflows (#378)
  • Restore particle cloud visualization using markers (#377)
  • Enable beluga_amcl ROS 2 nodes\' autostart (#376)
  • Use [geometry_msgs::msg::PoseArray]{.title-ref} instead of [nav2_msgs::msg::ParticleCloud]{.title-ref} (#372)
  • Fix tf broadcasting (#375)
  • Remove ament_index_cpp dependency (#374)
  • Improve ROS version detection logic (#366)
  • Add example for NDT sensor model in beluga_example (#360)
  • Add NDT AMCL node and tests. (#347)
  • Unify Beluga documentation (#346)
  • Add death tests and build in debug mode (#323)
  • Migrate [beluga_amcl]{.title-ref} to the new API (#328)
  • Relocate [make_random_state()]{.title-ref} method (#324)
  • Make test matchers and printers available to users (#300)
  • Motion and sensor models are not mixins (#291)
  • Integrate views with mixins (#284)
  • Transform points in laser frame to robot frame (#276)
  • Generalize planar laser scan support (#271)
  • Add new discrete landmark and bearing sensor models to the beluga library (#268)
  • Add [beluga_ros]{.title-ref} package (#270)
  • Make particle cloud message weights represent pdf (#260)
  • Add updated performance report (#255)
  • Fix missing control to force a filter update on pose updates (#248)
  • Change default AMCL params (#244)
  • Format pre-commit hook configuration (#245)
  • Add cmake-format to pre-commit hooks (#243)
  • Rename motion models in Beluga AMCL for ROS 1 (#242)
  • Replace ament_copyright with local script (#240)
  • Remove ament_flake8 from pre-commit hooks (#237)
  • Remove uncrustify and cpplint from pre-commit hooks (#236)
  • Refactor resampling policies into filter update control (#233)
  • Add ROS 2 Rolling CI infrastructure (#222)
  • Add ROS Noetic support to [beluga_amcl]{.title-ref} (#218)
  • Fix flaky transform test (#220)
  • Fix map to odom transform calculation (#212)
  • Add new report after recent performance updates (#208)
  • Fix small issues with plotter and update MessageFilter tolerance before generating new report
  • Disable branch and function coverage (#205)
  • Change default threading mode to the less cpu-consuming one (#203)
  • Optimize beam sensor model runtime performance (#200)
  • Add AMCL parameter reference page (#196)
  • Add tests for the AMCL node (#194)
  • Add support for map updates in laser localization filters (#189)
  • Add performance report for latest version with minor fixes to scripts (#193)
  • Rework occupancy grids (#188)
  • Improve documentation and guidelines (#186)
  • Initialize particle filter with last known estimate (#185)
  • Add service to reinitialize global localization (#157)
  • Update license year to 2023 (#175)
  • Add beam sensor model (#160)
  • Rename [importance_sample]{.title-ref} method to [reweight]{.title-ref} (#158)
  • Add support for per-axis resolution when clustering (#146)
  • Rename [mixin::make_unique]{.title-ref} to [make_mixin]{.title-ref} (#152)
  • Add system tests (#138)
  • Select mixin components at runtime (#126)
  • Migrate beluga from ament_cmake to cmake (#133)
  • Add new resampling policies (#119)
  • Update list of maintainers (#130)
  • Add script to run benchmarks (#117)
  • Fix small typo in screen logs (#122)
  • Fix typo in parameter description (#114)
  • Broadcast map-to-odom transform (#81)
  • Set initial pose from params (#105)
  • Refactor estimation mixin out of the particle filter (#104)
  • Make execution policy configurable (#100)
  • Avoid creating a dedicated tf thread (#97)
  • Set [beluga_amcl]{.title-ref} default build type to [Release]{.title-ref} (#92)
  • Add max_beams parameter to [beluga_amcl]{.title-ref} (#84)
  • Refactor laser_callback method (#89)
  • Update tf_sophus.hpp documentation style (#87)
  • Fix node clean up (#69)
  • Remove the use of aggregate initialization (#70)
  • Export AMCL as a loadable component (#63)
  • Add documentation for motion and sensor models (#61)
  • Add reinitialize method to the particle filter (#51)
  • Add initial pose subscriber (#45)
  • Add [sophus]{.title-ref} conversion utilities (#36)
  • Integrate differential drive motion model (#33)
  • Parallelize sensor model update (#32)
  • Add pose estimation publisher (#30)
  • Update header files in the beluga package (#29)
  • Decouple ROS message types from the observation model (#27)
  • Implement likelihood estimation for particles (#25)
  • Add likelihood field pre-computation (#24)
  • Add [beluga_amcl]{.title-ref} package and example launch file (#21)
  • Contributors: Gerardo Puga, Ivan Santiago Paunovic, Michel Hidalgo, Nahuel Espinosa, Olmer Garcia-Bedoya, Ramiro Serra

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged beluga_amcl at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.0.2
License Apache License 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/Ekumen-OS/beluga.git
VCS Type git
VCS Version main
Last Updated 2024-06-18
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An AMCL node implementation for ROS2 using Beluga.

Additional Links

No additional links.

Maintainers

  • Gerardo Puga
  • Ivan Paunovic
  • Michel Hidalgo
  • Nahuel Espinosa

Authors

No additional authors.

Beluga AMCL

Beluga AMCL is a ROS node based on the Beluga library that aims to be fully compatible with both Navigation 2 AMCL and Navigation AMCL nodes.
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 (or amcl-based) project.

Table of Contents

ROS 2 Interface

Parameters

Beluga AMCL currently supports the majority of 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.

Published Topics

Topic Type Description
particle_cloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
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.

ROS 1 Interface

Parameters

Beluga AMCL currently supports the majority of ROS parameters used in AMCL.
See Beluga AMCL parameter reference for detailed information.

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.
initialpose geometry_msgs/PoseWithCovarianceStamped Input topic for pose mean and covariance to initialize the particle filter.

Published Topics

Topic Type Description
particlecloud geometry_msgs/PoseArray Output topic for particle cloud published at a fixed frequency.
amcl_pose geometry_msgs/PoseWithCovarianceStamped Output topic for estimated pose mean and covariance in map frame.
diagnostics diagnostic_msgs/DiagnosticArray Output topic for node diagnostics.

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
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.
set_map nav_msgs/SetMap Set a new map and initial pose estimate.

Called Services

Topic Type Description
static_map nav_msgs/GetMap To retrieve map on initialization, if use_map_topic parameter is false

Performance

Performance reports are periodically generated and uploaded to track performance improvements and regressions. These reports are generated using a set of scripts in the beluga_benchmark package which can be used to compare the performance of beluga_amcl against that of nav2_amcl using a synthetic dataset.

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model likelihood field.

Beluga vs Nav2 AMCL

The following plot displays the RSS (Resident Set Size), CPU usage, APE (Absolute Pose Error) and processing latency statistics for both beluga_amcl and nav2_amcl, with particle sizes ranging between 250 and 200000 and sensor model beam.

Beluga vs Nav2 AMCL

Further details can be found in the reports folder here.

Next Steps

CHANGELOG

Changelog for package beluga_amcl

2.0.2 (2024-06-18)

  • Expand grid concepts to n dimensions (#396)
  • Change NDT sensor model default params (#397)
  • Contributors: Ramiro Serra

2.0.1 (2024-05-24)

2.0.0 (2024-05-21)

  • Please clang-tidy on Ubuntu Noble (#379)
  • Add ROS 2 Jazzy to CI/CD and dev workflows (#378)
  • Restore particle cloud visualization using markers (#377)
  • Enable beluga_amcl ROS 2 nodes\' autostart (#376)
  • Use [geometry_msgs::msg::PoseArray]{.title-ref} instead of [nav2_msgs::msg::ParticleCloud]{.title-ref} (#372)
  • Fix tf broadcasting (#375)
  • Remove ament_index_cpp dependency (#374)
  • Improve ROS version detection logic (#366)
  • Add example for NDT sensor model in beluga_example (#360)
  • Add NDT AMCL node and tests. (#347)
  • Unify Beluga documentation (#346)
  • Add death tests and build in debug mode (#323)
  • Migrate [beluga_amcl]{.title-ref} to the new API (#328)
  • Relocate [make_random_state()]{.title-ref} method (#324)
  • Make test matchers and printers available to users (#300)
  • Motion and sensor models are not mixins (#291)
  • Integrate views with mixins (#284)
  • Transform points in laser frame to robot frame (#276)
  • Generalize planar laser scan support (#271)
  • Add new discrete landmark and bearing sensor models to the beluga library (#268)
  • Add [beluga_ros]{.title-ref} package (#270)
  • Make particle cloud message weights represent pdf (#260)
  • Add updated performance report (#255)
  • Fix missing control to force a filter update on pose updates (#248)
  • Change default AMCL params (#244)
  • Format pre-commit hook configuration (#245)
  • Add cmake-format to pre-commit hooks (#243)
  • Rename motion models in Beluga AMCL for ROS 1 (#242)
  • Replace ament_copyright with local script (#240)
  • Remove ament_flake8 from pre-commit hooks (#237)
  • Remove uncrustify and cpplint from pre-commit hooks (#236)
  • Refactor resampling policies into filter update control (#233)
  • Add ROS 2 Rolling CI infrastructure (#222)
  • Add ROS Noetic support to [beluga_amcl]{.title-ref} (#218)
  • Fix flaky transform test (#220)
  • Fix map to odom transform calculation (#212)
  • Add new report after recent performance updates (#208)
  • Fix small issues with plotter and update MessageFilter tolerance before generating new report
  • Disable branch and function coverage (#205)
  • Change default threading mode to the less cpu-consuming one (#203)
  • Optimize beam sensor model runtime performance (#200)
  • Add AMCL parameter reference page (#196)
  • Add tests for the AMCL node (#194)
  • Add support for map updates in laser localization filters (#189)
  • Add performance report for latest version with minor fixes to scripts (#193)
  • Rework occupancy grids (#188)
  • Improve documentation and guidelines (#186)
  • Initialize particle filter with last known estimate (#185)
  • Add service to reinitialize global localization (#157)
  • Update license year to 2023 (#175)
  • Add beam sensor model (#160)
  • Rename [importance_sample]{.title-ref} method to [reweight]{.title-ref} (#158)
  • Add support for per-axis resolution when clustering (#146)
  • Rename [mixin::make_unique]{.title-ref} to [make_mixin]{.title-ref} (#152)
  • Add system tests (#138)
  • Select mixin components at runtime (#126)
  • Migrate beluga from ament_cmake to cmake (#133)
  • Add new resampling policies (#119)
  • Update list of maintainers (#130)
  • Add script to run benchmarks (#117)
  • Fix small typo in screen logs (#122)
  • Fix typo in parameter description (#114)
  • Broadcast map-to-odom transform (#81)
  • Set initial pose from params (#105)
  • Refactor estimation mixin out of the particle filter (#104)
  • Make execution policy configurable (#100)
  • Avoid creating a dedicated tf thread (#97)
  • Set [beluga_amcl]{.title-ref} default build type to [Release]{.title-ref} (#92)
  • Add max_beams parameter to [beluga_amcl]{.title-ref} (#84)
  • Refactor laser_callback method (#89)
  • Update tf_sophus.hpp documentation style (#87)
  • Fix node clean up (#69)
  • Remove the use of aggregate initialization (#70)
  • Export AMCL as a loadable component (#63)
  • Add documentation for motion and sensor models (#61)
  • Add reinitialize method to the particle filter (#51)
  • Add initial pose subscriber (#45)
  • Add [sophus]{.title-ref} conversion utilities (#36)
  • Integrate differential drive motion model (#33)
  • Parallelize sensor model update (#32)
  • Add pose estimation publisher (#30)
  • Update header files in the beluga package (#29)
  • Decouple ROS message types from the observation model (#27)
  • Implement likelihood estimation for particles (#25)
  • Add likelihood field pre-computation (#24)
  • Add [beluga_amcl]{.title-ref} package and example launch file (#21)
  • Contributors: Gerardo Puga, Ivan Santiago Paunovic, Michel Hidalgo, Nahuel Espinosa, Olmer Garcia-Bedoya, Ramiro Serra

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged beluga_amcl at Robotics Stack Exchange