激光雷达和视觉SLAM八种流行算法的评估和比较

摘要

本文中,我们评估了八种流行的开源三维激光雷达和视觉SLAM(同时定位与地图构建)算法,分别是LOAM、Lego LOAM、LIO SAM、HDL Graph、ORB SLAM3、Basalt VIO和SVO2。我们进行了室内和室外的实验,以研究以下因素的影响:i) 传感器的安装位置,ii) 地形类型和振动的影响,iii) 运动的影响(线性和角速度变化)。我们比较它们在相对和绝对位姿误差方面的性能。我们还提供了它们所需的计算资源的比较。我们对结果进行了彻底的分析和讨论,并确定了在多相机和多激光雷达的室内和室外数据集的环境情况下性能最佳的系统。我们希望我们的研究结果能帮助人们根据其目标环境选择适合其需求的传感器和相应的SLAM算法组合。

引言

定位和地图构建在各种应用中发挥关键作用,如无人机[2]、无人地面车辆[3]、自动驾驶汽车[4]、服务机器人[5]、虚拟和增强现实等。这些技术是自主机器人的重要组成部分,它们使机器人能够构建环境地图并跟踪自身在地图中的相对位置。利用地图和位姿信息,机器人可以执行路径规划、导航、障碍物避免等任务。

非线性状态估计方法[1],如扩展卡尔曼滤波器(EKF)和无迹卡尔曼滤波器(UKF),通常使用轮式测程、惯性测量单元(IMU)和全球导航卫星系统(GNSS)来估计机器人的位姿[6]。然而,卡尔曼滤波器变种无法逼近过于复杂的非线性函数。此外,GNSS信号并不总是可用,例如,在室内和高楼大厦以及茂密森林之间。同时,同时定位与地图构建(SLAM)[7]的进展有望利用机器人的内置传感器,如摄像机和激光雷达,来在以前未开发的环境中执行鲁棒的定位和地图构建。SLAM方法适用于室内和室外。

虽然存在一些最先进的SLAM方法[3],[8],[9],但据我们所知,尚无系统性的比较。此外,现有的公共基准数据集要么只用于测试视觉惯性SLAM [10],要么不包括不同类型的传感器 [11]。然而,不同的SLAM算法利用不同的传感器模型和类型。本文的目标是使用机器人设置同时收集的不同感知传感器数据来评估和比较最常见的最先进SLAM算法。为了公平比较性能,我们使用了多传感器设置(参见图1),包括两个激光雷达、两个立体摄像头、双天线GNSS(全球导航卫星系统)和一个九轴惯性测量单元(IMU)进行数据收集。收集的数据用于通过绝对位姿误差(APE)和相对位姿误差(RPE)来评估六个自由度(DoF)的定位性能,相对于参考地面真实轨迹。我们分析了这些SLAM系统中的设计选择如何影响它们生成的轨迹的准确性。

SLAM基准套件,如Kitti [11],涵盖了城市场景,包括高速公路、乡村道路、行驶汽车和行人。它已成为比较许多流行SLAM系统的定位性能的重要平台。然而,当选择SLAM系统用于工业机器,例如自主施工机器或其他越野机器时,需要考虑一些额外因素。这些因素包括不同的传感器安装位置、地形类型的影响和振动等。这些影响在现有的基准测试中没有得到充分考虑。此外,据我们所知,工业环境通常没有得到覆盖。在本研究中,我们建立了我们的设置,以解决文献中未涵盖的影响。我们还建立了一个传感器套件,允许同时使用不同类型的传感器收集数据,以测试激光雷达和视觉SLAM方法。一些公共数据集提供了同时记录的3D激光雷达、立体摄像机和IMU数据(例如Beach Rover、ETH-challenging、Multi Vech Event [12]),但它们通常是在不改变环境和传感器安装位置的情况下记录的。我们在室内和室外进行了各种地形类型的实验。这些实验是在研究硕士论文期间进行的[13]。
我们的贡献如下:(i) 我们设计了室内和室外实验,系统地分析和比较了八种流行的激光雷达和视觉SLAM算法;(ii) 我们的实验旨在评估和比较所选SLAM实现在传感器安装位置、地形类型、振动效应以及传感器线性和角速度变化方面的性能;(iii) 我们提供了所需的计算资源的比较;(iv) 我们总结了我们的研究结果,并提出一系列建议。

本文的组织结构如下。在第二部分,我们解释了SLAM,提供了所选SLAM算法的内部工作细节,并介绍了传感器套件。在第三部分,我们详细描述了实验和环境。在第四部分,我们讨论了实验结果。最后,在第五部分,我们提出了结论。

