An Analytical Solution to the IMU Initialization Problem for Visual-Inertial Systems
Implementation of "An Analytical Solution to the IMU Initialization Problem for Visual-Inertial Systems"
Authors: David Zuñiga-Noël, Francisco-Angel Moreno and Javier Gonzalez-Jimenez
Draft: arXiv:2103.03389
Dependencies (tested)
-
CMake (3.10.2):
sudo apt install cmake
-
Boost (1.65.1):
sudo apt install libboost-all-dev
-
Eigen3 (3.3.4):
sudo apt install libeigen3-dev
-
Gflags (2.2.1):
sudo apt install libgflags-dev
-
Glog (0.3.5)
sudo apt install libgoogle-glog-dev
-
Ceres-solver (2.0.0)
Install ceres-solver-2.0.0 following these instructions. Requires additionally
libatlas-base-dev
andlibsuitesparse-dev
.
Build
Make sure all dependencies are correctly installed. To build, just run the provided build.sh
script:
git clone https://github.com/dzunigan/imu_initializaiton
bash build.sh
which should build the executables in the ./build
directory.
Source structure
-
The analytical solution is implemented in function
proposed_accelerometer()
ininclude/methods.h
-
The non-linear constfunctions for iterative optimzation with ceres can be found in
imu_ceres.h
-
The iterative alternative is implemented in function
iterative()
ininclude/methods.h
-
The IMU preintegration code (adapted from ORB_SLAM3) is implemented in:
include/imu_preintegration.h
src/imu_preintegration.cc