This will allow the ROS buildfarm to properly install dependencies
when attempting to build this package.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
The header ceres_solver_options.h is not used as part of public
API anymore. lua_parameter_dictionary_test_helpers.h is only
used in tests.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
The deletion logic needs to take care of deleting all data that is
"exclusively" connected to the submaps that are to be removed. This is
achieved by looking at the data that is connected via constraints in
the graph.
Deleting a frozen trajectory (one without optimization constraints)
doesn't work that way and would leave dangling nodes in the graph.
This adds an additional logic that uses the `node_ids` field of the
submap instead of the constraints if the trajectory is frozen.
Signed-off-by: Michael Grupp <grupp@magazino.eu>
We refer to CONTRIBUTING.md from the PR template now
which is now the single place containing all information.
Reference to the bot is removed since it is currently
not being used.
We point contributors to using clang-format.
We link to PR and code review best practices now.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
Moves options next to the interface like we do for other interfaces.
Adds a factory function to remove the need for direct use of MapBuilder.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
In common, BlockingQueue and RateTimer are not used
in any public API and are made internal.
`common/utils.h` is unused code and removed.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
This introduces an option to control the amount of odometry data that
enters the pose graph by motion-filtering it. This is very useful to
bound memory when standing still for longer periods of time.
If the new option is not configured, all odometry data goes unfiltered
into the pose graph as usual.
Signed-off-by: Michael Grupp <grupp@magazino.eu>
pose_graph_data.h and io test_helpers.h are currently public,
i.e. get installed, but cannot possibly be used since they refer
to internal headers.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
* restrict boost dependencies to the ones used
* Also add googletest as a build dependency.
* Set GMOCK_INCLUDE_DIRS when doing src fallback.
Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
Co-authored-by: Mikael Arguedas <mikael.arguedas@gmail.com>
`Submap3D` now also stores a pointer to `IntensityHybridGrid`.
Adapted `RangeDataInserter3D` to also insert intensities.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
Adds a new method to sensor::PointCloud, copy_if, which copies all
points satisfying a provided condition, together with the associated
intensities (if they exist).
Adapts transforms/filters to use this new method.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
This changes which submaps we select to attempt loop closing.
The subsampling of candidates is changing from randomly sampling
submap and node pairs to per-submap sampling. This enforces a
better distribution of loop closure attempts across the submaps.
This sampling achieves a much better performance which indicates
that the approach used before was sub-optimal.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
This weights IMU based on the time between nodes in the
pose graph optimization.
When moving slowly or stopping, IMU weights are reduced.
This improves quality in these cases. The parameters are
changed to approximately get the same behavior while
moving as before for the examples.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
It was constantly added regardless of motion filtering. Since it's not
used it can be just ignored. The method still needs to be there to
satisfy the interface.
Signed-off-by: Michael Grupp <grupp@magazino.eu>
This leads to slightly slower performance but better quality.
Also replaces the VoxelFilter class by free standing functions.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
This changes cartographer_ros to no longer build
Ceres and instead uses libceres-dev for which a
suitable version is provided by ROS for Kinetic.
Related to #1705.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
This is to make it possible to use the proto definitions
from Python where the directory structure otherwise
prevents them from being imported in the usual way.
Signed-off-by: Wolfgang Hess <whess@lyft.com>
This makes cartographer compatible with
`--incompatible_blacklisted_protos_requires_proto_info`.
See https://github.com/bazelbuild/bazel/issues/11694
Signed-off-by: Yannic Bonenberger <contact@yannic-bonenberger.com>
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>
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>
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>