Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
serraramiro1 opened this issue Aug 12, 2024 · 3 comments
Open
Labels
cpp Related to C++ code enhancement New feature or request

Comments

@serraramiro1
Copy link
Contributor

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.

RandomStateGenerator random_state_generator,

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.

@serraramiro1 serraramiro1 added enhancement New feature or request cpp Related to C++ code labels Aug 12, 2024
This was referenced Aug 14, 2024
@hidmic
Copy link
Collaborator

hidmic commented Sep 3, 2024

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

@nahueespinosa
Copy link
Member

It does not need to do both. But also, I don't like that we are providing a core amcl class in the main library. I think we should work on a way to easily define it from the pieces so we don't have to make assumptions or maintain multiple variants of similar things.

The particle filter pipeline is a step towards that, but it does not handle state well, that's why we need a class definition that holds all the pieces. There should be a better way of doing this.

@hidmic
Copy link
Collaborator

hidmic commented Oct 14, 2024

I think we can discuss if a class is the best incarnation of a complete particle filtering algorithm with state, also if the core library is the best place for complete particle filtering algorithms, but I do think the project should provide them. Not all filtering algorithms are as simple and easy to understand and implement as (bootstrap) AMCL is. Most are not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cpp Related to C++ code enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants