MSCKF_VIO浅析

MSCKF 是明尼苏达州大学Mourikis 等人提出的一种基于EKF 的VIO 紧耦合的SLAM 框架。该框架主要解决了使用传统EFK方式解决SLAM问题时,状态向量中特征点维度爆炸的问题。MSCKF的创新点在于未将路标点加入到状态向量中,而是将多个相机状态扩维到状态向量中,多个相机对路标点的观测作为一种约束,整合到EKF更新过程中。

S_MSCKF是宾夕法尼亚大学Vijay Kumar 实验室开源的双目版本MSCKF 算法。代码简洁明了,数据结构设计的简单易用,质量比较高!相比于基于优化的VIO算法,MSCKF精度相当(可以看S_MSCKF的对比试验),但是计算量较小。

我注释过的代码见here

阅读全文 »

LeGo-LOAM+单目相机

本节记录使用相机去辅助LeGo-LOAM,代码主要来自VINS-Mono与LeGo-LOAM,相机主要用在两个方面:1、与激光紧耦合去估计位姿;2、进行视觉回环检测。

多传感器融合定位方案中传感器选择的过程就是寻找互补性的过程,融合的过程就是执行互补的过程。具体来讲,IMU和GNSS融合定位,IMU有累计误差但是没有位姿跳变,GNSS没有累计误差但是信号受到干扰或者遮挡时会跳变。二者融合,既能消除累计误差又能避免位姿跳变,可以表述为,误差在累积性噪声性上都有互补。

单纯基于激光点云的里程计算法,只能利用环境的几何结构信息来提取特征点,这会导致在一些场景下产生约束退化的问题:

阅读全文 »

LeGo-LOAM中的transformFusion节点

LeGo-LOAM是在LOAM基础上改进的激光雷达定位与建图方法,它对地面点进行了优化、提出了两步LM优化算法,加入了闭环检测和全局因子图优化等。
本系列博客只说明了关键代码的功能实现,以及一些关键地方的数学推导,详细的解释都写在了代码注释中,注释后的代码在融合相机后会传到github。同时也列出来一些问题提醒自己有条件时实际去验证。

阅读全文 »

LeGo-LOAM中的mapOptmization节点

LeGo-LOAM是在LOAM基础上改进的激光雷达定位与建图方法,它对地面点进行了优化、提出了两步LM优化算法,加入了闭环检测和全局因子图优化等。
本系列博客只说明了关键代码的功能实现,以及一些关键地方的数学推导,详细的解释都写在了代码注释中,注释后的代码在融合相机后会传到github。同时也列出来一些问题提醒自己有条件时实际去验证。

阅读全文 »

LeGo-LOAM中的ImageProjection节点

LeGo-LOAM是在LOAM基础上改进的激光雷达定位与建图方法,它对地面点进行了优化、提出了两步LM优化算法,加入了闭环检测和全局因子图优化等。
本系列博客只说明了关键代码的功能实现,以及一些关键地方的数学推导,详细的解释都写在了代码注释中,注释后的代码在融合相机后会传到github。同时也列出来一些问题提醒自己有条件时实际去验证。

阅读全文 »

LeGo-LOAM中的featureAssociation节点

LeGo-LOAM是在LOAM基础上改进的激光雷达定位与建图方法,它对地面点进行了优化、提出了两步LM优化算法,加入了闭环检测和全局因子图优化等。
本系列博客只说明了关键代码的功能实现,以及一些关键地方的数学推导,详细的解释都写在了代码注释中,注释后的代码在融合相机后会传到github。同时也列出来一些问题提醒自己有条件时实际去验证。

阅读全文 »

单目视觉惯导在线初始化——时空校准

该方法可以在线标定相机与IMU之间的相对位姿(空间)和时间(时间)偏移以及估计初始阶段的尺度、速度、重力、陀螺仪和加速度计Bias的初始值。看该方法前,请务必了解预积分的相关知识,可以看之前我写的几篇博客。

该算法分为三个步骤:

  1. 通过最小化相机和IMU之间的旋转误差来估计外参中的旋转、时间偏移(time offset)和陀螺仪Bias;
  2. 利用插值得到的摄像机位姿,忽略加速度计的Bias,近似估计尺度因子、重力矢量和外参中的平移向量;
  3. 通过考虑加速度计偏差和重力大小,在第二种过程中估计的值进一步细化。
阅读全文 »

VINS-Mono中重力优化

在初始化阶段我们估计出了$g^{c_0}$,但这个$g^{c_0}$是没有模长约束的,所以重力的估计不是很准确,进而会导致预积分的位置项不准确。我们知道重力的模长是9.8,VINS-Mono中利用这一点对重力矢量进行了第二次优化,实际上2012年第一篇提出预积分技术的论文中也指明了重力优化这一点。

阅读全文 »

VINS中外参、Bias初始化

我们要知道,视觉与IMU有良好的互补性,IMU可以提高系统处理快速运动的性能,摄像机可以解决慢速运动下IMU的漂移问题。这种单目视觉-惯性系统的主要优点是具有可观测的度量尺度,这让需要有度量尺度的导航任务成为可能,尺度的确定就是在初始化阶段完成的。在IMU预积分(二)——线性视觉惯导初始化中我们分析出预积分需要估计出初始帧的速度、重力,在VINS-Mono中我们也需要完成这项工作。除此之外,VINS-Mono还估计了陀螺仪的bias来提高预积分精度,并且提供了在线外参矫正功能。

阅读全文 »