传统的视觉惯性SLAM (Simultaneous Localization and Mapping)算法,在弱纹理场景下,往往存在定位精度差甚至失效的问题,本文提出一种基于点和线特征的视觉惯性SLAM算法。该算法以开源的VINS-Mono (Monocular Visual-Inertial Systems)系统为基础,在此基础上增加了线特征,结合点线特征各自独有的特性,并且提出一种新的数据选择策略,减少了因为线特征的加入而增加的计算量,保证了系统的实时性。实验采用开源数据集Euroc,通过与其他开源算法做对比,对本文算法进行评估,实验结果表明了本文算法的有效性。 Traditional visual inertial SLAM (Simultaneous Localization and Mapping) algorithms often have poor localization accuracy or even failure in weak texture scenes. In this paper, a visual inertial SLAM algorithm based on point and line features is proposed. The algorithm is based on the open source VINS-Mono (Monocular Visual-Inertial Systems) system, which adds line features, combines the unique features of point and line features, and proposes a new data selection strategy, which reduces the computational burden caused by line features. The real-time performance of the system is guaranteed. The experiment uses open source data set Euroc and evaluates the algorithm in this paper by comparing it with other open source algorithms. The experimental results show the effectiveness of the algorithm in this paper.
传统的视觉惯性SLAM (Simultaneous Localization and Mapping)算法,在弱纹理场景下,往往存在定位精度差甚至失效的问题,本文提出一种基于点和线特征的视觉惯性SLAM算法。该算法以开源的VINS-Mono (Monocular Visual-Inertial Systems)系统为基础,在此基础上增加了线特征,结合点线特征各自独有的特性,并且提出一种新的数据选择策略,减少了因为线特征的加入而增加的计算量,保证了系统的实时性。实验采用开源数据集Euroc,通过与其他开源算法做对比,对本文算法进行评估,实验结果表明了本文算法的有效性。
机器视觉,弱纹理环境,点线特征,数据选择策略,实时性
Jie Zhang1,2, Dong Pei1,2, Wenhui Gao1,2
1College of Physics and Electronic Engineering, Northwest Normal University, Lanzhou Gansu
2Engineering Research Center of Gansu Province for Intelligent Information Technology and Application, Lanzhou Gansu
Received: Nov. 6th, 2021; accepted: Dec. 6th, 2021; published: Dec. 13th, 2021
Traditional visual inertial SLAM (Simultaneous Localization and Mapping) algorithms often have poor localization accuracy or even failure in weak texture scenes. In this paper, a visual inertial SLAM algorithm based on point and line features is proposed. The algorithm is based on the open source VINS-Mono (Monocular Visual-Inertial Systems) system, which adds line features, combines the unique features of point and line features, and proposes a new data selection strategy, which reduces the computational burden caused by line features. The real-time performance of the system is guaranteed. The experiment uses open source data set Euroc and evaluates the algorithm in this paper by comparing it with other open source algorithms. The experimental results show the effectiveness of the algorithm in this paper.
Keywords:Machine Vision, Low-Texture Environment, Point and Line Feature, Data Selection Strategy, Real-Time
Copyright © 2021 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
视觉惯性系统VINS (Visual-Inertial System),是融合相机和IMU (Inertial Measurement Unit)数据实现SLAM的算法,是机器人领域的一大关键技术。目前已有的视觉惯性SLAM系统,主要采用特征点法进行跟踪,首先从图像中选取特征点,常用的特征点包括著名的PTAM (Parallel Tracking And Mapping) [
以上是目前比较流行的点线结合的SLAM系统,线特征提取大多采用LSD (Line Segment Detector) [
本文SLAM系统共分为四大线程:测量数据预处理、局部视觉–惯性BA与重定位、回环检测和全局位姿图优化,如图1所示。首先对相机和IMU数据经行预处理,包括点线特征的提取与匹配、IMU预积分,得到点线特征和IMU预积分数据后进行数据选择,然后采用基于滑动窗口模型的非线性估计器,根据视觉约束、IMU约束以及回环约束构建联合优化函数并求解出滑动窗口内所有帧间位置、速度、旋转及偏置等,通过DboW词袋模型和BRIEF描述子经行回环检测,建立滑动窗口与回环候选帧之间的链接,最后是为了确保基于重定位的结果,对过去的位姿进行全局一致配置。该系统以开源的VINS-Mono系统架构为基础,在此基础上增加了线特征,并结合点线特征各自独有的特性。本研究将着重阐述关于线特征的主要算法。
图1. 系统框架图
EDLines是一种高效且快速的线段检测算法,无需参数调整只需为所有类型的图像运行一组默认参数即可,是一种快速、无参数的线段检测器,详细原理如下:首先提取边缘,具体分为以下4 步:1)将灰度图通过滤波器进行处理后输出平滑图像;2) 计算图像中各像素的梯度方向、梯度值;3) 将梯度图中梯度值的峰值点设为锚点;4) 连接锚点并绘制成边。
将上一步由锚点连接而成的边缘,利用最小二乘线拟合的方法进行线段的拟合提取,其原理是偏差绝对值之和最小:
min ∑ i = 1 m | δ i | = ∑ i = 1 m | φ ( x i ) − y i | (1)
其中 x i , y i 是像素点坐标, y = φ ( x ) 是近似曲线, δ i = φ ( x i ) − y i 是近似曲线在点 ( x i , y i ) 出的偏差。
得到的线段需要经过评估才能被认定为线段,评估的方法采用Helmholtz原理,通过计算NFA (Number of False Alarms)来确定提取的线段是否有效,具体原理为:对于一段由n个锚点组成的线段,其中k个点的梯度方向与线段的方向垂直,若其NFA计算的结果小于1,则认为线段有效,否则判定为无效线段,将之剔除。
NFA ( n , k ) = N 4 ∑ i = k n p i ( 1 − p ) n − i (2)
由于提取出的线特征存在多种干扰点,最小二乘法拟合直线时,因其需要尽可能包含全部局外点,会造成直线与局内点存在偏差,所以本文使用随机抽样一致性(RANSAC) [
RANSAC算法拟合像素链的步骤如下:首先假定单个需要拟合的像素链中有N个像素点,随机选择两个像素点,通过选择的两个点计算出两点所表示直线的模型方程 y = a x + b 。然后设定阈值T,计算其余 N − 2 个像素点与模型方程的距离,统计出距离小于阈值的点的数量M,将这些点称为内点。最后按以上步骤迭代K次,M值最大时所得到的直线即为目标直线。
图2. 直线拟合算法对比
使用RANSAC算法拟合直线,需要找出合适的算法参数,提高检测的准确度与合理概率。图2所示为一组数据分别使用不同的算法作对比,其中RANSAC的参数设定:模型阈值 T = 2 ;迭代次数 K = 25 。在图2中就可以明显看出直线位置,但最小二乘法生成的结果却是错误的,这是由于图中存在较多局外点,当只有部分的数据符合模型时,最小二乘法拟合作用较差,无法使用,RANSAC算法可以有效解决此弊端。
由于噪声的存在,最小二乘法得到的拟合结果与预期结果相差甚远,使用RANSAC算法在生成的边缘图中拟合直线,减少了局外噪声点对结果产生干扰,在实际SLAM系统中经过多次测试发现,当 T = 3 , K = 28 时直线拟合效果最好,运行效果图如图3所示,图3(a)是改进前的运行效果图,图3(b)是改进后的运行效果图,改进后的EDLines算法,能够剔除低图像梯度的锚点,减少许多无效的短线段,提取出更多有效的长线段。
图3. 实际效果对比
提取到线特征之后要对线特征进行描述并加以匹配。线特征的描述和匹配方法有Zhiheng Wang等人提出的MSLD描述子 [
LBD描述子首先会在线段处建立一个矩形的线段支持域LSR (Line Support Region)。利用条带 { B 1 ; B 1 ; ⋯ ; B m } 形式表示,用m表示LSR条带数目,w表示条带像素宽度。在这个矩形支持域内,定义直线所朝的方向 d L ,与直线方向顺时针垂直的方向 d ⊥ ,这两种方向构成局部2D坐标系,局部坐标系的原点是该线段的中点。将LSR中的每个像素的梯度投影到上述局部坐标系中。
g ′ = ( g T ⋅ d ⊥ , g T ⋅ d L ) T ≜ ( g ′ d ⊥ , g ′ d L ) T (3)
g是图片坐标系中的像素梯度, g ′ 是局部坐标系中的像素梯度。引入全局高斯函数 f g 来缓和在线段垂直方向上微小变化的敏感度,以及引入局部高斯函数 f l 降低边缘效应,避免描述符的突变。计算每个条带 B j 对应的特征向量 B D j ,将所有特征向量合并,形成LBD描述子:
LBD = ( B D 1 T , B D 2 T , ⋯ , B D m T ) T (4)
将 B j 与相邻条带每一行的局部梯度进行分别求和。对于k行,有:
v 1 j k = λ ∑ g ′ d ⊥ > 0 g ′ d ⊥ , v 2 j k = λ ∑ g ′ d ⊥ < 0 g ′ d ⊥ v 3 j k = λ ∑ g ′ d L > 0 g ′ d L , v 4 j k = λ ∑ g ′ d L < 0 g ′ d L (5)
其中, λ = f g ( k ) f l ( k ) 为高斯系数。每行的和放在一起,可以构成 B D j 对应的特征描述矩阵:
B D M j = ( v 1 j 1 v 1 j 2 ⋯ v 1 j n v 2 j 1 v 2 j 2 ⋯ v 2 j n v 3 j 1 v 3 j 2 ⋯ v 3 j n v 4 j 1 v 4 j 2 ⋯ v 4 j n ) ∈ R 4 × n n = { 2 w , j = 1 , m 3 w , else (6)
最后对 B D M j 的均值向量 M j T 和标准方差 S j T 分别进行归一化,得到特征向量:
B D j = ( M j T , S j T ) T ∈ R S (7)
最后得到LBD特征:
LBD = ( M 1 T , S 1 T , M 2 T , S 2 T , ⋯ , M m T , S m T ) T ∈ R S m (8)
线特征的加入,无疑会增大计算量,降低系统实时性。为提高系统的实时性,文献 [
线特征阈值 | 点特征 |
---|---|
20 | >120 |
60 | 50~120 |
100 | <50 |
表1. 新数据选择策略
图4. 改进效果
图4展示了点特征较多和较少,这两种情况下,改进前后的实际运行效果图。其中图4(a)、图4(b)是点特征较多时改进前后效果图,图4(a)是改进前,此时追踪到的点线特征数目较多,但为了系统的实时性,利用数据选择策略,保持点特征阈值不变,减小线特征阈值,因此将减少提取到的线特征,改进后如图4(b)所示;图4(c)、图4(d)是点特征较少时改进前后效果图,图4(c)是改进前,此时图中光线较暗,属于典型弱纹理场景,点线特征较少,此时增大线特征阈值,获得更多的线特征,提高系统精度,改进后如图4(d)所示。利用此策略能够在保证统精度的前提下,同样保证系统实时性。
为了评估本文算法的性能,使用标准视觉惯性数据集Euroc [
测试平台为CPU为Intel i7-8700@3.2 GHz,8 GB内存,系统为ubuntu18.04。
利用SLAM精度评定工具EVO (Evaluation of Odometry),对比内容是多种SLAM算法的均方根误差(Root Mean Square Error, RMSE)与轨迹。轨迹对比如图5所示,以MH-02-easy、V1-02-mdeium、V1-03-difficlut、V2-03-difficlut数据集为例,SLAM算法轨迹与真实轨迹越接近,精度越高,RMSE则选择Euroc全部的数据集,RMSE值越小说明系统的整体定位精度越高。
图5. 运行轨迹图
通过与其他几种算法的轨迹对比,结果如图5所示,本文算法在不同难度数据集上均有良好的表现,由于MH-02-easy这个数据集比较简单,本文算法轨迹与其它3种SLAM算法轨迹基本一致,但是在V1-02-mdeium、V1-03-difficult、V1-03-difficult这三个数据集上,本文算法轨迹与真实轨迹更接近,精度要高于其它3种算法。
数据集 | VINS-Mono | PL-VIO | PL-VINS | Ours |
---|---|---|---|---|
MH_01_easy | 0.1707 | 0.1516 | 0.1415 | 0.1361 |
MH_02_easy | 0.1918 | 0.1732 | 0.1684 | 0.1592 |
MH_03_medium | 0.2257 | 0.1943 | 0.1901 | 0.1823 |
MH_04_difficult | 0.3536 | 0.3154 | 0.2933 | 0.3014 |
MH_05_difficult | 0.3096 | 0.2765 | 0.2684 | 0.2443 |
V1_01_easy | 0.1165 | 0.0912 | 0.0816 | 0.0596 |
V1_02_medium | 0.1361 | 0.1132 | 0.1056 | 0.0893 |
V1_03_difficult | 0.2125 | 0.1913 | 0.1839 | 0.1765 |
V2_01_easy | 0.0983 | 0.0958 | 0.0844 | 0.0731 |
V2_02_medium | 0.1863 | 0.1619 | 0.1511 | 0.1455 |
V2_02_difficult | 0.3134 | 0.2890 | 0.2749 | 0.2681 |
表2. 多种SLAM算法的RMSE对比
表2表明,将使用改进的EDLines算法提取到的线特征整合到视觉惯性里程计中可以有效提高SLAM系统运动估计精度。本文提出视觉惯性SLAM系统,基于改进的EDLines算法,并通过点特征的数量对线特征设置不同阈值,在除MH_04_difficult以外的数据集中都得到了更高的精度。
本文以VINS-Mono为基础,提出了一种点线结合的视觉惯性SLAM系统,在原本点特征的基础上,增加线特征,并对线特征提取算法进行改进,得到了更高的精度,并提出了一种新的数据选择策略,既保证了精度,也保证了系统运行的实时性,解决了传统视觉惯性里程计在弱纹理场景下,由于特征信息缺失,导致定位精度差甚至失效的问题。并在开源视觉惯性数据集EuRoc上的实验结果表明本文算法能够获取更多有效的待匹配线段,提高了线特征匹配的准确度,同时具有很高的实时性,相比其它算法更具优越性。本文只是将线特征加入到后端优化中,基于此研究方向,可以继续改进算法,构建线特征词袋库,将线特征加入回环检测中,进一步提高精度。
首先感谢香港科技大学科研团队开源了VINS-Mono系统,让我学习到了一种非常优秀的视觉惯性SLAM框架,本文就是以VINS-Mono为基础,设计的点线结合的视觉惯性SLAM系统;感谢我的导师,本文是在导师耐心的指导下完成的,每一步都倾注了导师的心血和汗水;感谢所有引用文献的作者,正是他们的文章让我有了新的构思和设想;最后感谢在本文写作过程中所有提供帮助的老师、同学、朋友,是你们的帮助让我顺利完成文章,谢谢你们!
张 杰,裴 东,高文辉. 一种基于点和线的视觉惯性SLAM算法A Point and Line Based Visual Inertial SLAM Algorithm[J]. 计算机科学与应用, 2021, 11(12): 2862-2871. https://doi.org/10.12677/CSA.2021.1112291
https://doi.org/10.1109/ISMAR.2007.4538852
https://doi.org/10.1023/B:VISI.0000029664.99615.94
https://doi.org/10.1016/j.cviu.2007.09.014
https://doi.org/10.1109/ICCV.2011.6126544
https://doi.org/10.1109/ICRA.2017.7989522
https://doi.org/10.1109/TRO.2015.2463671
https://doi.org/10.3390/s18041159
https://doi.org/10.1109/IROS.2016.7759620
https://doi.org/10.1109/ICRA.2014.6906584
https://doi.org/10.1109/TRO.2018.2853729
https://doi.org/10.1109/TPAMI.2008.300
https://doi.org/10.1016/j.patrec.2011.06.001
https://doi.org/10.1016/j.jvcir.2013.05.006
https://doi.org/10.1007/978-3-540-45243-0_31
https://doi.org/10.1177/0278364915620033