Go to file
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
cmake_modules fix for new TBB version 2021-05-23 20:42:29 +02:00
data ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
doc ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
docker ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
include/basalt ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
python/basalt ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
scripts ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
src ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
test ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
thirdparty ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
.clang-format add ./scripts/clang-format-all.sh and fix formatting 2019-04-24 13:16:06 +02:00
.clang-tidy Clang Tidy 2021-05-08 16:03:15 +00:00
.gitignore ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
.gitlab-ci.yml ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
.gitmodules ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
.style.yapf ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
CMakeLists.txt ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00
LICENSE Initial commit 2019-04-14 21:08:32 +02:00
README.md ICCV'21 square root marginalization paper code release 2021-10-15 15:09:15 +02:00

README.md

pipeline status

Basalt

For more information see https://vision.in.tum.de/research/vslam/basalt

teaser

This project contains tools for:

  • Camera, IMU and motion capture calibration.
  • Visual-inertial odometry and mapping.
  • Simulated environment to test different components of the system.

Some reusable components of the system are available as a separate header-only library (Documentation).

There is also a Github mirror of this project to enable easy forking.

Visual-Inertial Odometry and Mapping:

Calibration (explains implemented camera models):

Calibration (demonstrates how these tools can be used for dataset calibration):

  • The TUM VI Benchmark for Evaluating Visual-Inertial Odometry, D. Schubert, T. Goll, N. Demmel, V. Usenko, J. Stückler, D. Cremers, In 2018 International Conference on Intelligent Robots and Systems (IROS), [DOI:10.1109/IROS.2018.8593419], [arXiv:1804.06120].

Calibration (describes B-spline trajectory representation used in camera-IMU calibration):

Optimization (describes square-root optimization and marginalization used in VIO/VO):

  • Square Root Marginalization for Sliding-Window Bundle Adjustment, N. Demmel, D. Schubert, C. Sommer, D. Cremers, V. Usenko, In 2021 International Conference on Computer Vision (ICCV), [arXiv:2109.02182]

Installation

APT installation for Ubuntu 20.04 and 18.04 (Fast)

Set up keys, add the repository to the sources list, update the Ubuntu package index and install Basalt:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0AD9A3000D97B6C9
sudo sh -c 'echo "deb [arch=amd64] http://packages.usenko.eu/ubuntu $(lsb_release -sc) $(lsb_release -sc)/main" > /etc/apt/sources.list.d/basalt.list'
sudo apt-get update
sudo apt-get install basalt

Source installation for Ubuntu >= 18.04 and MacOS >= 10.14 Mojave

Clone the source code for the project and build it. For MacOS you should have Homebrew installed.

git clone --recursive https://gitlab.com/VladyslavUsenko/basalt.git
cd basalt
./scripts/install_deps.sh
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j8

Usage

Device support

Development

Licence

The code is provided under a BSD 3-clause license. See the LICENSE file for details. Note also the different licenses of thirdparty submodules.