视觉同步定位与映射(SLAM)是机器人领域的研究热点之一。传统的基于点特征的定位方法存在点特征不足、运动抖动、低纹理场景定位精度低等问题,影响了算法的性能。在本文中,我们提出了一个RGB-D SLAM系统来处理这些情况,它被命名为点线融合(PLF)-SLAM。我们在整个工作过程中同时使用点和线段。具体而言,我们提出了一种新的线段提取方法来解决线段重叠或分支问题,然后在线匹配部分提出了更严格的筛选机制。我们引入点和线的重投影误差来获得更准确的跟踪姿态,而不是仅仅最小化点的重投影误差。此外,我们提出了一个解决抖动帧的解决方案,极大地提高了系统的跟踪成功率和可用性。此外,我们还提出了一种处理抖动帧的方案,大大提高了系统的跟踪成功率和可用性。我们在慕尼黑工业大学(TUM) RGB-D基准测试上彻底评估了我们的系统,并将其与ORB-SLAM2(可能是当前最先进的解决方案)进行了比较。实验表明,与ORB-SLAM2相比,我们的系统具有更好的精度和鲁棒性。


Introduction

视觉里程计是通过分析相关的相机图像来确定机器人的位置和方向的过程。它已广泛用于各种机器人应用。根据原理的不同,主要有基于特征的方法和直接方法,如Engel等人提出的线段检测器(line segment detector, LSD)-SLAM,8采用直接方法,而不是基于特征点的BA,可以构建大规模的半密集地图。该方法在标准的中央处理器(CPU)上实现了半密集场景的重建,不需要图形处理器(GPU)的加速,保证了最终的稳定性和实时性,但仍然需要依靠特征点方法进行回环检测。由于直接法对光照极其敏感,且难以满足灰度不变的强假设,基于特征的SLAM研究成为当前研究的热点。近年来,基于优化的方法层出不穷,因为与基于过滤的方法相比,基于优化的方法在每个计算单元上的精度更高。第一个实时应用是Mouragnon等人的视觉里程计工作11,随后是Klein和Murray12开创性的SLAM工作,称为并行跟踪和映射。

许多算法可以只用单目相机执行。然而,深度信息不能直接观测到,这导致了尺度的缺乏。此外,生成初始图需要多视图或滤波技术,单纯的旋转问题无法有效解决。近年来推出了各种低价深度相机,如微软的Kinect,13英特尔的RealSense,14和华硕的Xtion,弥补了单目SLAM所带来的缺陷。15值得注意的是,基于点的SLAM系统经常不能正常工作,甚至导致在低纹理或运动抖动的场景中难以找到足够的关键点特征。然而,除了点形状之外,还有平面元素,它们在线性形状和基于对象的形状方面非常丰富,尤其是前者,即使在白墙、走廊边缘等低纹理场景中也是如此。

在这项工作中,我们提出了一种点-线融合方法来处理RGB-D SLAM中的弱匹配目标,在特征提取部分加入线特征。针对LSD17算法存在的重叠和分支问题,设计了一种自适应线提取方法,提高了线特征的可靠性。通过最小化点线重投影误差来优化摄像机姿态。此外,我们建立了运动抖动序列的优化机制,可以有效地提高跟踪成功率,间接提高跟踪精度。与基于点的SLAM相比,PLF-SLAM的精度和鲁棒性都有很大提高。

本文的其余部分组织如下。第二节讨论了相关工作,第三节给出了我们的详细建议,第四节详细介绍了实验结果,第五节给出了结论和未来的工作。


Related work

Newcombe等人提出的KinectFusion算法18将传感器测量的深度信息合并,并使用迭代最近点19 (ICP)计算相机姿态。由于缺乏回环检测,它通常应用于小型工作场所。Endres等人20提出使用ICP算法计算帧间运动,并在后端使用基于优化的方法。Kerl等21提出了一种密集的vSLAM方法,该方法将所有像素的光度和深度误差都最小化,与基于特征的方法相比,可以更好地利用图像中可用的信息。Whelan等人22提出的ElasticFusion算法是一种基于深度相机的高密度三维重建,结合了重定位,适用于房间大小的场景。Raul等人在之前工作的基础上提出了Oriented FAST和rotational BRIEF (ORB)SLAM2 23,24整个系统是围绕ORB特征构建的,25包括视觉距离测量和闭环视觉词汇。虽然Scale Invariant Feature Transform (SIFT)26和accelerated Up Robust features (SURF)27等特征在质量上优于ORB,但其耗时难以满足vSLAM的实时性要求,且需要GPU加速。与Harris相比,28 ORB具有良好的旋转不变性,可以利用金字塔实现尺度不变性。系统还增加了闭环机制,可以有效地防止误差在回路中积累。Gomez-Ojeda等人29提出了一种基于立体摄像机的vSLAM方法,该方法将点和线段结合起来,适用于更大范围的场景,特别是点特征稀缺或分布不均匀的场景。Pumarola等人30提出了一种基于单目摄像机的视觉SLAM,通过同时处理点和线,提高了系统的鲁棒性。此外,它还可以通过处理连续三帧的线条来完成地图的初始化。Rafael Grompone等人提出的LSD算法可以在线性时间内获得亚像素级精度的检测结果,可以适用于任何数字图像,无需调试参数。其变换提取速度远快于霍夫速度,具有较强的鲁棒性。与平均-标准差线描述子(MSLD)31描述子相比,Zhang等人32提出的线带描述子(LBD)算法增加了权重系数,速度快,鲁棒性好。


