Commit Graph

757 Commits (926b8540f696c73c33e9bee69d22ee835a478b2f)

Author SHA1 Message Date
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