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

Support other map sampling techniques #11

Open
boxanm opened this issue Oct 13, 2022 · 0 comments
Open

Support other map sampling techniques #11

boxanm opened this issue Oct 13, 2022 · 0 comments
Labels
enhancement New feature or request

Comments

@boxanm
Copy link
Contributor

boxanm commented Oct 13, 2022

If I recall correctly, the sampling technique, that's currently being applied to the map works as follows (suppose the scan point cloud is in the map frame):

if the map is empty: 
      map <-- scan
else: 
      Iterate over all points in the scan:
            If the distance between the scan point and its closest neighbour in the map is > epsilon:
                  Save the scan point's index. 
      Concatenate all the scan points with saved indices to the map.

This approach has two flaws. Firstly, no subsampling is performed on the first scan. Secondly, the distance condition is not checked against scan points from the current iteration.

The reason for this implementation is that the point clouds are stored as a kd-tree. In general, the insert operation to a kd-tree is quite costly. Furthermore, libnabo, the library used behind, does not support it at all.

I showed in my master's thesis that at least in some environments, the current approach (in the thesis called Global Max density filter) lacks in terms of map quality and localisation performance. I think that the filter should be replaced by another one (such as Octree-based voxel or Max density), or ideally, it should be fully controllable by the user. This change should be relatively easy since it only requires another call of libpointmatcher's filter. Nevertheless, it requires the option to specify the coordinate frame the filter is applied in, see the other issue #10.

@boxanm boxanm added the enhancement New feature or request label Oct 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant