Previously, NodeId and SubmapId could be (partially) uninitialized,
for instance like this:
```
NodeId node_id;
SubmapId submap{0}; // uninitialized submap_index
```
This introduces constructors to prevent this.
Add the parameter `OptimizationProblemOptions.use_online_imu_extrinsincs_in_3d`. Set it to true by default to not change existing behavior.
Using online IMU extrinsics is not always desirable, and particularly during localization, we have determined that it is preferable to turn this feature off.
Extract ground truth generation from `autogenerate_ground_truth_main.cc` into a library function in `ground_truth.h/cc`, so it can be reused outside that binary.
Tested with Cartographer ROS.
`cartographer_autogenerate_ground_truth -pose_graph_filename=/home/afleck/Downloads/b3-2016-04-05-15-51-36.bag.pbstream -output_filename=/home/afleck/Downloads/ground_truth.pb`
still runs as before.
* update TrajectoryState of trajectories that got 'trimmed' away to be
deleted in the PureLocalizationTrimmer
* update serialization to only serialize 'undeleted' trajectories and
corresponding options.
#1111
- Adds TSDF2D Grid
- Adds tests for TSDF2D Grid
- Introduces Grid2D::GrowLimits(...) for multiple grids to reduce code duplication between TSDF2D and Grid2D
The probability grid points processor can now be configured to write the probability grid as pbstream. Before it was only possible to write the probability grid as png.
Fixing "Optimizing: -nan%... #846" https://github.com/googlecartographer/cartographer/issues/846.
The issue was triggered in a multithreaded execution, when all nodes were processed, but the working queue was still non empty (having other kind of jobs).
Unfortunately I failed to reproduce the bug in tests, so no new tests were added.
* New serialization protos
* Moved old definition to legacy_serialized_data.proto
* defining new serialization format as oneof.
* Changing to legacy datatype
* adding serialization migration
* moving to io
* adding serialization migration
* moving to io
* adding file for test
* adding test
* test for order or migrated serialized data
* test for order or migrated serialized data
* renaming tool
* addressing comments
* addressing more comments
* minor polishing
to allow setting the GlobalSlamOptimizationCallback after MapBuilder and PoseGraph
creation. Also removes the GlobalSlamOptimizationCallback from the Constructor
since it is not used.
Prerequisite for implementing ReceiveGlobalSlamOptimizations() in gRPC MapBuilderInterface.
- adds `covered_distance` to the ground truth relations
- the flags `write_relation_metrics` and `relation_metrics_filename` control whether and where to write the relations metrics as comma-separated values
Making getters and non-modifying methods in PoseGraph* const.
Before most getters where marked non-const because of the need to acquire the mutex for thread safety. This forces all code using the PoseGraph to pass it around as a non-const object even if the consumer is not altering the object.
By making the mutexes mutable we can make getters and methods that do not change the PoseGraph const and thus enable consumer APIs to express how they are going to use the PoseGraph as well.
fixes#1021