论文笔记—Range Image-based LiDAR Localization for Autonomous Vehicles
论文笔记—Range Image-based LiDAR Localization for Autonomous Vehicles
文章摘要
~~~~~~~鲁棒且准确的,基于地图的定位对于自主移动系统至关重要。本文利用从3D LiDAR扫描生成的距离(深度)图像来解决在以三角形网格表示的大型室外环境的地图中定位移动机器人或自动驾驶汽车的问题。我们使用泊松曲面重建来生成基于网格的地图表示。基于当前LiDAR扫描生成的距离图像和基于网格地图的合成渲染视图,我们提出了一个新的观测模型并将其集成到Monte Carlo(蒙特卡罗)本地化框架中,该模型可实现更好的定位性能并很好地推广到不同的环境。我们使用不同的LiDAR扫描仪在不同环境中收集的多个数据集上测试了提出的定位方法。实验结果表明,我们的方法可以可靠准确地将移动系统定位在不同的环境中,并以LiDAR传感器帧频在线运行以跟踪车辆姿态。
导语
~~~~~~~精确的定位是大多数自主移动系统所需的基本功能。 使用定位系统,移动机器人或自动驾驶汽车能够根据车载传感器获得的观测结果在地图上估算其位姿。 精确驾驶需要精确可靠的基于LiDAR的全球定位,特别是在GPS受限的环境或GPS无法提供准确定位结果的情况下。
大多数自主移动系统都带有3D LiDAR传感器,可感知环境并直接提供3D距离测量。在本文中,我们基于此类3D LiDAR传感器解决了车辆定位问题。对于定位,当今大多数定位系统中都使用了概率状态估计技术。特别是,粒子过滤器是一种通用工具,因为它们不需要限制运动或观察模型来遵循特定分布,例如高斯。当使用粒子过滤器时,我们需要设计一个合适的观测模型来代替地图表示。 LiDAR的常用观测模型是光束端点模型,也称为似然场[25],射线投射模型[8]或基于手工特征的模型[23],[33]。这些方法要么仅与2D LiDAR扫描仪一起有效地工作,要么需要精心设计的特征才能正常工作。最近,研究人员还专注于此类观测模型的数据驱动学习[12],[29],[6],只要环境靠近用于学习模型的环境,它们就可以提供准确而可靠的结果。
代替使用从3D LiDAR传感器获取的原始点云或从点云生成或学习的特征,我们研究了基于3D LiDAR的自动驾驶汽车定位的距离图像。 如图1所示,我们将点云投影到距离图像中,并使用由三角形网格表示的地图中的渲染视图来定位自治系统。 使用距离图像表示和由网格表示的地图有多种原因。 柱面距离图像是来自旋转3D LiDAR的扫描的自然而轻巧的代表,并且网格图比大点云更紧凑。 这些属性使我们能够在大规模环境中实现全局定位。 此外,可以使用计算机图形技术有效地执行来自网格图的距离图像的渲染。 因此,距离图像和网格图非常适合实现基于LiDAR的全局定位。
本文的主要贡献是基于3D LiDAR定位的新型观测模型。 我们的模型基于从真实LiDAR扫描和网格图的合成渲染生成的距离图像。 我们使用它们之间的差异为蒙特卡洛定位(MCL)制定观察模型,以更新粒子的重要权重。 基于提出的新颖的观测模型,本文的方法为车辆提供了(x,y,θ)位姿估计,并使用3D LiDAR扫描实现了全局定位。 此外,我们的方法可以很好地推广使用不同类型的LiDAR扫描仪收集的不同环境。 总而言之,我们提出三个主要主张:我们的方法能够(i)使用3D LiDAR数据准确而可靠地实现全局定位,(ii)可用于不同类型的LiDAR传感器,(iii)可以很好地概括不同的环境。 这些主张得到了本文和我们的实验评估的支持。 
相关工作
~~~~~~~对于给定地图的定位,通常会在位姿跟踪和全局定位之间进行区分。 在位姿跟踪中,车辆从已知位姿初始化,并且该位姿随时间更新。 在全局定位中,没有位姿先验可用。 在这项工作中,我们使用3D LiDAR数据解决了全局定位问题,而无需事先假设GPS或其他传感器的位姿。 因此,我们在这里主要集中在基于LiDAR的方法上。
在自动驾驶汽车的背景下,提出了许多使用多种传感器模式和高清(HD)地图进行精确位姿跟踪的方法。 Levinson等。 [16]利用GPS,IMU和LiDAR扫描来建立高清地图以进行定位。他们生成红外光谱中地面反射率的2D表面图像,并定义使用这些强度的观察模型。强度值的不确定性已通过建立先验图来处理[31]。 Barsan等。 [12]使用全卷积神经网络(CNN)和高清地图来执行在线地图匹配,以提高对动态对象的鲁棒性并消除对LiDAR强度校准的需要。 Merfels和Stachniss [18]提出了一种有效的链状位姿图,用于利用图优化技术和不同的传感方式进行车辆定位。基于这项工作,威尔伯斯等。 [30]提出了一种基于LiDAR的定位系统,该系统执行激光扫描和HD地图特征之间的本地数据关联,时间数据关联平滑和用于鲁棒性的地图匹配方法的组合。上面的方法在跟踪车辆的位姿方面显示出良好的性能,但是需要GPS信息才能在高清地图上进行操作。相比之下,我们的方法仅使用3D LiDAR数据即可解决全局定位问题,而无需事先假设任何位姿。
为了实现全局定位,传统方法依赖于概率状态估计技术[25]。 流行的框架是蒙特卡洛定位[8],[26],[10],它使用粒子滤波器估计机器人的位姿,并广泛用于机器人定位系统[3],[6],[15],[ 24],[32]。
最近,已经提出了几种利用深度神经网络和语义信息进行3D LiDAR定位的方法。例如,Ma等。文献[17]在贝叶斯过滤框架中结合了诸如车道和交通标志之类的语义信息,以在稀疏高清地图中实现准确而强大的定位。严等人。 [32]利用基于LiDAR的语义分割系统[19]的建筑物和交叉路口信息来定位Open Street Map数据。 Schaefer等。 [21]从3D LiDAR扫描中检测并提取极地标,以进行长期的城市车辆定位,而Tinchev等人。 [27]提出了一种基于学习的方法来匹配树木的片段并定位在城市和自然环境中。 Sun等。 [24]使用深度概率模型来加速蒙特卡洛定位的初始化,并在室外环境中实现快速定位。在我们先前的工作[6],[5]中,我们还利用具有语义的CNN来预测LiDAR扫描之间的重叠以及其偏航角偏移,并使用此信息建立基于学习的蒙特卡洛定位的观察模型。基于学习的方法在训练有素的环境中表现良好,而它们通常不能在不同的环境或不同的LiDAR传感器中很好地推广。
总而言之,我们的方法仅使用LiDAR数据即可在户外实现全球定位,而无需使用任何GPS。 而且,我们的方法直接使用距离信息,而无需利用神经网络,语义或提取地标。 因此,它可以很好地推广到不同的环境和不同的LiDAR传感器,并且在移至不同的环境时不需要新的训练数据。
本文的方法
~~~~~~~在本文中,我们提出了一种使用3D LiDAR传感器的自动驾驶汽车的概率全球定位系统,请参见图2。 为此,我们将LiDAR点云投影到一个距离图像中(请参阅第III-A节),并将其与在由三角形网格代表的地图中每个粒子位置渲染的合成距离图像进行比较(请参阅第III-B节和第 第III-C节)。 基于距离图像,我们为基于LiDAR的定位提出了一个新的观测模型(请参阅第III-E节),并将其集成到蒙特卡洛定位系统中(请参阅第III-D节)。 此外,我们使用了一个tile map(贴片地图)来加速渲染并确定系统何时收敛(请参阅第III-F节)。 使用基于OpenGL的渲染管道,在收敛后,所提出的系统以LiDAR传感器的帧速率在线运行。