PLF-based vSLAM

我们的工作基于ORB-SLAM2,该算法由三个并行运行的线程组成:跟踪、局部映射和回环检测。在跟踪线程中,分别利用点特征和线特征对相机姿态进行合理权重估计和优化。图1显示了跟踪线程的流程图。

 Adaptive line segment extraction

特征提取所需的时间在整个算法中占有很大的比重。高效的特征提取方法是保证SLAM系统实时性的前提。LSD17是线性时间LSD,它比霍夫变换方法快得多,而且不需要参数调优。然而,与提取ORB特征相比,LSD方法提取直线特征的时间要长2 ~ 3倍,这将极大地影响算法的实时性。提取的部分线路冗余无用,可靠性较低。我们提出了一种新的基于LSD的线段提取方法,并定义了如下的线段响应值函数

 其中sp、ep为提取的线段的两个端点,L、W分别为图像帧的长度和宽度。

通过设置自适应阈值,剔除响应值小于er的线段,提高提取速度。LSD方法检测到的线段往往存在重叠或子线段等问题,如图2所示。

其中,图2(a)为原始样本,图2(b)为原始算法提取的线段,图2(c)为图2(b)的放大结果。地板上的线段被错误地认为是两个或多个线段的重叠,这种错误在大多数帧中都会发生,这会影响匹配的可靠性。因此,我们针对这一缺陷提出了一种改进的方法,通过适当的条件对重叠线段进行合并。首先,将上述情况抽象为一个几何问题,如图3所示

 

 在图3中,d1为直线l1中点到直线l2的距离,我们定义线段合并的条件如下:

 两线段夹角应小于e1,其中Dir(l)为线段方向角函数,e1为角度经验阈值;e2是线l1中点到线l2的最小距离阈值。在满足式(2)后,对于情形(a), l1中的一个端点的横坐标或纵坐标必须位于l2的两个端点之间,即

 其中x和y分别为线段端点的横坐标和纵坐标。对于情形(b),端点b到c的最短距离小于经验阈值dmin,即。

 如上所述,如果提取的线段满足上述条件,则进行线段合并。提出了线段合并的最小二乘法,并根据给定的线段生成二维点集

 假设合并后的直线l12的近似直线函数为y12=φ12(x)。为了使偏差的平方和最小化。偏差公式如下

 让拟合公式不变

 则偏差平方和如下

 分别计算a和b的偏导数,得到联立方程

 最后对上述公式进行求解,得到合并线段的线性函数。

Line matching method

可以通过比较LBD描述符的相似性来匹配线特征。常用的特征匹配方法包括暴力匹配(BFM)算法和快速近似近邻库(FLANN)算法。FLANN在低纹理场景跟踪时容易导致匹配失败,因此我们在工作中使用BFM。

与点特征相比,BFM算法在匹配线特征时的错误率更高。主要原因如下:

(a)匹配线相似度低,部分匹配错误。

(b)由于图像边缘部分的线特征在图像中往往只是部分匹配,难以用于后续的姿态估计。

(c)在低纹理场景中,提取的线特征不够可靠。

因此,我们对BFM算法提取的线特征进行过滤,剔除不准确的匹配。所有匹配对需要通过以下条件进行过滤(图4):

 (a)

由于相邻两帧之间的运动很小,提取的线段角度变化不大。当匹配的线段方向角之差大于e1,l2时,视为不匹配。

(b)

 

 其中Len为检测到的线段在图像帧中的长度。即使在匹配正确的情况下,LSD方法提取的线特征也不是绝对相等的。当两条线的长度差超过一定范围时,消除匹配对,以保证后期姿态估计的准确性。

 