方法

在本部分,我们描述了SLAM算法的主要组成部分,参考图1,然后解释了我们选择要评估的SLAM算法,参考图2,然后详细解释与我们的评估目的相关的部分。

A. SLAM背景

三维SLAM系统的目标是在同时使用输入传感器数据,如图像和点云,估计机器人的六自由度姿态并同时绘制新的环境地图。典型的SLAM系统由两个主要组件组成:前端和后端[7](见图2)。

前端处理传入的视觉传感器数据,从帧中提取有用信息,然后用于机器人位姿估计。这一步通常被称为数据关联。视觉SLAM前端接收摄像机图像,提取每个帧中的关键点[14][15]并跟踪它们[16],以匹配帧之间的关键点。也可以使用方法如[17]生成机器人姿态的初始估计。在帧之间一致的关键点被称为地标。需要注意的是在选择地标时可能存在额外的约束条件。

激光雷达SLAM的前端通常包括三个部分:(i) 点云降采样以减少计算,(ii) 基于点云体素光滑度值的关键点提取[18],(iii) 扫描匹配,如迭代最近点(ICP)[19]的变种,用于生成姿态变换的初始估计。为减小定位误差,某些系统包括通过访问先前访问过的位置进行闭环检测。地图通常以地标位置的稀疏信息或激光雷达SLAM的情况下的稠密点云表示。

在视觉SLAM中,前端的初始姿态估计和地标关联与后端一起用于执行机器人状态的最大后验估计。在激光雷达SLAM的情况下,算法使用点云扫描匹配的里程计,而不是地标关联。激光雷达SLAM还可以在帧之间使用IMU积分。最近,随着诸如G2O [20]和GTSAM [21]等库的可用性,最流行的后端方法是使用因子/位姿图进行优化。它允许用户集成各种传感器模态,以实现更鲁棒的状态估计。我们将进一步介绍所选算法的细节。

B. SLAM算法的选择

总共,我们选择了八个SLAM和里程计算法来运行本文的实验。它们是当前最先进的,广泛使用的公开系统,具有基于ROS的实现版本。这些算法分为四个基于激光雷达的算法和四个基于视觉的算法,如图3所示,其中既包括完整的SLAM算法,也包括里程计类型的算法。它们之间的关键区别在于里程计是逐帧逐帧地增量估计,有时进行窗口局部优化,而完整的SLAM方法旨在通过包括检测闭环以维护全局一致性,以侦测重访地点以校正姿态估计中的误差。由于设计的不同,完整的SLAM方法在计算上比里程计算法更重。

在基于激光雷达的算法中,有两种完整的SLAM方法,包括LIO SAM [22]和HDL图SLAM [8],它们都具有闭环校正功能,此外,我们还在LIO SAM中使用了IMU。我们使用的两个激光雷达里程计算法是LEGO LOAM [3]和原始LOAM [18]的基于A-LOAM [23]的实现。我们还使用了三个完整的SLAM视觉算法,包括SVO2 [24]、ORB SLAM3 [9]、Basalt VIO [25],以及Kimera VIO [26]的里程计算法的实现。

C. 算法概述

激光雷达SLAM:在基于激光雷达的算法中,我们包括了LOAM,因为它是许多流行的基于激光雷达的SLAM系统的基础,包括LIO SAM和LEGO LOAM。它是一种激光雷达里程计算法,使用ICP的点对线和点对面变种执行扫描匹配里程计。LEGO LOAM是我们测试的另一种激光雷达里程计算法,它与LOAM非常相似,但通过将点云分割为边缘和平面特征来实现效率提升。该算法分别从平面特征(地面)中提取高度、横滚和俯仰,以及从边缘特征中提取X坐标、Y坐标和偏航角。我们测试的另一个激光雷达全SLAM算法是HDL图SLAM。它是基于因子图的方法,允许用户定义多个边缘约束,如GPS、IMU、地板平面检测和闭环。在初始扫描匹配之后,用户可以选择ICP或NDT方法。LIO SAM是我们测试的第二种完整的激光雷达SLAM技术。它通过因子图优化利用紧耦合IMU积分和激光雷达里程计来估计状态。

