Repository navigation
Feature/use kd tree for landmark map search - #579
Conversation
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
4ce4fb8 to
2c0a8aa
Compare
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
|
Thanks for the PR, @PaulVerhoeckx . Notice that you can run the test suite very similarly to how CI builds and runs it by executing |
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
Thanks for the tip, I think it will pass now;) |
glpuga
left a comment
There was a problem hiding this comment.
Nice job! we created this model for a proof of concept demo a long time ago and we did not put a lot performance into it, it's good to see it getting some dedication.
|
@PaulVerhoeckx ignore the rolling failure. If you rebase to the current main we no longer run CI against rolling as it is a moving target. |
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
Signed-off-by: Paul Verhoeckx <paul.verhoeckx@nobleo.nl>
…-for-landmark-map-search
Proposed changes
Implement efficient nearest-neighbor landmark search using per-category KD-trees with nanoflann. Provides O(log n) spatial queries instead of O(n) linear search for position-based landmark matching.
Tested for a particle filter with:
This reduced the filter update time from 1.4 seconds to 0.005 seconds. (12th Gen Intel® Core™ i7-1255U × 12)
Changes
find_nearest_landmark()using KD-tree queries for efficient position-based matchingType of change
Checklist
Put an
xin the boxes that apply. This is simply a reminder of what we will require before merging your code.Additional comments
Note on
find_closest_bearing_landmark()implementation:This method currently uses O(n) linear search instead of the KD-tree indices because bearing-based matching requires angular distance metrics, which are fundamentally incompatible with the Euclidean L2 distance metric used by the position-based KD-trees.