资源行业动态IMLS-SLAM:基于scan-to-model方法的大场景3D激光SLAM

IMLS-SLAM:基于scan-to-model方法的大场景3D激光SLAM

2019-12-30 | |  85 |   0

原标题:IMLS-SLAM:基于scan-to-model方法的大场景3D激光SLAM

来源:自动驾驶之家        链接:http://www.heredrive.com/news/20191204/7131.html


论文题目:IMLS-SLAM: scan-to-model matching based on 3D data

IMSL-SLAM 和 IMSL-SLAM++是kitti数据集上仅次于LOAM的激光SLAM系统,虽然它有一个最大的缺点,就是不实时,而且时间确实非常慢(1.3s),但是作者也给出了这种不实时的原因,是可以改进的。更重要的是,论文里以IMLS曲面为基础进行的scan-to-model匹配方法是值得借鉴的,有必要进行了解,所以我们在这里一起探讨这篇论文。


一、整体思路


即使不看论文,我们也应该清楚,作为一个SLAM系统来讲,它的整体思路基本包含以下几方面:

1)处理点云。包括去畸变,移除离群点,高级点可以移除动态物体

2)对点云采样。一般都不会用全部点的,具体采样方法主要取决于自己的匹配方法

3)建立地图。可以是特征地图,可以是点云直接拼接的地图,也可以是曲面模型

4)匹配。把点云和地图进行匹配,更新位姿

5)更新地图。根据新的点云,对地图进行更新。更新频率和策略一般也取决于匹配方法


本文的SLAM方法作为SLAM的一种,自然也遵循这个规律。所以以上五点就是它的整体思路。


另外,以上五点是概括性的,包含了多种选择性,而本文的方法属于其中基于曲面的地图匹配方法,所以建立地图和地图更新就主要是曲面更新,匹配就主要是和曲面的数据关联以及优化。


下面对各个点分别介绍


二、实现方法


1.处理点云

这篇论文在处理点云上所加的措施是移除了一些离群点和动态物体。它所采用的做法是先提取地面,然后对剩下的点云聚类,小于一定尺寸的聚类(14m×14m×4m)就全部去掉。

好暴力啊!

这种自然能把移动物体去掉,正常交通路面上,能移动的物体一般也不会大于这个尺寸,但是这种宁可错杀一千也不放过一个的做法显得有点粗暴,周围点云少的时候,再错误去掉了一些非动态的点云,效果自然不会太好。


移除动态物体有很多方法,聚类是第一步,在聚类之后如果加上一些跟踪和判断,只移除真正运动的物体,会更合适一些。


2. 对点云采样

这一步比较有意思。


在以前的改进版ICP中,提取点的特征的时候往往都是先计算协方差矩阵,然后对矩阵计算特征值,根据特征值对特征分类,同时提取主轴方向,根据主轴方向和特征值进行点的筛选。


作者认为这样不好,值得拥有更好的。


他认为,首先主轴方向应该为车的方向,也就是雷达的方向,其次,提取点是为了匹配得到位姿,不同的点对位姿精度的贡献不一样,如果能直接提取出对位姿贡献大的点,那么不就既可以很大程度上减少点的数量,又可以取得很好的精度吗。


所以,这个问题就演变成了,怎样去判断哪些点对位姿精度贡献大,对算法来讲,就是设计一些指标,去把这些点筛选出来,下面这几个公式就是作者筛选的九个指标

image.png

关于这九个指标,作者的解释是前六个是点对姿态精度贡献的定量评价,后三个是对位置精度贡献的定量评价。至于为什么,我也没想太清楚,有没有大神指点下?


总之,作者对每个点都计算九个量,就得到了九列值,然后对这九列值排序,找出对位姿影响最大的那些点,就完成了筛选。

1577692871495912.jpg1577692855605318.png


这里有一张图,展示它的筛选方法,其中红色的点就是筛选过的点。


3. 建立地图

首先,作者使用的地图是曲面地图,关于曲面地图的简介和历史,在以前介绍SuMa-SLAM的时候已经介绍过,这里给出链接,不再详述了。


激光SLAM|SuMa:基于Surfel地图的室外大场景SLAM



IMSL:《Provably good moving least squares》由于KinectFusion使用的TSDF曲面表示方法不适合大场景,所以使用了IMSL曲面表示方法。作者对这个方法并没有做什么改进,只是使用,所以我们给出文章题目,感兴趣的可以去看论文。


MSL:《Mesh-Independent Surface Interpolation》(IMSL的前身)


4. 匹配

毕竟scan-to-model嘛,所以就是scan和曲面地图之间做数据关联然后优化。


这里用三个公式来表示匹配原理

image.png

image.png

image.png

其中前两个是对点做映射,最后一个是根据位姿计算残差,有了残差去优化不就是修正误差,得到匹配的精确姿态了嘛


5. 更新地图

更新地图就是把原有地图章没有,而新的点云中有的东西加入地图中去。同时注意的是,为了匹配时和scan进行数据关联,要对地图进行KD树存储,目前的做法是每次更新完就重新建立KD树,显然这种做法比较耗计算量,这也是整个步骤中耗时最长的一步。所以设计增量式KD树是有必要的,即每次根据删除的老点和增加的新点更新KD树,而不是重新建。


三、实验效果

他和LOAM比,在他自己的实验中,性能是优于LOAM的,但是在kitti的榜单中,却落后于loam。而且还有一个现象,这里loam的指标和kitti榜单公布的指标是基本吻合的,而作者的SLAM在kitti上的指标却没有这个论文里的好,即使后来的改进版本IMSL-SLAM++也没达到这种水平。


经各位大佬的指点,原因可以归结为以下几方面:


1)kitti分训练集和测试集,榜单上是测试集的结果,论文中是训练集的结果,所以出现不一致的现象,而且一般训练集要比测试集精度高。


2)loam开源出来的是老版本,榜单上是新版本,做了很多改进,所以,如果loam新版本再用训练集做一次测试,精度会比表格中给出的要高很多。

image.png


四、关于效率

在效率方面,它的时间实在是太长,IMSL-SLAM是1.25S,IMSL-SLAM++是1.3S,在这一点上,作者也给出了自己的解释,主要包括两方面


1)他使用扫描的三维点云计算每次扫描的法向,而不是使用论文《Fast and accurate computation of surface normals from range images》中的方法,而后者比前者快17倍,至于为什么不用,他说是因为Kitti数据集只提供三维点云,而不提供原始激光雷达数据。这个理由略显牵强,而且这一步只消耗了0.2s,不是时间的大头


2)就是刚才提到的更新地图时KD树的事,这一步消耗1.0s,所以改进这一步去提高效率倒是可取的。

【来源:知乎】

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:深度剖析:自动驾驶的安全考量

下一篇:自动驾驶两大领域的研究热点:计算机视觉&机器人技术

用户评价
全部评价

热门资源

  • 国内人才报告:机...

    近日,BOSS 直聘职业科学实验室 &BOSS 直聘研究院...

  • AI使物联网更智能...

    看到微软对物联网和人工智能的结合感兴趣是一个明...

  • 推荐一批学习自然...

    这里推荐一批学习自然语言处理相关的书籍,当然,...

  • 安防智能化大势下...

    大部分传统安防设备不仅拍摄视野有限,而且无法事...

  • 20亿创业基金、10...

    近日,杭州举办了建设国家新一代人工智能创新发展...