参考MSCKF是滤波视觉SLAM中的大作。MSCKF的特点是速度快,资源消耗少,非常值得学习。 单目VIO开源代码: https://github.com/daniilidis-group/msckf_mono双目VIO开源代码: https://github.com/KumarRobotics/m…
MSCKF全称Multi-State Constraint Kalman Filter(多状态约束下的Kalman滤波器),是一种基于滤波的VIO算法,2007年由Mourikis在《A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation》中首次提出。MSCKF在EKF框架下融合IMU和视觉信息,相较于单纯的VO算法,MSCKF能够适应更剧烈的运动、一定时间的纹理...
MSCKF-Based Visual-Wheel Odometry 轮速视觉融合里程计 SlidingWindowsFilter(SWF)在VIO、SLAM这个领域应用非常广,比如MSCKF、OKVIS、VINS-Mono等等,几乎可以说是VIO的标配。 SWF可以分成基于滤波器的和基于优化的两种。最典型的基于滤波器的方法就是MSCKF算法了。它是基于EKF的算法,在marginalize state的时候处理比较简单...
VIO算法的核心在后端,不管是优化的方法还是滤波的方法,都是靠后端的紧耦合融合获得较高的VIO精度,为了节省计算量一般前端都会做得很简单,基本都是FAST、Harris等角点加LK光流跟踪(S-MSCKF中使用的FAST角点,VINS_MONO中使用的goodFeatureToTrack)。如果计算资源充裕的话,也可以换成ORB、SURF、SIFT等描述子特征,精度应...
Image_process部分的代码较为简单,不用过多分析。接下来主要分析msckf_vio的相关代码,这部分的代码分析和论文较为对应。 和图像处理部分一样,msckf部分从msckf_vio_nodelet.cpp进入initialize(),进入函数后,先进行参数加载,这部分主要有定义坐标系、加载imu的噪声和偏置噪声参数,定义了初始的imu速度,设定了速度协方差...
MSCKF全称 Multi-State Constraint Kalman Filter(多状态约束下的Kalman滤波器),是一种基于滤波的VIO算法,2007年由Mourikis在《A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation》中首次提出。MSCKF在EKF框架下融合IMU和视觉信息,相较于单纯的VO算法,MSCKF能够适应更剧烈的运动、一定时间的纹...
S-MSCKF的代码分为两部分,图像处理部分(image_processor.cpp)和滤波部分(msckf_vio.cpp)。 【图像处理部分】 图像首先进行初始化操作,从image_processor_nodelet.cpp进入image_processor.cpp Initialize()函数中先通过loadParameter函数进行相机内外参数的加载,后进入createRosIO(),创建ROS IO,在此函数中,定义两个回调...
MSCKF框架在滤波视觉SLAM领域中以速度快和资源消耗低而著称,具有极高学习价值。相关开源代码资源在GitHub上提供,包括单目VIO代码和双目VIO代码。其中,双目VIO的注释版本特别感谢计算机视觉life的贡献。本系列文章将聚焦于基于双目VIO开源框架进行深度探讨。ROS中的Nodelet功能旨在解决单机器单进程中的算法运行...
和图像处理部分一样,msckf部分从msckf_vio_nodelet.cpp进入initialize(),进入函数后,先进行参数加载,这部分主要有定义坐标系、加载imu的噪声和偏置噪声参数,定义了初始的imu速度,设定了速度协方差、陀螺仪偏置协方差、加速度计偏置协方差、以及外参旋转协方差和外参平移协方差,同时,还定义了整个系统状态协方差的初始化...
Sliding Windows Filter(SWF)在VIO、SLAM这个领域应用非常广,比如MSCKF、OKVIS、VINS-Mono等等,几乎可以说是VIO的标配。 SWF可以分成基于滤波器的和基于优化的两种。最典型的基于滤波器的方法就是MSCKF算法了。它是基于EKF的算法,在marginalize state的时候处理比较简单,只需要把对应的covariance的对应行列直接丢弃就可以了...