Go to file
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
cmake_modules Initial commit 2019-04-14 21:08:32 +02:00
data moved vocabulary to submodules 2019-04-18 14:26:45 +02:00
doc Update doc/Calibration.md, doc/Simulation.md, doc/VioMapping.md files 2019-04-17 10:47:25 +00:00
docker Initial commit 2019-04-14 21:08:32 +02:00
include/basalt add ./scripts/clang-format-all.sh and fix formatting 2019-04-24 13:16:06 +02:00
scripts fix install_mac_os_deps.sh 2019-04-24 13:17:12 +02:00
src add ./scripts/clang-format-all.sh and fix formatting 2019-04-24 13:16:06 +02:00
test ci and cmake improvements 2019-04-24 14:21:24 +02:00
thirdparty ci and cmake improvements 2019-04-24 14:21:24 +02:00
.clang-format add ./scripts/clang-format-all.sh and fix formatting 2019-04-24 13:16:06 +02:00
.gitignore Initial commit 2019-04-14 21:08:32 +02:00
.gitlab-ci.yml ci and cmake improvements 2019-04-24 14:21:24 +02:00
.gitmodules moved vocabulary to submodules 2019-04-18 14:26:45 +02:00
CMakeLists.txt ci and cmake improvements 2019-04-24 14:21:24 +02:00
LICENSE Initial commit 2019-04-14 21:08:32 +02:00
README.md Update README.md 2019-04-17 11:23:17 +00: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 availble as a separate header-only library.

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):

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

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.