Library for Visual-Inertial Odometry (VIO) using minimal solvers utilizing a common reference direction (obtained from IMU data). The code is related to the CVPR 2022 Workshop paper [link]. Please cite the paper below, if you use the code in your work:
@InProceedings{Ornhag_2022_CVPR,
author = {\"Ornhag, Marcus Valtonen and Persson, Patrik and Wadenb\"ack, M\r{a}rten and \r{A}str\"om, Kalle and Heyden, Anders},
title = {Trust Your IMU: Consequences of Ignoring the IMU Drift},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops},
month = {June},
year = {2022},
pages = {4468-4477}
}
The implementation uses Eigen 3 (older versions are not compatible), which is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
Installation for Ubuntu/Debian:
$ apt-get install libeigen3-dev
The source code has been compiled and tested on Ubuntu 18.04 (Bionic Beaver) with g++-7 to g++-9 and clang++-7 to clang++-9. Furthermore, it is tested on OSX with Xcode 12.
It is possible to MEX-compile the solver and use it in MATLAB.
In order to do so you may use the file matlab/compile_mex.m
, which
should result in an executable.
Note that your local Eigen path may be different, e.g. /usr/local/include/eigen3
.
Tested on version R2020a Linux (64-bit).
A pre-alpha release is now available pn PyPI, and can be downloades using
$ pip install droneposelib
See more documentation on the separate python repository here.
These solvers were generated using the automatic generator proposed by Larsson et al. "Efficient Solvers for Minimal Problems by Syzygy-based Reduction" (CVPR 2017)