Commit Graph

17 Commits

Author SHA1 Message Date
Nikolaus Demmel e37d3f02e7 cmake: adjust to basalt headers cmake changes 2021-12-04 12:14:22 +01:00
Nikolaus Demmel 24325f2a06 ICCV'21 square root marginalization paper code release
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
2021-10-15 15:09:15 +02:00
Vladyslav Usenko c7ceee72c0 Switched to templated version of IMU types 2021-04-17 18:41:42 +02:00
Vladyslav Usenko dd44fdab74 Fix test. 2020-06-24 23:08:45 +02:00
Vladyslav Usenko 6642c98a69 Fix test. 2020-06-24 22:34:44 +02:00
Nikolaus Demmel cfb6fc5b6d cleanup tbb includes for deprecations 2020-06-24 12:03:29 +02:00
Vladyslav Usenko 8d2da587cf varialble renaming 2019-10-04 15:38:04 +02:00
Nikolaus Demmel cae794d6af Move all eigen serialization to basalt-headers.
**Note:** Binary representation of eigen matrices has changed!
2019-08-27 15:19:33 +00:00
Vladyslav Usenko 5bb572cdeb Added Landmark database 2019-07-26 16:50:15 +00:00
Vladyslav Usenko 1d10c35731 Use Vec3 for IMU noise. Moved noise parameters from IMU data to calibration. 2019-07-19 19:00:57 +02:00
Vladyslav Usenko 3891040307 improve calibration 2019-07-10 11:49:23 +02:00
Vladyslav Usenko 7ecd04d9eb fix test 2019-06-27 14:53:44 +02:00
Vladyslav Usenko d0b2ab0f29 switched to other test discovery 2019-06-07 16:25:21 +02:00
Nikolaus Demmel 6c4fa75430 test: increase gtest discover timeouts 2019-04-24 15:49:41 +02:00
Nikolaus Demmel 6755f08678 ci and cmake improvements
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).
2019-04-24 14:21:24 +02:00
Nikolaus Demmel 9624f6b391 add ./scripts/clang-format-all.sh and fix formatting 2019-04-24 13:16:06 +02:00
Vladyslav Usenko 0cef943b16 Initial commit 2019-04-14 21:08:32 +02:00