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):

mola_relocalize_figs

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.