mola_relocalization
C++ library with algorithms for relocalization, global localization, or pose estimation given a large initial uncertainty
README
mola_relocalization
C++ library with algorithms for relocalization, global localization, or pose estimation given a large initial uncertainty.
Note that particle filtering is implemented in its own repository under mrpt_navigation.
Method #1: mola::RelocalizationICP_SE2
Takes a global and a local metric map, a SE(2) ROI, and tries to match the local map in the global map by running ICP from all initial guesses defined by a regular SE(2) lattice, returning the result as a SE(3) hashed lattice.
This method is based on mp2p_icp ICP pipelines.
Method #2: mola::RelocalizationLikelihood_SE2
Takes a global metric map, an observation, and a SE(2) ROI, and evaluates the likelihood of the observation in a regular SE(2) lattice.
This is based on mrpt maps observationLikelihood() evaluation, so the main parameters that determine the way likelihood is computed must be defined on before hand within each of the metric map layers of the input reference map. At present this algorithm is useful for these sensor/map types:
observations: pointclouds/2d_scan, reference_map: 2D gridmap
observations: pointclouds, reference_map: pointclouds
Example result for the mola::RelocalizationLikelihood_SE2
method (from a unit test, see the code for details):
Figure: (top-left) Reference map. (bottom-left) Query map (actually, a decimated version is used internally). (top-right) Visualization of a slice of the returned likelihood field over a SE(2) ROI. The “slice” is for orientation (phi) equal to 0 (close to the actual pose transformation between the two maps). (bottom-right) The same likelihood slice, in real (x,y) coordinates (meters). The clear peak reveals, approximately, the location of the sought SE(2) transformation between the maps. Further refining is possible using ICP using this as initial guess.
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.