Commit Graph

749 Commits (e0e1c081e7902e971008a0c8ddca45f2290f03b8)

Author SHA1 Message Date
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
jie 4fca78368d Add Cartographer high level structure diagram to documentation (#486) 2017-09-28 08:27:27 +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
Wolfgang Hess 6b544628b6 Add slides from yesterday and next date. (#531) 2017-09-15 11:53:57 +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