MSCKF

A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation

Posted by YuCong on May 19, 2021

MSCKF: A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation


Created 2021.05.19 by William Yu; Last modified: 2022.08.09-V1.2.2

Contact: windmillyucong@163.com

Copyleft! 2022 William Yu. Some rights reserved.


MSCKF && S-MSCKF

A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation 2007.

Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight 2018.

refitem:

  • MSCKF
  • S-MSCKF
    • paper: S-MSCKF https://arxiv.org/pdf/1712.00036.pdf
    • code: msckf_vio https://github.com/KumarRobotics/msckf_vio
  • report: https://apps.dtic.mil/sti/pdfs/AD1126850.pdf
  • blog: https://zhuanlan.zhihu.com/p/76341809
  • blog: https://zhuanlan.zhihu.com/p/76347723

Basic Introduction

  • MSCKF的目标是解决EKF-SLAM的维数爆炸问题

  • 传统EKF-SLAM 的状态向量定义为 \(x = [R \ M]^T \tag1\) 其中

    • R 为机体状态向量,即 当前时刻的(x,y,z,yaw,pitch,roll)

    • M 为地图状态向量,即 路标集合,或者理解为特征点构成的稀疏点云

  • EKF-SLAM 的弊端:当环境很大时,特征点会非常多,状态向量维数会变得非常大。

  • MSCKF 不将特征点加入到状态向量

  • MSCKF 会缓存历史机体状态位姿 (位置 [公式]和姿态四元数 [公式])加入到状态向量,相当于 \(x = [I_{mu} \ R_{k-n} \ ...R_{k-1} \ \ R_{k}]^T\tag 2\)

  • 相机位姿的个数会远小于特征点的个数,MSCKF状态向量的维度相较EKF-SLAM大大降低

  • 且历史的相机状态会不断移除,只维持固定个数的的相机位姿(Sliding Window),以降低后端的计算量 -> 维护一个pose的FIFO, 而EKF-SLAM 始终只保存最新pose。

  • 特征点会被多个相机看到,从而在多个相机状态(Multi-State)之间形成几何约束(Constraint),进而利用几何约束构建观测模型对EKF进行update

  • MSCKF使用的Kalman Filter壳子是 ES-KF,建议先了解ES-KF

Model

1.state vector

// todo(congyu)

2.covariance matrix