Coder Social home page Coder Social logo

msckf_vio_python's Introduction

msckf_vio_python

MSCKF (Multi-State Constraint Kalman Filter) implementation in Python

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.

Another algorithm for getting VIO is implemented by using Error State Kalman filter (ESKF) here.

Difference between ESKF and MSCKF

The main difference between ESKF and MSCKF is in how they handle the uncertainty and measurement noise. ESKF models the uncertainty in the 6 DOF pose as a covariance matrix and updates it using the Kalman filter framework. This approach works well when the object moves slowly and the IMU measurements are relatively stable. However, when the object moves rapidly or experiences high levels of noise, the covariance matrix can grow quickly and lead to drift in the estimated pose.

MSCKF, on the other hand, maintains a set of states representing the camera poses and IMU states, and a set of constraints derived from the feature observations and IMU measurements. The algorithm uses these constraints to eliminate inconsistencies and produce a more accurate and robust estimate of the pose. MSRKF is better suited to handling rapid motion and high levels of noise compared to ESKF.

For algorithm details, please refer to:

  • Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight, Ke Sun et al. (2017) Link
  • A Multi-State Constraint Kalman Filterfor Vision-aided Inertial Navigation, Anastasios I. Mourikis et al. (2006) Link

Structure

Requirements

  • Python 3.6+
  • numpy
  • scipy
  • cv2
  • pangolin (optional, for trajectory/poses visualization)

Dataset

  • 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.

Run

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)

Results

MH_01_easy

License and References

Follow license of msckf_vio.

msckf_vio_python's People

Contributors

rohiitb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.