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
Wolfgang Hess
0cbc420b02
Fix odometry in the 2D pose graph optimization. ( #533 )
...
Before, the relative change in pose due to odometry in the
2D pose graph optimization problem was incorrectly done in
the tracking frame. Instead, the gravity aligned frame in
which the 2D poses are stored must be used.
Fixes #515 .
PAIR=cschuet
2017-09-15 14:11:37 +02:00
Jihoon Lee
259e22a5fc
Use oldest and newest instead of last two odometry data. ( #530 )
2017-09-14 16:10:03 +02:00
Christoph Schütte
5896ead32e
Introduce timeout for global constraints. ( #517 )
...
This PR introduces a new option that specifies the number of seconds
after which global matcher searches are performed if no recent global
constraints have been found between the submap's and the node's
trajectory.
2017-09-14 12:11:54 +02:00
gaschler
31b5a6f1a9
Allow multiple SubmapTextures. ( #519 )
...
This changes submap_visualization.proto that multiple textures can be provided.
As of now, the first texture is generated from the high resolution
grid, which is the same as before.
The second texture is generated from the low resolution grid.
2017-09-13 15:47:02 +02:00
Wolfgang Hess
5ade042520
Fix crash in localization. ( #526 )
...
Updating the connectivity needs the data of nodes for which
constraints were added, so we postpone trimming to after the
connectivity update.
Also makes sure the mutex is held as necessary.
2017-09-13 14:08:32 +02:00
Wolfgang Hess
57d53b6d53
Remove unused code. ( #522 )
...
Removes FindConnectedComponent() from a proto message.
2017-09-12 18:07:18 +02:00
Christoph Schütte
b383f18365
Fix crash in localization. ( #523 )
...
This PR fixes a crash when cartographer is run in localization mode due
to the map trajectory not having been properly added to the
ConnectedComponents.
2017-09-12 17:04:13 +02:00
Wolfgang Hess
4437d89dd5
Fix crashing bug during pure localization. ( #521 )
...
When loading a serialized state, no nodes are added for each
submap. This leads to crashes when loop closures are found.
2017-09-12 15:36:22 +02:00
Juraj Oršulić
23bf0fc0d4
Fix unsigned comparison warning in 2D SPG test. ( #518 )
2017-09-12 11:25:51 +02:00
Christoph Schütte
24c2b499dd
Introduce TrajectoryConnectivityState. ( #513 )
...
* Introduce TrajectoryConnectivityState.
This class will be used to track the connectivity state (including the
last connection time) between pairs of trajectories.
2017-09-11 14:43:55 +02:00
Wolfgang Hess
84da6d75bc
Also use vector<map<>> for node data in 3D. ( #516 )
...
This reduces the difference between 2D and 3D and moves
3D towards localization and trimming.
2017-09-11 13:46:49 +02:00
Wolfgang Hess
35aa38f73f
Also use vector<map<>> submaps in 3D. ( #512 )
...
This reduces the difference between 2D and 3D and moves
3D towards localization and trimming.
2017-09-08 15:54:28 +02:00
Christoph Schütte
1a367f0549
Rename TrajectoryConnectivity ConnectedComponents. ( #510 )
...
* Rename TrajectoryConnectivity ConnectedComponents.
2017-09-07 17:11:06 +02:00
Christoph Schütte
c65f7a97b6
Remove connected_components_ from SPG. ( #509 )
...
* Remove connected_components_ from SPG.
This PR removes connected_components_ from the SparsePoseGraph. Since
the connectivity structure is no longer updated by the
ConstraintBuilders it is no longer necessary for SPG to keep a copy of
the connected components for data consistency.
2017-09-07 16:35:49 +02:00
Christoph Schütte
fa306d03ec
Remove reverse_connected_components. ( #507 )
...
Remove reverse_connected_components from SparsePoseGraphs and update
TrajectoryConnectivity to return "connected" for the reflexive case even
if trajectories are unknown.
2017-09-07 15:58:30 +02:00
Wolfgang Hess
476d156f66
Serialize trajectory node data. ( #504 )
...
Related to #253 .
2017-09-07 15:29:12 +02:00
Christoph Schütte
a5dafcfde3
Update trajectory connection in WhenDone callback. ( #506 )
...
This modifies the ConstraintBuilder interface so that Maybe*Constraint
is not responsible anymore for updating the TrajectoryConnectivity
member of SparsePoseGraph and moves this responsibility into the
WhenDone callback.
2017-09-07 14:51:19 +02:00
Wolfgang Hess
333516d955
Rename the scan queue. ( #505 )
...
This queue does not only contain scans, but also other sensor data,
e.g. from an IMU.
2017-09-07 14:04:00 +02:00
Wolfgang Hess
22f41d8e37
Store rotational histogram as part of the node data. ( #503 )
...
The compressed point cloud is no longer stored as part of the
node data to reduce memory consumption.
2017-09-07 11:01:03 +02:00
Christoph Schütte
c2d9424342
Add Unittest for transform::RigidX. ( #497 )
2017-09-06 12:06:33 +02:00
Wolfgang Hess
4829ffee46
Allow rotating histograms in the rotational scan matcher. ( #501 )
...
This allows reusing histograms to match for different yaws.
Adds a unit test to test that rotated histograms match as expected.
2017-09-06 10:59:16 +02:00
Jihoon Lee
18d8ea75fa
Use vector<map<>> for node_data. ( #472 )
2017-09-04 18:01:44 +02:00
Wolfgang Hess
c8de50bd2b
Add 'gravity_alignment' rotation to each node. ( #500 )
...
In 2D this replaces the 'tracking_to_tracking_2d' transform.
Also changes the 2D SparsePoseGraph to get the full 3D pose.
2017-09-04 16:24:26 +02:00
Wolfgang Hess
3948943b64
Use EstimateGravityOrientation() in 2D SLAM. ( #499 )
2017-09-04 11:14:51 +02:00
Wolfgang Hess
e3b6f0afc5
Expose complete poses in 2D SLAM. ( #498 )
...
This changes the trajectory nodes to contain the complete 'pose'
including 'tracking_to_tracking_2d' applied already. Similar for
the 'zbar_ij' as it is returned by 'constraints()'. This allows
2D and 3D to be handled in the same way.
2017-09-01 15:40:21 +02:00
Wolfgang Hess
5673334f0e
Tiny improvement of the gravity estimation. ( #494 )
2017-09-01 10:22:13 +02:00
Wolfgang Hess
d3c49c8585
Pass odometry data to the 3D optimization problem. ( #495 )
...
Not yet used.
2017-09-01 09:58:24 +02:00
Wolfgang Hess
72bb24e362
Pass initial pose of nodes to the 3D optimization problem. ( #496 )
...
Also drops 'point_cloud' from the name since the pose is also
relevant to other sensor data.
2017-09-01 09:34:48 +02:00
Christoph Schütte
982f2bd2e0
Use TrajectoryNode::Data in FastCorrelativeMatcher. ( #493 )
...
* Use TrajectoryNode::Data in FastCorrelativeMatcher.
2017-08-31 15:10:48 +02:00
jie
e2c67a7bde
Fix Lint and ClangTidy warnings. ( #485 )
2017-08-31 13:39:47 +02:00
Wolfgang Hess
3215035c1c
Add thread annotation to LogResidualHistograms(). ( #492 )
2017-08-31 12:26:31 +02:00
Mac Mason
b54ca0cca6
Fix Rigid2 and Rigid3 to default to an identity transform. ( #491 )
2017-08-31 11:32:04 +02:00
Christoph Schütte
06e9112bc8
Unify GlobalTrajectoryBuilder across 2D and 3D ( #489 )
...
This PR unifies GlobalTrajectoryBuilder across 2D and 3D by templating
it with the LocalTrajectoryBuilder and the SparsePoseGraph. It thus
includes small changes to interfaces in LocalTrajectoryBuilder and
SparsePoseGraph.
2017-08-30 16:34:26 +02:00
Wolfgang Hess
3c22c8253a
Refactoring: Do not pass 'constant_data' in pieces. ( #488 )
...
Also removes the no longer used range data from trajectory nodes
in 2D.
2017-08-30 14:22:12 +02:00
Wolfgang Hess
094b5a4d93
Template dispatching of sensor data. ( #484 )
...
This reduces the amount of code that needs to be written when a
new type of sensor data is introduced by a tiny bit.
Rangefinder data is not yet following this pattern.
2017-08-28 15:43:26 +02:00
Wolfgang Hess
a7fe8bd2ab
Add filtered point cloud to TrajectoryNode::Data for 2D. ( #483 )
2017-08-28 11:17:53 +02:00
jie
42d8a8f005
Add filtered point clouds to TrajectoryNode::Data for 3D. ( #482 )
2017-08-25 16:56:50 +02:00
jie
0837d4b228
Add fixed frame pose constraints to 3D problem. ( #480 )
2017-08-25 15:26:19 +02:00
jie
449799719f
Extract rotation parameterization to a separate file. ( #479 )
2017-08-25 12:06:22 +02:00
Christoph Schütte
96b71e227f
Add histograms for pose residuals ( #478 )
...
* WIP Add histograms for pose residuals
* Address reviewers comments
* Address more comments.
2017-08-25 11:39:56 +02:00
jie
2fd2e86351
Add fixed frame pose weight into optimization problem options. ( #477 )
2017-08-24 15:40:48 +02:00
jie
14977f73f1
Add fixed frame pose data to the 3D optimization problem. ( #476 )
2017-08-24 15:02:23 +02:00
Wolfgang Hess
a239b71a6e
Dynamic dispatch of sensor::Data. ( #475 )
...
This ensures at compile time that all types of data are handled,
and only keeps the data needed for each individual type.
2017-08-24 14:17:51 +02:00
jie
0671e8835e
Add interface to process fixed frame pose, e.g. GPS. ( #471 )
2017-08-24 12:49:03 +02:00
Wolfgang Hess
e78e2cb5ad
Extract PoseEstimate into its own file. ( #474 )
...
This is to remove the dependency of GlobalTrajectoryBuilderInterface
on the TrajectoryBuilder.
2017-08-24 12:04:39 +02:00
Wolfgang Hess
f0e1dab031
Add a histogram of low resolution scores for 3D. ( #473 )
2017-08-24 09:28:12 +02:00
Wolfgang Hess
4d11a226ff
Expose low resolution matching scores. ( #470 )
...
This is needed in preparation of adding a low resolution score histogram.
2017-08-23 17:48:49 +02:00
Jihoon Lee
2dd2d6f448
Use vector<map<>> instead of vector<deque> for submap_data. ( #422 )
2017-08-23 12:16:42 +02:00
zjwoody
2e53586818
Also check low resolution match for 3D loop closure. ( #468 )
...
Related to #369 .
2017-08-22 17:29:20 +02:00
Wolfgang Hess
297e9cc02d
Remove unused argument. ( #466 )
2017-08-22 12:22:41 +02:00
zjwoody
ac693f3e04
Use separate voxel filter options for 3D loop closure. ( #465 )
2017-08-21 18:01:23 +02:00
Damon Kohler
edfd6ac8d7
Also log the IMU correction as a quaternion. ( #463 )
2017-08-21 17:26:48 +02:00
Moritz Münst
0ef372d584
Use odometry in 2D pose graph optimization. ( #456 )
2017-08-21 15:12:00 +02:00
Wolfgang Hess
bcde3b45b0
Tiny cleanup of TransformInterpolationBuffer. ( #462 )
2017-08-18 16:19:50 +02:00
Wolfgang Hess
c29fec3dd0
Fix colors in the X-ray points processor. ( #460 )
...
mean_..._in_column was broken in #423 .
2017-08-17 18:07:33 +02:00
Wolfgang Hess
9498cc90ca
Estimate angular velocities from odometry. ( #458 )
...
If no IMU is available we will now use odometry to estimate
angular velocities if available instead of the last poses.
Fixes #453 .
2017-08-16 16:55:39 +02:00
Wolfgang Hess
0c6d6979c4
Fix header. ( #457 )
...
RegisterBuiltInPointsProcessors() declaration was broken in #455 .
2017-08-16 16:22:42 +02:00
zjwoody
ba6f782949
Fix ClangTidy warnings. ( #455 )
2017-08-16 15:21:04 +02:00
Wolfgang Hess
11dbdf91b9
Remove unused code and option for odometry states. ( #451 )
2017-08-11 17:38:48 +02:00
Wolfgang Hess
e79a918989
Use PoseExtrapolator in the 3D trajectory builder. ( #450 )
...
This replaces the Predict() logic in the 3D trajectory builder.
2017-08-11 17:13:28 +02:00
Wolfgang Hess
73b0e5e20a
Use PoseExtrapolator in the 2D trajectory builder. ( #448 )
...
This replaces the Predict() logic in the 2D trajectory builder.
2017-08-11 12:38:34 +02:00
Wolfgang Hess
6ebfa50291
Use odometry to extrapolate linear motion. ( #443 )
2017-08-08 16:30:53 +02:00
Wolfgang Hess
8732e43f16
Add sensor::OdometryData. ( #442 )
2017-08-08 14:52:47 +02:00
Wolfgang Hess
f60b2cbb16
Pass IMU data as sensor::ImuData. ( #441 )
2017-08-08 14:27:08 +02:00
Wolfgang Hess
eb53b70fec
Towards localization in 3D. ( #438 )
...
Adds loading maps to 3D, deserializes submaps and supports trajectories
without any node. Still no trimming support.
2017-08-02 14:17:50 +02:00
Wolfgang Hess
5369c3ced1
Use the ImuTracker in the PoseExtrapolator. ( #436 )
2017-08-01 10:44:32 +02:00
Wolfgang Hess
b28bc3bc9e
Extract velocity estimation from poses into a function. ( #435 )
2017-07-31 12:31:28 +02:00
Wolfgang Hess
a6d94c07cf
Use IMU data when extrapolating poses if available. ( #434 )
2017-07-28 17:12:12 +02:00
Andrew Hundt
d22402bdfa
color.cc constexpr std::sqrt is not ISO C++ ( #432 )
2017-07-28 12:11:57 +02:00
damienrg
46c7ce886d
Change Color to Uint8Color and FloatColor ( #423 )
...
As almost all computations for color are done in float, use FloatColor
format by default and convert to Uint8Color only when needed.
2017-07-27 11:03:55 +02:00
Wolfgang Hess
6035f63860
Add a extrapolator for poses. ( #430 )
...
This will be used in Cartographer ROS to extrapolate poses for tf.
PAIR=damonkohler
2017-07-26 15:21:05 +02:00
Jihoon Lee
30f7de1a32
fix num submaps in trimmer_test ( #424 )
2017-07-26 11:14:22 +02:00
Juraj Oršulić
347dc8cec5
Fix debug build ( #418 )
...
Add a fake return value after LOG(FATAL) in
HybridGridPointsProcessor::Flush(). This keeps gcc versions lower
than 7 happy when building without optimisation (i.e. debug build).
Fixes #412 .
2017-07-25 17:39:49 +02:00
lanyaye
56dbad15e3
Fix proto_stream to support 32-bit platforms. ( #427 )
...
In proto_stream.cc, size_t is only correct on 64-bit platforms. Changing it to uint64 adds support for 32-bit platforms. This fixes #426 .
2017-07-25 15:59:57 +02:00
Holger Rapp
ea7c39b6f0
Draw Trajectories onto X-Rays and ProbabilityGrids. ( #421 )
...
This behavior can be turned off with the 'draw_trajectories' setting in Lua.
Fixes #174 .
2017-07-25 13:36:50 +02:00
Holger Rapp
8dfd650068
Pull some functionality from cartographer_ros into cartographer. ( #420 )
...
- Moved color.h.
- Moved Cairo types.
- Simplifications in XRayPointsProcessor.
2017-07-24 13:22:06 +02:00
Wolfgang Hess
4d087cd159
Towards localization in 3D. ( #417 )
...
Adds trimmer handling (but no trimming yet) and frozen trajectories
to 3D. Also freezes nodes, not just submaps.
2017-07-24 11:42:23 +02:00
damienrg
21cc270645
Fix ProbabilityPointsProcessor mirroring output ( #419 )
...
Fixes #414 .
2017-07-24 10:41:45 +02:00
Wolfgang Hess
1bce14b7b5
Adds accumulation of range data to 2D. ( #408 )
...
This mostly follows the implementation as done for 3D.
Towards googlecartographer/cartographer_ros#212 .
2017-07-18 12:10:40 +02:00
Mac Mason
3ef680e791
Remove extraneous include ( #407 )
2017-07-18 09:01:12 +02:00
Wolfgang Hess
10a19d0a3f
Add rotational score histograms in 3D. ( #403 )
2017-07-11 11:59:42 +02:00
Wolfgang Hess
167047173c
Tiny improvement of HybridGrid::ToProto(). ( #401 )
...
Makes it a member function and adds a check for left over
update markers.
2017-07-11 09:26:07 +02:00
Wolfgang Hess
0da3fad9b0
Improve handling of grid updates. ( #400 )
...
Changes the grids to only contain update markers during updates.
Serialized grids will never contain them.
2017-07-10 16:14:50 +02:00
Wolfgang Hess
b0b4f30007
Cleanup of cell index conversion in 2D. ( #399 )
...
This makes 2D more similar to 3D. GetProbability() only takes
cell indices which are computed using GetCellIndex().
2017-07-10 15:01:13 +02:00
damienrg
39cb8401a5
Implements a ProbabilityGridPointsProcessor ( #383 )
2017-07-10 11:02:14 +02:00
Wolfgang Hess
78bd37ec26
Unify 2D/3D range data in trajectory nodes. ( #396 )
...
Since we only convert compressed range data to protos, we remove the
unused code to serialize (non-compressed) range data which should also
not be used in the future.
2017-07-07 17:07:04 +02:00
Wolfgang Hess
5378ee2adc
Serialize range data. ( #395 )
...
We compress 2D range data before serialization to reduce
output size.
Related to #253 .
2017-07-07 15:39:55 +02:00
Wolfgang Hess
94a848cd46
Rename ScanId to NodeId in the serialization. ( #394 )
...
This is consistent with the naming in the C++ structs.
2017-07-07 13:58:23 +02:00
Brandon D. Northcutt
f7af7ae238
Add serialization of compressed range data. ( #334 )
2017-07-07 12:26:36 +02:00
Jihoon Lee
75d5b7a453
Check imu_data array size before access ( #392 )
2017-07-06 14:32:45 +02:00
Moritz Münst
3f4d795c3e
Add pure localization parameter to trajectory builder options. ( #389 )
2017-07-05 16:55:06 +02:00
Wolfgang Hess
9042450aaf
Fix initial pose of loaded submaps. ( #391 )
...
PAIR=SirVer
2017-07-05 16:24:02 +02:00
Wolfgang Hess
3819dd3806
Use an Eigen::AlignedBox to track known cells. ( #388 )
...
PAIR=SirVer
2017-07-05 15:05:46 +02:00
Holger Rapp
3346474963
Grow the ProbabilityGrid as needed instead of preconfiguring its size. ( #387 )
...
This removes the 'half_length' option.
PAIR=wohe
2017-07-05 14:17:04 +02:00
Holger Rapp
a313448bf0
Change CastRays to directly take the ProbabilityGrid. ( #386 )
...
PAIR=wohe
2017-07-05 13:39:44 +02:00
Holger Rapp
611f244d7a
Remove HybridGrid slicing into a ProbabilityGrid. ( #385 )
...
This code is currently unused. The feature of slicing a HybridGrid into a Probability grid could be useful to for example collect a map in 3D, then slice the 3D data to create a 2D map. There are simpler ways to implement this, especially in the context of the assets_writer_main.
PAIR=wohe
2017-07-05 13:17:20 +02:00
Jihoon Lee
1e6723e214
Move ImuData to sensor, add ImuData proto. ( #381 )
2017-07-05 12:28:40 +02:00
Holger Rapp
9b48ba5ff4
Remove unused code. ( #384 )
2017-07-05 12:16:29 +02:00
Wolfgang Hess
7434e96369
First rough implementation of loading a map. ( #382 )
...
This implements loading of serialized maps in 2D:
We insert all submaps at the serialized optimized pose into
the pose graph and remove their poses from the optimization.
Related to #197 and #315 .
2017-07-04 17:20:13 +02:00
Wolfgang Hess
31f77a01d2
Serialize submaps. ( #380 )
2017-07-04 12:11:54 +02:00
Brandon D. Northcutt
5396156968
Submap serialization support. ( #376 )
2017-07-03 17:59:55 +02:00
Wolfgang Hess
03b9285034
Add support for serializing to a proto stream. ( #379 )
...
Also changes the ground truth tools to read from such a file.
This resolves #335 . Related to #253 .
2017-07-03 15:23:15 +02:00
Wolfgang Hess
54bd81a78b
Remove UKF related code and configuration. ( #378 )
2017-06-30 13:19:13 +02:00
Wolfgang Hess
17a22edebc
Change local 3D SLAM to not use a UKF. ( #375 )
...
This follows the 2D local SLAM in implementing a simple
constant velocity model and allows integrating odometry and
rotation information from an IMU.
2017-06-30 11:49:22 +02:00
Damon Kohler
f765e55ea9
Use multi-res scan matching for loop closures too. ( #374 )
...
Improves loop closure scan matcher refinement.
2017-06-30 09:30:09 +02:00
Wolfgang Hess
955e190166
Add IMU orientation correction to the pose graph optimization. ( #361 )
...
Orientation of the IMU, most importantly pitch, is crucial to correctly
track changes in altitude. Each trajectory gets optimization variables
to correct for small errors in the IMU orientation.
Also adds separate gravity constants for each trajectory. The idea is
that different trajectories might use different hardware and slightly
disagree about the strength of gravity.
PAIR=damonkohler
2017-06-28 18:12:24 +02:00
Wolfgang Hess
ffc939706d
Rename the KalmanLocalTrajectoryBuilder. ( #372 )
2017-06-28 15:32:43 +02:00
Wolfgang Hess
e4e22e9f26
Remove the LocalTrajectoryBuilderInterface in 3D. ( #371 )
2017-06-28 14:57:37 +02:00
Holger Rapp
471bcb6207
Delete SubmapData from trimmed submaps in the OptimizationProblem. ( #366 )
...
Related to #283 .
2017-06-28 12:51:09 +02:00
Wolfgang Hess
f88fcec851
Remove the unused OptimizingLocalTrajectoryBuilder. ( #368 )
...
It has not been used for a long time and has to be replaced by
a better implementation.
2017-06-27 15:44:46 +02:00
Wolfgang Hess
010fefc204
Fixes the previous pose in local 3D SLAM. ( #367 )
...
This bug was introduced in #294 .
PAIR=damonkohler
2017-06-27 11:53:57 +02:00
Holger Rapp
d8eb94b4a9
Delete NodeData and ImuData from trimmed submaps in the OptimizationProblem ( #364 )
...
Related to #283 .
PAIR=wohe
2017-06-26 16:38:08 +02:00
Moritz Münst
4c3059e088
Improve code comments. ( #243 )
2017-06-26 14:32:44 +02:00
Wolfgang Hess
2df8bcde61
Remove unused 'imu_gravity_variance' option. ( #363 )
2017-06-26 13:23:58 +02:00
Holger Rapp
9464b38320
Consistency fix: trajectory_index -> trajectory_id. ( #360 )
2017-06-26 10:02:51 +02:00
Holger Rapp
ff37b0bb7d
Remove output_debug_images. ( #358 )
...
This is now better done by RViz. This also gets rid of the dependency on webp.
2017-06-23 14:53:04 +02:00
Wolfgang Hess
9fbb65084b
Exclude trimmed submaps from the pose graph serialization. ( #354 )
...
Related to #283 .
2017-06-21 17:57:08 +02:00
Wolfgang Hess
432cd5dcd3
Delete data of trimmed submaps. ( #353 )
...
This is related to #283 .
PAIR=SirVer
2017-06-21 16:36:54 +02:00
Holger Rapp
9646b31145
Move GetSubmapData from GlobalTrajectoryBuilder into SparsePoseGraph. ( #352 )
...
- Adds a function to query all SubmapData from the SparsePoseGraph.
- Changes MapBuilder::SubmapToProto to take a SubmapId.
- Remove num_submaps().
2017-06-21 14:21:23 +02:00
Holger Rapp
16636cd4e1
Remove friends declaration in Submap. ( #350 )
2017-06-21 12:49:44 +02:00
Wolfgang Hess
0fbdf6d0ec
Add ground truth proto support for trajectory evaluation. ( #349 )
...
This adds support of GroundTruth protos in addition to
text files.
Fixes the ground truth generation code to skip outliers.
Improves the ground truth generation to use expected
relative poses instead of the solution.
Writes constraints including the roll and pitch from the
node for 2D SLAM, so that constraints correctly capture
the expected transform between the 3D poses of scan and
submap in 2D SLAM.
Related to #239 .
Related to #310 .
2017-06-21 11:33:30 +02:00
Holger Rapp
58bb70f53a
Change Submaps to only track the two active Submaps. ( #348 )
2017-06-20 18:21:42 +02:00
Holger Rapp
f242b5242a
Use shared_ptr<> for Submap objects. ( #347 )
...
Also remove `finished_submap` and `matching_submaps`. These are now
implicit.
Related to #283 .
PAIR=wohe
2017-06-19 17:23:48 +02:00
Holger Rapp
c8f02264a4
Removes GetSubmapId from SparsePoseGraph. ( #346 )
...
PAIR=wohe
2017-06-19 15:46:47 +02:00
Holger Rapp
5c389cdf4a
Remove mapping::Submaps. ( #345 )
...
PAIR=wohe
2017-06-19 15:24:06 +02:00
Holger Rapp
b944b19159
Make use of Submap in 2D similar to 3D. ( #343 )
...
Use mapping_2d::Submap instead of mapping::Submap in 2D.
Use `finished()` instead of `finished_probability_grid()` in 2D.
PAIR=wohe
2017-06-19 14:43:10 +02:00
Wolfgang Hess
5fa6abe84b
Adds a tool to generate ground truth data. ( #340 )
...
Fixes #310 . Not yet tested.
2017-06-16 17:38:13 +02:00
Wolfgang Hess
12c3795134
Remove direct access to Submaps from the outside. ( #339 )
...
PAIR=SirVer
2017-06-16 10:47:11 +02:00
Wolfgang Hess
c1e1d03636
Support extrapolating a single submap transform. ( #338 )
2017-06-14 15:10:36 +02:00
Wolfgang Hess
79eeb7d77a
Improve code structure for extrapolation of poses. ( #337 )
...
This is in preparation of extrapolating single submap poses
as needed.
2017-06-14 12:49:17 +02:00
jordansmithgoogle
7ce73858ef
Adds a HybridGridPoints processor ( #323 )
2017-06-14 11:34:59 +02:00
Holger Rapp
cff0c73857
Converted Submap from struct to class. ( #333 )
2017-06-12 17:28:38 +02:00
Holger Rapp
2d75f4ef56
Move SubmapToProto from Submaps -> Submap. ( #332 )
...
PAIR=wohe
2017-06-12 16:27:51 +02:00
Holger Rapp
521666ce55
Trim node data. ( #331 )
...
Also, remove trimmed nodes from proto serialization.
PAIR=wohe
2017-06-12 15:20:49 +02:00
Holger Rapp
f68da37c6e
Drop trajectory_id from TrajectoryNode. ( #330 )
...
PAIR=wohe
2017-06-12 14:28:16 +02:00
Wolfgang Hess
1a376c07b2
Change submap state handling in 3D. ( #327 )
...
This follows the new code in 2D. Also adds a check that
new constraints are only attempted for finished submaps.
2017-06-09 17:40:22 +02:00
Wolfgang Hess
f07f888dab
Remove the deque for constant node data. ( #326 )
...
This is needed in preparation of deleting nodes.
Related to #283 .
2017-06-09 16:53:49 +02:00
Holger Rapp
b427259214
Mark trimmed Submaps and remove from scan matching. ( #319 )
...
Related to #283 .
PAIR=wohe
2017-06-07 15:52:24 +02:00
Holger Rapp
c1d4d08a1d
Move AddProbabilityGridToResponse to the Submap object. ( #318 )
...
Working towards a thread-safe Submap object. Related to #283 .
PAIR=wohe
2017-06-07 15:13:56 +02:00
Wolfgang Hess
b3b9735a4b
Remove trimmed constraints. ( #317 )
...
Still missing marking submaps and nodes as trimmed.
PAIR=SirVer
2017-06-07 14:23:58 +02:00
Wolfgang Hess
a66147f131
Adds a PureLocalizationTrimmer. ( #316 )
...
Related to #315 .
2017-06-07 12:39:04 +02:00
Wolfgang Hess
c90b887bfb
Adds API to add trimmers. ( #314 )
...
This is related to #283 . First to be implemented for
pure localization and 2D SLAM.
PAIR=SirVer
2017-06-06 17:07:30 +02:00
Wolfgang Hess
56529e5968
Tiny cleanup of the MapBuilder. ( #313 )
...
GetTrajectoryConnectivity() was a convenience function.
Instead, sparse_pose_graph() should be used to get access to
GetConnectedTrajectories().
2017-06-06 15:20:10 +02:00
Wolfgang Hess
ba4f8ca9ee
Tiny cleanup. ( #312 )
2017-06-02 16:44:27 +02:00
Wolfgang Hess
565e9c3eff
Simplify the handling of weights in the optimization problem. ( #309 )
...
This replaces the 3x3 (2D) or 6x6 (3D) matrix by the weights
for the translational and rotational component. The matrices
only contain these values now anyway, so this simplifies
the code and increases performance.
Also removes 2D from the UKF implementation which has not been
used for quite some time now.
2017-06-01 17:03:49 +02:00
Wolfgang Hess
92f154f561
Also use fixed covariances in 3D SLAM. ( #308 )
...
This follows #307 .
2017-06-01 15:04:07 +02:00
Wolfgang Hess
a2e52f81cf
Remove 2D scan matcher covariances. ( #307 )
...
This replaces the scaled covariances derived from the Ceres
scan matcher by directly configurable weights. Using covariances
did not provide the expected benefit, and replacing the scaling
matrix by two values will allow a faster evaluation of the cost
function in the future.
2017-05-31 11:56:32 +02:00
Wolfgang Hess
4bb02c7240
Add XRayPointsProcessor::bounding_box(). ( #306 )
...
Changes XRayPointsProcessor to use one bounding box for all floors.
Makes the bounding box accessible via a public member function.
2017-05-24 14:46:17 +02:00
Wolfgang Hess
3d0d1e46b5
Remove unused code. ( #304 )
2017-05-23 14:17:20 +02:00
Wolfgang Hess
515db3b4a9
Minor fixes. ( #303 )
...
Extract mapping_2d::CreateLocalTrajectoryBuilderOptions() into its own file.
Loop initialization fix in the trajectory_connectivity_test.
Thread safety fixes in sparse_pose_graph.
2017-05-22 14:55:05 +02:00
Wolfgang Hess
2d416589a7
Adds a NestedVectorsById<> class template. ( #300 )
2017-05-19 16:58:21 +02:00
Wolfgang Hess
0bba56428f
Remove flat indices. ( #299 )
...
This cleans up scan_index_to_node_id_, num_nodes_in_trajectory_,
scan_index. Related to #256 .
2017-05-19 14:01:59 +02:00
Wolfgang Hess
56fc2a9a92
Fix 3D SLAM loop closure issues. ( #296 )
...
3D submaps are now oriented approximately gravity aligned.
This is so that accumulating error in the local SLAM frame is
no longer a problem for finding loop closures. It also ensures
that the z search window size is approximately in the gravity
direction.
We now also pass an estimate of gravity orientation when doing
multi-trajectory matches. Otherwise trajectories starting with
different orientation relative to gravity could not be connected.
The gravity alignment is currently derived from the ImuTracker.
It might be possible to further improve on this by using the
latest gravity direction from the optimized poses.
2017-05-18 16:55:11 +02:00
Wolfgang Hess
9033fad1ab
Always use the origin as the origin for grids. ( #294 )
...
Also removes convenience functions from mapping_3d::Submap.
PAIR=SirVer
2017-05-18 12:00:45 +02:00
Wolfgang Hess
33ce5dee37
Improve debug output and tiny bug fix. ( #293 )
...
The full submap search window in 3D SLAM was
not calculated correctly.
2017-05-17 15:21:39 +02:00
Wolfgang Hess
6c9e24d7c5
Keep 'trajectory_nodes_' per trajectory. ( #291 )
...
Fixes #256 .
PAIR=SirVer
2017-05-17 11:15:34 +02:00
Holger Rapp
5aa968748e
Sparse pose graph no longer uses Submaps* for trajectory identification. ( #290 )
...
Related to #256 .
PAIR=wohe
2017-05-16 14:24:49 +02:00
Holger Rapp
8612f5e6e5
ConstantData now has a trajectory_id. ( #289 )
...
Related to #256 .
PAIR=wohe
2017-05-16 11:42:18 +02:00
Wolfgang Hess
5effc4dac7
Remove flat indices from SparsePoseGraph::GetTrajectoryNodes(). ( #288 )
...
Related to #256 .
Also removes ComputeMapLimits with is moved to Cartographer ROS.
PAIR=SirVer
2017-05-16 10:51:08 +02:00
Wolfgang Hess
690d1893a7
Remove unused code. ( #287 )
2017-05-15 16:57:02 +02:00
Holger Rapp
8392a7e62c
Change SubmapState.scan_indices -> node_ids ( #286 )
...
Related to #256 .
PAIR=wohe
2017-05-15 16:31:59 +02:00
Jihoon Lee
f26e4366c9
Make SparsePoseGraph::constraints() public. ( #284 )
2017-05-15 16:06:20 +02:00
Wolfgang Hess
7d43eaa08c
Keep node data per trajectory in the optimization problem. ( #282 )
...
Related to #256 .
PAIR=SirVer
2017-05-15 14:09:45 +02:00
Holger Rapp
c084624958
Turn submap state into a per trajectory list. ( #281 )
...
Related to #256 .
2017-05-15 12:12:30 +02:00
Wolfgang Hess
fde9272533
Adds mapping:NodeId for Constraint. ( #279 )
...
Also extracted mapping::SubmapId into an id.h file.
Related to #256 .
PAIR=SirVer
2017-05-11 17:17:12 +02:00
Wolfgang Hess
32583e0c5d
Use trajectory IDs for global samplers. ( #278 )
...
Related to #256 .
PAIR=SirVer
2017-05-11 15:08:27 +02:00
Holger Rapp
1a9b18db69
Change num_submaps_in_trajectory to using trajectory IDs. ( #277 )
...
Related to #256 .
2017-05-11 14:32:55 +02:00
Holger Rapp
7b1915b906
Fix bug in ToProto introduced in #275 .
2017-05-11 14:02:04 +02:00
Holger Rapp
e6a6bab351
Make TrajectoryConnectivity use trajectory IDs. ( #275 )
...
Related to #256 .
2017-05-11 13:36:12 +02:00
Holger Rapp
95f0d013c6
Rename Constraint::i -> submap_id. ( #274 )
...
Related to #256 .
2017-05-11 11:43:47 +02:00
Holger Rapp
660eb341ff
Optimization problem only deals with trajectory IDs now. ( #273 )
...
Related to #256 .
PAIR=wohe
2017-05-10 17:12:38 +02:00
Wolfgang Hess
926b0320cb
Use per-trajectory SubmapData in OptimizationProblem. ( #272 )
2017-05-10 16:28:58 +02:00
Holger Rapp
94e8eec41d
Use (trajectory_id, submap_index) as submap IDs in places. ( #271 )
...
Replace flat submap index through (trajectory_id, submap_index) in Constraints.
Related to #256 .
PAIR=wohe
2017-05-10 12:26:58 +02:00
Holger Rapp
45de59b116
Move trajectory id mapping into the SparsePoseGraph. ( #270 )
2017-05-10 08:23:57 +02:00
Holger Rapp
524b613f2c
`submap_pose`s are now owned by the OptimizationProblem. ( #269 )
2017-05-09 17:24:48 +02:00
Holger Rapp
20e9cde53d
Fix race condition in extrapolation of submap poses. ( #268 )
...
PAIR=wohe
2017-05-09 15:21:30 +02:00
Holger Rapp
772d02c00e
Move ConstantData into the SPG ( #263 )
2017-05-08 17:10:07 +02:00
Wolfgang Hess
9194c8679b
Clean up. ( #266 )
...
Move trajectory builder options.
Remove the barely used Interval template.
Inline the remaining CMakeLists.txt subdirectories.
2017-05-08 15:29:13 +02:00
Yutaka Takaoka
522b37979a
Enable multiple configuration for multi-trajectory ( #248 )
2017-05-08 11:58:53 +02:00
Holger Rapp
e2de27cded
Remove dead code. ( #262 )
2017-05-08 11:06:33 +02:00
Wolfgang Hess
79dc1f848f
Remove 'laser' references from parameter names. ( #259 )
...
Related to #250 .
2017-05-04 15:38:41 +02:00
Wolfgang Hess
6d2feaa8c7
Build and run all tests found by the glob. ( #258 )
2017-05-03 16:55:13 +02:00
Wolfgang Hess
ff06e37579
Remove the LaserScan proto. ( #257 )
2017-05-03 16:20:04 +02:00
Holger Rapp
cdd366bab4
Remove intensities - they are unused in SLAM. ( #247 )
2017-05-03 13:44:15 +02:00
Wolfgang Hess
2f3a9f4dcc
Add support for files containing multiple protos. ( #241 )
...
This adds code for reading and writing files that contain
sequences of compressed protocol buffer messages.
2017-04-28 15:05:42 +02:00
Holger Rapp
b4b83405ce
Fix divison by zero. ( #240 )
...
If mapping_2d::LocalTrajectoryBuilder::AddHorizontalRangeData is called
twice in a row with the same `time`, the `velocity_estimate_` becomes
`inf` which led to `inf`s in the optimization problem, which led to
failures inside Ceres.
Fixes #233 .
2017-04-26 14:14:24 +02:00
catskul
245e356449
Const-ify ProbabilityGrid::ToProto ( #238 )
2017-04-25 09:34:17 +02:00
Wolfgang Hess
af22dc6fe1
Simplify submap versions. ( #235 )
...
We now only keep track of the number of inserted range data.
2017-04-21 14:12:08 +02:00
Mac Mason
92d360a8f2
Multi-trajectory SparsePoseGraph::ToProto. ( #227 )
...
Multi-trajectory SparsePoseGraph::ToProto.
Remove obsolete TrajectoryNode::ToProto.
Add GetSubmapStates.
2017-04-19 17:01:03 +02:00
Mac Mason
4f1914b2b4
Remove extraneous Eigen/Geometry include ( #232 )
2017-03-31 08:46:48 +02:00
Juraj Oršulić
cb0d1a6d5a
Remove inclination warning ( #231 )
...
Resolves #194 .
2017-03-30 16:39:53 +02:00
William Woodall
bda68c33d9
Fix warning about struct being redefined as class ( #228 )
2017-03-28 08:57:13 +02:00
Mac Mason
1e5b49ce62
Minor sparse_pose_graph.proto improvement ( #226 )
2017-03-24 09:03:36 +01:00
Wolfgang Hess
4fa190d316
Rename LaserFan to RangeData. ( #224 )
...
LaserFan is misleading since range data can come from
various sensor types.
2017-03-23 14:56:18 +01:00
Wolfgang Hess
a2abe45542
Rename CompressedLaserFan to CompressedRangeData. ( #223 )
...
CompressedLaserFan is misleading since data can come from a
different type of sensor, e.g. a depth camera.
2017-03-22 13:06:41 +01:00
William Woodall
c78f29fdac
Adds #include <array> in files that use std::array ( #222 )
2017-03-20 08:37:47 +01:00
Mac Mason
76868b7edb
Adds HybridGrid proto serialization ( #220 )
2017-03-14 11:44:19 +01:00
Mac Mason
8bf6f101c5
Adds probability grid serialization to proto ( #208 )
2017-03-09 09:01:10 +01:00
Mac Mason
30b9fcce34
Claim an old TODO. ( #209 )
2017-03-01 10:26:48 +01:00
Juraj Oršulić
370e1e52df
Enable adding as a CMake subproject ( #203 )
...
This is done by replacing CMAKE_*_DIR variables with PROJECT_*_ variables so
that CMake uses correct paths when libcartographer is a subproject
Move AllFiles.cmake into the project binary dir instead of the root CMake binary dir,
use a project-dependent detect_changes target name
This makes overriding it from an upper level CMakeLists.txt possible, which is required
when doing a super-build which doesn't require installing libcartographer.
2017-02-09 15:57:54 +01:00
Wolfgang Hess
b2175f0d93
Remove covariance from the 3D Ceres scan matcher. ( #200 )
...
Instead of passing around fake covariances generated by the scan matcher,
we introduce appropriate values where they are needed.
2017-02-08 15:22:28 +01:00
Wolfgang Hess
b4a1021538
Formatting changes. ( #199 )
2017-02-08 14:30:38 +01:00
Holger Rapp
ddb3c890a6
Actually check that all points are colored or none. ( #192 )
2017-01-26 16:49:25 +01:00
Wolfgang Hess
97bb74157f
Remove redundant "virtual". ( #191 )
2017-01-26 13:37:02 +01:00
Holger Rapp
2dd912f5e7
Always take std::function<> by value. ( #188 )
...
Taking it by reference increases the chance of dangling references
without a significant performance gain.
2017-01-26 11:35:09 +01:00
Holger Rapp
965caf7470
Make intensities a separate channel in PointsBatch. ( #187 )
...
And add a PointsProcessor that translates from intensities to RGB.
Fixes #171 .
2017-01-24 15:08:41 +01:00
Holger Rapp
0fe51185be
Color X-Rays using the color of points. ( #185 )
...
Colorless points are considered to be black. Creating assets with
intensities will give now brighter X-Rays. I plan to fix this by adding
intensities besides colors into PointBatch and having a PointsProcessor
that converts intensities into colors.
2017-01-23 14:18:08 +01:00
Holger Rapp
92b89d12c8
Adds a PointCloudProcessor that colors points by frame_id. ( #184 )
2017-01-17 17:21:05 +01:00
Holger Rapp
99f79e3f69
Adds a FileWriter abstraction ( #182 )
2017-01-17 12:29:11 +01:00
Wolfgang Hess
1c433e6f3a
Refactor the documentation update script. ( #179 )
2017-01-10 10:43:16 +01:00
Wolfgang Hess
1477a81bfa
Tiny sparse pose graph cleanup. ( #169 )
2016-12-20 16:43:58 +01:00
Holger Rapp
628b9da6d2
Extract intensities for 2D lasers on conversion. ( #167 )
2016-12-20 16:20:00 +01:00
Damon Kohler
4e9c3d69b5
Build all our source files into a single library. ( #164 )
2016-12-20 11:24:08 +01:00
Wolfgang Hess
71c951b370
Remove the 'log_residual_histograms' option. ( #166 )
...
This option only existed in 2D. Also other refactoring to make the 2D
sparse pose graph optimization more similar to 3D.
2016-12-19 17:57:12 +01:00
Wolfgang Hess
5af133c0dd
Improve the sparse pose graph optimization. ( #165 )
...
Removes the loss function for intra-submap constraints in 3D SLAM,
as it is already done in 2D. Also removes a duplicate call to the
solver in 2D, and code cleanup.
2016-12-19 17:02:05 +01:00
Wolfgang Hess
0937f4f515
Support fixing z during 3D sparse pose adjustment. ( #161 )
...
This is in preparation of using the 3D sparse pose graph
optimization for 2D SLAM.
2016-12-14 15:32:23 +01:00
Wolfgang Hess
5bbb124b0b
Tiny namespace comment fix. ( #155 )
2016-12-06 17:53:06 +01:00
Wolfgang Hess
db45c4ef78
Determine the trajectory that is blocking progress. ( #154 )
...
When processing offline data determining which trajectory needs more
data before processing can continue is surprisingly tricky. We thus
expose this information at the map builder to avoid duplicating this
logic.
2016-12-06 17:04:45 +01:00
Wolfgang Hess
ead4d03b16
Compute the common start time per trajectory. ( #153 )
...
In the multi-trajectory case, other trajectories should not influence which
data gets dropped. This is especially the case if all trajectories are
added before any of their data. In this case, data before the start of the
last trajectory was dropped.
2016-12-06 15:22:16 +01:00
Wolfgang Hess
f3526bd252
Move the OrderedMultiQueue implementation out of the header. ( #152 )
2016-12-06 14:09:44 +01:00
Wolfgang Hess
0e826377c4
Add tool to compare to ground truth. ( #148 )
...
This computes metrics based on a SLAM result and a relations
file containing ground truth data.
2016-11-30 15:18:26 +01:00
Wolfgang Hess
51a0ec06a1
Add support for multi-trajectory to 3D SLAM. ( #146 )
2016-11-28 12:52:45 +01:00
Wolfgang Hess
318607ccd1
Add full submap scan matching in 3D. ( #145 )
2016-11-28 11:09:53 +01:00
Wolfgang Hess
88e4ea2866
Prepare 3D precomputation grid for full submap matches. ( #144 )
...
Removes an optimization to improve the bounds computed
via the precomputation grid in 3D that takes the limited
search window into account.
This is to allow reusing the same precomputation grids
for full submap matches.
2016-11-25 15:45:26 +01:00
scturtle
17a3393694
Fix `to_remove`. ( #143 )
2016-11-24 15:16:35 +01:00
Wolfgang Hess
4c9c77034b
Remove UKF-related debug output. ( #142 )
2016-11-23 14:27:36 +01:00
Wolfgang Hess
574a56bbbc
Remove the UKF from local 2D SLAM. ( #140 )
...
Changes default configuration to log loop closure matches.
2016-11-23 12:37:55 +01:00
Damon Kohler
015519cf23
Adds support for inverted LaserScan messages. ( #138 )
2016-11-21 17:28:50 +01:00
Damon Kohler
a39bbff70c
Removes odometer covariance from public API. ( #137 )
2016-11-21 12:34:52 +01:00
Damon Kohler
5136a3a81e
Removes LaserFan from public API. ( #136 )
2016-11-21 10:30:57 +01:00
Damon Kohler
c386bf050d
Renames Odometry to Odometer. ( #135 )
2016-11-21 08:27:19 +01:00
Wolfgang Hess
7dc3ab1e9e
Change dropping data before start to be idempotent. ( #133 )
...
We drop as much data from each queue as possible without changing the
start time that would be determined if we only saw the dispatched
data, i.e. we retain one piece of data not beyond the common start time.
This makes the process idempotent.
2016-11-18 12:49:33 +01:00
Wolfgang Hess
e703b1cea3
Fix multi-trajectory loop closure attempts. ( #131 )
...
Before, old scans with new submaps were always matched as if they
belong to connected trajectories.
2016-11-18 10:36:30 +01:00
Damon Kohler
3f0eeec429
Adds configuration files test. ( #129 )
2016-11-18 09:48:54 +01:00
Holger Rapp
4522fc49ad
Simplify LuaParameterDictionary. ( #132 )
2016-11-17 17:58:51 +01:00
Wolfgang Hess
8f58efe79b
Formatting fixes. ( #130 )
2016-11-17 15:46:29 +01:00
Holger Rapp
ac92dd8cbf
Support by-floor XRay generation. ( #126 )
2016-11-17 01:49:17 -08:00
Damon Kohler
c8f33ee853
Drop sensor data until progress can be made. ( #124 )
...
The sensor collator now finds a common starting time for all sensor
data. For example, this prevents us from processing arbitrarily many IMU
packets before our first scan match and makes it possible to auto pause
and resume a trajectory in the event of sensor data interruption.
2016-11-17 09:11:00 +01:00
Holger Rapp
6777654202
Adds a heuristic to detect floors in a trajectory. ( #125 )
2016-11-16 05:16:40 -08:00
Damon Kohler
a74319cf1a
Pulls out collator.cc. ( #123 )
2016-11-15 14:17:23 +01:00
Damon Kohler
8cd3178c69
Moves 2D laser options into 2D trajectory builder. ( #114 )
2016-11-15 13:24:58 +01:00
Wolfgang Hess
1de387cba9
Improvement of 2D/3D consistency and cleanup. ( #122 )
2016-11-11 14:33:06 +01:00
Wolfgang Hess
97d5cb2a8b
Remove unused Imu proto message. ( #121 )
2016-11-11 12:22:41 +01:00
Wolfgang Hess
a6aacd0647
Fix and add CHECKs when writing X-ray output. ( #120 )
...
Before the allocation was too large which resulted in excessive memory
consumption. Also adds CHECKs for the stride size and the success of the Cairo
writer function.
2016-11-08 16:14:35 +01:00
Wolfgang Hess
c80c2eaa40
Unify 2D/3D constraints. ( #119 )
...
This removes Constraint2D and instead embeds 2D constraints in a
Constraint3D which is renamed to Constraint.
2016-11-08 14:47:03 +01:00
Wolfgang Hess
3e64a803a4
Consistently name weight parameter. ( #116 )
...
All parameters scaling optimization residuals to determine relative
importance are now consistently named.
2016-10-28 16:39:45 +02:00
Damon Kohler
32b5beb225
Move single caller function to call site. ( #113 )
2016-10-28 16:27:06 +02:00
Damon Kohler
b94880c56e
Improves parameter names. ( #111 )
2016-10-28 13:26:13 +02:00
Wolfgang Hess
404bbfcc2b
Add SubmapToProto to the map builder. ( #110 )
2016-10-27 16:20:58 +02:00
Wolfgang Hess
a5b81ff159
Allow continuing after running a "final" optimization. ( #109 )
...
And a tiny cleanup of the submap visualization query.
2016-10-27 15:25:57 +02:00
Damon Kohler
a33bddd4cd
Removes unneccessary num_available_packets() API. ( #108 )
2016-10-27 13:06:49 +02:00
Damon Kohler
224b068fe9
CHECKs that all queues are finished on destruction. ( #106 )
2016-10-27 11:45:27 +02:00
Damon Kohler
15f9244577
Removes sensor packet period histogram. ( #104 )
2016-10-26 15:23:37 +02:00
Wolfgang Hess
651a7a23e7
Rename trajectory and submap visualization protos. ( #101 )
2016-10-26 08:45:52 +02:00
Wolfgang Hess
4917dd65ce
Add serialization of the sparse pose graph. ( #97 )
2016-10-25 16:56:26 +02:00
Holger Rapp
a3157239b7
Adds a voxel filtering and moving objects removing points processor. ( #99 )
2016-10-25 16:36:56 +02:00
Holger Rapp
915dbd1894
Adds a CountingPointsProcessor. ( #98 )
...
It outputs the number of points processed at its stage in the pipeline
and is useful for understanding how many points a filter removed.
2016-10-25 16:09:47 +02:00
Holger Rapp
2f42c990f6
Adds a fixed sampling points processor. ( #96 )
2016-10-25 15:37:47 +02:00
Holger Rapp
46f8883d6a
Make all 'PointProcessor's registerable with the PipelineBuilder. ( #95 )
...
Also the default instance has now knowledge of all of Cartographer's
'PointsProcessor's by default.
2016-10-25 15:18:32 +02:00
Holger Rapp
188dcb57e5
Adds a class that can build a points processing pipeline out of a Lua configuration. ( #94 )
2016-10-25 12:27:58 +02:00
Atsushi Watanabe
90e2f02e9d
Add a PCD writing points processor. ( #92 )
2016-10-25 12:11:44 +02:00
Damon Kohler
05adba7c51
Improves sensor data queue logging. ( #93 )
2016-10-25 11:09:08 +02:00
Holger Rapp
3986ad5328
Moving a temporary prevents copy elision. ( #91 )
2016-10-20 19:11:29 +02:00
Holger Rapp
695c303c56
Fix layering check for headers. ( #90 )
2016-10-20 18:48:52 +02:00
Wolfgang Hess
4d81b58a39
Remove unused code. ( #89 )
2016-10-20 13:54:12 +02:00
Wolfgang Hess
5b16f4bcb6
Simplify 3D visualization code. ( #88 )
...
Removes the non-const Submaps accessor.
Adds -Werror=missing-braces.
2016-10-20 11:29:12 +02:00
Holger Rapp
4b7e2efbd9
Add code to serialize a trajectory to proto. ( #87 )
2016-10-20 10:53:43 +02:00
Holger Rapp
f2916143ef
Adds a PointProcessor that writes ASCII files. ( #86 )
...
The files will just contain XYZ points in a file of their own. This is
useful for example as interop with AutoCAD.
2016-10-20 09:28:18 +02:00
Wolfgang Hess
3cf59a0266
Collate sensor data in the MapBuilder. ( #85 )
2016-10-19 17:25:44 +02:00
Wolfgang Hess
e566bb73f5
Adds CollatedTrajectoryBuilder. ( #82 )
2016-10-19 16:29:26 +02:00
Wolfgang Hess
d4e04a3cda
Unify to AddLaserFan for both 2D and 3D. ( #81 )
2016-10-19 15:02:31 +02:00
Holger Rapp
9031f0533a
Adds a PLY writing points processor. ( #80 )
2016-10-19 14:03:05 +02:00
Holger Rapp
4a9116a58e
PointsProcessor can now ask for another pass over the data. ( #69 )
...
* PointsProcessor can now ask for another pass.
* Added MinMaxFilteringPointsProcessor to have a user for RemovePoints.
2016-10-19 13:11:13 +02:00
Damon Kohler
a7663f6c15
Pulls sensor ID out of sensor::Data. ( #77 )
2016-10-18 17:37:40 +02:00
Damon Kohler
fddb1e32a0
Moves time into sensor::Data. ( #76 )
2016-10-18 16:07:18 +02:00
Damon Kohler
653ce1706a
Detemplatize OrderedMultiQueue. ( #75 )
2016-10-18 15:09:29 +02:00
Atsushi Watanabe
ccc26a7f4f
Add missing <vector> include. ( #74 )
2016-10-18 14:35:45 +02:00
Wolfgang Hess
4d361abe41
Extract SpaCostFunctions into their own files. ( #71 )
2016-10-17 16:14:24 +02:00
Damon Kohler
f798805c4f
Removes templating on data type. ( #68 )
2016-10-17 14:47:48 +02:00
Damon Kohler
2eca021003
Moves SensorCollator into sensor package. ( #58 )
2016-10-17 10:18:17 +02:00
Holger Rapp
c2aed53ce8
Adds a points processing pipeline and a XRay creator. ( #66 )
...
- Adds cairo as required dependency.
- Adds an 'io' module.
2016-10-14 15:14:46 +02:00
Wolfgang Hess
098349f67e
Rename LaserFan3D to LaserFan. ( #64 )
2016-10-14 12:06:54 +02:00
Wolfgang Hess
9020f71605
Remove LaserFan in favor of LaserFan3D. ( #62 )
...
LaserFan3D will be renamed in the next PR.
2016-10-14 11:26:53 +02:00
Wolfgang Hess
cac501cdb1
Always use the 3D voxel filter. ( #61 )
2016-10-13 18:56:41 +02:00
Wolfgang Hess
5aad2d6feb
Change 2D scan matching to use 3D point clouds. ( #60 )
2016-10-13 17:52:05 +02:00
Wolfgang Hess
9006fb6fb1
Show the unprojected point cloud in 2D SLAM. ( #59 )
...
We now project to 2D later in 2D SLAM, so that the roll and pitch
applied to the laser fan in visible in the visualization.
2016-10-13 17:16:32 +02:00
Wolfgang Hess
7d93ac3302
Simplify the conversion of LaserScan to LaserFan3D. ( #57 )
2016-10-13 15:09:36 +02:00
Damon Kohler
518850999f
Moves SensorData struct into Cartographer. ( #55 )
2016-10-13 14:17:28 +02:00
Wolfgang Hess
cc7cc6f72b
Move the ImuTracker and OdometryStateTracker to mapping. ( #50 )
...
Both are useful without a UKF.
2016-10-13 10:51:12 +02:00
Holger Rapp
eeb17bf055
Adds google_binary to create installable binaries. ( #43 )
...
- Do not link in Ceres if gflags or glog is used, but still rely on ceres
to find those libraries for us.
- Update CMakeLists with new settings.
2016-10-11 15:18:59 +02:00
Damon Kohler
8f5fc98188
Improves logging, fixes #94 . ( #41 )
2016-10-11 11:22:33 +02:00
catskul
045f6a7522
Pass Eigen arguments by const reference ( #38 )
...
Fixes #35 .
2016-10-11 09:57:41 +02:00
Wolfgang Hess
d2962c004f
Remove the 'also_match_to_new_submaps' option. ( #29 )
...
Instead, using a different constraint_builder.sampling_ratio is preferred.
2016-09-30 16:00:10 +02:00
Wolfgang Hess
e526a7022f
Remove covariance computation from branch-and-bound. ( #27 )
...
These covariances were only used in 2D and are only an estimate.
Following 3D, we change 2D to use the (local) covariance computed
using Ceres.
2016-09-23 14:27:19 +02:00
Wolfgang Hess
14355a91a1
Remove dead code. ( #26 )
2016-09-22 17:53:32 +02:00
Wolfgang Hess
0796d50b00
Removes max_covariance_trace option. ( #25 )
...
This option is no longer really useful to predict outliers.
It is removed and other parameters scaled to minimize the change
in behavior. And related cleanup.
2016-09-22 11:35:47 +02:00
Damon Kohler
83a29df102
Renames expect_imu to use_imu. ( #24 )
2016-09-08 16:36:05 +02:00
Damon Kohler
fc166fdefa
Adds MapBuilder and cleans up some configurations. ( #23 )
2016-09-08 16:21:25 +02:00
Wolfgang Hess
5b20df7fcb
Fix a bug introduced in the recent clean up. ( #13 )
2016-08-26 17:40:37 +02:00
Wolfgang Hess
817dc884d5
Clean up and simplify MapLimits. ( #12 )
...
MapLimits no longer keeps redundant data.
2016-08-25 15:40:05 +02:00
Wolfgang Hess
4c6a2fcb28
Clean up of XYIndexRangeIterator and MapLimits. ( #10 )
2016-08-24 18:01:14 +02:00
Damon Kohler
b50f1a6e96
Adds rate timer. ( #8 )
2016-08-24 15:37:30 +02:00
Wolfgang Hess
afa0cef31d
Clean up xy_index.h. ( #9 )
...
Removes and simplifies code from free standing functions in xy_index.h.
2016-08-24 15:33:13 +02:00
Damon Kohler
cf9e365bc2
Improved logging for loading Lua configurations. ( #4 )
2016-08-23 01:31:36 -07:00
Wolfgang Hess
6e56578394
Rename to local/global map frame. ( #2 )
...
Changes the confusingly named GetOdometryToMapTransform() function
to GetLocalToGlobalTransform(), since it is transforming from the
local SLAM map frame to the global SLAM map frame.
2016-08-10 12:09:52 +02:00
Damon Kohler
269c28cb0c
Moves the contents of the cartographer subdirectory up one level.
2016-08-03 12:48:29 +02:00
Damon Kohler
166f2568bc
Initial import of Cartographer codebase.
2016-08-02 09:12:42 +02:00