视觉SLAM:首先,基于视觉的SLAM系统中有SVO2。与其他视觉SLAM算法不同,其前端类似于直接视觉SLAM系统。在那里,估计是基于稀疏的基于模型的图像对齐,使用局部强度梯度方向来估计运动。这使其在前端方面比基于特征的系统更快。在特征型SLAM中,我们使用了ORB SLAM3,被认为是当前最先进的视觉SLAM系统之一。其前端包括ORB特征检测器和描述符匹配,通过多图数据关联DBoW2姿势图的闭环提供了额外的鲁棒性。Basalt VIO是我们使用的下一个基于特征的视觉惯性算法。Basalt在两个关键帧之间恢复了IMU读数的非线性,这在更一般的IMU预积分步骤中丢失。使用FAST特征和KLT跟踪器生成的局部捆绑调整估计以及非线性因子在因子图的全局捆绑调整期间进行优化。最后,Kimera是来自Kimera C++库的视觉惯性里程计,旨在执行语义三维环境的度量语义SLAM重建。其前端从Shi-Tomasi角点[16]开始,通过KLT跟踪器在新图像帧中跟踪。然后使用五点/三点RANSAC解决关键帧之间的相对姿态,以及计算关键帧之间的预积分IMU测量。地标、初始姿态估计和IMU预积分被用作因子图约束,以生成最终状态估计。

III. 实验描述

在本节中,我们描述了我们的设置和进行的实验,以研究以下因素对所选SLAM实现的准确性和可靠性的影响和严重性:

i 传感器的安装位置,
ii 地形类型和振动效应,
iii 传感器线性和角速度的变化。

在室外场景中,我们研究了这三个因素的影响,而在室内情况下,我们的实验重点是(iii)。

A. 实验设置

传感器套件和计算:

在本文中,图1中的传感器设置中使用了两个激光雷达、两个立体摄像机和一个IMU。Velodyne VLP-16是一个旋转的16线激光雷达,垂直视场为30度;它提供了2度的垂直分辨率和0.1到0.4度的水平分辨率,取决于旋转速度,范围从5到20赫兹。第二个激光雷达是robosense Bpearl;它同样是一个旋转激光雷达,有32个扫描线,具有90度的较宽垂直视场。分辨率为2.81度,水平分辨率为0.2到0.4度,取决于速度,范围从10到20赫兹。这两个激光雷达的最大范围为100米,精度为±3厘米。在两个立体摄像机中,Intel Realsense T265是一款全局快门的单色鱼眼摄像机,内置IMU,基线为64毫米,视场为163度。第二个立体摄像机是一款滚动快门RGB摄像机,基线更大,为120毫米,垂直和水平视场分别为60度和90度。最后,使用的IMU是9轴Xsens Mti 300。在实验中,传感器数据记录到了运行ROS Melodic的Jetson Xavier NX模块上的ROS包文件中。

在我们的实验中,Velodyne VLP 16与A-LOAM、LEGO LOAM、HDL图SLAM和LIO SAM一起使用。我们使用Realsense T265与Basalt VIO、SVO2和Kimera VIO。Kimera VIO未完美支持T265的超广角鱼眼模型,在室外实验中失败了。最后,我们使用ZED相机与ORB SLAM3。经过初步测试,我们发现这些传感器和算法的组合具有最佳的结果。我们在室内和室外实验中使用相同的传感器套件。算法在一个4核8线程的英特尔i7 7700HQ CPU上运行。在我们的评估中,所有8个线程的最大容量被认为是100%。在运行时,整体使用数据保存到文本文件中,稍后会被解析以分离和计算与Falgorithms启动的进程相对应的使用情况。

室外环境:

室外实验是在坦佩雷大学的Mobile Hydraulics Lab进行的。作为地面真实性的基准,我们使用了我们自己构建的本地化,基于双天线RTK-GNSS、IMU和里程计。传感器组装在一个框架上,并使用Kalibr工具箱[27]进行了摄像机-IMU校准和激光雷达-IMU校准。传感器框架安装在GIM机器的顶部(GIM是坦佩雷大学用于自主操作研究的多用途轮式装载机,参考MED 09),见图4。

室内环境:

室内实验是在坦佩雷大学的RoboLab Tampere进行的。为了获得这些轨迹中的一致的预定义运动,我们将传感器条安装在Mobile Industrial Robot(MIR)上,如图5所示,这是一个商业级差分驱动移动机器人,运行Robot Operating System(ROS),通常用于在工业仓库空间内移动材料。通过其界面,MIR允许用户定义将执行的路径;这对于设计和执行测试SLAM算法的重复运动非常有用。坦佩雷大学的Robolab配备了最先进的Optitrack运动捕捉系统,用于收集地面真实性。它用于通过跟踪放在MIR上的标记物来收集地面真实轨迹。

B. 户外实验

设计了两个户外实验,用来研究上述提到的i-iii的影响:一个用于研究安装位置和地形类型的影响,第二个用于研究运动速度的影响。

