Commit Graph

773 Commits (b4c4ae6ea9cc789cf89fe70fddce5e4b21b7675e)

Author SHA1 Message Date
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 14d868869f Add slides from yesterday and next date. (#461) 2017-08-18 12:06:53 +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