Commit Graph

1131 Commits (a20db758cdce822528a90d4812af6887f495c35e)

Author SHA1 Message Date
Wolfgang Hess a20db758cd
Add intensity data to TimedPointCloudData. (#1742)
Adds a new field intensities to TimedPointCloudData.
RangeDataCollator now also takes intensities into account.
AddRangeData now takes a point cloud by value instead of
const reference as we would later make a copy of it anyway.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-08-28 10:12:04 +02:00
Wolfgang Hess da779339fa
Add IntensityHybridGrid. (#1739)
Adds a new structure IntensityHybridGrid, similar to HybridGrid
but which stores intensities instead of probabilities.
InterpolatedGrid is adapted to handle both types of HybridGrids.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-08-26 14:35:20 +02:00
Michael Grupp 01cb6b1d6f
Add gauge metric for current number of submap scan matchers. (#1738)
Useful for analyzing memory-related issues.
See: #1737

Signed-off-by: Michael Grupp <grupp@magazino.eu>
2020-08-25 11:04:59 +02:00
Michael Grupp 98d957ae43
Remove legacy compatibility proto files. (#1736)
Not needed anymore after the recent removal of that feature, see #1709.

Signed-off-by: Michael Grupp <grupp@magazino.eu>
2020-08-21 14:20:31 +02:00
Wolfgang Hess 1c8c1d144e
Remove struct TimedRangeData. (#1735)
It was only used in a unit test which can be improved
by removing it.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-08-20 11:07:25 +02:00
Michael Grupp 9b405c3dc8
Deactivate memory-critical histogram backwards compatibility. (#1710)
It's essentially leading to buffering all submaps twice, which
is a high (~2x) peak in memory consumption during deserialization.

Don't convert anymore since this affects _all_ pbstreams and not only
the (probably few) old pbstreams that require the conversion.

Signed-off-by: Michael Grupp <grupp@magazino.eu>
2020-08-17 19:34:35 +02:00
Wolfgang Hess 19a6eab07a
Change pbstream migrate to support new submap format. (#1733)
This changes the migration support to:
1. Remove migration from old files from before version 1.0.
   If this is still needed by someone, they can use the tool
   as it was before this change.
2. Adds migration of maps without submap histograms. These
   were so far migrated on-the-fly, but #1710 aims to remove
   this.

See also #1709.

This was tested by converting a serialized 3D map and verifying
it can still be used for localization. The file changed a little
bit, but it seems to be good enough.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-08-14 11:08:53 +02:00
Martin Schwörer 6c889490e2
Integrate imu based extrapolator (#1732)
This integrates the imu based extrapolator implementation, adds lua configuration and conversions from lua to proto. Note that the parameters of the imu based extrapolator are not tuned yet and the default is still the constant-velocity extrapolator.

Signed-off-by: mschworer <mschworer@lyft.com>
2020-07-30 13:52:08 +02:00
Martin Schwörer d3794a420a
Extrapolator Result for motion compensation (#1731)
This makes use of the ExtrapolationResult returned by the pose extrapolator. ExtrapolationResult contains poses corresponding to the timestamps of range data measurements to be used for motion compensation. When using the PoseExtrapolator implementation there is no functional difference. This PR prepares the integration of ImuBasedPoseExtrapolator, which requires using ExtrapolationResult returned by ExtrapolatePosesWithGravity to run efficiently.

Signed-off-by: mschworer <mschworer@lyft.com>
2020-07-30 09:14:02 +02:00
Martin Schwörer efc64934d6
use extrapolator interface (#1730)
This integrates the extrapolator interface into the 3D trajectory builder. The construction is now done within the interface and local trajectory builder 3D just makes use of the interface. No functional changes.

Signed-off-by: mschworer <mschworer@lyft.com>
2020-07-29 19:15:15 +02:00
Martin Schwörer 23351be571
added imu based extrapolator impl (#1728)
This adds an alternative implementation for pose extrapolation which uses imu integration as well as past local SLAM results (and odometry data) to predict a pose. This allows to perform motion compensation and initialize scan matching afterwards.

Using imu data for pose extrapolation and motion compensation is more accurate, because it does not make a constant velocity assumption like the PoseExtrapolator implementation. Next steps are the integration into local trajectory builder as well as tuning the parameters for existing datasets.

This PR is quite large but was already reviewed in smaller chunks internally and combines contributions from @danielsievers, @wohe and @schwoere.

Signed-off-by: mschworer <mschworer@lyft.com>
2020-07-29 14:48:01 +02:00
Martin Schwörer 32dad63edd
extracted eigen quaterniond from 2 vectors for faster compilation (#1729)
Signed-off-by: mschworer <mschworer@lyft.com>
2020-07-29 14:08:40 +02:00
Michael Grupp 1cae11593d
Add gauge metric for pose graph work queue size. (#1727)
Signed-off-by: Michael Grupp <grupp@magazino.eu>
2020-07-29 11:53:14 +02:00
Martin Schwörer 340a9ac21a
add pose extrapolator interface and extrapolator options (#1726)
This adds an interface around the extrapolator without further integration into any call sides.

Currently there is only a constant-velocity extrapolator implementation. The next step is to add an extrapolator implementation which integrates imu measurements for pose extrapolation.

Signed-off-by: mschworer <mschworer@lyft.com>
2020-07-28 22:53:12 +02:00
Wolfgang Hess 3611b52e90
Only set C++11 explicitly for old versions of GCC. (#1724)
Starting with GCC 6.1, C++14 became the default.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-07-23 11:46:59 +02:00
Wolfgang Hess a62fb739af
Update package.xml for ROS Noetic. (#1723)
Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-07-23 10:12:11 +02:00
Wolfgang Hess 92f2a67146
Remove unused code. (#1718)
Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-07-10 11:07:59 +02:00
Wolfgang Hess de76ed9fdc
Add Debian Buster to the install script and CI. (#1715)
Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-07-09 14:54:16 +02:00
Wolfgang Hess 595ffba0ce
Small improvements to 2D fixed frame pose support. (#1714)
This is a follow up to #1580.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-07-08 14:50:02 +02:00
Jihoon Lee 5899bff425
FixedFramePose in optimization 2d (#1580) 2020-07-07 13:18:53 +02:00
Wolfgang Hess d7016fdbbc
Remove Debian Jessie from CI. (#1713)
It has reached end-of-life with the
end of LTS on June 30, 2020.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-07-06 16:08:49 +02:00
Wolfgang Hess e5894cce1f
Small Abseil fixes for dependents. (#1711)
Enable PIC so that shared libraries can use the Cartographer
library.

Fixes the config so that dependent builds can find Abseil.

Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-06-25 09:35:57 +02:00
Alexander Belyaev ade7605fac
Use installed Abseil. (#1570) 2020-06-24 10:53:03 +02:00
Michael Grupp a5aa03b776
Implement fixed size transform interpolation buffer. (#1581) 2020-06-23 10:34:01 +02:00
Wolfgang Hess 21a8299caa
Add Ubuntu 20.04 to the install scripts, CI, docs. (#1706)
Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-06-18 14:44:58 +02:00
Michael Grupp 82a3970f76
Handle multiple frozen trajectories as one connected component. (#1610)
This fixes local constraint search in frozen maps built from multiple trajectories.

Local constraint search from a localization trajectory to a set of frozen trajectories
(i.e. the map) is done only among trajectories that are transitively connected in the
same connected component. If we set an initial pose, we create such a connection
to one frozen trajectory, but we were so far not able to do a local constraint search
w.r.t. to other frozen trajectories because they're not connected among each other.
Any constraints between them are not loaded (because they’re frozen).
2020-06-17 10:59:39 +02:00
Wolfgang Hess e8c1d840e6
Small fixes needed for focal support. (#1704)
Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-06-17 10:09:14 +02:00
Wolfgang Hess 10e57b0a27
Change from Google CLA to DCO in CONTRIBUTING.md. (#1702)
Signed-off-by: Wolfgang Hess <whess@lyft.com>
2020-06-16 18:15:25 +02:00
Susanne Pielawa b38b1cefa0
Allow using TolerantLoss for INS in pose graph optimization (#1700)
This PR adds the possibility to use the TolerantLoss function for INS in pose graph optimization. This is currently switched off, and so there's not functional change. 

The ceres TolerantLoss function (see [description](http://ceres-solver.org/nnls_modeling.html), and [implementation](https://github.com/ceres-solver/ceres-solver/blob/master/internal/ceres/loss_function.cc)) has the following property

- for large values of x it approaches a quadratic loss ("null loss") with the specified weight (fixed_frame_pose_translation_weight)
- for small values of x it approaches a quadratic loss with a smaller weight
- there's a crossover at some value x_c. The function is convex everywhere.
2020-06-15 10:56:23 +02:00
Phil 36afcb5590
Fix typo in tsdf_range_data_inserter_2d.cc (#1612)
Fix typo in RangeDataSorter.
2020-06-15 10:13:54 +02:00
Mariia Gladkova d973a084f7
Fix MapById::lower_bound function and implement test to reproduce the bug (#1616)
This fixes the bug that has been faced during localization with an initial pose and a trimmed map (OverlappingSubmapsTrimmer2D has been used). A small test is added that reproduces the problem (an infinite loop) where a trimmed trajectory (MapById instance) is used.
2020-06-12 12:17:54 +02:00
Wolfgang Hess db85e0894d
Remove Ubuntu Trusty from CI. (#1699)
Ubuntu 14.04 has reached end of standard support.
Moves additional testing that was only done for
Trusty to Bionic.
2020-06-10 11:13:34 +02:00
Davide Faconti 2f60378140
Add VerticalRangeFilteringPointsProcessor. (#1636)
Add an extra filter for 3D data.
Solve the problem with 2D maps created from 3D sensors.
2020-06-09 12:35:47 +02:00
Wolfgang Hess 1b0d4f1fee
Add Ubuntu 18.04 to the install scripts, CI, docs. (#1697) 2020-06-04 11:09:18 +02:00
Wolfgang Hess fe6e81a055
Fix typo, naming, formatting, type. (#1694)
Fixes the typo mentioned in #1637.
Also improves naming and ran clang-format.

Changed an integer literal to unsigned to
fix a compiler warning.
2020-06-03 11:46:45 +02:00
Scott K Logan 6bbf2558ce
Drop superfluous ROS dependency on catkin (#1599)
This package's CMakeLists.txt doesn't reference catkin at all, and can
be regarded as a "pure CMake" package. In fact, the package.xml already
states that this package is built using cmake directly, but still
depends on catkin.

This change makes the package buildable without catkin, as would be
desired when building with colcon in ROS 2.
2020-06-03 11:13:57 +02:00
Davide Faconti 46063be28f
MinMaxRangeFiteringPointsProcessor: use squaredNorm() instead of norm() (#1637)
This should represent a considerable speedup.
2020-06-03 10:36:59 +02:00
Wolfgang Hess 1659f0dc8b
Fix build status on front page. (#1693)
Changes "googlecartographer" to "cartographer-project"
for references to CI and GitHub.
2020-06-02 14:08:16 +02:00
jie 47b80c9a3f
Fix crashes in median() if all spans in a level are short (#1668) 2020-06-02 11:29:37 +02:00
Wolfgang Hess 02594a07c7
Update README to archive Open House slides. (#1692)
This moves the Cartographer Open House slides to the bottom of
the README as an archive, and clarifies that regular meetings
are currently no longer happening.
2020-05-29 14:09:03 +02:00
jie ad216d49c9
Fix the dead loop. (#1586)
Fix the bug in RotateHistogram which may cause dead loop by numerical error.
2020-05-28 19:28:15 +02:00
Julius Kammerl bcd5486025 Fix missing bazel dependency to absl/str_format.h in cartographer/common/histogram.cc (#1576)
Also updates com_github_jupp0r_prometheus_cpp and bazel_skylib to fix
compatibility issues with bazel 0.25
2019-05-08 17:21:22 +02:00
Andre Gaschler 51df4afcba Update README.rst (#1566) 2019-04-12 14:34:47 +02:00
Michael Grupp 897762675c Use fixed precision for string histogram buckets. (#1563)
`absl::StrCat/StrAppend` convert numeric values to strings with inconsistent
decimal precision, which can lead to ugly formatting of the histogram.

This can be fixed by using `StrAppendFormat` with `%f`, which uses 6
decimals (printf default and as it was when we had `std::to_string`).
2019-04-10 17:31:47 +02:00
Michael Grupp c999c3012b Fix a small description typo in constraints metrics. (#1562) 2019-04-10 15:31:33 +02:00
Michael Grupp 035162d865 Update clang-format to new Google style. (#1564)
Apparently the format bot uses a bleeding edge clang-format that uses
the new Google style and reformats a bunch of files in every PR. This is
an empty commit to trigger this in a separate commit.

See 62e3198c4f
2019-04-10 13:04:57 +02:00
jie dc745a147a Add saturation_factor to scale the saturation of the point color (#1556)
Add saturation_factor to scale the saturation of the point color to get darker XRay for sparse point cloud.
2019-04-02 16:57:27 +02:00
Michael Grupp ab0ceacbed Check for empty basename in GetFileContentOrDie() (#1558)
An empty basename would mean a directory path is returned by
GetFullPathOrDie(), which then leads to a cryptic exception when trying
to read from it using the istreambuf_iterator:

"basic_filebuf::underflow error reading the file: iostream error"
2019-04-02 16:01:51 +02:00
Andre Gaschler 98197cff4f Fix Bazel test failure (#1557)
FIXES=#1519
2019-04-02 09:35:20 +02:00
Christoph Schütte b1edbea84f
Update bazel dependencies (#1553)
* Update dependencies

Update protobuf grpc and bazel-rules and added bazel-skylib (required by
protobuf 3.7.1).

Closes #1519
2019-03-30 22:13:12 +01:00