orbit,orbital
摘要
Or-SLAM 2是基于单目、双目和RGB-D相机的完整SLAM方案。可以实现地图复用、环路检测、重定位等功能。无论是室内的小型手持设备,工厂环境中的无人机,还是城市中行驶的汽车,ORB-SLAM2都可以在标准的CPU上实时工作。在后端,OR-SLAM 2采用了单目和双目光束调整优化(BA)的方法,允许公制尺度的轨迹精度评估。此外,ORB-SLAM2包含了轻量级的定位模式,可以在允许零漂移的情况下,使用视觉里程表跟踪未映射区域,匹配特征点。
29个广泛使用的公开数据的测试结果表明,在大多数情况下,该方案的准确率高于以往的方案。此外,我们开源ORB-SLAM2源代码,不仅面向整个SLAM领域,也为其他领域的研究者提供一套SLAM解决方案。
一.导言
SLAM(同步定位和地图重建)是过去20年计算机视觉和机器人领域的热门话题,也吸引了许多高科技公司的关注。SLAM技术是在未知环境下建立地图,实时定位。在不同类型的传感器中,相机非常便宜,可以提供丰富的环境信息,因此受到研究人员的青睐。摄像机提供的图像信息可用于鲁棒和精确的位置识别。位置识别是SLAM系统中环路检测的关键模块(例如,当传感器检测到一个已经建立地图的位置时,它可以纠正探索过程中的错误),它可以在摄像机跟踪因剧烈震动失败后或系统初始化时纠正重新定位。因此,以相机为中心的视觉SLAM在过去一年发展迅速。
视觉SLAM只需要一个单目摄像头就可以完成。单目摄像机也是最便宜和最小的传感器设备。而深度信息是单目相机无法观测到的,地图比例尺和预测轨迹都是未知的。此外,由于三角测量不能从第一帧开始进行,单目SLAM系统的启动往往需要多个视角或过滤技术来生成初始化的地图。最后,单目SLAM可能会造成尺度漂移,在探索过程中执行纯旋转时可能会失败。使用双目或RGB-D相机将解决这些问题,并成为更有效的视觉SLAM解决方案。
本文在单目ORB-SLAM[1]的基础上提出了ORB-SLAM2,主要贡献如下:
1.这是第一个基于单目、双目和RGB-D相机的开源SLAM方案。该方案包括环路检测、地图重用和重定位。
2.我们的RGB-D结果表明,光速调整优化(BA)比ICP或最小光度和深度误差方法更准确。
3.通过匹配远近双目匹配点和单目观察,我们的双目结果比直接使用双目系统更准确。
4.针对无法构建地图的情况,提出了一种轻量级定位模式,可以更有效地重用地图。
(a)双目输入:城市环境轨迹和多环探测稀疏重建。
(b) RGB-D输入:房间关键帧和密集点云已经检测过一次,这些点云是通过绘制深度图的关键帧的姿态而获得的,没有经过渲染(融合)
图1显示了ORB-SLAM2处理双目和RGB-D输入评估相机的轨迹,并构建了一个地图。在保证高精度和鲁棒性的前提下,该系统可以在标准CPU上实现实时、循环检测、重定位和地图重用。
图a显示了在双目和RGB输入下ORBSLAM2的输出。双目示例显示了最后的轨迹和稀疏的重建图。这里的数据集来自KITTI的Sequence00数据集。这个城市数据集是ORB-SLAM2多次成功的特征提取和环路检测的结果。
RG-D示例是TUM的RGB-D数据库中来自fr1_room的数据集,对关键帧的姿态进行评估。通过评估关键帧的姿态,映射深度图,最终形成密集的点云图像。注意,虽然ORB-SLAM2不像Kinect Fusion那样进行数据融合,但它可以精确估计关键帧的姿态。更多的例子显示在附加的视频。在余下的章节中,我们将讨论第二部分的相关工作。第三部分讨论了ORB-SLAM2系统框架。第四部分评价ORB-SLAM2,第五部分得出结论。
二。相关著作
在本章中,我们将讨论双目和RGB-D SLAM的相关工作。第四部分是评价部分。在这一章中,我们主要讨论SLAM方法。
2.1双目SLAM
Paz等人[5]最早研究了双目SLAM方案,基于条件独立拆分和扩展SLAM。它的显著特点是可以在大场景下运行。更重要的是,这是第一个使用近特征点和远特征点的双目SLAM系统(例如,由于双目相机之间的差异很小,无法准确估计一个点的深度),并使用逆深度参数进行估计。经验值表明,如果深度小于双目基线的40倍,则该点可以被三角测量。这是我们处理不同距离的特征时遵循的思路。具体解释在第三部分。
目前大多数双目系统都是基于特征匹配和局部BA优化来获取尺度。Strasdat等人[8]在一个输出窗口中采用了关键帧[7]和姿态的BA联合优化算法。在全局不一致的情况下,通过限制窗口大小来限制时间复杂度。Mei等人[9]在时间复杂度有限的条件下,利用路标和姿态相关性实现了RSLAM解,提出并实现了活动区域的BA优化算法。即使在全局不一致的情况下,RSLAM也能闭合环路,扩大环路两侧的活动区域。
Pire等人[10]将局部BA应用于相邻的S-PTAM,但是这种方法缺乏大量的环路检测。同样,我们对局部关键帧采用BA优化,这样这个图的大小和复杂度是独立的,然后就可以在大场景下运行了。然而,我们的目标是建立一个全球地图。因此,我们的系统首先在循环的两端执行。这类似于RSLAM,这样可以利用旧地图进行定位,然后进行姿态估计,也就是可以最小化环路造成的累积漂移。
Engel等人[11]提出了近双目LSD-SLAM方案,采用直接半密集的方法,使高梯度图像区域的光度误差最小。希望这种方法在不依赖特征提取的情况下,在纹理不清晰或运动模糊的过程中获得更高的鲁棒性。然而,由于卷帘式快门或者非朗伯反射的未建模因素,直接法的性能将会下降。
2.2 RGB-D SLAM
最早最著名的RGB-DSLAM系统是Newcombe等人提出的KinectFusion。该方法将来自传感器的深度数据融合到深度模型中。ICP算法常用于跟踪摄像机姿态。由于体积的形式和缺乏循环检测,该算法只能在小的工作空间中工作。Whelan等人[12]提出的Kintinuous可以在大环境下运行。它通过使用一个滚动的循环缓冲区并包括位置定位和姿态优化的使用来实现循环检测的目的。
第一个开源的RGB-DSLAM方案是由Endres[13]提出的,这是一个基于特征点提取的系统。他的前端使用提取和匹配特征点和ICP来计算帧之间的运动。
通过优化后端姿态图,循环检测的约束条件来自启发式搜索。同样,Kerl等人[14]提出的DVO-SLAM是关键帧之间的优化姿态图,视觉里程计通过最小化光度和深度误差来计算约束条件。DVO-SLAM同时在所有先前的帧中搜索回送的候选,而不依赖于位置识别。
Whelan等人[15]提出的邻近弹性融合算法是基于某个环境的地图。这是一种以地图为中心的方法。该方法忽略了非刚性变形图的姿态和环检测性能,也是标准的姿态图优化。这种方法在重建和定位方面具有极好的精度,但是其目前的应用非常有限。对于房间大小的地图,地图中箱的数量影响计算的复杂性。
Or-slam 2可以处理来自双目和RGB-D的图像,与上述方法不同的是,我们的后端使用BA算法来构建全局稀疏图重建,因此我们的方法更加轻量级,可以在标准的CPU上运行。我们的目标是长期精确定位位置,而不是建立一个有很多细节的密集地图。但是,高精度关键帧的姿态可以与深度图像融合并在计算中精确重建,或者可以处理所有关键帧、深度图像和BA并获得精确的3D模型。
三。ORBSLAM2
用于双目相机和RGB-D相机的ORB-SLAM2基于单目ORB-SLAM,其核心组件如图2所示。
图2 ORB-SLAM2由三个并行线程组成,跟踪、本地映射和循环检测。在循环检测之后,将执行第四个线程来执行BA优化。跟踪线程在双目或RGB-D输入之前执行,因此其余系统模块可以独立于传感器模块运行。用途单一ORB-SLAM2工作图也是此图。
该系统主要有3个并行线程:
1.通过寻找和匹配局部地图的特征来跟踪和定位每一帧的摄像机,并且仅使用BA算法来最小化重投影误差。
2.使用局部BA算法建立局部地图并进行优化。
3.循环检测可以通过优化姿态图来校正累积的漂移误差。位姿优化完成后,将启动第四个线程执行全局BA算法,计算整个系统的最优结构和运动结果。
这个系统是基于DBoW2[16]的嵌入式位置识别模型,目的是重新定位,防止跟踪失败(如遮挡),或者重新初始化已知地图的场景,检测环路。该系统生成关联可视图[8],连接两个关键帧的公共点和所有关键帧的最小生成树方面。这些关键帧的图结构可以得到关键帧的局部窗口,便于跟踪和局部映射,大规模环境下的循环检测部分作为图优化结构。
该系统使用相同的ORB特征进行跟踪、绘图和位置识别。这些特征在旋转不变性和尺度不变性方面具有良好的鲁棒性,同时对相机的自动增益、曝光和光线变化表现出良好的稳定性。并且能够快速提取特征并进行匹配,满足实时运算的需要,在基于单词包的位置识别过程中表现出良好的准确性[18]。
在本章的其余部分,我将展示如何使用双目或深度信息,以及系统的哪些部分会受到影响。有关每个系统模块的更详细描述,请参见论文[1]。
3.1单筒、近筒和远筒的特点
作为一种基于特征提取的方法,OR-SLAM 2在一些关键位置对提取进行预处理。如图2b所示,系统的所有操作都基于输入图像的特征,而不依赖于双目或RGB-D摄像机。我们的系统处理的是单目或双目特征点,可以分为远特征点和近特征点。
双目特征点由三个坐标定义,这三个坐标是左图像的坐标和右图像的水平坐标。对于双目摄像机,我们从两幅图像中提取球体特征,并将每个左侧球体特征与右侧图像进行匹配。这对构建双目图像校正非常有效,所以核线是水平的。之后我们会在左图像中生成双目ORB特征点,用一条水平线匹配到右图像,通过修复相关性重新定义亚像素。对于RGB-D相机,正如Strasdat等人[8]所说,我们在图像通道上提取ORB特征点。我们将深度值与结构光投影仪和红外相机中处理后的深度图和基线进行匹配,并将每一帧的图像与右图像的坐标系进行融合。是kinect和华硕Xtion。精度在8cm左右。
近双目特征点的定义是匹配深度值小于双目或RGB-D基线的40倍,否则为远特征点。可以根据帧的深度值对附近的特征点进行三角测量,这是一种精确的估计,并且可以提供比例、平移和旋转的信息。另一方面,距离较远的特征点可以提供精确的旋转信息,但很少提供缩放和平移信息。当提供了多个视图时,我们可以对这些远点进行三角测量。
在右图像的两个坐标中定义单个特征点,所有ORB特征必须一致,否则双目特征点提取不完整,或者在RGB-D的情况下会产生无效的深度值,这些点只能从多个视图进行三角剖分,不能提供尺度信息,但可以提供旋转和平移的估计信息。
3.2系统引导
使用双目和RGB-D相机的主要优点是我们可以直接获得深度信息,而不需要像单目情况那样进行特定的SFM初始化。在系统初始化的时候,我们创建一个关键帧(也就是第一帧),初始化他的位置和姿态,从所有的三维点创建一个初始化图。
3.3使用单目或双目光束优化法。
我们的系统采用波束优化法(BA)优化跟踪过程中摄像机的姿态(纯运动BA),优化局部窗口的关键帧和局部图的特征点(局部BA),优化循环检测后的所有关键帧和特征点(全局BA)。我们在g2o [19]中使用Levenberg-Marquadt方法。
纯运动BA,优化相机旋转矩阵和位置,最小化匹配3D点云和特征点(单目或双目,其中)在世界坐标系中的重投影误差;
在这个公式中,它是鲁棒Huber的代价函数、协方差矩阵和特征点的相关性尺度。该投影功能用于单一目的和双眼矫正。它们的定义如下:
在这个公式中,焦距是主点(像点),B是基线。所有这些参数都通过校准获得。
BA局部采用一系列可用的关键帧和关键帧中的所有视点。所有其他的关键帧,而不是观察中的所有特征点都用于成本函数,但它们在优化中是固定的。在中定义为关键帧K的一系列匹配特征点,这个优化问题如下:
全局BA是局部束方法的特例,它优化了除初始帧之外的所有关键帧和点,初始帧是固定的,以消除随机化。
3.4闭环检测和全局BA
循环检测有两个步骤:首先,确定和检测循环信息,然后使用循环来校正和优化姿态图。与单目ORB-SLAM中可能出现标尺漂移的地方[20]相比,这种双目或深度信息将使标尺信息可观察到。此外,几何检查和姿态图优化将不再需要处理比例漂移,并且它基于刚体变换,而不是相似性。
在ORB-SLAM2的姿态优化之后,我们包括一个全局BA优化。为了实现一个优化方案,我们必须采用一个独立的线程,该线程允许系统不断地建立映射和检测循环信息。但这会再次触发全局BA优化和当前地图的合成。如果在优化运行时检测到新的循环,我们将中止优化并继续关闭循环,这将再次启动完整的BA优化。当完整的BA完成时,我们需要将由完整BA优化的更新的关键帧子集和点与在优化运行期间插入的未更新的关键帧和点合并。最后,通过生成树更新(例如,这种从非优化到优化的转换)到未更新的关键帧来校正更新的关键帧。根据校正后的参考帧,重建一些未更新的特征点。
3.5关键帧插入
Or-slam 2遵循单目Or-slam中提到的规则,即经常插入关键帧,消除前一帧的冗余。远近特征点的差异为我们提供了插入新的关键帧的条件,这在大场景条件下至关重要,如图3所示。
图3高速公路跟踪点。绿色特征点的深度小于双目基线的40倍,蓝色特征点的深度大于双目基线的40倍。在这个数据集中,需要插入大量的关键帧,使得附近的特征点可以更准确的估计平移和缩放,远处的特征点可以估计方向,但是平移和缩放无法计算。
在这样的环境中,我们需要大量的近点来精确地估计平移,所以如果这个被跟踪的近点小于并且这个帧将创建一个新的相邻立体点,这个系统将插入一个新的关键帧。我们的经验表明,当总和相等时,我们的效果最好。
3.6定位模式
Or-slam 2包括定位模式,在已知地图的情况下,只要环境没有发生剧烈变化,这种模式适合于轻量级和长期操作。在这种模式下,局部映射和循环检测的线程被禁用,并且该摄像机总是通过跟踪来重新定位。在这种模式下,跟踪模块使用视觉里程表来匹配图像的点云。视觉里程计将当前帧中的ORB操作符与双目或深度相机收集的3D点云进行匹配。这些匹配即使在没有地图的区域也能实现精确的重新定位,但是漂移将会累积。地图云匹配确保现有地图中的零漂移定位,该模型将在随附的视频中显示。
四。评价
我们使用三个著名的数据集来评估ORB-SLAM2算法的性能。我们在一台配备16G内存和英特尔酷睿i7-4790的台式机上运行,平均处理跟踪时间的帧率低于传感器的帧率。我们将数据集运行五次,取中间值,以消除多线程系统的不确定性。我们开源了数据集运行这些系统的方法,包括校准具体的操作实现。
4.1 KITTI数据集
KITTI数据集包含双目数据,这些数据是从高速公路上行驶的汽车中收集的。这种双目传感器的基线小于54厘米,以10Hz的采样率对1392*512像素进行采样,其中序列00、02、05、06和09包含环。我们的ORB-SLAM2可以检测循环并重用映射。除了09序列,09序列的循环只在最后几帧出现。表1显示了这个结果的11个训练数据,这是一个公开的真实数据。对比原始LSD-SLAM算法,给出了双目SLAM系统的测试数据结果。我们使用两种不同的度量系统,均方根误差在文献[3]中提到,平均相关平移和旋转误差在文献[2]中取值。我们的系统在大多数序列上比双目LSD-SLAM好得多,相关误差可以小于1%。这个序列01,如图3所示,是一个高速公路序列,作为训练集,和转换误差。在这个序列中,转换误差很难评估,因为由于高速和低帧速率,只能检测到几个接近的点。但是这个方向可以精确评估,得到的误差是每100米0.21度。可以检测到许多远点,如图4所示,其中显示了一些评估示例。
表1两种SLAM测试KITT和I数据的准确性比较
图4在KITTE数据集01、05、07和08中,估计轨迹(黑线)和实际运动(红线)
4.2 EuRoC数据集
EuRoC数据集包含11个双目序列,由微型飞行器(MAV)在两个不同的房间和大量工业环境中飞行收集的数据。这种双目传感器的基线小于11厘米,可以提供20HZ WVGA格式的图像。这个序列分为简单,中等和困难,取决于MAV(微型飞行器)的速度,灯光和场景的纹理。在所有序列中,当MAV(微型飞行器)再次访问这个环境时,ORB-SLAM2可以重用地图并检测循环。表2显示了所有序列的ORB-SLAM2的最小均方误差的绝对值变换。比较对侧眼LSD-SLAM的结果。
Or-slam 2可以实现厘米级的精确定位,而且比双目LSD-SLAM还要精确。由于一些运动模糊,跟踪部分可能在V2困难序列中丢失。在第22篇论文中解释的情况下,该序列在处理过程中使用IMU信息,如图5所示,显示了与真实世界相比的估计轨迹的一些示例。
图5在数据集EuRoC V1_02_medium、V2_02_medium、MH_03_medium和MH_05_ medium上的测试结果,其中估计轨迹(黑色)和实际运动轨迹(红色)
4.3 TUM RGB-D数据集
TUM RGB-D数据集包含一些室内序列。在不同的纹理、不同的光照和不同的结构条件下,RGB-D传感器采集的数据可以用来评估物体的重建和SLAM/视觉里程表的性能。像大多数RGB-DSLAM方法一样,我们在序列子集中显示实验结果。在表3中,我们将我们的精度与其他方法进行了比较,如弹性融合、Kintinuous、DVO-SLAM和RGB-DSLAM。ORB-SLAM2是唯一基于束流差的方法,优于其他方法。我们注意到,RGB-DSLAM,深度图对于freiburg2序列有4%的比例误差,误差可能来自错误的校准。我们已经在运行过程中做了一些补偿。这可以部分解释为什么我们取得了好成绩。图6所示的点云结果来自后端绘制的传感器深度图,关键帧的姿态分四个序列计算。实验结果表明,ORB-SLAM2能很好地显示桌子和海报的轮廓,并能进行高精度的重新定位。
图6通过评估关键帧的姿态和深度图,对tumrgb-d数据的fr3office、fr1room、fr2desk和fr3nst序列进行密集点云重建
结论
本文提出了一个完整的基于单目、双目和RGB-D传感器的SLAM框架,可以在实时性和标准CPU的前提下进行重定位、检测环路和重用地图。在实验中,我们关注的是在大场景中建立可用的地图和长期定位。与以前的SLAM方案相比,ORB-SLAM2在大多数情况下表现出相同的准确性。
值得注意的是,我们的RGB-D实现的结果表明,如果相机的定位精度更好,那么BA将优于直接方法或ICP方法,这将减少一些额外的计算。我们已经开放了我们系统的源代码,以及一些示例和指南,以便其他研究人员可以更方便地使用它。未来的方向可能包括测试更多的序列、多视角相机、鱼眼相机或其他全相位相机、大场景的密集重建、联合映射或增加运动模糊的鲁棒性。
参考
[1]R. Mur-Artal、J. M. M. Montiel和J. D. Tardos,“ORB-SLAM:一种多功能和精确的单目SLAM系统”,IEEE机器人学报,第31卷,第5期,第1147-1163页,2015年
[2]https://github . com/Raul mur/ORB _ slam 2
[3]https://www.youtube.com/watch?v=ufvPS5wJAx0 feature=youtu.be
版权归作者所有:原创作品来自博主3D视觉工坊,转载授权请联系作者,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。