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
Alexander Belyaev
4d52c46629
Clean-up dependencies and move real_time_correlative_scan_matcher. ( #986 )
...
[Internal headers RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2018-03-13 15:18:05 +01:00
Wolfgang Hess
c09b643d8d
Synchronize correctly in FinishTrajectory(). ( #980 )
...
PoseGraph{2D,3D}::FinishTrajectory() calls AddWorkItem() which
requires the mutex to be held. This adds code to do this.
2018-03-13 14:10:51 +01:00
Alexander Belyaev
525f7afe7e
Move sensor-related stuff to internal/. ( #985 )
...
[Internal headers RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2018-03-13 13:36:45 +01:00
gaschler
1187480fe6
Introduce RangeDataCollator ( #975 )
...
Synchronizes and merge-sorts TimedPointCloudData by per-point timestamps from
multiple sensors.
[RFC=0017](https://github.com/googlecartographer/rfcs/blob/master/text/0017-synchronize-points.md )
2018-03-13 11:08:01 +01:00
Alexander Belyaev
976736051c
Move scan matchers to internal/. ( #983 )
2018-03-13 10:21:27 +01:00
Alexander Belyaev
70c7660348
Move even more stuff to internal/. ( #982 )
...
[Internal headers RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2018-03-12 17:46:31 +01:00
Alexander Belyaev
bfbf29dcd6
Move mapping/pose_graph/ to internal/. ( #979 )
...
[Internal headers RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2018-03-12 14:00:18 +01:00
Alexander Belyaev
418e0964bf
Move pose_graph_*d related files to internal/. ( #976 )
...
[Internal headers RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2018-03-12 12:42:52 +01:00
Juraj Oršulić
091a4f852d
Update descriptions in pose_graph.h ( #977 )
...
Remove "frozen", since deserialized trajectories can be unfrozen since #891 .
2018-03-10 23:50:31 +01:00
Alexander Belyaev
2fe1867221
Fix writing the pbstream via gRPC. ( #973 )
2018-03-09 16:26:03 +01:00
Alexander Belyaev
daa35d3bc8
Move in_memory_proto_stream.* to internal. ( #969 )
...
Internal Headers RFC
2018-03-09 15:24:07 +01:00
Alexander Belyaev
bb4ba8b319
Split local_slam_result_data.h into base and 2d/3d parts. ( #967 )
2018-03-08 15:17:31 +01:00
Alexander Belyaev
b29986f297
Remove the pointers to the derived PoseGraph*D classes from map_builder. ( #966 )
2018-03-08 14:49:41 +01:00
Alexander Belyaev
20a980aade
Remove 'pose_graph_*d.h' from local_slam_result_data.h. ( #965 )
2018-03-08 13:09:43 +01:00
Alexander Belyaev
256b5a6ff0
Remove '2d/probability_grid.h' include from 'submaps.h'. ( #964 )
2018-03-08 11:56:42 +01:00
Kevin Daun
82a491181d
Add IsTrajectoryFrozen to PoseGraph ( #962 )
...
Adds IsTrajectoryFrozen to the PoseGraph interface
2018-03-08 11:18:08 +01:00
Alexander Belyaev
f34df22a24
Update header guards. ( #959 )
2018-03-05 14:55:51 +01:00
Alexander Belyaev
cf180a0b19
Move mapping:: related mocks to cartographer/internal/testing. ( #960 )
2018-03-05 14:09:04 +01:00
Alexander Belyaev
f76d8a8a0d
Move cartographer_grpc/ to cartographer/cloud. ( #958 )
...
[Code structure RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0016-code-structure.md )
2018-03-05 12:41:38 +01:00
gaschler
a2219cb2fc
Correct comment ( #948 )
2018-03-02 10:25:23 +01:00
gaschler
0156e6b8ce
Instrument metrics in local trajectory builders. ( #946 )
...
RFC=[0014](https://github.com/googlecartographer/rfcs/blob/master/text/0014-monitoring.md )
2018-02-28 16:32:40 +01:00
gaschler
df1ee4bb29
Fix metric label. ( #944 )
...
This makes metrics_test in debug mode happy.
2018-02-28 14:46:26 +01:00
gaschler
363a337e67
Re-implement VoxelFilter with unordered_set ( #938 )
...
Use hashing to filter voxels.
Handles arbitrary grid coordinates up to sizeof(int).
FIXES=#937
2018-02-28 11:12:18 +01:00
Juraj Oršulić
32b8bd3581
Enable loading unfrozen state ( #891 )
...
Enable loading unfrozen state
2018-02-27 20:38:57 +01:00
Alexander Belyaev
29875117b3
Move internal/mapping to mapping/internal. ( #941 )
2018-02-27 16:25:53 +01:00
gaschler
63fd497e0f
Document HybridGrid limits. ( #939 )
...
Adds documentation to avoid issue #937 .
2018-02-27 15:28:35 +01:00
gaschler
f606d4b91c
Gracefully handle time-overlapping point clouds. ( #936 )
...
Per-point relative times are usually computed by multiplying
a per-point time increment by the number of points.
So it is not uncommon for consecutive point clouds of a single
sensor to overlap in time.
When this happens, we act as if no backward jump in time happened
and warn once per input point cloud.
FIXES=#912
2018-02-26 18:38:00 +01:00
Alexander Belyaev
3ebfa757ef
Move mapping_*d to mapping/*d. ( #935 )
...
[Code structure RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0016-code-structure.md )
2018-02-26 17:40:29 +01:00
Alexander Belyaev
e75e023ce2
Purge 'mapping_3d::'. ( #927 ) ( #928 )
...
[Code structure RFC](https://github.com/googlecartographer/rfcs/blob/master/text/0016-code-structure.md )
2018-02-26 14:26:41 +01:00
danielsievers
258aa715ba
Move GetTrajectoryData() down to PoseGraphInterface ( #932 )
2018-02-26 12:45:53 +01:00
Michael Grupp
90994464a5
Check ifstream::good() in proto_stream.cc ( #929 )
...
Check for basic stream errors before doing more involved read actions.
The log message in this case is also more descriptive than
`Check failed: reader->ReadProto(&pose_graph)`.
2018-02-22 16:21:15 +01:00
Alexander Belyaev
94fce13f62
Purge 'mapping_2d::'. ( #927 )
...
[Code structure RFC](e11bca586f/text/0000-code-structure.md
)
2018-02-21 19:44:53 +01:00
gaschler
30114e364a
Instrument metrics in constraint builders. ( #921 )
...
RFC=[0014](https://github.com/googlecartographer/rfcs/blob/master/text/0014-monitoring.md )
2018-02-21 17:31:11 +01:00
gaschler
2711f4492f
Test PoseExtrapolator ( #926 )
2018-02-21 16:43:58 +01:00
Alexander Belyaev
7d13383dec
Remove 'mapping_3d' namespace. ( #922 ) ( #925 )
...
Remove 'mapping_3d' namespace. (#922 )
It is removed from everywhere but 'scan_matching', 'pose_graph'
subfolders of 'mapping_3d'.
[Code structure RFC](e11bca586f/text/0000-code-structure.md
)
2018-02-21 14:24:12 +01:00
Alexander Belyaev
f8dc89d8ff
Remove 'mapping_2d' namespace. ( #922 )
...
It is removed from everywhere but 'scan_matching', 'pose_graph'
subfolders of 'mapping_2d'.
[Code structure RFC](e11bca586f/text/0000-code-structure.md
)
2018-02-21 12:41:14 +01:00
Alexander Belyaev
96d5e2819c
Move implementation of ProbabilityGrid to .cc file. ( #924 )
2018-02-21 09:55:40 +01:00
gaschler
ab05459f1c
Move GlobalTrajectoryBuilder to cc file ( #923 )
...
* Move GlobalTrajectoryBuilder to cc file.
This allows to instrument file-level static metrics.
Also, it is a cleaner interface.
* two create functions
* drop superfluous typename
2018-02-21 08:53:09 +01:00
Alexander Belyaev
a58866cb38
Rename mapping_3d::PoseGraph to mapping::PoseGraph3D. ( #918 )
...
[Code structure RFC](e11bca586f/text/0000-code-structure.md
)
2018-02-20 15:28:21 +01:00
Alexander Belyaev
43544f0fbc
Rename mapping_2d::PoseGraph to mapping::PoseGraph2D. ( #917 )
...
[rCode structure RFC](e11bca586f/text/0000-code-structure.md
)
2018-02-19 20:01:29 +01:00
danielsievers
c38bb60407
(De)serialize trajectory data from the optimization problem ( #915 )
...
* Write/Read the trajectory data (gravity, imu calibration, and fixed frame origin) into the serialized state proto
2018-02-19 16:30:32 +01:00
gaschler
64bc194609
Introduce interfaces for metrics ( #907 )
...
Adds interfaces for metrics and metrics families.
Adds creation of null (noop) metrics.
Declares global register function.
RFC=[0014](https://github.com/googlecartographer/rfcs/blob/master/text/0014-monitoring.md )
2018-02-19 14:02:54 +01:00
Juraj Oršulić
fb631ac9e6
Landmark improvements ( #901 )
2018-02-14 15:39:43 +01:00
gaschler
cf01184114
Fix leak in LandmarkCostFunctionTest. ( #902 )
2018-02-14 12:38:01 +01:00
gaschler
9793542957
Add 3D global SLAM grpc test. ( #904 )
2018-02-14 12:04:52 +01:00
gaschler
244cf615f5
Make clang compile without warnings. ( #903 )
...
Rule out accidental usage of integer-only ::abs.
Correct static, override and protected annotations.
2018-02-14 11:06:46 +01:00
gaschler
b2581b0d58
Make comparison operator const. ( #898 )
2018-02-13 13:03:26 +01:00
gaschler
7448f93b50
Avoid auto for Eigen expressions. ( #899 )
...
While harmless in most cases, auto can delay evaluation
of expressions in unexpected ways.
So it is better to avoid auto for Eigen expressions.
https://eigen.tuxfamily.org/dox/TopicPitfalls.html
2018-02-13 12:34:43 +01:00
Alexander Belyaev
ac79f0c034
Save landmark poses after optimization run. ( #896 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-12 13:15:16 +01:00
Alexander Belyaev
b72bbb20c3
Fix the size of residuals, add test for jacobians. ( #895 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-09 13:13:17 +01:00
Alexander Belyaev
95dbcfdf9e
Serialize landmarks. ( #889 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-07 10:47:39 +01:00
Alexander Belyaev
58bc1ced68
Implement GetLandmarkPoses method. ( #888 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-06 18:13:31 +01:00
Alexander Belyaev
28993a8963
Use landmarks in optimization (both 2D & 3D). ( #884 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-05 13:23:00 +01:00
Juraj Oršulić
9bebeea742
Serialize and deserialize trajectory builder options ( #859 )
2018-02-05 09:45:43 +01:00
Holger Rapp
c212bbb698
Hand through intensities into the generated PLY - if they exist. ( #885 )
2018-02-02 18:29:18 +01:00
gaschler
9eaf960936
Configure remaining tests in bazel ( #879 )
2018-02-01 21:58:59 +01:00
Alexander Belyaev
eed51b8bb6
Cleaning up dependencies for constraint builder & optimization problem. ( #877 )
2018-02-01 20:59:22 +01:00
Alexander Belyaev
8ea46857ac
Move cerec_pose.* to mapping/pose_graph. ( #874 )
2018-02-01 15:16:50 +01:00
Alexander Belyaev
d195c77ebc
Add a 2D landmark cost function. ( #868 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-01 13:39:24 +01:00
Christoph Schütte
60e9fa59fe
Implement AddImuDataHandlerTest ( #872 )
...
This PR introduces first gRPC handler test that takes advantage of new RpcHandlerTestServer.
2018-02-01 13:05:08 +01:00
Alexander Belyaev
e735203a05
Extend MapById::lower_bound() to support structs with 'time' field. ( #871 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-02-01 11:58:13 +01:00
Alexander Belyaev
ab890a8e15
Move 3D landmark cost function to mapping_3d/. ( #870 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-01-31 18:40:10 +01:00
Alexander Belyaev
0440761474
Move slerp and scaling of error to 'cost_helpers'. ( #864 )
...
[RFC=0011](https://github.com/googlecartographer/rfcs/blob/master/text/0011-landmarks.md )
2018-01-31 17:06:49 +01:00
Rodrigo Queiro
ad4dc3c4d3
Bazel: build with -Wno-sign-compare ( #863 )
...
This avoids warnings for code like:
```
CHECK_EQ(local_to_cloud_trajectory_id_map_.count(local_trajectory_id), 0);
```
2018-01-31 15:19:36 +01:00
Alexander Belyaev
708e7fc57d
Add a 'cost_helpers' library. ( #862 )
...
* Add a 'cost_helpers' library.
* Change naming and add comments.
2018-01-30 22:12:25 +01:00
Alexander Belyaev
93568641f9
Implement LandmarkCostFunction 3D. ( #860 )
2018-01-30 15:18:13 +01:00
Alexander Belyaev
8316444319
Store landmark observations as LandmarkNodes in PoseGraph. ( #850 )
2018-01-29 10:17:05 +01:00
gaschler
dab69e0ca0
Struct SensorId ( #839 )
...
* WIP, started unordered_set<SensorId>
* struct SensorId. Works for cartographer without grpc.
* correct test
* SensorId in cartographer_grpc/
* clean up
* try to fix for trusty
* SensorId::operator==
* Ran clang-format.
2018-01-26 15:07:49 +01:00
Christoph Schütte
edb18231b6
Add ProtoStreamWriterInterface and implement forwarding writer. ( #849 )
2018-01-25 15:27:50 +01:00
Alexander Belyaev
894bad397d
Rename Landmark->LandmarkObservation. ( #847 )
2018-01-25 12:10:30 +01:00
Alexander Belyaev
aee1bc46dc
Introduce InMemoryProtoStreamReader. ( #844 )
...
* Introduce InMemoryProtoStreamReader.
* Move inmemory*.* to in_memory*.*.
2018-01-24 13:58:15 +01:00
Alexander Belyaev
43008d391d
Introduce a ProtoStreamReaderInterface. ( #837 )
...
* Introduce a ProtoStreamReaderInterface.
* Remove the comments from interface def.
2018-01-23 09:09:37 +01:00
Alexander Belyaev
986ac28ff8
Rename 'tranform' to 'landmark_to_tracking_transform'. ( #836 )
2018-01-22 18:30:14 +01:00
Alexander Belyaev
6d4649857a
Move implementation of ReadProto/WriteProto to .cc ( #835 )
2018-01-22 17:53:31 +01:00
Rodrigo Queiro
0c227097e7
Add a Bazel build for cartographer ( #834 )
...
This does not include cartographer_grpc, nor any of the binaries
(*_main.cc). It has been tested with Bazel 0.9.0 on Ubuntu 14.04 with
the latest (at time of writing) dazel/dazel container, by running:
```
bazel build //...
bazel test //...
```
While this is a large CL, the files under third_party are not new - they have been through internal review, and this is their open-source release. The other files come to 212 lines of code.
2018-01-22 16:47:07 +01:00
Alexander Belyaev
67850d25a0
Replace templates in io/proto_stream.h with upcasting. ( #833 )
2018-01-22 14:12:14 +01:00
Alexander Belyaev
746c9c83c8
Propagate LandmarksData to the PoseGraph. ( #830 )
...
Propagate LandmarkData to the PoseGraph.
2018-01-19 09:41:24 +01:00
gaschler
de5937856d
Collate_by_trajectory option ( #828 )
...
Adds an option to create a MapBuilder using TrajectoryCollator
(instead of Collator).
[RFC=0008](https://github.com/googlecartographer/rfcs/blob/master/text/0008-collator-interface.md )
2018-01-17 21:15:15 +01:00
gaschler
d92040d0e6
Test Collator for multiple trajectories ( #829 )
2018-01-17 20:43:20 +01:00
gaschler
70e378b7c5
TrajectoryCollator ( #827 )
...
Introduces TrajectorCollator, which collates sensor data ignoring
other trajectories.
Tests the same.
[RFC=0008](https://github.com/googlecartographer/rfcs/blob/master/text/0008-collator-interface.md )
2018-01-17 17:48:20 +01:00
Wolfgang Hess
ffdbf1c161
Fix debug output for 3D loop closure error. ( #826 )
...
PAIR=spielawa
2018-01-17 13:09:48 +01:00
gaschler
f64eef876a
Optional GetBlockingTrajectoryId ( #820 )
...
[RFC=0008](https://github.com/googlecartographer/rfcs/blob/master/text/0008-collator-interface.md )
2018-01-16 16:21:22 +01:00
Alexander Belyaev
53c2a6b58f
Move 'finished' getter to the base class. ( #803 )
...
* Move 'finished' getter to the base class.
* Ran clang-format.
* Ran clang-format.
2018-01-16 14:20:33 +01:00
Christoph Schütte
31ec89614c
Add parameter to Submap::ToProto() to determine whether to include loop ( #821 )
2018-01-16 11:23:29 +01:00
Christoph Schütte
3660408ae6
Forward declare unique_ptr<LocalSlamResultData> ( #824 )
2018-01-16 10:20:51 +01:00
gaschler
057bd8ce6a
Public SpaCostFunction::Compute* ( #814 )
2018-01-12 21:46:47 +01:00
Wolfgang Hess
19ff047a79
Allow FixedRatioSampler to drop all data. ( #817 )
...
This is useful to disable loop closure by setting
constraint_builder.sampling_ratio = 0.
2018-01-12 18:54:41 +01:00
Christoph Schütte
1de696d45f
Introduce PoseGraphInterface::ToProto() ( #813 )
2018-01-12 13:55:14 +01:00
Christoph Schütte
fee77c8a99
Add LocalSlamResultData retrieval and submap management ( #810 )
...
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md )
2018-01-12 13:00:25 +01:00
gaschler
51ccee3e74
CollatorInterface ( #808 )
...
[RFC=0008](https://github.com/googlecartographer/rfcs/blob/master/text/0008-collator-interface.md )
2018-01-11 16:02:03 +01:00
Christoph Schütte
8fc64fdbb5
Wrap HybridGrid in unique_ptr to make Submap updatable ( #809 )
2018-01-11 14:34:56 +01:00
Christoph Schütte
e1a182d1fa
Implement LocalSlamResult data adding to PoseGraph. ( #804 )
2018-01-11 10:19:37 +01:00
Christoph Schütte
d313af8674
Add InsertionResult to LocalSlamResult. ( #801 )
2018-01-10 17:26:04 +01:00
Susanne Pielawa
c7a8c5fda9
Keep fixed frame across optimizations. ( #807 )
...
PAIR=wohe
2018-01-10 16:01:27 +01:00
Susanne Pielawa
286d16238e
In optimization_problem, use a map instead of vector for trajectory data. ( #805 )
...
PAIR=wohe
2018-01-10 14:30:51 +01:00
Susanne Pielawa
67d26747cc
Implement assignment operator for common::optional. ( #800 )
...
Implement assignment operator for common::optional.
2018-01-09 17:54:53 +01:00
Christoph Schütte
8c7c4e3d2a
Make LocalTrajectoryBuilder optional. ( #799 )
...
This is to prepare for the cloud-based mapping case where the robot is running cartographer in pure-localization mode and the cloud instance only solves the global problem. In that case a `LocalTrajectoryBuilder` need to be instantiated in for the cloud instance.
2018-01-09 16:54:30 +01:00
Christoph Schütte
8165da873f
Add GetConstraints() to gRPC service. ( #798 )
2018-01-09 14:25:28 +01:00
Christoph Schütte
78d05bf745
Add GetTrajectoryNodePoses() to gRPC service ( #796 )
2018-01-08 14:19:39 +01:00
Christoph Schütte
d57c2441b8
Implement gRPC submap query. ( #794 )
2018-01-08 13:52:14 +01:00
Susanne Pielawa
91034eaf58
Making pose in FixedFramePoseData optional. ( #792 )
...
This is for the case that the GPS signal is not available.
2018-01-08 11:37:07 +01:00
Christoph Schütte
196b4b891c
Add PoseGraphInterface::GetTrajectoryNodePoses() ( #795 )
2018-01-08 09:13:51 +01:00
Christoph Schütte
1a837ef3ab
Introduce PoseGraphInterface::GetAllSubmapPoses() ( #790 )
2018-01-05 14:19:08 +01:00
Susanne Pielawa
63a80c9340
Adding a minimal implementation of std::optional. ( #783 )
...
We're using C++11, which doesn't have std::optional. We need a few
features of std::optional for improved GPS support. These are
implemented here.
2018-01-05 11:27:21 +01:00
Juraj Oršulić
58d94aaa68
Refactor calling optimization into DispatchOptimization. ( #729 )
...
I noticed that @jihoonl opened the PR #726 which performs a similar thing. As discussed in googlecartographer/cartographer_ros#613 (@cschuet has already taken a look), I pulled this out of #481 (a really old PR whose merging has been postponed), which is an example where re-running optimization is triggered from elsewhere as well (besides from `ComputeConstraintsForNode`). This refactoring makes libcartographer friendlier for use cases such as that one.
An important detail is that I have changed the condition in `WaitForAllComputations` to also check if the work queue is empty. If there are other things on the worker queue besides `ComputeConstraintsForNode`, currently we will wrongfully conclude that all computations are done. (This detail was merged in #754 , so it's no longer in the diff of this PR).
Also missing is the same thing for 3D. I can add that when we settle on this.
Also, I suggest that `run_loop_closure` gets renamed to `run_optimization`.
2018-01-05 10:43:56 +01:00
Jihoon Lee
2ad83662f2
Migrate SubmapTexture and SubmapSlice logics from cartographer_ros ( #782 )
...
Towards [RFC06](https://github.com/googlecartographer/rfcs/blob/master/text/0006-serve-ros-map-from-pbstream.md ).
Migrates
* `FillSubmapSlice` from `pbstream_to_rosmap_main.cc`
* `SubmapTexture` logics from cartographer_ros
2018-01-04 10:52:05 +01:00
Juraj Oršulić
9ee65293d2
Pose graph: do not mark all submaps finished when finalizing a trajectory. ( #784 )
...
I think this was a mistake in #563 (@jihoonl). Not all submaps should be marked as finished, only those pertaining to the trajectory being finalized.
2018-01-04 10:11:28 +01:00
gaschler
dbb3f7cde4
Test TrajectoryBuilderStub ( #780 )
2018-01-03 14:56:56 +01:00
Christoph Schütte
5b5b290e9f
Implement BlockingQueue::WaitUntilEmpty(). ( #775 )
...
PAIR=gaschler
2017-12-20 10:22:53 +01:00
Christoph Schütte
02734c296d
Implement ReceiveLocalSlamResultsHandler. ( #772 )
2017-12-19 15:11:29 +01:00
Christoph Schütte
03751b3c9f
Implement local SLAM subscriptions in MapBuilderServer ( #766 )
2017-12-18 16:32:34 +01:00
gaschler
c6decd5b7b
Test MapBuilderServer ( #762 )
...
Test to start and stop the MapBuilderServer.
Moves test helper functions in common with MapBuilderTest
to internal/mapping.
2017-12-18 11:52:17 +01:00
gaschler
d49706944f
FixedFramePoseData in gRPC server ( #761 )
...
Defines the FixedFramePoseData RPC and implements
the handler for the gRPC server.
2017-12-15 15:26:58 +01:00
gaschler
6817d22788
Test global 2D SLAM. ( #751 )
2017-12-15 14:45:56 +01:00
Juraj Oršulić
29e4395a5a
Make WaitForAllComputation wait for work queue in 3D as well ( #758 )
...
Repeat the change in #754 by @gaschler for 3D as well.
2017-12-14 10:02:54 +01:00
gaschler
f8452821d7
WaitForAllComputation waits for work queue ( #754 )
2017-12-13 18:49:22 +01:00
gaschler
59d1b968bc
Unwarp by point in LocalTrajectoryBuilder. ( #636 )
2017-12-13 18:29:42 +01:00
Christoph Schütte
c5ec086968
Introduce TimedPointCloudData. ( #748 )
...
This data structure is needed to forward RangeFinderData over gRPC.
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md )
2017-12-08 19:28:47 +01:00
Christoph Schütte
3ae78563c6
Introduce TrajectoryBuilderInterface. ( #736 )
...
[RFC=0004](https://github.com/googlecartographer/rfcs/blob/master/text/0004-trajectory-builder-interface.md )
2017-12-08 11:52:29 +01:00
Christoph Schütte
96cdbde5bf
Introduce PoseGraphInterface. ( #744 )
...
[RFC=0005](https://github.com/googlecartographer/rfcs/blob/master/text/0005-pose-graph-interface.md )
2017-12-08 11:13:48 +01:00
gaschler
549eef0000
Correct namespace ( #742 )
2017-12-07 21:17:30 +01:00
Michael Grupp
176fc42c3f
Remove empty leftover of pose_estimate.h ( #740 )
...
Follow-up of #670 .
2017-12-07 08:53:04 +01:00
Christoph Schütte
2a7a6ef934
Make sensor::Data dispatchable to TrajectoryBuilder. ( #738 )
...
This change allows to dispatch sensor::Data to implementations of mapping::TrajectoryBuilder, i.e. CollatedTrajectoryBuilder. We need this for cartographer_grpc as the incoming sensor data is inserted into a queue by the gRPC threads and dequeued by a SLAM threads that inserts them into a CollatedTrajectoryBuilder.
2017-12-06 16:36:36 +01:00
gaschler
4c999037b4
Integration tests for local slam. ( #734 )
2017-12-06 15:58:16 +01:00
gaschler
49d55d97c1
Test MapBuilder ( #731 )
2017-12-05 14:04:10 +01:00
gaschler
b77a1f2178
Remove implementation from TrajectoryBuilder. ( #728 )
...
To simplify the implementation of a gRPC-based trajectory builder,
this moves the existing implementation to CollatedTrajectoryBuilder
and organizes the interface by sensor type.
2017-12-05 11:05:05 +01:00
gaschler
ee9c61a736
Move LocalSlamResultCallback to AddTrajectory ( #724 )
2017-12-04 22:41:38 +01:00
gaschler
1ff8243802
Test RotationDeltaCostFunctor ( #721 )
2017-12-01 09:25:15 +01:00
gaschler
63e901d276
Create AutoDiffCostFunction in cost functions. ( #718 )
...
Creating a ceres::AutoDiffCostFunction requires specifying numbers
of residuals and variables, so it is safer to implement this within
the cost functions, which know best.
2017-11-30 15:41:57 +01:00
gaschler
85bfb888eb
Interface for MapBuilder ( #715 )
...
Defines an interface for MapBuilder that can be used to implement a gRPC stub.
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md )
2017-11-30 14:41:48 +01:00
gaschler
24f253a2aa
Remove GetBlockingTrajectoryId ( #714 )
2017-11-30 12:04:14 +01:00
Jihoon Lee
88805a301d
Trim all submaps when pure localization trajectory is finished. ( #563 )
...
Fixes #560
based on #562
2017-11-28 10:21:55 +01:00
Juraj Oršulić
bebe021b04
Serialize fixed frame pose data. ( #689 )
...
Similar to #666 and #548 .
2017-11-28 09:44:35 +01:00
gaschler
1c7183d5c4
VoxelFilter for TimedPointCloud, Filter method. ( #710 )
...
This makes the VoxelFilter ready for TimedPointCloud and
per-point unwarping.
2017-11-27 15:12:07 +01:00
gaschler
c292d76f86
Test ImuTracker ( #711 )
...
Adds unit tests for ImuTracker to cover filtering of the gravity
vector and tracking angular velocity.
2017-11-27 14:46:32 +01:00
Wolfgang Hess
7e82ac3bbf
Make IMU cost functions internal. ( #708 )
...
[RFC=0003](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2017-11-24 15:29:48 +01:00
Wolfgang Hess
79b83b92b2
Make the MotionFilter internal. ( #707 )
...
Also moves it from mapping_3d to mapping since it is used
in both 2D and 3D SLAM.
[RFC=0003](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2017-11-24 14:01:07 +01:00
gaschler
0084f14c1c
CeresScanMatcher target_translation ( #702 )
...
For its translation cost function, CeresScanMatcher now takes
a target translation as an argument instead of a pose, which
was confusing.
2017-11-24 12:26:14 +01:00
Wolfgang Hess
0819e52a9c
Make the LocalTrajectoryBuilders internal. ( #704 )
...
[RFC=0003](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2017-11-24 10:39:12 +01:00
Wolfgang Hess
8e6101de5c
Make the OccupiedSpaceCostFunction internal. ( #703 )
...
[RFC=0003](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2017-11-23 18:04:36 +01:00
Wolfgang Hess
70a0f41364
Remove unused code. ( #699 )
2017-11-23 16:39:55 +01:00
gaschler
9bfc52d878
Rename arguments of CostFunctors to target_ ( #700 )
...
Rename constant targets of cost functors to target_*.
Pass only translation to Translation cost functors.
2017-11-23 16:04:49 +01:00
Wolfgang Hess
ec034b13bc
Do not install global_trajectory_builder.h. ( #698 )
...
This moves the global_trajectory_builder.h header under
cartographer/internal and changes the CMakeLists.txt to
not install internal headers.
[RFC=0003](https://github.com/googlecartographer/rfcs/blob/master/text/0003-internal-headers.md )
2017-11-23 14:47:29 +01:00
Juraj Oršulić
8f9f1cf44e
Fix debug build ( #697 )
...
Similar to #418 .
2017-11-23 14:20:01 +01:00
gaschler
147c8166b6
ImuTracker uses conjugate. ( #693 )
...
Normalized quaternions can be inverted with conjugate, which is faster.
The motivation for optimizing ImuTracker::Advance is that
per-point unwarping will call this for every point.
2017-11-23 13:50:44 +01:00
gaschler
a8bd98680e
ExtrapolatePose uses fewer transforms. ( #694 )
...
ExtrapolatePose avoids conversion to Rigid3d and computes translation
and rotation directly, which is faster.
Per-point unwarping will call this function for every point, so we
optimize it.
2017-11-23 12:27:26 +01:00
Juraj Oršulić
31f28b5097
Remove PoseEstimate. ( #670 )
...
Replaces #620 .
Depends on switching `cartographer_ros` to use the new callback API for handling the last scan and pose estimate (googlecartographer/cartographer_ros#594 ).
2017-11-17 16:47:06 +01:00
Wolfgang Hess
aba4575d93
Rename 'submap_transforms' to follow terminology. ( #688 )
...
https://google-cartographer.readthedocs.io/en/latest/terminology.html
Related to #602 .
2017-11-17 13:13:45 +01:00
Christoph Schütte
b91ff8fe44
Extrapolate poses for ground truth relations. ( #687 )
2017-11-17 12:27:31 +01:00
Wolfgang Hess
055728af93
Rename options for consistency. ( #686 )
...
"scan" is better named "node" if it refers to a node in global SLAM.
"penalty factor" is renamed "weight" for consistency with other similar options.
"scans_per_accumulation" is renamed "num_accumulated_range_data" to match the code and since the accumulated data is not called "scan".
2017-11-17 10:52:22 +01:00
Holger Rapp
5ee830e8cc
Cleanup and new features in Image code. ( #685 )
...
- Removes stride_, since we know for a fact that it is always width * 4.
- Adds a constructor from a cairo surface.
- Adds a function that rotates the image by 90 degrees.
This is in preparation of adding a tool that can generate an image from a .pbstream.
2017-11-16 17:05:18 +01:00
Holger Rapp
0b4e7a9443
Refactor image related code. ( #684 )
...
- Take immutable parameter as const ref instead of pointer.
- make kCairoFormat a global constant, since it is defined in many places in cartographer and cartographer_ros, but we rely on it actually always being the same value.
2017-11-16 15:07:05 +01:00
gaschler
b9015f33a7
Filter early in AddRangeData. ( #681 )
...
Filter earlier in 3D.
Combine two transforms to one in 2D.
2017-11-16 13:35:44 +01:00
Wolfgang Hess
16d62f45f0
Rename sparse_pose_graph options. ( #682 )
...
The default pose graph configuration is now included as "pose_graph.lua"
and available as POSE_GRAPH.
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-16 11:48:25 +01:00
jie
a08a370ef3
Check if filtered point clouds are empty. ( #664 )
...
The point cloud will be filtered by MaxRangeFilter before doing scan matching. For some special cases, the filtered point cloud maybe empty, it will cause crash:
real_time_correlative_scan_matcher.cc:159 Check failed: candidate.score > 0.f (nan vs. 0)
This PR fixed this bug, check the point cloud size before scan matching, return false for empty point cloud.
2017-11-16 09:56:01 +01:00
Wolfgang Hess
bdca2095c0
Rename proto::SparsePoseGraph. ( #680 )
...
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-15 14:58:49 +01:00