- 21 Apr, 2021 1 commit
-
-
Nicolas Cadart authored
Before running PCA, check that points are roughly aligned by: - checking that each point is not too far from the approximate line - checking that the angle between successive points and the approximate line is not too big After PCA, the linearity feature is computed and checked. This produces better results in less processing time.
-
- 12 Apr, 2021 1 commit
-
-
Julia Sanchez authored
[feat] Add invalidation parameter for oblique surfaces See merge request !115
-
- 08 Apr, 2021 5 commits
-
-
Julia Sanchez authored
* We encountered some environments requiring the use of very oblique surfaces * A member MinBeamSurfaceAngle is added to the SSKE to allow the use of such surfaces * Update wrappings consequently * Default value is 20°
-
Nicolas Cadart authored
[doc] Update README and LidarView tutorial See merge request !113
-
Nicolas Cadart authored
This file is displayed in LidarView's help. It has been auto-generated from How_to_SLAM_with_LidarView.md by https://www.browserling.com/tools/markdown-to-html
-
Nicolas Cadart authored
-
Julia Sanchez authored
[fix] Fix bugs and rename variables See merge request !112
-
- 07 Apr, 2021 1 commit
-
-
Julia Sanchez authored
* Invalidation was missing some points
-
- 06 Apr, 2021 1 commit
-
-
Julia Sanchez authored
* After gathering lidar residuals and external sensor residuals, the names were not adapted in the local optimizer and could be confusing.
-
- 05 Apr, 2021 1 commit
-
-
Julia Sanchez authored
To be able to fit a line, the neighborhood must contain at least 2 points
-
- 02 Apr, 2021 2 commits
-
-
Julia Sanchez authored
[fix] Correct debug array error See merge request !109
-
Julia Sanchez authored
Allow compilation on Win10 MSCV 2015 See merge request !107
-
- 01 Apr, 2021 4 commits
-
-
Julia Sanchez authored
-
Nicolas Cadart authored
Release v1.4 See merge request !111
-
Nicolas Cadart authored
-
Nicolas Cadart authored
-
- 31 Mar, 2021 2 commits
-
-
Julia Sanchez authored
-
Nicolas Cadart authored
Fix refactoring bugs See merge request !108
-
- 30 Mar, 2021 3 commits
-
-
Nicolas Cadart authored
-
Nicolas Cadart authored
The last important refactorings (!103 and !101) brought some bugs. - Lidar ICP residuals were added twice to the ceres problem, resulting in much slower optimization. - Set the max number of threads to use for parallel omp for loops to the number of keypoints types instead of a hard-coded "3 threads". - Do not build blob KDTree during ego motion registration step - Remove unsused PoseArray member in KeypointsMatcher - Reset all keypoints clouds even if unused. This is necessary otherwise old blob cloud is still displayed even if blobs are disabled.
-
Julia Sanchez authored
[feat] Split Matching and optimization See merge request !101
-
- 26 Mar, 2021 5 commits
-
-
Julia Sanchez authored
* Lidar and external sensor residuals are gathered in the same vector * This vector is refilled entirely at each ICP step
-
Julia Sanchez authored
* Split KeypointsRegistration file into LocalOptimizer and KeypointsMatcher files. * LocalOptimizer * It is a member of the SLAM class. * A residual structure is created in this file. It contains pointers to a cost function and a loss function (optimization estimator to remove outliers). * It receives the ceres LiDAR residuals. * It will be able to receive other sensors' residuals. * It is entirely cleared at each registration step. * It contains a ceres problem pointer (the destructor is updated). This problem is created and filled after each new matching step of ICP. The problem is conserved in order to be able to recover covariance from the optimization after convergence for last ICP iteration. * KeypointsMatcher * It is an object created locally in Ego-Motion and/or Localization functions. * It builds the LiDAR residuals (as described above) from matching between frame keypoints and map neighborhoods. * It contains a vector of residuals (directly added in the matching result structure). * A residual is also added to the matching info structure.
-
Nicolas Cadart authored
Optional calibration in PV wrapping See merge request !106
-
Nicolas Cadart authored
Calibration is only needed to reorder laser ids. However, we don't really care if these laser rings are not properly sorted, as SSKE consider each ring independently from other ones. To simplify user interface, this second entry is hidden from selection dialog. It can still be accessed later by manually changing inputs.
-
Nicolas Cadart authored
If calibration input is empty (such as for HDL64), or if the vertical angle array isn't available, ignore calibration. This fixes using HDL64 data with PV wrapping, where calibration is empty.
-
- 25 Mar, 2021 4 commits
-
-
Julia Sanchez authored
[refact] Gather all keypoint types relative structures and functions See merge request !103
-
Julia Sanchez authored
* The lambda functions and omp sections are replaced by an omp "for" loop * Other redundant processes are replaced by loops
-
Julia Sanchez authored
* UseKeypoints is a booleans std map which allows to select which keypoints to use in the optimization * KeypointTypeNames is a strings std map which contains the respective strings used in printing processes * Remove FastSlam * Update wrappings to adapt to new UseKeypoints map * FastSlam is replace by UseBlobs * Getters and setters are updated to be relative to UseKeypoints map
-
Julia Sanchez authored
* "edges points/keypoints/weights/matches" -> "edge ..." * "planes points/keypoints/weights/matches" -> "plane ..." * "blobs points/keypoints/weights/matches" -> "blob ..." * "planars" -> "planes" * + Alignment
-
- 24 Mar, 2021 2 commits
-
-
Julia Sanchez authored
All functions and features linked to keypoints exist for edges, planes and blobs. This leads to triplicated parts of code and make the whole process hardly adjustable (add or remove keypoint types). This MR intends to fix part of these issues and to uniformize the way to access a keypoint relative feature with EDGE / PLANE / BLOB key words. * Such features are stored in maps which pair the keypoint type with the feature. * The relative functions are adapted to take the keypoint type as argument. * When possible, a loop processes iteratively each keypoint type. * To be able to loop on keypoint types, a list of keypoint types is added in enums header file. It is to note that all parts couldn't be replaced by loops because of some specific checks (e.g. are blobs used?) or some specific output features (e.g string in cout, UI relative names in wrappings). These tasks should still be changed by hand if some keypoint types is modified.
-
Nicolas Cadart authored
Fix catch-by-value warning and fix undistortion time range See merge request !105
-
- 23 Mar, 2021 2 commits
-
-
Nicolas Cadart authored
- We were currently returning the reverse mapping. This reverses the mapping by an additional SortIdx call. - Change default behavior of Utils::SortIdx to sort by default in ascending order, like std::sort.
-
Nicolas Cadart authored
-
- 12 Mar, 2021 1 commit
-
-
Nicolas Cadart authored
Auto compute angular resolution for SSKE See merge request !102
-
- 11 Mar, 2021 2 commits
-
-
Nicolas Cadart authored
This parameter will now be auto-computed with first frame. Rename AngleResolution to AzimuthalResolution.
-
Nicolas Cadart authored
The horizontal resolution is computed for the first frame only. This process still requires a scan sorted by laser rings, each ring being sorted by increasing azimuth/timestamp.
-
- 05 Mar, 2021 3 commits
-
-
Nicolas Cadart authored
NLasers -> NbLaserRings pclCurrentFrame -> Scan pclCurrentFrameByScan -> ScanLines
-
Nicolas Cadart authored
[feat] Change keypoint invalidation criteria See merge request !93
-
-