(c)针对边缘线特征经常部分缺失的问题,提出了一种去除边缘特征线匹配对的方法。将图像周围的狭窄区域划分为边缘区域,当匹配线的端点落在该区域内时,将该线特征归类为边缘特征并丢弃。

此外,上述的线特征通过比较LBD描述子之间的汉明距离来比较相似度,并通过BFM得到最小描述符距离。在此基础上,当最小描述符距离超过一定范围时,匹配的线将被丢弃。

Point-line reprojection error

相机姿态的优化首先需要找到点和线的误差模型。误差模型的变量是相机姿态和特征的空间坐标。通过最小化点线重投影误差来计算相机姿态。在我们的工作中,使用空间线投影的两个端点与图像中检测到的线段之间的距离作为重投影误差。

如图5所示,设P,Q∈R3为线段的三维端点,pd,qd∈R2为它们检测到的二维端点。对于归一化,设p~d,q~d∈R3为它们对应的齐次坐标。由上可定义归一化线系数为

 在得到归一化线系数后,我们将P与检测到的二维线段l之间的点线误差Epl定义为pd到l的距离

 式中,π(θ,P)表示P在图像中的投影,θ表示相机姿态的旋转矩阵R和平移向量t。然后将直线重投影误差El定义为点直线误差Epl的和

 由于视觉里程计中获得的相机姿态存在累积误差,且噪声无法消除,因此图像上的三维点和线的投影必然与图像上检测到的点和线不同,因此我们定义如下误差公式

其中i是第i个线特征,j是第j个点特征,li根据每个线特征的响应值进行动态调整。在我们的工作中,上述误差公式被用来构建点线误差的综合模型,通过最小化误差来寻找最优相机姿态。算法1提供了整个算法的伪代码。

 

Motion jittering

在跟踪过程中,相机经常快速移动或晃动,导致图像模糊。如图6所示,容易导致特征匹配失败,最终跟踪将丢失。跟踪损失需要重新定位以进行调整。如果丢失后重定位失败,将导致跟踪失败。跟踪丢失的主要原因是图像纹理不明显或由于运动抖动而特征差异过大,使得无法正确匹配。以上情况有两种解决方案:

(a)在获得模糊核的前提下,将抖动图像进行线性卷积,使原始模糊图像更加清晰,但模糊核的计算是一个主要难点。

(b)利用高斯滤波器对摄像机捕获的图像进行处理,可以减少相邻图像之间的差异,有效提高特征匹配的成功率。这一特性可以有效降低跟踪丢失的概率。

本文提出了一种自动选择运动模糊图像的方法。在跟踪中,我们对当前图像和下一张图像的特征进行预匹配,提前计算出跟踪的成功率。当两幅图像的匹配程度低于给定阈值时,使用高斯模糊来降低图像的噪声和细节,从而减小两幅图像之间的差异,提高后期的匹配成功率。

当模糊核的大小在一定范围内增加时,图像的模糊程度也会增加,因此特征匹配的次数也会增加。但超过这个范围,相邻图像之间的差值就会大于原始图像,导致匹配失败。我们在算法2中提出了以下改进方法

算法2:运动抖动过程

1:设置匹配成功经验值ρ,由多次特征匹配实验得出;

2:同时提取当前帧的点特征和下一帧的ORB特征点;

3:当前帧与下一帧之间的预匹配特征,获取预匹配数;

4:当匹配数小于ρ时,用模糊半径为3x3的模糊核修改当前帧,同时用5x5的模糊核修改下一帧,然后继续跟踪任务;

5:当匹配次数大于ρ时,保持原始图像不变,然后继续跟踪任务。

通过对上述方法的改进,明显提高了跟踪成功率,间接降低了姿态估计误差,提高了SLAM系统的鲁棒性。


Experiments and results

我们在慕尼黑工业大学(TUM)34数据集上实验并评估了我们的方法的性能,该数据集提供了几个图像序列,这些图像序列具有外部运动捕捉系统获得的准确的地面真相。这些图像序列还包括特定场景,如正常运动,快速运动,低纹理,无结构等。为了降低SLAM的运行成本,我们在一台使用Intel酷睿i5 (@2.6 GHZ)处理器和8gb RAM的计算机上进行了实验。

Tracking accuracy

SLAM系统性能的评价主要包括定位精度和映射精度,映射精度主要依赖于定位精度。因此,本文主要关注算法的定位精度。为了验证该方法的有效性和优越性,我们将其与ORB-SLAM2进行了比较。

