SO-SLAM就是在这篇论文的基础上进行的改进,需要一提的是,这篇文章中进行了很多的假定条件,假定了不同帧之间物体的联系是准确建立的,同时还假定前端得到的里程计数据是准确的,因此物体的部分虽然参与到了SLAM中,但是仅参与到了后端的全局优化中,作为一个路标为全局的轨迹提供约束。
参考链接
一、对偶二次曲面的定义
论文单独用了第三章来叙述对物体的定义,论文使用了两种方法来描述对偶二次曲面,对于各种类型的二次曲面,它们都可以使用一组切面来进行描述,这种描述方法可以描述任何一个二次曲面,但是自由度为10,这意味着对于一个二次曲面,我们至少要找到十个切面才能实现这个二次曲面定义。
但在SLAM过程中,并不是所有的二次曲面都是有用的,对于不封闭的二次曲面,其用处其实不太大。所以如果只考虑椭球体和标准球体,那么二次曲面的描述可以简单一些,只用九自由度就可以描述,在SO-SLAM里面缺少的自由度分析,在QuadricSLAM里面进行了分析,九个自由度正好对应椭球体的位置、朝向以及形状(三个半轴长)。
二、椭球体投影模型
介绍这个投影模型,主要是为了解决在路标与局部建立联系的时候,如何更加准确地根据位姿和路标对投影位置进行预测。论文主要是针对于物体出现在图像边缘的情况进行了分析。
论文采用了最小轴对称矩形的方法,简单来说就是在图像范围内部寻找外接矩形。椭球体首先根据投影公式在成像平面上进行投影,得到的是一个椭圆,这个椭圆如果落在图像边缘,容易出现一部分超出图像范围的情况,这种情况下,首先寻找投影椭圆的四个极限点,记为P1-P4,之后寻找椭圆与图像边缘的交点,由于不确定椭圆的大小,所以这里的交点最多可以产生八个,记为P5-P12,对于这12个点,去除超过图像范围的点,剩下的点中,再取四个极限点,这四个点产生的包围框就会被当作投影的包围框的结果。
三、基于物体的后端优化
前面也提到了,这篇文章做了很多的限制,假设里程计的结果是准确的,并且不考虑来源,无论是视觉里程计还是车轮里程计都可以,同时物体之间的联系也是人为提供的,也就是说,提取出来的物体直接由人为来建立帧于帧之间的匹配关系。这两个假设,把SLAM框架的大部分内容都省略掉了,物体参与的部分,貌似就只剩下了后端的优化以及建图,但是使用的稀疏建图,根据以前运行ORBSLAM的经验,建出来的结果几乎是没法看的状态。
物体在后端优化的参与,主要还是作为因子图中的一部分,作为路标加入因子图并添加点和对应的边,增加后的优化函数就发生了变化,多了椭球体路标的部分。
对于这一改进,作者自己也说了,在图像中物体出现部分可见时效果更好。
由于使用了准确的前端里程计,位姿的初始化完全可以依赖于前端的结果,论文主要是介绍了如何对物体进行初始化,作者采用了先初始化为一个通用对偶二次曲面,再利用约束为一个椭球体。在初始化通用对偶二次曲面时,作者用到了前面的定义,一个通用二次曲面可以用一组切面来表示,也就是说,只要找到足够多的切面,就可以解出这个二次曲面。
切面在这篇文章中,使用的是2d检测的包围框的反向延长平面,也就是说,对一个物体进行初始化,至少要三帧,每一帧包围框的四个边缘产生四个反向延长平面,他们就属于四个切面,如此来看,至少要三帧才能够把这十个切面给凑齐。
四、实验结果
这里单独记录一下关于实验结果的部分,从结果来看,文章使用的方法在精度上并没有提升,相较于ORBSLAM甚至退步了很多。从消融实验来看,带有物体的后端优化确实可以把前端的结果进行校正,文章消融实验对比的是原始的里程计和加入优化后的结果,相当于一个没有后端优化,这本身就有点牵强。所以文章本身更多地是注重创新性,在效果上并没有很大的提升,再加上对许多SLAM中的关键因素进行了前提约束,文章个人总感觉不太靠谱,创新性上确实有很大的突破,后续基于这篇文章的物体提取方法出现了很多,但是其效果都差强人意,可能物体纳入SLAM这个思路本身提升就已经很有限了,基于低级几何元素的方法精度和实时性都已经达到可以接受的程度了,高级几何元素增加了提取和分类的开销,本身就是一种负担,加上目前依然缺乏有效的描述、匹配方法,现阶段可能还是很难出现巨大的提升。