Poisson Surface Reconstruction for LiDAR Odometry and Mapping
作者:Ignacio Vizzo, Xieyuanli Chen, Nived Chebrolu, Jens Behley, and Cyrill Stachniss
联系方式:在公众号[计算机视觉工坊]的后台回复[LiDAR里程计],即可获得联系方式。
摘要:准确定位和环境建图是大多数自动驾驶系统的基本组成部分。在本文中,我们提出了一种用于 LiDAR 里程计和建图的新方法,重点是提高建图质量,同时估计车辆的姿态。我们的方法执行frame-to-mesh ICP,但与其他 SLAM 方法相比,我们将地图表示为通过泊松表面重建计算的三角形网格。我们在过去的一系列扫描中以滑动窗口的方式进行表面重建。通过这种方式,我们获得了非常适合配准的准确局部地图,也可以组合成全局地图。这使我们能够构建一个三维地图,比依赖于截断的有符号距离函数或曲面的常见建图方法显示更多的几何细节。我们从数量和质量上进行实验评估,我们的地图提供了比其他地图更高的几何精度。且我们的地图是紧凑的,可用于基于ray-casting-based数据关联的LiDAR里程计估计。
I 引言
如果没有环境地图和关于它们的位姿的知识,大多数自主系统就无法有效地导航。因此,定位、建图以及同时定位和建图(SLAM)[4]、[34]是自主系统的重要组成部分。
我们使用一个旋转的LiDAR传感器来重建环境,并研究使用一个替代的场景重建来建图和配准。场景重建至关重要,因为它用于配准传入的扫描。为了获得准确的相对位姿估计和引人信服的建图结果,场景重建必须用高水平的细节捕获和环境表达。
本文的目的是提高基于LiDAR建图的几何精度,同时估计随时间变化的具有低漂移的车辆的位姿。我们通过使用通过泊松曲面重建技术[15]计算的三角形网格表达来实现这一点。这与其他最先进的方法形成了对比,这些方法通常使用surfels[1]或截断符号距离函数[7]、[23]作为表达,通常提供相当低的重建质量,至少对于大型户外场景是这样。通过我们的方法,我们从机器人户外环境的LiDAR数据重建网格,其质量可以达到以前只在对象级、室内场景且使用地面扫描仪或通过聚合同一场景的多个通道。
本文的主要贡献是一种新型 LiDAR 里程计和建图系统,该系统建立在提供精确几何地图的表面重建方法之上。我们将单个扫描聚合到一个局部点云中,并使用这些来重建场景的三角形网格。我们的实验评估表明,这种三角形网格非常适合 3D LiDAR 扫描的配准,因为它比较紧凑,保留了相当详细的结构,并允许精确的frame-to-mesh配准。这产生了一种新的基于 3D LiDAR 的建图方法,该方法提供精确的几何地图并可用于位姿估计,如图 1 所示。我们表明,所提出的地图表达(i)是环境的精确几何表达;(ii)与其他地图表示相比,具有更好的内存效率,以及(iii)允许使用基于frame-to-mesh配准算法的精确配准输入的扫描。我们通过对合成数据和真实世界数据的实验评估来支持我们的算法。
II相关工作
SLAM已经研究了几十年,这里我们专注于基于三维LiDAR的方法。
基于激光的SLAM系统要么依赖于稀疏特征[39]、[22],要么使用稠密地图表达[1]、[8]进行配准。Deschaud[8]建议使用隐式移动最小二乘曲面(IMLS)曲面来表示建图。Behley[1]使用基于surful表示来进行建图。与这些方法相比,我们使用三角形网格而不是曲面或IMLS曲面将LiDAR扫描配准到一个稠密的地图中。
从点云中获得三角形网格的一种常用技术是三维曲面重建[2]。传统的方法确定了建模底层曲面的隐式函数,例如,使用切线平面[12]、径向基函数[5]、截断有符号距离函数(TSDF)[7]或多项式表示[17]。泊松表面重建[14]、[15]提供了基于这一原理的精确的几何重建。
与基于特征的SLAM系统相比,稠密方案的目标是使用所有的输入数据,并将它们聚合为一个稠密地图中。一种流行的方法是使用上述由newcombe等[23]推广的TSDFs,但它为RGB-D建图。大多数TSDFs方法需要提前知道环境的体积,因为它们依赖于一个固定的体素网格,但welan等[37]建议使用滚动网格来缓解这一限制,并将中间结果存储在一个三角形网格中。其他方法使用八叉树[35]或按需分配块[24][26]。与这些方法相反,我们不假设环境的大小或使用任何优化的数据结构来建图。
在机器人技术中,Marton等[19]采用了三角形网格表示法进行重建。近年来,视觉-惯性系统[30]、LiDAR方法[6]、[31]和纯视觉系统[27]也探索了这样的表达。与我们的工作相比,这些方法通常计算遍历环境的稀疏重建,而我们的目标是重建一个连续的三角形表面,捕捉几何细节。
此外,基于三维激光雷达的方法使用TSDF的变体,以实现更大的体积,并构建全局一致的地图[21]、[25]、[28]、[29]。Kuhner等[18]利用TSDF重建大型户外环境,但它们需要在同一场景上多次传递才能获得令人信服的重建结果。我们提出了一种方法,它只需要一次通过就可以获得高水平的细节。
III 我们的方案
我们对每次扫描执行以下三个步骤:首先,我们计算每点法线,其次,我们将扫描配准到局部地图,第三,我们将配准的扫描融合成一个全局地图。我们进一步提出了一种新的框架frame-to-mesh配准策略,利用三角形网格进行建图。
我们的方法区分了局部地图和全局地图。局部地图用于执行里程计估计,并由最后N个局部扫描构建。全局地图是整个环境的聚合网格。
A. Normal Computation and Point Cloud Registration
为了计算法线,我们使用球形投影将点云投影到一个范围图像中,并使用来自邻近像素[1]的交叉积来估计法线向量。虽然这有时不如通过对一个点邻域的协方差的主成分分析来估计法线更准确,但它的效率要高得多,因为它不需要确定一个点邻域。
对于点云配准,我们迭代地执行点云与三角形网格的数据关联,并确定位姿增量,以最小化误差度量。
对于点云之间的数据关联,通过邻居搜索或投影[32]发现的最近的点关联是一个常见的选择。我们也可以通过搜索三角形顶点上的邻居的网格表示来使用这个策略,但这是次优的,我们将在实验评估中显示。
我们建议使用ray-casting来确定射线-三角形的交点。对于每个交点,我们提取相交三角形的点和相关法线。为此,我们首先将上次估计的位姿,即Tt-1ϵ ℝ4X4,应用于当前扫描作为初始对齐。然后我们创建了一组n个ray R={ri}。每条射线 ri 由 oi +τdi 定义,原点 oi = tkt 在当前估计的传感器位置和方向 di = Tktpi,穿过当前扫描的所有点 pi。这里,Tkt是迭代 k 时的估计位姿,tktϵ ℝ4 是 Tkt 的平移部分。
每条射线riϵ ℝ与网格的交点都与点pi对应,表示为qi,相交三角形的法线为相应的正线ni。为了计算扫描和网格之间的相对变换,我们现在可以使用不同的误差度量E(.,.),如点对点、点到平面或平面到平面误差[3]、[32]、[33]。
数据关联步骤还可能导致错误的对应,其中来自曲面的给定点与来自另一个曲面的网格中的相交点相关联。这种情况通常发生在光线没有击中任何靠近表面的地方,并击中一个很远的三角形时。因此,作为离群值拒绝,我们从满足||pi-qi||>σd对应C集中删除对应(pi,qi) ϵ C。在我们的实现中,我们使用了σd =1 m。
我们优化以下目标:
在我们的实验中,我们发现性能最好的度量是点到平面的metric [32]。为了减少未被异常值拒绝过滤的异常值的影响,我们使用了 Huber 加权内核 [13]。
所提出的数据关联的主要优点是,它不需要计算最近邻,相反,关联步骤通过射线投射网格利用建图表达,如实验所示,这可以更快地执行,特别是在处理高分辨率网格时。尽管如此,这种方法并不能正确地处理大的旋转运动,并且需要一个良好的初始估计来收敛,即使这也适用于最近邻的方法。
B. Meshing Algorithm
使用点集进行三维曲面重建的一种常用技术是构建一个隐式函数,旨在恢复输入数据[12]的底层曲面。这种隐式函数f通常在ℝ3中被定义为一个标量场,即f: ℝ4 →ℝ,其中f的零集表示我们要建模的曲面。机器人技术和SLAM中一种流行的技术是用符号距离函数[7]来近似f,即从传感器到表面的投影距离。
相比之下,我们的工作探索了使用泊松表面重建[14]、[15]为移动机器人,特别是自动驾驶汽车构建一致的、平滑的、高质量的地图。关于重建算法的细节,我们参考了原始出版物[14]、[15]。我们的目标是除了重建的算法选择外,还要研究三角网格的使用。
接下来,我们解释网格后处理。上述泊松重建设计用于恢复三维中单个物体的封闭表面,如图2所示2。
我们的 3D 世界,尤其是外部环境,并不是由封闭的表面组成的。因此,我们需要细化重建的表面并执行后处理步骤,其中包括去除低密度的顶点。网格上顶点 v 的密度σ(v) 测量输入点云中有多少点支持顶点 v。直观地,低值意味着顶点仅由少量点支持,因此,在原始 LiDAR 扫描中没有密集测量或根本没有测量(因为泊松表面重建算法也会外推没有数据的点)。重建网格后,我们计算每个顶点密度的分布,如图 2 中的直方图所示,图例右侧。感兴趣的顶点具有高密度,即那些在空间上离点云数据更近的顶点,在图中用黄色到红色着色。我们修剪掉低密度顶点,而与网格三角形的大小无关。我们仅根据顶点的密度σ(v) 做出该决定。我们考虑从最高密度值开始的密度累积直方图,并修剪属于最后 10% 的那些顶点。这意味着我们修剪掉 10% 具有最小密度值的顶点。
这种后处理对输入数据进行了更紧密的重建,显示出很少的伪影,这使我们能够按照 Sec. III C 中的描述逐步构建全局网格。注意,如果没有这一步,就不可能构建环境的全局地图 ,由于图 2 中以蓝色显示的伪影。
请注意,作为一个有趣的副作用,这种基于密度的过滤也倾向于消除场景中的大部分移动对象,因为移动对象表面上的 3D 点通常只支持少量三角形作为 每次扫描时表面都会发生变化。这会导致移动物体上的低密度三角形,因此不会在这些位置重建表面。
C. Local and Global Map
在我们的方法中,我们区分了局部地图和全局地图。本地地图是根据最后 N 次聚合扫描构建的。全局地图仅用于可视化和报告的最终输出,但并未在我们的方法中使用,如果我们添加回环检测,这将发生变化。每次将新的 LiDAR 帧配准到局部地图时,都会从局部地图中构建一个新的网格。这会产生一个滚动的网格状网格,它随着车辆的估计位姿移动,并存储足够的信息来配准新的传入扫描。在最初的 N 次扫描期间,我们禁用网格重建模块并依靠标准的点对平面 ICP 来估计车辆的位姿。M 次扫描被配准后,最后生成的局部网格被集成到全局网格图中。这意味着只有在 M 个扫描到达并配准后才会更新全局网格(与每次新扫描到达时更新的局部网格相反)。为此,我们将局部网格中的所有三角形添加到全局网格中,然后移除由于局部地图区域中的重叠而可能出现的重复三角形。在我们的实现中,我们使用 N = M = 30。
IV 实验评估
我们的算法完全在CPU上运行,并在一个intelxeonw-2145上进行了测试,它有8个核@3.70ghz和32gb的ram。对于我们所有的实验,我们使用了默认的SuMa设置和TSDF的体素大小为0.10 m。对于我们的方法,我们将泊松表面重建[14]中使用的八分树的深度设置为▲tree=10。对于真实世界的实验,我们使用了来自kitti数据集。
对于我们的评估:
1)使用以下指标:
使用上述评估指标,与TSDF与Surfel的对比分析结果:
图3 地图准确性的定性例子。第一行展示了三种地图表示,分别是TSDF、Surfel和我们的方法。第二行描述了用于在Tab I中计算度量的稠密GT点云。GT点云一起,我们用黄色突出显示GT模型中的点,它们距离第一行中显示的构建模型中最近点的距离大于σd=3cm。直观地说,黄点数越多,模型包含的错误或差距就越多。
2)内存消耗:图 4 显示了不同方法对 KITTI 里程计基准测试的两个不同序列随时间的内存消耗。我们看到我们的方法随着输入扫描的数量扩展得很好,而基于surfel的地图或点云地图需要更多的内存,这使得在移动平台上运行不可行。基于 TSDF 的建图表现出类似的内存消耗,但建图精度降低,如 Sec IV-B 所示。
图4 两个 KITTI 序列的不同地图表示的内存消耗。在左侧,我们展示了通过我们的方法构建的三角形网格图及其最终尺寸。序列 04 是乡村环境,序列 07 记录在城市场景中。我们看到点云和面元导致更高的内存使用。TSDF 在内存使用方面的表现与我们的方法相似,但如图 3 所示,我们的方法在几何精度方面优于 TSDF。
3)里程计和定位精度。关于估计性能,我们可以在Tab II看到。当比较我们的系统提供的姿态和KITTI提供的地面真实姿态时,我们的方法提供了坚实的姿态估计性能。
Tab II KITTI Odometry enchmark [10] 的里程估计结果。以灰色突出显示的行对应于平移误差,下面的行对应于旋转误差。所有误差均在 100 至 800m 长度的轨迹上进行平均。平移误差以 % 为单位,相对旋转误差以每 100 m 的度数为单位。DA 用于数据关联,RC 用于光线投射,NN 用于最近邻。粗体数字表示给定序列的最佳方法。
4)配准算法。为了研究配准方法的准确性,我们计算了数据集的整体训练序列的平均平移和旋转误差。我们看到,当输入网格的大小增加时,所提出的配准算法缩放得更好。该实验的结果显示在表III中。
Tab III在完整的kitti[11]训练序列中的ray-casting与mesh-sampling配准评估。相对误差是在100到800米长度的轨迹上的平均值。相对平移误差(terr)为%,相对旋转误差(rerr)为度。运行时值以毫秒表示。
5)运行时间。预处理和正常估计每次扫描平均需要 45 毫秒,而扫描匹配算法又需要额外的 500 毫秒。然而,瓶颈是在 CPU 上执行时平均需要 5 秒的网格划分算法。这使得我们的方法对于自动驾驶汽车的在线操作不可行。在这项工作中,我们主要关注三角形网格在开发 SLAM 系统中的使用,并表明重建质量和位姿估计精度都是有希望的。在未来的工作中,我们需要研究优化网格划分算法以实现在线性能的技术,例如,在 GPU 上运行重建算法,此外,可以使用 Uenabled 光线追踪引擎,如 NVIDIA OptiX™,来加速ray-casting配准算法。
V结论
本文中,我们提出了一种使用 3D LiDAR 进行同时里程计估计和建图的新方法。我们的方法执行了一种新颖的frame-to-mesh配准,但与其他 SLAM 或里程计和建图方法相比,我们将地图表示为三角形网格,使用滑动窗口中的泊松表面重建在过去的扫描序列上进行估计。我们表明,我们获得了比最先进的 TSDF 或surfel表示等常见替代方法显示更多细节的高质量局部网格。我们还表明,我们的地图表示非常适合用于位姿估计的增量扫描配准。对于未来的工作,我们的系统可以通过结合回环检测 [38] 和用于有效稠密地图校正的位姿图优化框架来扩展。
备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。
下载2
在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。
下载3
在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。
重磅!计算机视觉工坊-学习交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题