在本文中,我们选择不同类型的图像序列,对每个序列进行多组相同的实验,然后取平均值,以避免偶然性。最后,我们计算估计姿态和真实姿态之间的均方根误差(RMSE)。我们得到这些RMSE数据的平均值,以便有效地比较结果。选取fr1/360、fr1/desk等多种图像序列作为实验对比序列,与ORB-SLAM2进行对比。结果如表1所示。

表1给出了不同方法分别跟踪上述数据集序列的绝对轨迹误差结果。从实验结果可以看出,在大多数数据集中,我们的方法得到的RMSE数据都不同程度地低于ORB-SLAM2。

 

如图7(a)和(b)所示,PLF-SLAM在fr1/room序列上的跟踪结果明显优于ORB-SLAM2,这得益于本文提出的自适应线段提取方法。当点特征数量不足时,可以同时提取直线特征参与跟踪,弥补了点特征的不足。

 

此外,我们还将我们的方法与基于ORBSLAM2的原始LSD方法进行了比较。从表中的实验数据可以看出,当我们在本文中使用自适应线段提取方法时,大部分轨迹误差明显减小,姿态估计更加准确。原因是原LSD方法提取的线特征存在重叠、分割等一系列情况。使得相邻图像之间提取的线特征差异较大,导致匹配效果较差。在我们的工作中,我们处理了重叠和分割,在匹配中施加了更严格的条件,使得线条匹配更加可靠,为后端优化奠定了良好的基础。

Motion jitter evaluation

在第二部分中,当相机快速抖动时,由于运动模糊问题,拍摄的图像往往会影响特征匹配,因此在跟踪过程中很难计算当前帧与下一帧之间的相机姿态。当这种情况发生时,我们需要执行重新定位的方法来找到相机的姿势,否则,整个跟踪过程将失败。

当对上述TUM序列进行测试时,发现多组序列中存在不同程度的运动抖动。在fr1/desk序列中,ORB-SLAM2通常在第170和171幅图像中出现跟踪丢失。原因是由于相机的快速抖动导致前一幅图像的图像漂移,并且当前帧与下一帧之间的差异太大,以至于没有足够的匹配对,导致跟踪失败。虽然通过重新定位可以恢复相机姿态,但是会丢失之前的轨迹,这将不可避免地增加整体轨迹误差,fr2/large_loop序列也是如此。

我们找到了两幅引起跟踪损失的序列图像,然后分别提取和匹配特征。我们发现很少有有效的匹配。例如,在fr1/desk序列中,抖动帧的匹配只有76个,很难满足跟踪的需要。采用该方法后,匹配数量增加到117对,匹配成功率明显提高。这是由于抖动图像的优化。当匹配足够时,跟踪成功率将大大提高。

图8显示了fr1/ desk序列中两幅图像的匹配,其中(a)为处理前的匹配图像,(b)为处理后的匹配图像。很容易发现,该方法处理后的特征匹配效果更好

 

图9(a)显示了ORB-SLAM2中估计轨迹与实际轨迹的对比。我们可以发现红色矩形框内的跟踪已经丢失。图9(b)显示了PLF-SLAM中估计轨迹与实际轨迹的比较。可以看出,该方法在该序列中的跟踪效果明显优于前者。

表2给出了两种方法在跟踪成功率上的比较,其中包括多组跟踪良好和跟踪不良的图像序列。从表中可以看出,我们的方法对大多数图像序列都有很好的跟踪效果。与ORB-SLAM2相比,跟踪成功率有一定提高。这证明我们的方法在一定程度上提高了slam系统的鲁棒性。

 


Conclusion

提出了一种基于深度相机的点线融合SLAM方法。针对低纹理环境下基于点特征的SLAM的不可靠性问题,提出了一种新的线段提取与匹配方法,解决了原LSD方法存在的重叠和分支问题,提高了线匹配的可靠性和鲁棒性。针对跟踪中经常遇到的运动抖动问题,提出了一种自主选择和优化运动抖动帧的方法,大大提高了跟踪的成功率,并且该方法不需要额外的传感器支持。我们在TUM数据集上进行了多次实验评估,大部分实验结果与ORB-SLAM2相比有了很大的提高。我们对带有运动模糊的图像序列进行了具体的验证,实验结果证明了本文的观点。实验结果验证了该方法的合理性和有效性。在未来,我们将通过检测当前跟踪环境来选择何时加入线特征估计来优化跟踪过程并提高所提出方法的实时性。此外,我们将结合深度传感器实时构建密集点云地图,并进一步构建基于八叉树的网格地图,增强地图的直观性和可重用性,为后续导航工作和其他相应工作提供支持。

Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