24325f2a06
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 |
||
---|---|---|
cmake_modules | ||
data | ||
doc | ||
docker | ||
include/basalt | ||
python/basalt | ||
scripts | ||
src | ||
test | ||
thirdparty | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
.style.yapf | ||
CMakeLists.txt | ||
LICENSE | ||
README.md |
README.md
Basalt
For more information see https://vision.in.tum.de/research/vslam/basalt
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.
Related Publications
Visual-Inertial Odometry and Mapping:
- Visual-Inertial Mapping with Non-Linear Factor Recovery, V. Usenko, N. Demmel, D. Schubert, J. Stückler, D. Cremers, In IEEE Robotics and Automation Letters (RA-L) [DOI:10.1109/LRA.2019.2961227] [arXiv:1904.06504].
Calibration (explains implemented camera models):
- The Double Sphere Camera Model, V. Usenko and N. Demmel and D. Cremers, In 2018 International Conference on 3D Vision (3DV), [DOI:10.1109/3DV.2018.00069], [arXiv:1807.08957].
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):
- Efficient Derivative Computation for Cumulative B-Splines on Lie Groups, C. Sommer, V. Usenko, D. Schubert, N. Demmel, D. Cremers, In 2020 Conference on Computer Vision and Pattern Recognition (CVPR), [DOI:10.1109/CVPR42600.2020.01116], [arXiv:1911.08860].
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
- Camera, IMU and Mocap calibration. (TUM-VI, Euroc, UZH-FPV and Kalibr datasets)
- Visual-inertial odometry and mapping. (TUM-VI and Euroc datasets)
- Visual odometry (no IMU). (KITTI dataset)
- Simulation tools to test different components of the system.
- Batch evaluation tutorial (ICCV'21 experiments)
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.