Commit Graph

800 Commits (3b511aa1bafaf3cd80890927bf7122a33e5f13a3)

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