使用 GPU 加速的 GICP 匹配构建全局一致的3D LiDAR 地图
Posted Being_young
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 GPU 加速的 GICP 匹配构建全局一致的3D LiDAR 地图相关的知识,希望对你有一定的参考价值。
点云PCL免费知识星球,点云论文速读。
文章:Globally Consistent 3D LiDAR Mapping with GPU-accelerated GICP Matching Cost Factors
作者:Kenji Koide , Masashi Yokozuka , Shuji Oishi , and Atsuhiko Banno
编辑:Pamphlett
来源:arXiv 2021
欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。未经博主同意请勿擅自转载。
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。
摘要
论文提出了一种基于全局匹配最小二乘的实时3D LiDAR地图构建框架。所提出的方法构建了一个因子图,直接最小化整个地图中帧之间的匹配代价函数,而不像基于位姿图的方法那样最小化位姿空间中的误差。为了实现实时的全局匹配代价函数的最小化,我们使用基于体素数据关联的GICP匹配代价因子,能够充分利用GPU并行处理,匹配代价因子和GPU计算的组合使得能够约束相对帧之间的姿态,并且能够在帧之间创建一个稠密连接的因子图,地图构建过程是基于能够在GPU上快速评估的基于体素重叠度量的。我们将所提出的方法与外部环路检测方法相结合,以帮助基于体素的匹配代价因子避免收敛于局部解。在KITTI数据集上的实验结果表明,所提出的方法提高了大场景的轨迹估计的精度。
图1:KITTI 00序列的建图结果。(A)全局匹配最小化代价函数方法使得可以约束具有小重叠部分的帧之间的相对位姿,(B)基于GPU的实现允许创建大量因子并构建稠密连接的因子图。因子图包含超过4,500个匹配成本因子,每个因子平均涉及大约20,000个点云的代价评估,该优化在中等级别的GPU上几秒钟内完成收敛。
主要贡献
该论文提出了一个由局部和全局建图模块组成的框架,分别对匹配代价函数进行局部和全局的最小化(见图2)。
图2 提出框架的整体架构
这两个建图模块都基于一个能够在GPU上快速评估的基于体素重叠度的度量来进行管理,为了防止基于体素的匹配代价因为陷入局部最小值而无法更新,我们使用一个回环检测器(例如ScanContext )显式地检测出一些循环,并将这些循环作为SE3相对姿态约束添加到因子图中。通过在KITTI数据集上的评估,展示了该方法如何提高具有大型回环的长轨迹的估计精度。该工作的主要贡献如下:
提出了一个基于GPU加速匹配代价的全局一致性3D建图框架,并展示了在实时情况下在整个地图范围内进行扫描匹配的可行性。据我们所知,这是第一个能够在实时情况下在全局范围内进行扫描匹配的方法。
提出了一种基于体素重叠度的建图管理机制,它能够在GPU上快速评估,并且能够设计一个通用的建图过程。
展示了全局匹配代价最小化方法如何保留大型地图的全局一致性并提高建图的质量。
主要内容
文章主要讨论如何建立全局一致的点云地图。从文献上讲,在激光SLAM领域,维护地图的一致性(即消除里程计Drift)的方法主要有三种:位姿图优化,激光BA,以及全局Cost Function最小化。
位姿图优化:当产生回环时,假设所有帧间位姿(或关键帧位姿)估计值都服从高斯分布;而后通过最大似然估计对所有位姿点进行调整。其劣势在于,求解帧间位姿的协方差矩阵较为困难。实践中常设置为经验值或常数。
激光BA:在实现准确特征数据关联的基础上做类似视觉的BA,可参考[1]。
全局Cost Function最小化:在前端提供的位姿基础上,重新进行一次多帧的点云配准。
本文属于第三种方法,即全局Cost Function最小化。在每一个局部地图内,采用全连接的方式,将所有两帧之间的误差项都同时进行优化,从而保持局部地图的全局一致性。在局部地图之间也进行类似操作。由于将所有配准相关运算都放到了GPU上运行,算法速度还可以接受。
首先使用RandLA-Net去除输入点云中的动态物体(例如汽车和行人),并运行里程计估算算法(例如MULLS )来获得最新传感器位姿的初始值。同时,我们估算每个点的协方差矩阵,从其k个相邻点中获得。注意,昂贵的最近邻搜索仅在这个预处理步骤中使用,每个输入点云只需执行一次。
预处理后的点云和传感器初始位姿被反馈到局部地图模块,该模块将大约10到20帧合并为一个子地图,然后在全局地图模块中将这些子地图合并为一个全局地图,局部地图和全局地图模块的核心是多次扫描配准算法,该算法使用体素化的GICP匹配成本因子构建因子图(见图3)。
图3:所提出框架的因子图,对于局部建图,构建了一个完全连接的匹配代价因子图,对于全局建图,匹配代价因子是在每对有重叠率超过阈值的子地图之间创建的,为了防止匹配代价因子被困在局部最优解中,显式SE3回环约束被插入因子图中。
优化传感器位姿使所有相邻帧彼此对齐,在局部地图模块中,构建一个完全连接的因子图,在全局地图模块中,创建最新子地图和每个过去子地图之间的约束,这些子地图与最新子地图有一定的重叠。因此,所有子地图都不仅与因子图上相邻子地图对齐,而且与每个隐式闭合回环的重新访问子地图对齐。通过连接基于优化轨迹的子地图点云来获得最终的建图结果。
有兴趣的小伙伴请参考原文。
实验
将所提出的框架与最先进的实时3D LiDAR SLAM方法(LOAM 、MULLS、ELO、IMLS-SLAM、SuMa 、SuMa++、LiTAMIN2 )和基于深度学习的方法(LO-Net)进行了比较。在两种设置下运行所提出的框架:
1)没有隐式和显式的闭环(即每个子地图仅与滑动窗口中的其他子地图相连接);
2)同时具有隐式和显式的闭环,对KITTI数据集应用了内在的垂直扫描角度校正,以补偿所有设置中的点云畸变。表I和表II分别显示了所提出的方法和最先进方法的平均旋转和平移RTE。
从表格 I 和 II 中可以看出,相对位姿因子的存在导致了所提出的方法的精度明显下降,尽管图结构(子地图连接性)没有发生变化,图 9 显示了带有 SE3 相对姿态因子的因子图,线的颜色表示误差的大小(绿色:小误差,红色:大误差)。
图9:具有SE3相对位姿的因子图,线的颜色表示误差的大小。
表III总结了局部和全局建图模块的运行时间,局部子地图优化大约每1.5秒执行一次,平均需要123.9毫秒,全局优化大约每7.5秒执行一次,平均需要884.0毫秒,因子图在序列结束时拥有超过4,500个因子,并充分利用了GPU并行处理,图10显示了全局优化的运行时间随子图和匹配因子数量增加而增长的情况,虽然在闭合的大型回路后需要更长时间(3到4秒),但大部分时间优化很快就会在不到一秒的时间内收敛。
总结
本文提出了一种基于VGICP匹配代价因子的3D激光雷达建图框架,GPU加速的匹配代价评估使得因子图中的所有帧对都可以同时对齐,并且保持长时间轨迹的全局一致性,基于重叠度量对局部和全局建图模块进行管理,这可以在GPU上快速配准,而闭环机制有助于避免基于体素的匹配代价因子陷入局部最小值。
更多详细内容请加入知识星球查看原文。
智驾全栈与3D视觉学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除
扫描二维码
关注我们
让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。
分享及合作方式:微信“920177957”(需要按要求备注) 联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。
点一下“在看”你会更好看耶
以上是关于使用 GPU 加速的 GICP 匹配构建全局一致的3D LiDAR 地图的主要内容,如果未能解决你的问题,请参考以下文章