gaschler
a3b746ff67
Use Task in ConstraintBuilder3D ( #1119 )
2018-04-27 22:14:19 +02:00
gaschler
c46fe073b4
Use Task in ConstraintBuilder2D ( #1118 )
2018-04-26 12:33:36 +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
89ac5cbabf
Test GlobalSlam3D ( #1114 )
2018-04-25 15:00:13 +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
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
Alexander Belyaev
8816d5710c
Invoke trimmer only when there are enough added submaps. ( #1095 )
2018-04-20 09:05:05 +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
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
Alexander Belyaev
23f6de46b0
Use area instead of cells count for overlapping trimmer options. ( #1080 )
2018-04-17 18:22:38 +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
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
Alexander Belyaev
a4346337bc
Address the comments for the overlapping submaps trimmer. ( #1060 )
2018-04-12 14:28:33 +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
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
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
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
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
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
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
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
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
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
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
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
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
Alexander Belyaev
8ea46857ac
Move cerec_pose.* to mapping/pose_graph. ( #874 )
2018-02-01 15:16:50 +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
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
43008d391d
Introduce a ProtoStreamReaderInterface. ( #837 )
...
* Introduce a ProtoStreamReaderInterface.
* Remove the comments from interface def.
2018-01-23 09:09:37 +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
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
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
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
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
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
gaschler
dbb3f7cde4
Test TrajectoryBuilderStub ( #780 )
2018-01-03 14:56:56 +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
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
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
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
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
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
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
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
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
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
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
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
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
Wolfgang Hess
c25379cd20
Rename mapping_{2,3}d::SparsePoseGraph. ( #678 )
...
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-15 13:50:18 +01:00
Wolfgang Hess
8c114d6eaf
Rename mapping::SparsePoseGraph. ( #677 )
...
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-15 12:06:19 +01:00
catskul
f6192e4735
replace implicit use of cartographer::string with explicit use of std::string ( #673 )
...
Fixes #622 .
2017-11-15 10:17:59 +01:00
Wolfgang Hess
291c0f581b
Move the mapping/sparse_pose_graph directory. ( #669 )
...
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-15 09:39:45 +01:00
Juraj Oršulić
818e5e1a44
Add local SLAM result callback. ( #574 )
...
Depends on ~~#619~~ (merged) and ~~#617~~ (merged).
Related to #508 .
Also, if cartographer_ros is going to use this, and we wish to serialize the saved range data, that will have to be handled in cartographer_ros, right?
2017-11-14 17:19:14 +01:00
Wolfgang Hess
a4c0e4754e
Rename scan to node. ( #667 )
...
Changes the naming from "scan" to "node" in the pose graph.
AddNode() adds a new node to the graph which might contain
data from multiple range sensors and not necessarily one scan.
Configuration and documentation changes might follow in a
separate PR.
Related to #280 .
2017-11-14 16:53:31 +01:00
Juraj Oršulić
4b342eddd0
Miscellaneous: rename odometer->odometry ( #665 )
...
Since we're adding `sensor::OdometryData`, I think that the function should be called `AddOdometryData`.
2017-11-14 16:18:07 +01:00
Juraj Oršulić
5496cbdc0c
Serialize odometry data ( #666 )
...
Replaces #550 .
2017-11-14 15:18:39 +01:00
damienrg
d183ab737a
Fix mismatched tag warning for MapByIndex ( #658 )
...
- [ X] Keep your PR rebased to master.
- [ X] Keep your PR under 200 lines of code and address a single concern.
- [ X] Add unit test(s) and documentation (these do not count toward your 200 lines).
- [ X] Adhere to the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html ).
- [ X] Run `clang-format -style=Google` on your code (this alone is not enough to ensure you've followed the style guide).
- [ X] Run `ninja test` or `catkin_make_isolated --install --use-ninja --pkg cartographer --make-args test` as appropriate.
2017-11-13 10:18:58 +01:00
Christoph Schütte
53471359f8
Convert all .proto files to proto3 syntax. ( #653 )
...
[RFC=0000](https://github.com/googlecartographer/rfcs/blob/master/text/0000-proto3-transition.md )
2017-11-13 08:26:35 +01:00
jie
ed71914805
Add MutexLocker to ConnectedComponents::GetComponent and SparsePoseGr… ( #565 )
...
…aph::TrimmingHandle::MarkSubmapAsTrimmed
To make them compile successfully in google.
2017-11-10 17:21:20 +01:00
Juraj Oršulić
eb4415d17d
Introduce MatchingResult for LocalTrajectoryBuilder::AddRangeData. ( #619 )
...
In preparation for #574 . Depends on ~~#618~~ (merged) and ~~#617~~ (merged).
2017-11-10 14:49:41 +01:00
Juraj Oršulić
e21fc9f253
Serialize IMU data. ( #548 )
2017-11-09 15:32:54 +01:00
Jihoon Lee
3bdee588bd
Add FinishTrajectory() in SparsePosegraph. ( #562 )
2017-11-09 14:29:26 +01:00
Christoph Schütte
eb96c91473
Initial pose implementation. ( #606 )
2017-11-08 14:01:38 +01:00
Wolfgang Hess
088681f9ec
Add 3D localization support. ( #632 )
...
This adds information about which nodes are contained in which
deserialized submaps. This is necessary for the rotational scan
matcher.
Also skips frozen trajectories when tying together nodes of a
trajectory with IMU data which is unavailable in this case.
2017-11-07 11:26:41 +01:00
Juraj Oršulić
8186316d77
Range loop over trajectories for MapByTime ( #633 )
2017-11-06 17:14:01 +01:00
Wolfgang Hess
049f30d824
Generalize IntegrateImu(). ( #627 )
...
This is in preparation of changing the data structure
for IMU data away from a deque. Needed for localization
and life-long mapping.
2017-11-06 11:00:33 +01:00
gaschler
8854aaae9e
Extrapolator reuses result using additional IMU trackers. ( #623 )
...
This makes the extrapolator stricter that time arguments
must be monotonously increasing when calling the Extrapolate
methods.
2017-11-03 16:19:55 +01:00
Wolfgang Hess
978544eca4
Add submap and gravity-aligned frame terminology. ( #624 )
2017-11-03 13:44:23 +01:00
gaschler
5a3bb14083
PoseExtrapolator::GetLastExtrapolatedTime ( #626 )
...
This prepares the API for #623 and #616 .
2017-11-03 11:56:31 +01:00
Juraj Oršulić
7964211fef
Deserialize SPG constraints ( #544 )
2017-11-02 22:01:01 +01:00
Wolfgang Hess
82a4b2f171
Follow #591 terminology in 3D optimization. ( #612 )
2017-10-27 15:48:51 +02:00
Christoph Schütte
dacc962399
Adds lower_bound() to MapById. ( #610 )
2017-10-27 14:50:14 +02:00
gaschler
d4db1e79a6
Add TimedPointCloud and TimedRangeData. ( #601 )
...
Adds a type TimedPointCloud that holds 4-dimensional vectors where measurement time of individual points are stored in the fourth entry.
Uses TimedRangeData to pass TimedPointCloud of incoming measurements to LocalTrajectoryBuilder.
Fixes #573 .
2017-10-24 11:47:35 +02:00
Juraj Oršulić
f179bd942c
Support multiple trajectories in LoadMap. ( #567 )
2017-10-20 16:13:18 +02:00
Wolfgang Hess
a96511464e
Add map trajectory without a trajectory builder. ( #605 )
2017-10-19 16:59:04 +02:00
Christoph Schütte
7c03467a78
Change GetTrajectoryNodes() to MapById. ( #603 )
2017-10-19 14:50:58 +02:00
Wolfgang Hess
e479382ecc
Change GetAllSubmapData() to MapById. ( #597 )
2017-10-17 16:03:16 +02:00
Christoph Schütte
3d4650d675
Remove trimmed() from TrajectoryNode ( #596 )
2017-10-17 15:36:07 +02:00
Wolfgang Hess
e5f9815f67
Change submap_data_ in pose graph to MapById. ( #593 )
...
* Change submap_data_ in pose graph to MapById.
2017-10-17 13:13:37 +02:00
Christoph Schütte
fdda1dd091
Switch trajectory_nodes in SPG2D to MapById. ( #592 )
2017-10-17 11:48:23 +02:00
Wolfgang Hess
bcd1be92b1
Adds a bit of terminology documentation. ( #591 )
...
Changes code to match the new documentation.
2017-10-17 10:07:54 +02:00
Wolfgang Hess
76ed37768f
Validate odometry and fixed frame poses. ( #588 )
2017-10-16 15:59:56 +02:00
Christoph Schütte
6b447c4577
Add FindChecked to MapById. ( #586 )
...
* Add FindChecked to MapById.
2017-10-16 14:15:53 +02:00
Christoph Schütte
5ed19c15ab
Introduce proxy object for iteration over trajectory ids. ( #585 )
...
* Introduce proxy object for iteration over trajecotry ids.
2017-10-16 12:52:53 +02:00
Christoph Schütte
006db45910
Introduce proxy object for range based loops over nodes of trajectory. ( #583 )
2017-10-13 16:44:31 +02:00
Wolfgang Hess
4ab4817104
Add MapById<>::ConstIterator::operator->(). ( #580 )
2017-10-12 16:15:12 +02:00
Wolfgang Hess
cb41777b9e
Introduces mapping::MapById in the 2D pose graph for submaps. ( #578 )
...
PAIR=cschuet
2017-10-12 11:58:59 +02:00
Wolfgang Hess
ea55e837d2
Introduces mapping::MapById in the 2D optimization problem. ( #577 )
...
PAIR=cschuet
2017-10-09 17:33:12 +02:00
Wolfgang Hess
2434e7e40e
Fix crashing bug in localization. ( #575 )
...
Now that we deserialize trajectory nodes, we need to make sure
that the global matcher sampler is added for the map trajectory.
2017-10-06 17:01:04 +02:00
Juraj Oršulić
2f332eca28
Deserialize trajectory nodes. ( #569 )
2017-10-06 16:16:25 +02:00
Juraj Oršulić
bd8a2e6a92
Store node initial pose in constant data. ( #568 )
2017-10-05 16:10:12 +02:00
Wolfgang Hess
51f5a18462
Fix formatting. ( #561 )
2017-10-04 15:58:48 +02:00
Juraj Oršulić
aaaf5ac546
Rename serialization NodeData proto for consistency. ( #540 )
...
node_data should be a member of a node, not the other way around.
2017-10-04 14:13:18 +02:00