Ekumen-OS / beluga

A general implementation of Monte Carlo Localization (MCL) algorithms written in C++17, and a ROS package that can be used in ROS 1 and ROS 2.
https://ekumen-os.github.io/beluga/
Apache License 2.0
176 stars 13 forks source link

Add option to remove the adaptiveness to the core filter pipeline #424

Open serraramiro1 opened 1 month ago

serraramiro1 commented 1 month ago

Feature description

Some map representations don't allow (at least not in a straightforward, practical way) sampling randomly from the map. This is the case, just to name one, of sparse voxel grids, where there're no notion of free space, only occupied space.

Given this difficulty, the adaptive part of the AMCL pipeline has limited effect, because of not being able to generate random states from the map.

For these cases, an option where adaptiveness is turned off could be of use, and remove the need of forcefully provide a random state generator. https://github.com/Ekumen-OS/beluga/blob/7a01f39bc78a6124fe0609637b657da0ded9bc6c/beluga/include/beluga/algorithm/amcl_core.hpp#L108

Definition of done

Add the feature described above, and make sure this is the option we use for all the nodes where randomly sampling from the map doens't make sense.

As of today, ndt and ndt_3d variants.

hidmic commented 1 week ago

Coming back to this, is adaptiveness the problem or is it the use of random state samples to fight sample impoverishment? Good ol' AMCL does both, but it need not, does it? @nahueespinosa