Major changes:
- New square-root implementation for optimization and
marginalization, giving faster optimization and numerically
more stable marginalization. The square root solver is the new
default, but the Schur complement based implementation is still
available. (Implements the ICCV'21 paper.)
- The odometry estimator is now fully templetized and you can run
in float or double. Default is float, which works well with the
new square-root implementation and gives best runtimes.
- Batch evaluation scripts and documentation to reproduce the
ICCV'21 experiments.
Additional changes:
- New options in VIO to marginalize lost landmark right away and
not only when the frame is marginalized (enabled by default).
- small bugfix for keypoint patch extraction bounds
- basalt_vio: more logging for batch evaluation
- basalt_vio: better handling of closing the GUI while estimator is still running
- basalt_vio: new command line argument to limit the number of frames processed
- basalt_vio: new command line argument to save ground truth trajectory
- added unit tests for square root marginalization
- update basalt-headers
- new submodules: gmt, nlohmann/json, magic_enum
Changes along the line of
https://gitlab.com/VladyslavUsenko/basalt-headers/merge_requests/1 and
https://gitlab.com/VladyslavUsenko/basalt-headers/merge_requests/2,
and more.
Warning free builds on macos 10.11 - 10.14, Ubuntu Xenial &
Bionic. (macOS 10.14 is not yet in CI, but tested locally.)
Changes similar to basalt-headers:
- cmake: raise minimum version to 3.10
- cmake: add workarounds to support macOS < 10.14
- cmake: set ccache only if not yet set and print info
- cmake: add NDEBUG define (to disable asserts) for release build and
EIGEN_INITIALIZE_MATRICES_BY_NAN for others. Add externally supplied
CMAKE_CXX_FLAGS at the end to allow overriding the defaults.
- tests: add enable_testing() in main CMakeLists.txt, such that we can
call 'ctest' from build folder.
- tests: simplify gtest / gtest_main linking
- tests: use the newer gtest_discover_tests instead of add_test, which
adds a separate cmake test for every gtest, even with multiple
defined in a single executable. Its not only more reliable and less
verbose in the CMakeLists.txt, but also allows to run 'ctest'
without -V and still see status for every individual test.
- ci: add build jobs for Debug/RelWithDebInfo on Bionic, as well as
builds on Xenial and El Capitan. Use templates to simplify
.gitlab-ci.yml
- ci: clang-format job
Additional changes:
- cmake: unify formatting
- cmake: various diagnostic warnings for situations that are
unsupported (should help with gitlab issues).
- cmake options to disable openmp, pass custom eigen root,
compiler-launcher, additional CXX_FLAGS that can override default
flags also for submodules (opengv etc), ...
- cmake: moved configuration of submodule libs to
`thirdparty/CMakeLists.txt`. This includes various fixes for
limiatations of the thirdparty cmake definitions. In particular
ensures that correct eigen is used, that opengv respects march and
CXX_FLAGS passed from command line.
- cmake: simplified linking of executables. Linking `basalt` is
enough.
- cmake: basalt sources now build with the minimal disabled
warnings ("-Wall Wextra -Werror -Wno-unused-parameter
-ftemplate-backtrace-limit=0", and additionally "-Wno-exceptions"
for clang). Additional flags are now only set for the submodule
targets in thirdparty.
- tests: Running ctest in build folder now also runs the unit tests
from basalt-headers.
- ci: in addition to the additional compile jobs and there are now
also 'test' jobs, that check that the executables in the deb's
work (runs on all branches, not just master).