0. 简介

作为一名技术博主,最主要的还是需要不断地学习新的知识,而最好的学习就是不断地阅读新的文章,并不断地学习和总结前人的思路和方法。所以博主打算开一个新的系列来介绍。这里主要来介绍一下《SuMa++: Efficient LiDAR-based Semantic SLAM》这篇论文。论文原文链接为:https://www.ipb.uni-bonn.de/wp-content/papercite-data/pdf/chen2019iros.pdf。下面的主要框架为任乾​博士博客的内容,加入了作者个人的学习和理解。

1. 文章贡献

可靠的高精度定位和建图是自动驾驶系统的关键环节。除了高精度的几何信息以外,地图中还应该包含语义信息,以为载体的智能行为提供依据。但在实际环境中,移动物体的存在会使建图过程变得更加复杂,因为它会污染地图并影响定位效果。在这篇文章里,我们在传统基于曲面建图(surfelbased mapping)方法的基础上,增加语义信息的融合以解决上面提到的问题。语义信息的提取是通过神经网络完成的,该网络对点云中所有的点都给予类别标签,从而让我们在使用曲面建图时,得到的是带有标签的曲面。通过这种方法,不仅可以滤除动态物体,而且可以使用语义信息对里程估计进行约束,以提到地图精度。

文中作者提到主要的两个贡献点在于

  1. 对点云进行语义分割,根据语义信息识别动态物体,并在地图中去除。

  2. 把带有语义标签的物体进行数据关联,和几何信息一起建立约束关系,从而提高建图精度。

2. 整体思路

下图为SuMa++整体的网络结构,可以看到主要的流程分为以下四个部分

  1. 通过网络对点云进行语义分割

  2. 使用漫水填充(flood-fill)方法消除错误的类别标签

  3. 使用滤波器进行动态物体检测,并移除动态物体

  4. 建立带语义信息约束的ICP模型,优化里程精度
    在这里插入图片描述
    此外SuMa++离不开Surfel地图,Surfel地图中存在一些预定义的概念:

  • 深度地图($$V_D$$):t时刻点云P的球形投影,得到深度图像(极坐标距离限制的点云原始数据).
  • 法向量地图 ($$N_D$$): 根据上面的$$V_D$$得到的球面投影的法向量投影,类似于图片的雷达极坐标系投影。
  • 地图视角 ($$V_M$$&&$$N_M$$):将上面两步投影到地图上。(特征ICP更新位姿增量,累计位姿增量得到当前位姿)
  • 面元被:地图使用面元被表示,由一个位置,一个法向量和一个半径,两个时间戳(创建时间和最后一次更新时间)
  • 稳定对数几率$$l_s$$:被维护使用一个二值贝叶斯滤波器来确定是否一个面元被考虑为稳定或者不稳定。
  • 语义地图($$S_D$$):RangeNet++语义分割每针的球形投影生成的范围图片,传感器视角下逐点编号。(语义分割)

2.1 点云语义分割

语义分割使用的是RangeNet++方法,它的主要内容在另一篇论文里,该论文并没有对这个方法进行太多的改进。RangeNet++以Darknet53 Backbone作为基础改进为RangeNet53,从而实现深度图像的分割,并重映射到点云上。详细内容可以参考这篇文章
在这里插入图片描述

2.2 漫水填充

漫水填充作为图像处理中常用的方法,在这里用于对错误分类进行修正,避免里面的分类错误对后续环节产生不好的影响,下图中左侧是右侧图中虚线框方法的部分,先对(a)中的错误识别结果进行剔除,得到(b),然后利用周围的标签点云对他进行填充,得到(c)。最后(d)中显示的是(c)对应的深度图。
在这里插入图片描述
下面是漫水填充的伪代码,在预处理内部,通过原始的语义掩码S_{raw},和对应的定点地图V_D,(在S_{raw}中每个像素的值是一个语义编号,在定点地图中对应的像素包含最近3D点在雷达坐标系中的3d坐标。)首先移除在范围d内的邻居中存在至少一个不同语义编号的像素,组合该掩码和定点深度信息,设置空白边界像素为邻居带有标号的像素,如果对应点的距离是一致的,即小于某个阈值,即填充。
在这里插入图片描述

2.3 滤波滤除移动物体

动态物体的识别是根据物体在同一位置出现的概率实现的。具体来讲,就是说如果在这一帧中,某个位置出现了物体S_D,此时会同时将当前帧点云的位置S_D映射到地图中的位置S_M中,如果在下一帧中,物体物体S_{D_1}还在地图的S_M处,且连续很多帧它都出现在同一个位置$S_M$,那么它就是静止的,反之,在每一帧中检测到的位置都发生变化,那么它就是移动的。

在这里涉及到一个稳重比较重要的概念,也就是Surfel地图,Surfel地图创新的使用地图中的点形成的面元为对象,以地图一致性作为指标进行优化。文中提出使用语义分割提供的label来处理运动物体,即通过比较新观测位置S_D和地图中已经存在的S_M的语义一致性,在我们更新地图时,如果label是不一致的,我们假设那些面元属于移动物体。这时我们增加一个惩罚项odds到稳定性对数几率l_s中。在一些观测后,我们可以移除不稳定的面元。下面是惩罚函数,其中odds(p)= \log (p (1-p)^ {-1} ),而p_{stable}和$p_{prior}$是稳定面元的分别给出了相容的测量值和先验概率。exp当中是补偿噪声量,a是面元法向量n_s和测量法向量的的夹角,d是测量法向量相对于面元的距离。测量法向量取自于N_D法向量地图。
在这里插入图片描述

2.4 语义ICP匹配

在使用滤波过滤移除动态物体后,最后一步是通过语义约束来进一步提高投影匹配ICP的位姿估计精度。ICP对两帧点云匹配其实就是让两帧点云对应点的距离达到最小,越小说明位姿估计的越准。但它仅使用几何信息,鲁棒性不是很好。此处作者为了改进这一问题,把语义信息也加入了ICP的数据关联当中,每一个物体对应一个关联关系,进行位姿估计时,除了点云要尽量接近,带语义标签的各个物体也要尽量接近。
在这里插入图片描述
下面的图展示了语义ICP的可视化步骤,首先获得当前激光扫描的语义图S_D,然后就是拿到从模型渲染得到的的相应语义图S_M,并根据两者的匹配动态控制ICP期间的权重图。像素越暗,相应像素的权重就越低。也就代表该点对整个个ICP的影响更小
在这里插入图片描述
其中u \in V_D代表了深度图与一个地图的参考顶点v_u \in V_M相关,并对应着一个n_u \in N_M
在这里插入图片描述
上面的式子中的r_uw_u代表了残差和权重,w_u的公式如下:
在这里插入图片描述
其中\rho_{Huber}(r)对应了Huber模,定义如下:
在这里插入图片描述
另一项是语意兼容性C_ {semantic}(( y_ {u} , P_ {u} ),( y_ {v_ {u}} , P_ {v_ {a}} )),具体公式为:
在这里插入图片描述

3. 参考链接

https://zhuanlan.zhihu.com/p/92726781
https://www.sohu.com/a/372116230_715754
https://blog.csdn.net/chenmeng0508/article/details/105404002/