ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

AMCL and ICP for localization - Any ICP Packages for Melodic?

asked 2020-05-21 10:33:33 -0500

Dragonslayer gravatar image

Hi, Iam looking to improve on localization and red thats made by adding an ICP node in the pipeline behind AMCL. There seems to be a lot of ICP packages arround but I didnt find one for my purpose and they are old (not melodic). Is there a newer way of improving localization accuracy or why does it seems ICP has become obsolete? Comments and Answers would be appreciated, thanks.

edit retag flag offensive close merge delete


I'm doing the same work now. so have you find a proper package?

Oysster gravatar image Oysster  ( 2020-08-09 21:07:31 -0500 )edit

Hi, nothing that fits the bill out of the box. There are some icp packages for kinetic that are said to work with melodic when build from source. However they are ment to generate odometry and some serious changes are required. Therre is also a pointcloud library for c++ that should have the necessary functionality, specially interesting also for other related issues. One would have to write a node from scratch.

Dragonslayer gravatar image Dragonslayer  ( 2020-08-10 03:37:16 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2020-08-13 03:16:21 -0500

Thazz gravatar image

updated 2020-08-14 00:56:04 -0500

As an altermative to AMCL localization, you can take a look at:

Edit: I don't know if it is possible to get such (sub 1cm) precision for global localization (i.e. localization on map), but it is possible for "local" localization, for example docking, where you compare your current scan to some reference scan at final docked position. For this you can use:

  • Point Cloud Library has ICP algorithm implemented - an example is here. To use it you first have to transform LaserScan message to PCL format. PCL already has some functions implemented to do that. Transform chain is something like geometry_msgs::LaserScan -> geometry_msgs::PointCloud2 -> pcl::PointCloud<pcl::pointxyz>

  • Andrea Censi's canonical scan matcher - csm. An example how it is used can be seen in laser_scan_matcher package

edit flag offensive delete link more


Thanks for your answer. To make it more clear, Iam looking for a sub centimeter "positioning"-localization in relation to a known object/structure. Practical, mcl or graph based localization takes me to within a 10-20 centimeter of the position, but how then to best zero in on a precise position from there?

Dragonslayer gravatar image Dragonslayer  ( 2020-08-13 09:15:12 -0500 )edit

I guess you already know this, but in case you don't: The accuracy of localization will not just depend on the package but also on your laser scanner, computation power and scan rate. It would be nice if you add your hardware resources in the question

parzival gravatar image parzival  ( 2020-08-13 11:23:40 -0500 )edit

I've edited my original answers with information about 2 packages that can be used for ICP scan matching.

Thazz gravatar image Thazz  ( 2020-08-14 00:57:00 -0500 )edit

Thanks for the update. Yes those packages are my candidates as well. Hardware wise Iam not bound, and also consider some sort of "indoor gps"/beacon system. The idea of adding an icp node was just the simplest solution without specialized "docking" hardware (when in relation to a known "big" object or indoor feature), and as I found, following work, in wich this approach was already tried out, its demonstrated to work paper. It seems mcl etc. gain robustness by losing precision, a fair tradeoff. The dual stage approach also seems most effective, as no high precission costmap is needed as it doesnt relate to final precision positioning, making big spaces more "digestable" for the computer system.

Dragonslayer gravatar image Dragonslayer  ( 2020-08-14 09:54:14 -0500 )edit

Question Tools



Asked: 2020-05-21 10:33:33 -0500

Seen: 1,379 times

Last updated: Aug 14 '20