不同的安装位置和地形类型(Outdoor experiment 1):这些实验包括五个数据集,其中机器重复相同的轨迹,呈八字环绕Mobile Hydraulics LAB的形状,如图6所示。在每个测试中,传感器套件安装在机器的不同位置(总共5个位置,如图4所示):1)在臂的底部,2)在臂的中部,3)在臂的顶部,4)在机舱架上的顶部安装,5)侧面安装。这个实验允许我们测试地形变化对定位性能的影响以及在通过具有挑战性的环境后获得闭环的好处。我们还测试了对振动效应和传感器安装位置的敏感性。轨迹包括在沥青路上的直线、在碎石路上的直线和在碎石地形上的下坡路径。

C. 室内实验

我们设计了三个实验,以研究低级跟踪组件的鲁棒性和不同情况下的潜在漂移,即,绕正方形循环、直线行驶并进行360度转弯、静止状态下有动态场景。

绕正方形循环(室内实验1):在第一个室内实验中,MiR被指定沿着一个两米边长的正方形路径连续循环行驶五分钟,如图8所示,总共72米。该数据集旨在观察在一个具有四个直角转弯的常规循环中可能发生的定位漂移,这可能会影响特征跟踪器的性能。Robolab测试区域的四面墙中有两面是玻璃,可以看到建筑物更宽敞的大堂区域;这可能导致激光雷达束的部分反射和由于玻璃前面的物体遮挡而影响激光雷达SLAM的性能。

直线行驶并进行360度转弯(室内实验2):在第二个室内实验中,MiR沿着直线前进,开始逆时针旋转,直到达到360度,然后返回到旋转的起点。之后,它返回到起点并以顺时针旋转的方式重复运动,轨迹的顶视图如图9所示。实验持续记录五分钟。360度旋转旨在引入点云的偏斜,并查看不同激光雷达SLAM如何处理它。由于室内特征距离传感器更近,因此在旋转过程中可能出现快速移动的关键点、滚动快门畸变和运动模糊,这可能对视觉SLAM算法中较慢的特征跟踪器构成挑战。此外,在丢失特征的情况下,算法必须准确重新定位。

动态场景(室内实验3):第三个实验中,MiR机器人保持静止,但在传感器前面有移动的物体,如托盘、椅子和人。实验记录了五分钟。这个数据集允许测量动态物体如何影响SLAM估计的准确性,通过测量生成位姿中的漂移。

结果

性能指标:为了评估性能,我们计算了SLAM算法生成的轨迹与地面真实性之间的误差。我们使用绝对位姿误差(APE)和相对位姿误差(RPE)的均方根误差(RMS),以及它们的标准差(STD)。

APEi = Qi^(-1) * Pi

RPEi+∆ = (Qi^(-1) * Qi+∆)^(-1) * (Pi^(-1) * Pi+∆)

其中,Qi是地面真实性在时间i处的位置和机器人位置之间的真实性变换。Pi是SLAM起点处的机器人估计。为了获得有意义的APE,我们需要对齐SLAM起点和地面真实性的起点,在本文中,我们使用了最小二乘的Umeyama对齐算法[29]。RPE通过比较机器人在时间i和i+∆的相对姿态的地面真实性和位姿估计,避免了对齐问题。
户外实验:表I显示了与地面真实性相比,由SLAM算法生成的轨迹的APE均方根误差,针对不同的传感器安装位置(实验1如图6所示)。

地面优化的LEGO LOAM的准确性随着传感器的抬升而降低(即,Boom High,Top Mount)。使用IMU的LIO SAM表现出最佳的APE为1.142m,但当传感器安装在摇摇晃晃的臂上时,其性能会下降。基于ICP扫描匹配的LOAM在侧面安装位置上具有最佳准确性,提供了大约270度的最大无障碍视野。

在所有视觉SLAM算法中,ORB SLAM3在低位装置位置上具有最小的误差,为1.563m。还可以看到,随着摄像机远离地面,整体视觉SLAM算法的准确性下降。在侧面安装位置,由于摄像机与机器的运动垂直,关键点移动迅速,动态模糊较高。帧之间的数据关联很少可能,导致Basalt VIO和SVO2失败,但ORB SLAM3由于其更好的数据关联能力而成功地重新定位,尽管误差较大。在Top Mount数据集的收集过程中,Realsense T265硬件出现故障,导致Basalt VIO和SVO2的估计丢失。在第二个实验中(图7),根据表II,HDL图SLAM具有最小的0.845m误差,其闭环能力有助于维持估计的准确性。ICP扫描匹配测距算法LOAM表现出色,误差为1.072m,LEGO LOAM在臂的中部位置,视野良好,地面估计的RMS APE为1.448m。由于初始化误差,LIO SAM表现最差,误差为3.715m。ORB SLAM3和Basalt VIO的误差相似,都优于激光雷达SLAM算法LIO SAM和LEGO LOAM。

