Commit Graph

1020 Commits (1ddfd9c6d383f8c88ab34f5bbe160dc74199add1)

Author SHA1 Message Date
gaschler 1ddfd9c6d3
Fix LocalTrajectoryUploader recovery (#1415)
Make sure no data is uploaded to an interrupted uplink trajectory,
but create a new uplink trajectory to upload to that one.
2018-09-10 12:03:10 +02:00
Michael Grupp a351a8e3b4 Include all trajectory nodes when serializing without unfinished submaps. (#1410) 2018-09-05 16:59:16 +02:00
gaschler e318751329 Graceful LocalTrajectoryUploader::AddTrajectory (#1409)
FIXES=#1407
2018-09-05 10:38:48 +02:00
Martin Schwörer 3b511aa1ba Store histogram in submap (#1277)
The histogram of a submap is now stored in the submap (class and proto) itself. This change allows to accumulate the histogram of a submap in local SLAM by adding up the histogram of each new scan.

The main advantage is that the background thread doesn't have to loop over all `TrajectoryNode`s of a finished submap to compute the submap histogram for the `RotationalScanMatcher`. Instead this chunk of work is moved to the local SLAM thread but is split up into a few computations for each new scan. When running localization, the histogram of a submap can just be read from a map pbstream and does not have to be computed from the nodes.

In summary:
- This change improved the CPU time of offline SLAM by ~7%.
- Increases the readability of the code and performance of the background thread. (see `PoseGraph3D::ComputeConstraint`)
- No negative performance impacts on accuracy or finding loop-closures

However:
- With this change to the submap proto, old maps (pbstreams) are no longer supported and need to be re-created by running offline slam
2018-09-04 12:02:57 +02:00
Michael Grupp b1dfa30ee3 Recover gRPC channel from connection dropouts. (#1406)
- check and recover channel connection in `TryRecovery()`
- fixes an infinite loop in the unlimited retry strategy by adding `grpc::UNAVAILABLE`,
  `DEADLINE_EXCEEDED` to the unrecoverable status codes.
  - server restart leads to `UNAVAILABLE`
  - connection loss leads to `DEADLINE_EXCEEDED`
- fixes repeated recovery attempts
2018-09-04 11:17:51 +02:00
Christoph Schütte 153952ddf0 Move OverlappingSubmapTrimmerOptions to PoseGraphOptions (#1408) 2018-09-04 10:12:19 +02:00
Martin Schwörer a4ff055d8f Store histogram in submaps: prepare for backward compatiblity (#1405)
This makes the map builder backwards compatible to the current map pbstream (version 1). The PR prepares for #1277, where pbstream version 2 will be introduced. Backwards compatibility was discussed in #1277.

When a map with pbstream version 1 is loaded, a rotational scan matcher histogram is generated for each submap using the histograms of all nodes that were inserted to the submap during local SLAM. Once this backwards compatibility is in place, I would like to introduce the new format with #1277.
2018-09-03 17:33:34 +02:00
Michael Grupp 4c2104473c Support gRPC requests for loading unfrozen states. (#1379) 2018-08-29 10:55:55 +02:00
danielsievers 81b75da9f4 Fix gravity alignment of submaps in local SLAM (#1398)
We were passing the gravity estimate of the current tracking frame
to intialize the local submap pose. Fixing this improves the alignment
of submaps in the global (and approx. gravity-aligned) frame.
2018-08-24 12:28:31 +02:00
Kevin Daun 1c00e8a970 Add TSDF support for RealTimeCorrelativeScanMatcher. (#1389)
Continues https://github.com/googlecartographer/cartographer/pull/1376.
[RFC=0019](https://github.com/googlecartographer/rfcs/blob/master/text/0019-probability-grid-and-submap2d-restructuring.md)
2018-08-16 14:04:09 +02:00
Alexander Belyaev 5261c90c34 [GenericPoseGraph] Add parameterization. (#1385) 2018-08-14 14:37:27 +02:00
Rodrigo Queiro 05f2c6caed Various Bazel improvements (#1390)
- `--force_pic` speeds up the build ~1.5x on my machine.
- Marking internal_client_server_test as flaky avoids misleading
  failures in some environments.
- Updating rules_boost avoids spamming stdout with configure script
  messages.
2018-08-14 12:14:06 +02:00
gaschler 45cf230ff8 Update README.rst (#1383) 2018-08-13 15:21:18 +02:00
gaschler 213882a9b3 Rename submap finished flags (#1384) 2018-08-13 10:38:33 +02:00
gaschler 811f2e8e8f Graceful LocalTrajectoryUploader (#1381)
* Graceful LocalTrajectoryUploader

FIXES=#1370
2018-08-12 13:46:13 +02:00
Alexander Belyaev fe59278286
Fix indentation in repositories.bzl and header in point_batch.h. (#1386) 2018-08-11 21:05:00 +02:00
Juraj Oršulić 73c3d477d7 Introduce [Timed]RangefinderPoint. (#1357) 2018-08-10 22:36:37 +02:00
Alexander Belyaev dcf63d6684
Use sourceforge mirrors for boost. (#1378) 2018-08-10 20:03:26 +02:00
Alexander Belyaev b6b41e9b17
[GenericPoseGraph] Add a macro to find nodes. (#1382) 2018-08-10 18:55:43 +02:00
gaschler 3877f97b23
Bump async_grpc (#1380)
Specify timeouts where RetryStrategy is used.
2018-08-10 09:30:54 +02:00
Rodrigo Queiro 8d0457d1d8 Move tools/bazel.rc to prepare for bazel 0.17 (#1375)
* Move tools/bazel.rc to prepare for bazel 0.17

Bazel 0.17 will no longer import the legacy "tools/bazel.rc" config
file. This change ensures compatibility with the new versions.

For users on bazel 0.16 and earlier who have a ~/.bazelrc, this change
will cause bazel to ignore their ~/.bazelrc and load this one instead.
Hopefully this won't break anyone. (famous last words)
2018-08-09 17:08:38 +02:00
Michael Grupp 4d6120d2cb Use Huber loss for landmark cost functions. (#1377) 2018-08-09 10:30:41 +02:00
Alexander Belyaev d5840e960a [GenericPoseGraph] Move functions that add param blocks to constraint_utils. (#1374)
Also call `ceres_loss()` instead of passing `nullptr`.
2018-08-07 14:48:39 +02:00
Alexander Belyaev 6274fc1558 [ABSL] Use absl::Substitute in rigid_transform debug messages. (#1373)
it is at least readable.
2018-08-07 12:50:37 +02:00
Alexander Belyaev 8d5bf2a5dd
[ABSL] Purge common/mutex.h. (#1369) 2018-08-07 10:43:38 +02:00
gaschler 54f7f4f969 Skip constraint search against unfinished submaps. (#1362)
The uplink server only receives the grid content of a submap after
that submap is finished for efficiency. Therefore, constraint
searches against that submap need to be skipped.
Also add checks to avoid this in the future.

FIXES=#1360
2018-08-06 17:34:40 +02:00
Christoph Schütte 3f3428e8d4 Remove noisy loggin from AddSensorDataBatchHandler (#1366)
See discussion in https://github.com/googlecartographer/cartographer/pull/1338
2018-08-03 14:10:52 +02:00
Kevin Daun 77886cb53b Integrate TSDF components into SLAM pipeline. (#1361)
[RFC=0019](https://github.com/googlecartographer/rfcs/blob/master/text/0019-probability-grid-and-submap2d-restructuring.md)
2018-08-03 11:56:35 +02:00
Arno Fleck 12e11856af Use absl::Mutex instead of custom implementation (#1356)
Makes `common::Mutex` an alias for `absl::Mutex` and replaces the logic inside `common::MutexLocker` with `absl::MutexLock`.

A future PR can then remove these classes entirely and replace references to it across the Cartographer code base with the Abseil classes directly.
2018-08-03 11:15:50 +02:00
Michael Grupp b841ebf170 Fix typo in last commit (negate condition). (#1365) 2018-08-02 20:59:23 +02:00
Michael Grupp 4cd1528ffb Replace CHECK() by a warning in MapBuilderStub::SerializeState() (#1364)
See discussion in https://github.com/googlecartographer/cartographer_ros/pull/966
2018-08-02 19:35:19 +02:00
gaschler 39e5943abc Add slides (#1363) 2018-08-02 11:13:07 +02:00
Kevin Daun 748deb910a Add TSDF match cost function. (#1359) 2018-08-01 23:46:33 +02:00
Kevin Daun 6c070acff5 Introduce GridType for Grid2D (#1355) 2018-07-31 15:13:37 +02:00
gaschler c1fbb6bb07
Fill submaps slices (#1353)
This implements a frequently used function (two times in cartographer_ros).
Also, it corrects a wrong repeated proto field access,
so we can fix cartographer_ros/issues/944.
2018-07-31 11:48:04 +02:00
Julius Kammerl c041635fb5 Add sensor counter metrics to TrajectoryCollator class (#1342)
Adds metrics to monitor the incoming sensor messages processed by the TrajectoryCollator class.
2018-07-31 10:06:54 +02:00
Julius Kammerl 537b2d6762 Add metric counters to track sensor data in the AddSensorDataBatchHandler class (#1338)
Adds additional metrics to track incoming sensor and local slam result data in Prometheus.
2018-07-30 19:42:08 +02:00
Christoph Schütte a3c9e9f1ca Add argument to SerializeState for excluding unfinished submaps (#1352)
Adds a boolean argument to MapBuilderInterface::SerializeState() to indicate whether the caller wants to include unfinished submaps in the serialized state.

For cartographer_grpc this argument will be set to false since unfinished submaps do not have a Grid which would lead to a crash in the Submap::ToProto() function.
2018-07-30 17:27:54 +02:00
Alexander Belyaev 5c61148f26 [ABSL] Remove common/optional.h. (#1349) 2018-07-30 13:44:55 +02:00
Juraj Oršulić 0a10bc3a15 Make standalone_absl imported target global. (#1351) 2018-07-30 13:06:15 +02:00
Juraj Oršulić b1855d0d06 Fix Abseil build command (#1350)
@pifon2a I've noticed the `BUILD_COMMAND` is broken. You're setting `ABSL_BUILD_COMMAND`, but using `ABSEIL_BUILD_COMMAND` (effectively empty). Somehow this doesn't confuse newer CMakes, but the one you install on Trusty gets confused and interprets this as a no-op build step. This causes the indigo pipeline in cartographer_ros to fail.

Use the cross-platform build command instead: 
https://cmake.org/cmake/help/latest/module/ExternalProject.html#obtaining-project-properties (just above the linked paragraph)
2018-07-28 17:42:09 +02:00
Juraj Oršulić 27a7a3dbdf FindAbseil.cmake: cross-platform library names (#1348)
Fixes #1347
2018-07-27 23:41:25 +02:00
Alexander Belyaev 3c5f2cd154
[GenericPoseGraph] Add PoseGraphController. (#1335) 2018-07-27 20:35:27 +02:00
Alexander Belyaev 5b44305ea3
[ABSL] Purge common::make_unique. (#1340) 2018-07-27 19:43:35 +02:00
Alexander Belyaev 4990d4d5e9
[ABSL] Purge common::optional. (#1339) 2018-07-27 19:05:45 +02:00
Christoph Schütte dafb4149ed Revert: Fix writing state of trajectories with unfinished submaps. #1286 (#1346)
Reason: Break rviz visualization for submaps loaded from pbstreams.
2018-07-27 17:20:42 +02:00
Martin Schwörer 3af5086dc7 removed redundant condition (#1344)
Removes an additional condition that is not required.
2018-07-27 13:45:59 +02:00
Wolfgang Hess 8b329efc8e Don't process PoseGraph2D work items in foreground. (#1341)
This is #1285 for 2D.
Fixes #1250.
2018-07-26 17:05:23 +02:00
Alexander Belyaev c2c341397f [GenericPoseGraph] Add InterpolatedRelativePose2D constraint. (#1337) 2018-07-26 15:00:13 +02:00
Wolfgang Hess e87100a3ad Introduce separate mutex for PoseGraph2D work queue access. (#1333)
This is #1284 for 2D.
2018-07-26 11:15:56 +02:00