Slam merge requestshttps://gitlab.kitware.com/keu-computervision/slam/-/merge_requests2022-11-23T10:46:56-05:00https://gitlab.kitware.com/keu-computervision/slam/-/merge_requests/206[feat][refact] Add interpolation models for EgoMotion and Undistortion2022-11-23T10:46:56-05:00Arthur Bourbousson[feat][refact] Add interpolation models for EgoMotion and Undistortion- Integrate Basalt to SLAM lib : a Spline library to do interpolation model
- Create a class for interpolation models
- Models are separated in Translation interpolation and Rotation interpolation, a trajectory model combine one trans...- Integrate Basalt to SLAM lib : a Spline library to do interpolation model
- Create a class for interpolation models
- Models are separated in Translation interpolation and Rotation interpolation, a trajectory model combine one translation and one rotation to cover a full 6D pose model of interpolation
- Translation Models are :
- Linear (only 2 points)
- Linear Spline
- Quadratic Spline
- Cubic Spline
- Rotations Models are :
- SLERP : Spherical Linear Interpolation (only 2 points)
- SQUAD : Spherical Cubic Interpolation (only 4 points) => NOT IMPLEMENTED YET
- Squad Spline : Spline made of Cubic Interpolation => NOT IMPLEMENTED YET
- Replace Undistortion interpolation model with an editable trajectory model (for now a linear Spline but will be choosen from a parameter later)
- Replace linear interpolation for EgoMotion with an editable trajectory model => NOT IMPLEMENTED YET
- Make a parameter to choose model of interpolation in SLAM for EgoMotion / Undistortion => NOT IMPLEMENTED YET
WARNING : commit with test function for classes, need to delete it later
for now it add 2-5ms to SLAM execution timeArthur BourboussonArthur Bourboussonhttps://gitlab.kitware.com/keu-computervision/slam/-/merge_requests/104[WIP] Build and use a vertex map for keypoints extraction2021-04-29T11:40:04-04:00Nicolas Cadart[WIP] Build and use a vertex map for keypoints extractionCurrently, the keypoints extraction is based on the analysis of the laser neighborhood of each point. The scan lines are filled with points shot by the same laser, without any consideration of azimuth or the absence of firing return. Thi...Currently, the keypoints extraction is based on the analysis of the laser neighborhood of each point. The scan lines are filled with points shot by the same laser, without any consideration of azimuth or the absence of firing return. This lead to erroneous neighborhoods analysis.
With this MR, a vertex map (~ 2D range image) is built to store the points indices in a coherent manner between different scan lines or along azimuth value. This allows to define new rules or mechanisms to invalidate or select keypoints:
- The points which have no neighbor (left or right) are considered to lay on a depth gap boundary. This could be really helpful in very poor features environments with only a few laser returns, by detecting the edges of the scanned objects.
- The points which miss some neighbors are excluded from keypoints extraction.
NOTE: The vertex map filling and the automatic computation of angular resolution do not rely anymore on the prior that all points from the input pointcloud come in sorted order (increasing azimuth) in each scan line.
There are still some points to dicuss/improve:
- [ ] if spinning velocity is not perfectly constant or if the measurements are imprecise, we won't have a perfect 1 vertex = 1 point match, because two points will lie in the same voxel, and the next one will be empty. This is even more true when dealing with dual return.
- [ ] too many depth gaps are now detected, especially far isolated points. Maybe we could limit this by checking if a depth gap exists in the previous/next scanline at this azimuth value, or disable this criterion for too far points. I'm not sure how to properly deal with this, but this MR cannot be merged as it is now.
- [ ] should we keep the (maybe too costly) PCA computation and replace it by average line only : apparently, this extracts much more keypoints than necessary. Therefore, even if kp extraction is faster, matching and optimization are much slower.
@julia.sanchez @nick.laurensonNicolas CadartNicolas Cadart