室内实验:第一个室内实验(绕正方形循环)的结果总结在表III中。在基于激光雷达的算法中,LOAM的相对位姿误差(RPE)最小,为0.030m,其次是LIO SAM,在激光雷达SLAM算法中的误差为0.0606m。视觉SLAM算法的RPE优于激光雷达SLAM,其中Basalt的误差最小,为0.008m。通过比较标准差,可以看出平均激光雷达SLAM估计噪声较大,与视觉SLAM估计相比。通过APE可以解释估计的全局一致性。ORB SLAM3具有最佳的APE,表明具有卓越的闭环和全局优化能力。同样,HDL图SLAM具有最差的RPE结果,但具有可比较的APE结果。有趣的是,三个基于激光雷达的算法,LOAM、LEGO LOAM和LIO SAM,具有非常接近的1.5m的APE。由于其更快的前端,SVO在此数据集中的表现优于以前的户外数据集,有助于跟踪正方形的90度旋转中的特征。

表III显示了第二个室内实验(图9中显示轨迹)中的中间部分的RPE和APE。视觉SLAM算法在RPE方面表现优于激光雷达SLAM,其中Basalt的RMSE最小,为0.0084m,其次是SVO2,误差为0.0086m。与使用计算成本较低的FAST检测器的Basalt相比,具有ORB检测器的ORB SLAM3具有较慢的前端,ORB SLAM3在旋转过程中不断丢失特征,但能够重新定位以获得具有卓越闭环检测和子地图合并的可比准确度。使用IMU预积分和IMU点云去扭曲的LIO-SAM在激光雷达SLAM中具有最小的误差,RPE为0.0551m。

在最后一个室内实验中,机器是静止的,但视野中有物体移动,因此我们使用累积距离和从起始位置漂移作为度量标准来比较SLAM估计的质量,如表III所示。基于激光雷达的算法从起始点漂移最小,表现优于所有基于视觉的算法,除了Kimera。由于射程较小,相机与激光雷达相比受到移动物体的影响更大。激光雷达SLAM估计准确但嘈杂,导致累积距离较高,尽管整体漂移较小。
计算资源:从表IV可以看出,激光雷达测距算法LEGO LOAM和LOAM需要的CPU资源最少,分别为4.43%和6.63%,这是因为它们的算法较为简单。基于位姿图的方法LIO SAM和HDL图SLAM使用GT-SAM和g2o,CPU利用率分别为21.4%和11.85%,LIO SAM的较高负载在峰值时接近80%,这可以解释为其执行了额外的IMU积分。从ORB SLAM3、Basalt VIO和Kimera VIO的较高平均CPU使用率相对于其他算法可以观察到前端中特征检测器的影响。

在所有的室外实验中,具有顶部激光雷达位置的LIO SAM对于我们实验中使用的装载机型机器最为适用,其APE的最小值为1.142m。对于依赖IMU的LIO SAM,稳定性更为重要,当传感器固定在具有高振动的装载机斗的动臂上时,性能会下降。当传感器靠近地面时,LeGO LOAM是最有效率的,同时在APE为1.316m时性能相对较好。带有任意激光雷达位置的较简单的LOAM具有合理的结果,因此在传感器位置不固定时是一个合适的选择。视觉算法在相机靠近地面时表现更好。

结论

本文对八种最流行的最先进的视觉和激光雷达SLAM方法进行了系统评估。我们使用了专门设计的传感器套件进行测试,其中包括不同类型的视觉传感器,使我们能够同时捕获它们的数据。实验在室外和室内进行,我们研究了传感器安装位置、地形类型、振动效应以及线性和角速度变化的影响。

在激光雷达SLAM方法中,LIO SLAM使用额外的IMU信息在单次运行中产生了最小的误差。LEGO LOAM适用于轻型应用,但需要将传感器安装在靠近地面的位置。LOAM也可以在复杂性较低的环境中使用,适用于轻量级应用。在比较视觉SLAM方法时,ORB SLAM 3在动态和复杂的环境中表现良好。Basalt VIO能更好地处理速度的快速变化。由于前端性能更快,SVO能更好地处理快速运动。总的来说,在室外和具有动态对象的情况下,激光雷达的性能更好,因为它们具有更大的环境视野。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