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
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
Wolfgang Hess
36b9cf7f9a
Move the mapping_3d/sparse_pose_graph directory. ( #676 )
...
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-15 11:30:35 +01:00
Wolfgang Hess
26db9d6210
Move the mapping_2d/sparse_pose_graph directory. ( #675 )
...
[RFC=0001](https://github.com/googlecartographer/rfcs/blob/master/text/0001-renaming-sparse-pose-graph.md )
2017-11-15 10:52:06 +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
gaschler
7904808d40
Reduce transforms in LocalTrajectoryBuilder. ( #668 )
...
This speeds up AddRangeData because we avoid one copy and loop over all points.
2017-11-15 09:15:02 +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
Juraj Oršulić
60c72cb445
Deserialize trajectory connectivity ( #552 )
2017-11-14 13:26:53 +01:00
Wolfgang Hess
3ec583a327
Change fixed_frame_pose_data_ to MapByTime. ( #662 )
2017-11-13 17:41:04 +01:00
gaschler
fd5003b69b
Omit odometry penalty within frozen trajectory. ( #661 )
...
In the case of pure localization, this reduces the size of the optimization problem by a large factor.
2017-11-13 14:19:15 +01:00
Wolfgang Hess
4a8607810e
Change odometry_data_ to MapByTime. ( #655 )
2017-11-13 13:21:53 +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
damienrg
a9da74496a
Fix unused lambda capture warning ( #659 )
...
- [ 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 09:44:12 +01:00
Christoph Schütte
6e274766f2
Remove unnecessary [packed=true] annotation ( #660 )
...
[RFC=0000](https://github.com/googlecartographer/rfcs/blob/master/text/0000-proto3-transition.md )
2017-11-13 09:18:53 +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
Jihoon Lee
028391357d
Add OccupancyGridState and SubmapState in cartographer/io ( #638 )
...
replaces #599
related to googlecartographer/cartographer_ros#510
2017-11-09 17:19:29 +01:00
Wolfgang Hess
418819a9ef
Use 'global_pose' terminology for submaps. ( #645 )
...
Use 'global_pose' terminology for submaps.
This follows #624 .
2017-11-09 16:40:21 +01:00
gaschler
6eaf0f344d
FastCorrelativeScanMatcher outputs unique_ptr. ( #643 )
2017-11-09 16:08:16 +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
Wolfgang Hess
92f81aec8a
Make proto::ProbabilityGrid proto3 compatible. ( #641 )
...
Moves the optional 'known_cells_box' into a message field.
This way its existence can still be checked in proto3.
2017-11-09 11:47:33 +01:00
gaschler
386ee328d8
Fix 3D yaw rotation in GenerateDiscreteScans. ( #640 )
...
Correctly generates discrete scans rotating around yaw in the gravity-aligned global map frame.
Fixes #639 .
PAIR=wohe
2017-11-08 17:37:36 +01:00
Christoph Schütte
eb96c91473
Initial pose implementation. ( #606 )
2017-11-08 14:01:38 +01:00
catskul
55e4338468
Start cleaning up Google specific types by making them cartographer private.
...
move string and size specific int/uint types into cartographer namespace as minimal change necessary to keep global namespace clean (#637 )
2017-11-08 09:07:46 +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
Alexander Belyaev
0d2bc8b938
Adds a 'LandmarkData' struct and proto. ( #628 )
2017-11-06 15:35:21 +01:00
Wolfgang Hess
77fb50fd76
Introduce sensor::MapByTime<>. ( #631 )
...
This data structure is used for keeping IMU data. This
allows trimming IMU data in the middle which is needed for
life-long mapping.
2017-11-06 13:36:59 +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
Juraj Oršulić
3c5a7aa2d8
Refactoring of LocalTrajectoryBuilder::AddAccumulatedRangeData ( #618 )
...
- introduce InsertIntoSubmap for 2D
- clarify some variable names in 3D
- move rotational_scan_matcher_histogram calculation
to InsertIntoSubmap for 3D
- refactor last version of range data before insertion into
range_data_in_local (filtered_range_data_in_local for 3D)
2017-11-02 16:01:23 +01:00
Juraj Oršulić
c57641f917
Make SPG::AddScan return the inserted node id. ( #617 )
2017-11-02 10:28:13 +01:00
Christoph Schütte
e10650910e
Pull out time-based transformation interpolation. ( #615 )
2017-10-30 15:41:02 +01:00
Wolfgang Hess
c011177bfd
Fix the origin of accumulated range data. ( #613 )
...
This changes the origin of accumulated range data from the
zero vector (which could be far off) to the origin of the
first range data in the accumulation.
2017-10-30 11:32:06 +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
Holger Rapp
638aee7c2a
Fix slow point deletion in RemovePoints. ( #608 )
...
This speeds up the asset writer significantly:
For the 3D sample bag:
~~~
/usr/bin/time roslaunch cartographer_ros assets_writer_backpack_3d.launch \
bag_filenames:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag \
pose_graph_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag.pbstream
master:
2100.96user 26.79system 35:43.60elapsed 99%CPU (0avgtext+0avgdata 3657028maxresident)k
17682632inputs+32080outputs (0major+20021051minor)pagefaults 0swaps
this CL:
1937.46user 11.77system 32:22.49elapsed 100%CPU (0avgtext+0avgdata 3659412maxresident)k
1352inputs+32088outputs (0major+7042032minor)pagefaults 0swaps
~~~
So ~10%. For pipelines that do less this can be even 30% or more.
2017-10-23 10:56:55 +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
Holger Rapp
49ead6055c
Towards a ROS map writing PointsProcessor. ( #598 )
...
- Refactor ProbabilityGridPointsProcessor for code reuse.
- Adds Image::width and height.
- Adds GetFilename for FileWriter.
Related to googlecartographer/cartographer_ros#475 .
2017-10-19 12:30:19 +02:00
Holger Rapp
0c9f2c4f65
Remove unused concept of CompressedRangeData. ( #604 )
2017-10-19 11:19:56 +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
Wolfgang Hess
d91afa4496
Introduces mapping::MapById for nodes in 3D. ( #587 )
2017-10-16 13:37:28 +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
Wolfgang Hess
7e0cfc3f22
Introduces mapping::MapById for submaps in 3D. ( #584 )
2017-10-16 10:48:43 +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
464d770d48
Introduces mapping::MapById for nodes in 2D. ( #581 )
...
PAIR=cschuet
2017-10-13 14:41:54 +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
Holger Rapp
6708930bbf
Adds 'offset_seconds' to PointCloudWithIntensities. ( #571 )
...
This is preparing using per-point-unwarping in the `assets_writer` in `cartographer_ros`.
Related to googlecartographer/cartographer_ros#521 .
PAIR=@wohe
2017-10-06 13:21:02 +02:00
Christoph Schütte
2862e12506
Add FrameIdFilteringPointsProcessor ( #566 )
...
* Add FrameIdFilteringPointsProcessor
Implements a PointProcessor that filters PointBatches (either by
whitelisting or blacklisting) the frame_id.
2017-10-05 17:33:51 +02:00
Wolfgang Hess
0053b30cc8
Add support for odometry to the 3D pose graph optimization. ( #570 )
...
Not used yet. Intended to experiment with the 3D pose graph optimization
in 2D SLAM.
2017-10-05 16:56:31 +02:00
Juraj Oršulić
bd8a2e6a92
Store node initial pose in constant data. ( #568 )
2017-10-05 16:10:12 +02:00
Wolfgang Hess
cae9c02e05
Follow #547 for 3D. ( #564 )
...
And changes to 3D following 2D regarding trimmed data.
2017-10-04 16:47:26 +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
Juraj Oršulić
b1b0750e5b
Check ratios in fixed rate sampler. ( #502 )
2017-10-04 13:15:35 +02:00
Christoph Schütte
9c81a01608
Add trajectory trimming support to 3d ( #559 )
...
* Adds DeleteScanMatcher() to 3D constraint builder
* Add possibility to remove submaps and scans from the 3D optimization
problem.
* Implements TrimmingHandle in SPA.
2017-10-02 17:01:14 +02:00
Jihoon Lee
3c521eb573
Remove hooray. And prints remaining work items in queue ( #547 )
2017-09-29 01:04:28 -07:00
jie
3744988fd2
Fix trajectory count check bug for asset writer floor separation. ( #542 )
2017-09-28 10:43:47 +02:00
Wolfgang Hess
7d0e72dac2
Fix some nits. ( #536 )
...
Most importantly makes mapping_2d::SparsePoseGraph::GetLatestScanTime()
private.
2017-09-28 09:21:07 +02:00