The histogram of a submap is now stored in the submap (class and proto) itself. This change allows to accumulate the histogram of a submap in local SLAM by adding up the histogram of each new scan. The main advantage is that the background thread doesn't have to loop over all `TrajectoryNode`s of a finished submap to compute the submap histogram for the `RotationalScanMatcher`. Instead this chunk of work is moved to the local SLAM thread but is split up into a few computations for each new scan. When running localization, the histogram of a submap can just be read from a map pbstream and does not have to be computed from the nodes. In summary: - This change improved the CPU time of offline SLAM by ~7%. - Increases the readability of the code and performance of the background thread. (see `PoseGraph3D::ComputeConstraint`) - No negative performance impacts on accuracy or finding loop-closures However: - With this change to the submap proto, old maps (pbstreams) are no longer supported and need to be re-created by running offline slam |
||
|---|---|---|
| .. | ||
| cloud | ||
| common | ||
| ground_truth | ||
| io | ||
| mapping | ||
| metrics | ||
| pose_graph | ||
| sensor | ||
| testing | ||
| transform | ||
| .clang-format | ||
| BUILD.bazel | ||