/my_spline_vio

Continuous-Time Spline Visual-Inertial Odometry

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Continuous-Time Spline Visual-Inertial Odometry

Updates

  • [June 2022]: The position and acceleration formulation is suboptimal. Please checkout the new branch for improved formulation.

Related Publications

  • Direct Sparse Odometry, J. Engel, V. Koltun, D. Cremers, In IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 2018
  • Continuous-Time Spline Visual-Inertial Odometry, J. Mo and J. Sattar, In IEEE International Conference on Robotics and Automation, 2022, arXiv.

Dependencies

Install

cd catkin_ws/src
git clone https://github.com/IRVLab/spline_vio.git
cd ..
catkin_make

Usage

roslaunch spline_vio [YOUR_LAUNCH_FILE]
  • Ctrl-C to terminate the program, the final trajectory (results.txt) will be written to ~/Desktop folder by default.

Output file

  • results.txt: poses of all frames, using the TUM RGB-D / TUM monoVO format ([timestamp x y z qx qy qz qw] of the cameraToWorld transformation).

Modifications to DSO for this project

  • ROS interface: main.cpp
  • Predict pose using spine for front-end tracking: FullSystem::trackNewCoarse()
  • IMU/Spline state: HessianBlocks.h
  • IMU/Spline Jacobians (check Jacobians.pdf): HessianBlocks::getImuHi()
  • Constraints Jacobians (check Jacobians.pdf): EnergyFunctional::getImuHessianCurrentFrame()
  • Solve the constraint nonlinear optimization problem: EnergyFunctional::solveSystemF()