This repository contains code for pose estimation using Camera and IMU sensor using both mathematical and deep learning approaches. For more details refer reports.
##1. VIO using Multi-State Constraint Kalman Filter filter MSCKF (Multi-State Constraint Kalman Filter) is an EKF based tightly-coupled visual-inertial odometry algorithm. S-MSCKF is MSCKF's stereo version. This project is a Python reimplemention of S-MSCKF, the code is directly translated from official C++ implementation KumarRobotics/msckf_vio.
For algorithm details, please refer to:
- Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight, Ke Sun et al. (2017)
- A Multi-State Constraint Kalman Filterfor Vision-aided Inertial Navigation, Anastasios I. Mourikis et al. (2006)
- Python 3.6+
- numpy
- scipy
- cv2
- pangolin (optional, for trajectory/poses visualization)
- EuRoC MAV: visual-inertial datasets collected on-board a MAV. The datasets contain stereo images, synchronized IMU measurements, and ground-truth.
This project implements data loader and data publisher for EuRoC MAV dataset.
python vio.py --view --path path/to/your/EuRoC_MAV_dataset/MH_01_easy
or
python vio.py --path path/to/your/EuRoC_MAV_dataset/MH_01_easy
(no visualization)
Follow license of msckf_vio. Code is adapted from this implementation.
##2. Deep VIO, VO and IO This phase contains Visual-Inertial Odometry, Visual Odometry and Inertial Odometry using Deep Neural Networks. Detailed network architecture and results are provided in a report in the Deep_VIO directory. Data Generation: Synthetic images are generated by rendering a quadrotor in Blender simulation. Further, 8 different trajectories are generated to capture data. Some sample trajectories are shown below: