2-代码思想分析

2021SC@SDUSC

2-代码思想分析

一、分析变更

​ 经过和老师的协商,我们小组需要研究的代码发生了变化,不再是以之前综述分析的代码为主,而是转为研究3DSLAM算法——LVI-SAM,相关的源码已经被作者已经上传到GitHub。我们本学期的代码分析工作主要围绕LVI-SAM展开。除了研究这份代码,我们还会拓展我们的学习范围,通过学习其他相关的代码,来加深理解LVI-SAM。

二、LVI-SAM简介

​ 下面对LVI-SAM进行简要的介绍,摘自LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry
via Smoothing and Mapping
的简介。

​ 作者提出了一个通过平滑和映射实现紧密耦合的激光雷达-视觉-惯性测距的框架,即LVI-SAM,它可以实现实时状态估计和具有高精确度和稳健性的地图构建。LVI-SAM建立在一个因子图之上,由两个子系统组成:一个视觉-惯性系统(VIS)和一个激光雷达-惯性系统(LIS)。这两个子系统是以紧密耦合的方式设计的,其中VIS利用LIS的估计来促进初始化。通过使用激光雷达测量提取视觉特征的深度信息,VIS的精度得到了提高。反过来,LIS利用VIS的估计进行初始猜测以支持扫描匹配。环路闭合首先由VIS识别,然后由LIS进一步完善。当两个子系统中的一个发生故障时,LVI-SAM也能发挥作用,这增加了它在无纹理和无特征环境中的稳健性。LVI-SAM在各种规模和环境下从几个平台收集的数据集上进行了广泛的评估。

三、论文分析

​ 由于自己的水平有限,通读整篇论文下来,我只能对整个系统的运作有一个大概的印象。

​ 首先,LVI-SAM主要是用来建三维模型图,并且能够准确并且平滑地在地图上显示物体的运行轨迹。整个系统分为2个部分,分别是视觉惯性导航系统(VIS)和激光惯性导航系统(LIS)并且,这个两个系统紧耦合,互相配合。但是,又具有较高的鲁棒性和精确性,在一个系统失效的时候,另外一个系统也能独立工作。精确性体现在两个系统形成的闭环内,利用激光雷达在远程捕捉环境细节的优点弥补视觉系统在初始化时的敏感,以及对光照快速变化、快速运动上的过度反应;而激光惯导系统在无结构的环境中,如:长走廊和平坦的空地上,不能有效的获取信息的缺点可以被视觉填补,视觉特别适合位置识别。并且,以上这些都有IMU模块进行配合参考,进一步提高位置的准确性。

​ 以下,是结合本篇论文、网络中对这篇论文的分析以及自己的一些想法的汇总。

  1. 论文贡献

    1. 一个建立在因子图之上的紧密耦合的LVIO框架,在地点识别的帮助下,实现了多传感器融合和全局优化。

    2. 框架通过故障检测绕过失败的子系统,使其对传感器的退化具有鲁棒性。

    3. 框架通过收集不同规模、平台和环境的数据得到了广泛的验证。

  2. 系统框架

    ​ 在下图中,它由两个子系统组成,一个是VIO系统,一个是LIO系统,VIO系统通过分别处理相机+IMU数据给出一个测距结果,LIS系统通过提取匹配的雷达特征给出一个雷达测距结果,最后通过联合优化IMU预积分约束、视觉测距约束、激光雷达测距约束和变量图中的回路闭合约束,可以解决状态估计问题。

    2-1

  3. 视觉惯性系统(VIS)

    1. 初始化

      ​ 基于优化的VIO通常会因在初始化时解决非线性问题产生比较大的误差,另外初始化的结果比较依赖于初始的运动和IMU的精确度,VINS-MONO在慢速或者匀速运动时的初始化结果会比较差,原因是因为在这个速度下的IMU获得的加速度不足以为尺度提供比较好的约束。

      ​ 因此为了提升VIS的初始化效果,作者采用LIS辅助初始化的方式(因为可以从LIS中直接获得深度).然后把这些从LIS获得的状态和IMU偏差进行插值并且和图像帧进行关联,关联后的状态和IMU偏差作为VIS初始化的结果。

    2. 特征深度关联

      ​ 为了获取一个更精确的特征点深度,采用vloam的做法,将雷达点和视觉特征投影到图像坐标上的一个球上,然后降采样找到距离视觉特征点最近的三个深度点,然后得到对应特征点的深度,如下图:

      2-2

      ​ 然后对于不同时间戳获得的深度,需要进行进一步的验证,文章中图画的很厉害,但是实际上的做法就是检测匹配到的深度的插值不能大于2m.

      2-3

      ​ 最后的一个特征点获取深度的匹配结果如下图(右边一列绿色的点代表成功匹配到深度的视觉特征点):

      2-4

      1. 失效性检测

        加入了一个特征点少于一点阈值和IMU偏差大于一定阈值的判定.

      2. 闭环检测

        ​ 利用DBoW2来做闭环检测,对于每一个新来的图像关键帧,检测出BRIEF描述子并把他和原来检测的描述子匹配。通过DBoW2检测到的闭环候选帧的时间戳会给到LIS系统来做进一步的验证。

  4. 激光惯性系统(LIS)

    ​ 如下图,这个部分是基于作者自己的LIO-SAM进行改编的,维护了具有四种因子的因子图约束,分别是IMU预积分约束,视觉里程计约束,激光里程计约束,回环约束。(具体的因子表示参考LIO-SAM),下面分析这个模块和VIS进行互动的部分.

    2-5

    1. 初始化

      ​ 这里的初始化不同于VIS的初始化的意思,这里的初始化指的是在每一帧雷达做扫描匹配前需要给定的初值,在这里采取的方法是,有VIS结果用VIS, 没有就用自己的。

    2. 失效性检测

      ​ 这个部分相比于上面视觉的部分就实在很多,主要在文章中判定两种情况的失效,如下图:(左边是激光雷达头朝下,右边是一个空旷的无纹理环境)。当VIS系统失败的时候会导致IMU的bias很大,所以当VIS系统跟踪的特征点少于一个阈值或者IMU估计出来的bias大于一个阈值的时候我们认为VIS系统失败。

      2-6

      ​ 作者解决这个问题的办法是针对非线性优化问题可以表示为迭代求解一个线性问题:

      2-7

      ​ 其中A和b是由T处的线性化得到的。当 $ A^TA $ 的最小特征值小于第一次优化迭代时的阈值时,LIS报告失败。当发生故障时,激光雷达里程计约束不会添加到因子图中。

