On Ubuntu 16.04, we have to install Protobuf 3. Unfortunately, `find_package()`ing Protobuf using native installed CMake `CONFIG` is problematic in case if there is a system Protobuf 2 installed, while the bundled CMake module works correctly and manages to avoid interference with system-installed Protobuf 2.
* Add cartographer_configuration_dumper executable.
While Lua inheritance can be great, this small tool solves the
pain of asking yourself "But what actually is my final config?".
Usage: `cartographer_dump_configuration <directory/-ies> <basename>`
Also includes the option to print only a subdictionary with e.g.:
`--subdictionary_id trajectory_builder.trajectory_builder_3d`
The introduced changes are not compatible with CMake < 3.6 if the
FindProtobuf.cmake bundled with CMake is used.
Since our minimum required version is 3.2, I consider this to be a bug.
- camel-case variables names weren't used before 3.6
(upper-case is lowered in CMake > 3.6 for backwards compatibility)
- the `CONFIG` search for the Windows build logs a warning even if the
`REQUIRED` search succeeds, should be quiet
This PR makes libcartographer build on Windows (including tests). Abseil was bumped to avoid a MSVC compiler bug.
I have observed two tests failing:
`MapBuilderTestByGridType/MapBuilderTestByGridType.GlobalSlam2D/1` and `MapBuilderTestByGridType/MapBuilderTestByGridType.LocalizationOnFrozenTrajectory2D/1`.
Consolidating pbstream tools into a single tool
* adds two subcommands for now (info and migrate)
* removes commandline flags for filenames in favor of commandline args
* updates documentation for migration tool
* New serialization protos
* Moved old definition to legacy_serialized_data.proto
* defining new serialization format as oneof.
* Changing to legacy datatype
* adding serialization migration
* moving to io
* adding serialization migration
* moving to io
* adding file for test
* adding test
* test for order or migrated serialized data
* test for order or migrated serialized data
* renaming tool
* addressing comments
* addressing more comments
* minor polishing
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.
Ceres can be built without linking against a sparse linear algebra library
such as SuiteSparse or Eigen-sparse. This can happen if the user does not
have all the dependencies, which normally get installed when following
the Cartographer installation guide. In this case, Cartographer will
work, but without loop closures, because Ceres is not working fast enough
(the loop closure optimization without a sparse linear algebra library
is a few orders of magnitude slower). Another bad side effect of this is
that Cartographer will hang when finalizing the trajectory or on exit,
because all loop closing optimizations will be waiting in a queue which
can take hours to process.
When Ceres is regularly built against a sparse linear algebra library, as it
is supposed to be, it declares a component named SparseLinearAlgebraLibrary.
Because normal functioning of Cartographer seemingly depends on this being
present, it is introduced here in Cartographer as a required Ceres component
dependency.
The Boost include directory was not correctly added, and the
headers of the project where always looked up at the source or
build directory, not where they are installed.
- Remove use of get_property(LOCATION in cmake where this is easy. This
reduces build warnings sufficiently to not drown out other important
information.
- Mark cairo a dependency in package.xml so rosdep pulls it in.
Tested using docker -t ros:kinetic, which is based on Xenial.