6755f08678
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). |
||
---|---|---|
cmake_modules | ||
data | ||
doc | ||
docker | ||
include/basalt | ||
scripts | ||
src | ||
test | ||
thirdparty | ||
.clang-format | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
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 availble as a separate header-only library.
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 [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].
Installation
APT installation for Ubuntu 16.04 and 18.04 (Fast)
Set up keys
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0D97B6C9
Add the repository to the sources list. On Ubuntu 18.04 run:
sudo sh -c 'echo "deb [arch=amd64] http://packages.usenko.eu/ubuntu bionic main" > /etc/apt/sources.list.d/basalt.list'
On Ubuntu 16.04 run:
sudo sh -c 'echo "deb [arch=amd64] http://packages.usenko.eu/ubuntu xenial main" > /etc/apt/sources.list.d/basalt.list'
Update the Ubuntu package index and install Basalt:
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
NOTE: It is possible to compile the code on Ubuntu 16.04, but you need to install cmake-3.10 or higher and gcc-7. See corresponding Dockerfile as an example.
Usage
- Camera, IMU and Mocap calibration.
- Visual-inertial odometry and mapping.
- Simulation tools to test different components of the system.
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.