四、运行实例

​ 我们根据作者在github上面给出的安装步骤,用作者提供的数据包,运行了这个程序。

​ 实验硬件环境为:Jetson Xavier NX

2-8

​ 在我们机器运行这个程序的时候,有的节点一直在崩溃,但是程序能无碍运行。这个程序的鲁棒性还是很好的,但是对机器的要求比较高。

2-9
2-10
接着我们可以观察ros相应的节点和消息传递,为下一步的代码具体分析做准备。
2-11

五、名词解释

  • 因子图:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图。在概率论及其应用中, 因子图是一个在贝叶斯推理中得到广泛应用的模型。
  • 滑窗(Window Sliding Technique):按照我个人的理解这是一种技术,用来控制每次运算的规模,每次只计算固定大小的数据(类似一个固定的窗户),然后向前推进(窗口向前滑动),然后再次计算,如此往复。在SLAM过程中,随着关键帧和路标点的增多,后端BA的计算效率会不断下降。为了避免这种情况,便使用了滑窗(Sliding window)将待优化的关键帧限制在一定的数量来控制BA的规模。
  • ISAM2:iSAM2是最常用于提高SLAM精度并缩短实际密集情况下所需的计算时间的方法。iSAM2是基于最近引入的Bayes树数据结构所提供的对增量稀疏矩阵因式分解方法的一种新的基于图形的解释。原始的iSAM算法通过应用矩阵因式分解更新来增量维护方根信息矩阵。我们把矩阵更新分析为对贝叶斯树和由其悬崖代表的条件密度的简单编辑操作。基于这一见解,我们提出了一种新的方法来逐步改变对效率有很大影响的变量排序。新方法的效率和准确性是基于流体重线性化,即根据需要选择性地重线性化变量的概念。这使我们能够得到一个完全增量的算法,而不需要任何定期的批处理步骤。
  • 降采样:降采样降低数据传输速率,降采样因子(速度降低的倍率M)通常为整数或是大于一的分数,这个数字为取样周期的倍数或是取样频率的因数。 举例来说一个取样率为44,100 赫兹的16位元数字音乐讯号若被降采样到22,050 赫兹,此时降采样因子等于2,位元率同时降低了一半,假设降采样后每个取样长度依旧为16位元,则位元率从1,411,200 位元/秒(44100 (样本) × 16 (bit/样本) × 2 (声道))降低至705,600位元秒。
  • 点云:在逆向工程中通过测量仪器得到的产品外观表面的点数据集合也称之为点云,通常使用三维坐标测量机所得到的点数量比较少,点与点的间距也比较大,叫稀疏点云;而使用三维激光扫描仪或照相式扫描仪得到的点云,点数量比较大并且比较密集,叫密集点云。

六、引用

论文阅读《LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping》 – xuwuzhou的SLAM之路 – 静心,慎思,明辨,笃学

LVI-SAM:LIO-SAM 与 Vins-Mono 紧耦合系统 - 知乎

【LVI-SAM论文全文翻译】: LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping_JaydenQ的博客-CSDN博客

因子图 - 维基百科,自由的百科全书

SLAM中的滑窗(Sliding window) - 知乎

Window Sliding Technique - GeeksforGeeks

iSAM2: Incremental smoothing and mapping with fluid relinearization and incremental variable reordering | IEEE Conference Publication | IEEE Xplore

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值