Sebastian Klose
73d18e5fc5
Using new serialization format. ( #1174 )
...
Updates everyone to use the new serialization format.
A corresponding PR will be made in cartographer_ros for the various tools.
2018-05-30 13:31:33 +02:00
Alexander Belyaev
87370371ec
Making a test nicer: procrastination and nits. ( #1175 )
2018-05-30 12:56:59 +02:00
Christoph Schütte
876a41f06f
Provide local poses via GetTrajectoryNodePoses() ( #1172 )
2018-05-30 07:34:49 +02:00
Sebastian Klose
a35092c20f
Mapping state deserializer ( #1171 )
...
class for de-serializing mapping state stored in the new serialization format [RFC 0021](https://github.com/sebastianklose/rfcs/blob/serialization_format/text/0021-serialization-format.md ).
Not used yet. Will be hooked up in a separate PR that switches all logic to the new serialization format at once.
2018-05-29 22:10:11 +02:00
Christoph Schütte
fbb2835525
Implement receive_global_slam_optimizations_handler ( #1169 )
2018-05-29 19:26:33 +02:00
Sebastian Klose
a9c90da1a8
Migration tool for serialization format ( #1167 )
...
* 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
2018-05-29 16:56:18 +02:00
Sebastian Klose
1d050ede3f
Mapping state serialization ( #1166 )
...
[Serialization RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0021-serialization-format.md )
2018-05-28 23:49:21 +02:00
Sebastian Klose
405c0e17e8
Defining new serialization proto ( #1165 )
...
[Serialization RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0021-serialization-format.md )
2018-05-28 15:11:29 +02:00
Christoph Schütte
ce18ec7295
Add SetGlobalSlamOptimizationCallback() ( #1164 )
...
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.
2018-05-25 12:29:52 +02:00
Alexander Belyaev
2f9ee597d0
Add analytical 2d cost function for pose graph (not used yet). ( #1161 )
2018-05-23 12:07:27 +02:00
Kevin Daun
f4c4d2ad40
Add CSV export to the evaluation tool ( #1159 )
...
- 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
2018-05-17 12:14:03 +02:00
Sebastian Klose
d419fe8fd7
More const PoseGraph interface ( #1156 )
...
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
2018-05-17 09:30:40 +02:00
Robert Milijaš
a0ec8046bd
Allow easier access to CeresPose's data_ ( #1149 )
...
Introduce a FromPose function which transforms a Ridig3d pose into the
CeresPose's Data format.
2018-05-15 22:32:03 +02:00
Christoph Schütte
ee8e2fa4d6
Introduces a lockless queue for multiple producers and a single consumer ( #1152 )
2018-05-11 21:14:18 +02:00
Christoph Schütte
ce67d684ba
Introduce a GlobalSlamResultCallback ( #1143 )
2018-05-10 11:25:00 +02:00
Sebastian Klose
c2f54b8df2
Organize all protos in mapping in a single folder. ( #1147 )
2018-05-09 11:22:07 +02:00
gaschler
697d6091cd
Test ThreadPool more ( #1136 )
...
These tests previously helped to reproduce Mutex issue #1124 .
2018-05-03 21:50:50 +02:00
gaschler
3ca6506bc7
Remove old ThreadPool::Schedule ( #1139 )
2018-05-03 20:58:51 +02:00
Christoph Schütte
e080df5ea3
Register MapBuilderServer metrics ( #1133 )
...
I am not adding these registration calls to `cartographer/metrics/register.cc` because they are specific to cloud based mapping.
2018-05-01 17:18:34 +02:00
Alexander Belyaev
ff18bae528
Transform submap cells to global frame correctly. ( #1130 )
2018-04-30 12:12:48 +02:00
gaschler
a3b746ff67
Use Task in ConstraintBuilder3D ( #1119 )
2018-04-27 22:14:19 +02:00
gaschler
a32cfd247b
Pessimist ~Locker ( #1125 )
...
FIXES=#1124
2018-04-27 20:41:13 +02:00
Martin Schwörer
fe7aaf4d94
Added a fake file writer (writes to string instead of file) ( #1101 )
...
Added fake filer writer which writes the output to a string instead of a file.
This will help writing tests for classes that use the file writer interface to write data.
2018-04-27 13:45:54 +02:00
gaschler
c46fe073b4
Use Task in ConstraintBuilder2D ( #1118 )
2018-04-26 12:33:36 +02:00
Christoph Schütte
666095cb41
Introduce metric to measure the length of the SLAM queue ( #1117 )
2018-04-25 22:09:56 +02:00
Christoph Schütte
5356bdf9a8
Rename metrics since slashes are not allowed in Prometheus ( #1115 )
2018-04-25 17:34:30 +02:00
Kevin Daun
41f17e57cd
Introduce Grid and RangeDataInserter ( #1108 )
...
- Introduce `RangeDataInserterInterface` as common interface for all range data inserters
- Introduce a minimal `GridInterface` as a base for a common interface for 2D and 3D grids
- Rename `RangeDataInserter2D` to `ProbabilityGridRangeDataInserter2D`
- Move grid generation logic from `Submap2D` to `ActiveSubmaps2D`
- Update proto and configuration structure to mirror the code structure - backwards compatibility is maintained
- Step towards [RFC 0019](https://github.com/googlecartographer/rfcs/blob/master/text/0019-probability-grid-and-submap2d-restructuring.md )
2018-04-25 16:51:30 +02:00
gaschler
91fda93757
Schedule Task in ThreadPool ( #1113 )
...
This introduces scheduling of tasks with dependencies to ThreadPool.
Contrary to work items, tasks are only queued for execution after all
their dependencies have completed.
2018-04-25 16:12:30 +02:00
gaschler
89ac5cbabf
Test GlobalSlam3D ( #1114 )
2018-04-25 15:00:13 +02:00
gaschler
0118531659
correct bazel define ( #1112 )
...
This is required by map_builder_server_main.cc
2018-04-25 13:56:34 +02:00
Michael Grupp
3d2ca564b6
Fix some Clang warnings. ( #1109 )
...
task.cc: -Wparentheses
task_test.cc: -Winconsistent-missing-override
2018-04-25 12:22:11 +02:00
Martin Schwörer
d9ada58710
Removed check for existence of first submap of first trajectory in pose graph optimization ( #1099 )
...
Removed check for existence of first submap of first trajectory.
This check is equivalent to the original implementation which got changed in [#584 ](https://github.com/googlecartographer/cartographer/pull/584/files )
2018-04-24 16:32:31 +02:00
Christoph Schütte
f51e4f4f05
Introduce Task ( #1066 )
...
This introduces the new class common::Task. A Task can have dependencies to other tasks, notify ThreadPoolInterface when all its dependencies are fulfilled, and can be executed in the background.
2018-04-24 15:57:44 +02:00
Alexander Belyaev
3dd37da51b
Move constraint_builders together. ( #1103 )
2018-04-23 13:49:25 +02:00
gaschler
3b5830745e
Test ConstraintBuilder2D/3D ( #1100 )
2018-04-23 12:52:20 +02:00
Kevin Daun
d29153a744
Replace ProbabilityGrid in Submap2D by Grid2D ( #1097 )
2018-04-20 22:58:46 +02:00
Alexander Belyaev
e2623991da
Return only optimized & finished submaps for trimmer. ( #1104 )
2018-04-20 22:19:16 +02:00
Alexander Belyaev
4aa2af23de
Move files related to optimization to optimization/. ( #1102 )
2018-04-20 20:52:17 +02:00
Alexander Belyaev
eebced5e16
Clean-up colliding 'SubmapData' names. ( #1096 )
2018-04-20 18:15:37 +02:00
gaschler
643bc825e9
ThreadPoolForTesting ( #1098 )
...
Necessary to test ConstraintBuilder.
2018-04-20 13:12:52 +02:00
Alexander Belyaev
8816d5710c
Invoke trimmer only when there are enough added submaps. ( #1095 )
2018-04-20 09:05:05 +02:00
Rodrigo Queiro
7f67f074a1
Limit `bazel test` parallelism more precisely ( #1094 )
...
Since it is only the tests in cartographer/cloud that cannot run
concurrently with each other, use `tags = ["exclusive"]` to say that
they should not be run at the same time as other tests.
This works locally, not just in CI, and should speed up the CI job by
2-3 minutes.
2018-04-19 18:51:20 +02:00
Alexander Belyaev
ab7402ffbb
Use references for constraints & nodes in TrimmingHandle. ( #1091 )
2018-04-19 17:09:16 +02:00
Kevin Daun
20c80068b2
Base ConstraintBuilder2D on correspondence cost function ( #1088 )
...
- Base `ConstraintBuilder2D` and `FastCorrelativeScanMatcher2D` on correspondence cost function instead of probabilities
- No changes in the options of `ConstraintBuilder2D` and `FastCorrelativeScanMatcher2D`
- Add properties `min/max_correspondence_cost` to `Grid2D` and `proto::Grid2D`
- Provide backwards compatibility for `proto::Grid2D`
- Step towards [RFC 0019](https://github.com/googlecartographer/rfcs/blob/master/text/0019-probability-grid-and-submap2d-restructuring.md )
2018-04-19 11:59:28 +02:00
Kevin Daun
f4937b5cc6
Base ceres scan matcher on correspondence cost function ( #1085 )
...
- Base ceres scan matcher on correspondence cost function instead of probabilities
- Step towards [RFC 0019](https://github.com/googlecartographer/rfcs/blob/master/text/0019-probability-grid-and-submap2d-restructuring.md )
2018-04-19 10:24:16 +02:00
Christoph Schütte
337e594662
Introduce option to enable SSL encryption for LocalTrajectoryUploader ( #1084 )
2018-04-18 16:47:03 +02:00
Kevin Daun
03d56871c1
Correspondence cost based probability grid ( #1081 )
...
- Store probabilities as correspondence costs
- Add conversion functions for correspondence cost values
- Step towards [RFC 0019](https://github.com/googlecartographer/rfcs/blob/master/text/0019-probability-grid-and-submap2d-restructuring.md )
2018-04-18 14:46:38 +02:00
Christoph Schütte
214606457c
Switch to batch uploading for cloud based mapping and add retries ( #1070 )
2018-04-18 14:02:43 +02:00
Alexander Belyaev
23f6de46b0
Use area instead of cells count for overlapping trimmer options. ( #1080 )
2018-04-17 18:22:38 +02:00
Julius Kammerl
26e8ce63ba
Add async_grpc dependency to cartographer_grpc ( #1079 )
...
The map_builder_server target requires async_grpc.
2018-04-17 17:25:18 +02:00
gaschler
4278dbb7ea
Speed up slow tests ( #1077 )
...
Same checks, half the time.
2018-04-17 15:41:09 +02:00
Kevin Daun
ed0a8846f1
Allow execution of Submap2D::ToResponseProto without a grid ( #1078 )
...
- related to https://github.com/googlecartographer/cartographer_ros/issues/819
2018-04-17 14:27:09 +02:00
Alexander Belyaev
74970be757
Add overlapping trimmer params to TrajectoryBuilderOptions. ( #1076 )
2018-04-17 13:00:04 +02:00
Alexander Belyaev
e215c170e7
Remove redundant function declaration. ( #1075 )
...
Makes clang happy again.
2018-04-17 10:22:00 +02:00
Kevin Daun
a82a62f8a0
Replace Submap2D grid member by unique_ptr ( #1073 )
...
- replace the `ProbabilityGrid` member of `Submap2D` by `unique_ptr<ProbabilityGrid>`
- allow `Submap2D` to handle `proto::Submap2D` without a defined grid field
- resolve https://github.com/googlecartographer/cartographer/issues/1071
2018-04-16 18:19:59 +02:00
Christoph Schütte
ce71273737
Add error messages for gRPC connection failures ( #1072 )
...
Fixes https://github.com/googlecartographer/cartographer_ros/issues/825 .
2018-04-16 16:40:03 +02:00
Alexander Belyaev
7b68844937
Add a gRPC version of SetLandmarkPose(). ( #1068 )
2018-04-16 15:49:08 +02:00
Alexander Belyaev
75f899117a
Move to testing/. ( #1067 )
2018-04-16 12:47:11 +02:00
gaschler
663e135426
add check ( #1063 )
2018-04-16 12:01:09 +02:00
Alexander Belyaev
74f74c4b61
Deserialize landmark poses. ( #1064 )
2018-04-13 16:38:45 +02:00
Kevin Daun
46d3a9443a
Introduce Grid2D as base class for 2D grids ( #1046 )
...
This is a first step towards generalizing submaps (see [ongoing RFC discussion](https://github.com/googlecartographer/rfcs/pull/30 )).
Although this PR already introduces a correspondence cost grid, the grid is still used as probability grid.
2018-04-13 13:43:09 +02:00
Christoph Schütte
b4c4ae6ea9
Update unfinished submap list on SLAM thread ( #1061 )
...
Fixes #1052
2018-04-13 12:15:26 +02:00
Michael Grupp
d2f29d04b9
Improve pose terminology of 2D optimization problem. ( #1053 )
...
Removes the confusing term `initial_pose` from global 2D optimization.
It makes sense in other areas like scan matching, but has a completely
different meaning there. Also matches the 3D equivalents better.
- `local_pose_2d` replaces `initial_pose` as the name for the
non-gravity-aligned, local 2D pose in the submap
- `global_pose_2d` replaces `pose` as the name for the
non-gravity-aligned, global 2D pose that is optimized
See the comment in the PR for how this improves readability.
2018-04-12 16:00:56 +02:00
Christoph Schütte
14465aa23e
Refactor MapBuilderContext to reduce code duplication. ( #1059 )
2018-04-12 15:27:24 +02:00
Alexander Belyaev
a4346337bc
Address the comments for the overlapping submaps trimmer. ( #1060 )
2018-04-12 14:28:33 +02:00
Christoph Schütte
f83d0a6ed6
Implement IsTrajectory{Finished,Frozen} in cloud mapping ( #1057 )
2018-04-12 12:37:04 +02:00
Alexander Belyaev
771336b3c9
Add overlapping submaps trimmer. ( #1027 )
...
Trims submaps that have less than 'min_covered_cells_count' cells not overlapped by at least 'fresh_submaps_count` submaps.
2018-04-12 11:53:56 +02:00
Alexander Belyaev
7286415e27
Remove unused variable. ( #1049 )
2018-04-11 13:15:09 +02:00
jie
d1161b5f8e
Internal cleanup ( #1051 )
...
Fix lint errors.
2018-04-11 09:56:22 +02:00
Alexander Belyaev
7b0963216f
Move FakeTrimmable implementation to internal/testing. ( #1050 )
...
* Move FakeTrimmable implementation to internal/testing.
* Address the comments.
2018-04-10 18:05:03 +02:00
Michael Grupp
4351bdb3c8
Separate global optimization constraints for local SLAM and odometry ( #1029 )
...
Implements [RFC-0018](https://github.com/googlecartographer/rfcs/blob/master/text/0018-odometry-use-in-optimization-problem.md )
2018-04-10 14:44:43 +02:00
jie
cf358e7640
Internal cleanup ( #1045 )
...
Clean up the lint errors.
2018-04-10 09:43:36 +02:00
jie
74b35caf6e
Internal clean up. ( #1042 )
...
Add necessary headers to convenient the import to google.
Require holding mutex for some function that access the variables that guard by mutex.
2018-04-09 19:18:58 +02:00
gaschler
e89625d36a
Correctly use PrecomputationGridStack for 2D and 3D ( #1040 )
...
FIXES=#1038
2018-04-09 14:29:45 +02:00
Alexander Belyaev
b1dcb0cc5e
Remove unused 'freeze_landmarks_' field. ( #1039 )
2018-04-05 18:40:48 +02:00
gaschler
e26e9f172b
RangeDataCollator handles empty range data. ( #1036 )
...
FIXES=#1019
2018-04-04 15:20:10 +02:00
Alexander Belyaev
abb2661b76
Allow trimmer to get nodes/constraints. ( #1034 )
...
* Allow trimmer to get nodes/constraints.
* Mark the methods const.
2018-04-04 12:50:12 +02:00
Alexander Belyaev
41fc7e38cc
Rename the setters according to style-guide. ( #1032 )
...
just a nit
2018-04-03 18:56:44 +02:00
Alexander Belyaev
8c6c584524
Allow trimmers fetch submap data. ( #1024 )
2018-03-28 12:07:28 +02:00
Alexander Belyaev
962393074a
New fixes for Jets. ( #1023 )
...
Issue #1015
2018-03-27 14:26:21 +02:00
gaschler
94f564d871
Test trimming within trajectory ( #1020 )
2018-03-27 12:50:35 +02:00
Alexander Belyaev
e0e1c081e7
Do not use operator*= with Jets. ( #1018 )
2018-03-26 15:55:50 +02:00
Christoph Schütte
915ebb19a6
Use async_grpc ( #1013 )
...
Use async_grpc
2018-03-23 10:52:48 +01:00
Alexander Belyaev
e48e21849a
Acquire mutex before copying landmark poses. ( #1007 )
2018-03-19 16:16:46 +01:00
Alexander Belyaev
4cc758e830
Serialize landmark observations. ( #1006 )
2018-03-19 15:12:47 +01:00
gaschler
7a7908ebb9
Test PureLocalizationTrimmer with actual pose graph ( #1004 )
2018-03-19 11:43:19 +01:00
gaschler
b23ec8ce4e
Fix PureLocalizationTrimmer ( #1002 )
...
Remove the wrong assumption that submap index is sequential from 0.
2018-03-19 10:35:35 +01:00
Juraj Oršulić
ee530d2423
Purge some additional jets ( #1000 )
2018-03-16 19:12:56 +01:00
Alexander Belyaev
1f9c78a82b
Remove float-to-jet casts where possible. ( #998 )
2018-03-16 14:53:10 +01:00
Alexander Belyaev
06a9d3544d
Interpolate trajectory node to compute starting point for landmarks. ( #997 )
...
[Landmarks RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-03-16 12:01:55 +01:00
gaschler
37a68cd7f4
LocalTrajectoryBuilder uses RangeDataCollator ( #996 )
...
Local SLAM accepts and unwarps time-overlapping range data from multiple sensors.
[RFC=0017](https://github.com/googlecartographer/rfcs/blob/master/text/0017-synchronize-points.md )
FIXES=#910
2018-03-15 16:34:51 +01:00
gaschler
55065a2108
Mockable optimization ( #994 )
2018-03-15 14:13:59 +01:00
gaschler
bd7d7202bf
Filter RangeMeasurement ( #995 )
...
[RFC=0017](https://github.com/googlecartographer/rfcs/blob/master/text/0017-synchronize-points.md )
2018-03-15 12:31:08 +01:00
gaschler
067d01a364
Test PoseGraph3D ( #990 )
2018-03-15 11:44:47 +01:00
gaschler
ed47f9d8f8
OptimizationProblemInterface ( #991 )
...
Derive optimization problems from a new OptimizationProblemInterface.
Move fix_z into OptimizationProblemOptions.
Move trivial getters to header files.
This will allow mocking the optimization problems.
2018-03-15 11:12:26 +01:00
Alexander Belyaev
e6c4ee4b8b
Move interpolation of poses to 'cost_helpers'. ( #992 )
2018-03-15 10:33:02 +01:00
Alexander Belyaev
1e4d558ac4
Add landmarks to the state and deserialize them. ( #988 )
2018-03-14 21:36:15 +01:00
gaschler
36df3eec19
Instrument metrics in GlobalTrajectoryBuilder. ( #945 )
...
RFC=[0014](https://github.com/googlecartographer/rfcs/blob/master/text/0014-monitoring.md )
2018-03-14 14:51:40 +01:00
Alexander Belyaev
0190e7cd99
Clean-up dependencies of map_builder and put getters to the header. ( #989 )
2018-03-14 13:33:44 +01:00
Alexander Belyaev
c060a15670
Remove dead code: fast_global_localizer. ( #987 )
2018-03-13 16:23:27 +01:00