A.距离图像生成
~~~~~~~提出的方法的关键思想是使用从LiDAR扫描生成的并从三角形网格图渲染的距离图像进行机器人定位。 为了生成距离图像,我们使用球面投影[2],[19],[7],[5]。 我们将点云P投影到所谓的顶点图\mathcal{V}_D:R^2→R^3,其中每个像素都包含最近的3D点。 每个点p_i =(x,y,z)通过函数Π:R^3→R^2转换为球坐标,最后转换为图像坐标(u,v),即

其中r = || p ||_ 2是范围,f = f_{up} + f_{down}是传感器的垂直视场,而w,h是所得顶点图\mathcal{V}_D的宽度和高度。 给定顶点图\mathcal{V}_D和每个坐标(u,v)上的点的范围r,我们生成相应的距离图像\mathcal{R}_D,基于该图像进行后续计算。
B.基于网格的地图表示
~~~~~~~我们使用三角形网格作为环境图\mathcal{M}。 三角形网格为我们提供了紧凑的表示形式,使我们能够以LiDAR传感器的帧频渲染上述距离图像。
为了生成地图,我们将LiDAR扫描及其位姿一起使用,前提是SLAM系统使用它进行地图绘制。 请注意,对于我们的方法,不必将相同的LiDAR传感器用于地图生成和定位。 我们采用泊松表面重构(PSR)[13]从点云中获取地图表示为三角形网格。 PSR算法需要一个定向的点云,因此输入云中所有点的法线。 为了估计表面法线,我们使用基于距离图像的法线估计[2],它使用对应的顶点图像素的正向差异上的叉积来计算每个坐标(u,v)的所谓法线图\mathcal{N}_D中的法线,即 
为了减少地图的存储大小,我们使用了地面分割算法。 我们首先计算云中所有点的经验协方差矩阵。 然后,我们使用对应的特征值λ_1≥λ_2≥λ_3来计算Σ的归一化特征向量:e_1,e_2,e_3。 我们使用一种简单但有效的方法来标记点p_i =(x,y,z),并以相应的法线n_i作为底线。 如果p_i满足以下条件,则被视为属于地面:n_i·e_3>cosα_{thres}和z
在标记所有地面点之后,我们继续运行重构算法,该算法将标记编码为顶点p_i的两种不同颜色的标记保留在重建的三角形中。 为了简化地面网格,我们将整个网格划分为非地面网格和地面网格。 对于地面网格,我们将所有顶点压缩到给定大小s_{voxel}的体素内的单个顶点。 然后,我们使用平均滤波器对地面顶点进行滤波,方法是用平均所有相邻顶点v_n∈N的v _i^*替换每个顶点v_i: 
平均后,将无效边缘删除。 简化了地面后,无需进一步处理即可将其与网格的其余部分合并。 这种简化使我们可以将网格模型的尺寸减小到其原始尺寸的大约50%。
PSR算法提供了一种全局解决方案,可立即考虑整个输入数据,而无需借助启发式分区[4]或混合[1],[22]。 因此,我们无需使用增量式构建地图[28],而是使用地图姿态将所有定向点云聚合到一个全局参考系中,然后,将该定向点云图直接馈入PSR算法,从而生成一个全局一致的三角形网格环境。
C.渲染合成距离图像
~~~~~~~给定一个粒子j及其状态向量(x^j,y^j,θ^j)和三角形网格图\mathcal{M},我们使用OpenGL渲染该粒子的合成距离图像。 使用球形投影,请参见。等式 (1),我们从给定的粒子位姿投影三角形的顶点,并考虑到遮挡,让OpenGL为三角形表面着色,如图3所示。为了进一步加速渲染,我们使用地图实例化为多个粒子渲染了一系列距离图像,这使我们避免多次读取顶点位置,并最大程度地减少了绘制调用的次数。

D.蒙特卡洛本地化
~~~~~~~蒙特卡洛定位(MCL)通常使用粒子滤波器来实现[8]。 在我们的案例中,每个粒子代表了在时间t处自动驾驶汽车的2D位姿x_t =(x,y,θ)_t的假设。 当机器人移动时,每个粒子的位姿都会根据带有控制输入u_t的运动模型进行更新。 然后,将地图\mathcal{M}中每个粒子的预测位姿的预期观测值与机器人获取的实际观测值z_t进行比较,以根据观测模型更新粒子的权重。 根据粒子的权重分布对粒子进行重新采样,并在有效粒子降至特定阈值以下时触发重新采样[11]。 经过此过程的几次迭代之后,粒子最终会围绕真实位姿收敛。
MCL(蒙特卡罗定位)实现了递归贝叶斯滤波器,在给定到时间t的所有观察值z_{1:t}和到时间t的运动控制u_{1:t}的情况下,估算了位姿x_t上的概率密度p(x_t | z_{1:t},u_{1:t})。 该后验更新如下: 
其中η是归一化常数,p(x_t | u_t,x_{t-1})是运动模型,p(z_t | x_t,\mathcal{M})是观测模型,p(x_{t-1} | z_{1:t-1},u_{1: t-1})是先验状态v_{t-1}的概率分布。
在这项工作中,我们专注于观察模型,并为车辆采用标准运动模型[25]。
E.基于距离图像的观测模型
~~~~~~~基于当前LiDAR扫描生成的距离图像和所有粒子的渲染合成距离图像,我们设计了一个观测模型。
每个粒子j代表在时间t的位姿假设x_t^j =(x,y,θ)_t^j。 给定在粒子的位姿假设下渲染的第j个粒子的相应合成渲染距离图像z^j,我们将其与从LiDAR点云生成的当前距离图像z_t进行比较。 然后,使用高斯分布来近似第j个粒子的似然性(可能性)p(z_t | x_t,\mathcal{M}): 
其中d对应于距离图像z_t和z^j之间的差异或相似度。
有几种方法可以计算这种相似性。 例如,我们可以直接比较两个像素范围内具有绝对差异或使用互相关的距离图像。另一个方法是可以生成特征并比较特征空间中的两幅图像。 最近,也提出了许多基于深度学习的算法[12],[6],[24],[29]。
在本文中,我们的目标是研究从LiDAR扫描和三角形网格生成的距离图像在Monte Carlo定位系统中的使用,并且相似度计算的特定选择取决于应用程序。 为了保持整个系统的快速和易于使用,我们选择了一种快速计算且有效的方法,并使用d = N^{-1}\sum | z_t-z^j |,即绝对像素方向差的平均值,其中N是当前范围图像中有效像素的数量。 我们的结果表明,这种选择是有效的,并且可以很好地推广到使用不同类型的LiDAR传感器在不同环境中收集的数据集(请参阅IV-B节)。
图4显示了由我们提出的观测模型计算出的局部概率,并表明该模型很好地编码了位姿假设。 与我们先前的工作[5]将观察模型分解为位置可能性和航向可能性两部分相反,提出的观察模型可以一次估计整个状态空间x_t =(x,y,θ)_t的可能性。 使用一种模型,既优雅又快速。 
F.Tiled地图表示
~~~~~~~我们将基于网格的全局地图拆分为多个图块,以通过更有效的渲染来加速蒙特卡洛定位。 我们仅使用与图块关联的网格的接近粒子位置的部分。 除了更有效的渲染外,我们还使用图块来确定定位的收敛时间。 如果所有粒子最多都定位在N_{conv}个图块中,则假定定位已经收敛,并减少了跟踪位姿的粒子数量。 Tiles地图表示还使我们的方法的运行时间与收敛后整个环境的大小无关。
