针对现有Vins-Mono算法在惯性导航系统(Inertial Navigation System, INS)与视觉组合定位中存在图像特征点提取分布不均匀、特征点匹配准确率低和系统定位精度不高的问题,提出一种改进的Vins-Mono算法。首先,采用四叉树算法划分图像特征点疏密不同的区域,在各个区域内同时进行特征点提取,加快了提取速率;然后,采用RANSAC算法进行特征点匹配,提高了匹配准确率,并结合汉明距离加快了匹配时间;最后,采用LM算法取代高斯牛顿算法,添加信赖区域控制更新步长,提高了系统定位精度。相比于传统Vins-Mono算法,本文算法在特征点提取分布均匀度上提高了54%,在特征点匹配准确率上提高了28.4%,在不同难度数据集上的平均定位精度提高了34%。 Aiming at the problems of the existing Vins-Mono algorithm in combined positioning of Inertial Navigation System (INS) and vision, such as uneven distribution of image feature points extraction, low matching accuracy, and low positioning accuracy, an improved Vins-Mono algorithm is proposed. Firstly, the quadtree algorithm is used to divide regions with different densities of feature points and extract feature points simultaneously in each region to speed up the extraction rate. Then, the RANSAC algorithm is used to match the feature points, which improves the matching accuracy and speeds up the matching time by combining the Hamming distance. Finally, the LM algorithm is used to replace Gauss Newton algorithm, and trust region control is added to update the step size, which improves the positioning accuracy of the system. Compared with the traditional Vins-Mono algorithm, the algorithm in this paper improves the distribution uniformity of feature point extraction by 54%, the accuracy of feature point matching by 28.4%, and the average positioning accuracy on different difficulty datasets by 34%.
针对现有Vins-Mono算法在惯性导航系统(Inertial Navigation System, INS)与视觉组合定位中存在图像特征点提取分布不均匀、特征点匹配准确率低和系统定位精度不高的问题,提出一种改进的Vins-Mono算法。首先,采用四叉树算法划分图像特征点疏密不同的区域,在各个区域内同时进行特征点提取,加快了提取速率;然后,采用RANSAC算法进行特征点匹配,提高了匹配准确率,并结合汉明距离加快了匹配时间;最后,采用LM算法取代高斯牛顿算法,添加信赖区域控制更新步长,提高了系统定位精度。相比于传统Vins-Mono算法,本文算法在特征点提取分布均匀度上提高了54%,在特征点匹配准确率上提高了28.4%,在不同难度数据集上的平均定位精度提高了34%。
改进Vins-Mono,四叉树算法,RANSAC算法,LM算法,组合定位
Hao Wu1, Weige Tao1*, Zhigang Sun2
1School of Electrical and Information Engineering Jiangsu University of Technology, Changzhou Jiangsu
2School of Electrical Engineering and Automation, Harbin Institute of Technology, Harbin Heilongjiang
Received: Apr. 28th, 2024; accepted: May 24th, 2024; published: May 31st, 2024
Aiming at the problems of the existing Vins-Mono algorithm in combined positioning of Inertial Navigation System (INS) and vision, such as uneven distribution of image feature points extraction, low matching accuracy, and low positioning accuracy, an improved Vins-Mono algorithm is proposed. Firstly, the quadtree algorithm is used to divide regions with different densities of feature points and extract feature points simultaneously in each region to speed up the extraction rate. Then, the RANSAC algorithm is used to match the feature points, which improves the matching accuracy and speeds up the matching time by combining the Hamming distance. Finally, the LM algorithm is used to replace Gauss Newton algorithm, and trust region control is added to update the step size, which improves the positioning accuracy of the system. Compared with the traditional Vins-Mono algorithm, the algorithm in this paper improves the distribution uniformity of feature point extraction by 54%, the accuracy of feature point matching by 28.4%, and the average positioning accuracy on different difficulty datasets by 34%.
Keywords:Improved Vins-Mono, Quadtree Algorithm, RANSAC Alogrithm, LM Alogrithm, Combined Location
Copyright © 2024 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/
随着自动驾驶技术的兴起,人们对定位精度的要求越来越高。传统的定位方法依靠全球卫星导航系统(Global Navigation Satellite System, GNSS)和惯性导航系统(Inertial Navigation System, INS),二者组合后能弥补各自不足,可以满足大多数场景下的定位精度要求。然而,处于封闭环境下,GNSS信号受到屏蔽,组合定位系统退化为单一INS,误差会随时间累积,无法长时间高精度定位。由于相机成本低、体积小、受封闭环境影响小等优点,利用视觉进行定位的视觉里程计技术得到了快速发展,视觉里程计和INS组合后的视觉–惯性里程计系统抗干扰性强,定位精度高,成为当下研究热点。
Leutenegger [
Vins-Mono算法中对图像特征点提取、匹配采用的是ORB算法和汉明距离,存在特征点提取不均匀、匹配准确率低的问题。季莘翔 [
文本针对Vins-Mono算法中存在图像特征点提取不均匀、匹配准确率低、定位精度低等问题,提出了一种改进的INS/视觉组合定位方法。主要从上述三个方面进行改进,在特征点提取中引入四叉树算法,改善特征点提取后不均匀的情况;采用RANSAC算法进行特征点匹配,提高匹配正确率,并结合汉明距离加快了匹配时间;使用LM优化算法提高了系统定位精度。
Vins-Mono算法结构 [
图1. Vins-Mono结构图
输入端通过相机采集图片,前端视觉里程计接受到图片后,采用ORB算法对图像进行特征点提取,以汉明距离作为阈值,匹配出连续两帧图像中相同的特征点,根据匹配后的特征点的像素坐标变化,采用对极几何算法估计出相机实际中的位姿变化。前端视觉里程计完成对相机位姿估计后进入回环检测模块,基于词袋模型判断采集的图像帧是否为关键帧,如果连续的图像帧都是关键帧,则触发了轨迹回环,将作为约束条件引入到后端非线性优化中。在后端非线性优化中,INS通过惯性测量单元获取数据,将IMU数据进行预积分处理减少计算冗余,根据前端视觉里程计中相机位姿的变化结果、IMU预积分解算结果和回环检测的约束条件,以紧耦合的方式构建目标函数,再通过高斯牛顿算法进行优化,最后将优化后的位姿结果输出。
针对传统Vins-Mono算法中存在图像特征点提取不均匀、特征点匹配准确率低和定位精度不高的问题,本文分别在前端视觉里程计中的特征点提取、特征点匹配和后端非线性优化中的优化环节进行了改进。
Vins-Mono算法中特征点提取采用了ORB算法,ORB算法将FAST关键点BRIEF描述子结合。FAST关键点是比较像素间的差异得出来的点 [
不经处理提取出的特征点在整个图像中会出现“扎堆”现象,特征点冗余度过高加大了计算量,降低了系统定位精度,因此本文引入四叉树算法 [
图2. 四叉树ORB算法流程图
Vins-Mono算法中特征点通过设置汉明距离的阈值并将计算结果与之比较来进行匹配,设连续两帧图像特征点集合为 { m 1 , m 2 , ⋯ } 、 { n 1 , n 2 , ⋯ } ,将特征点二进制描述子不同位的数量作为汉明距离,汉明距离 D ( k 1 , k 2 ) 反应了特征点间的相似关系,该算法的评价指标单一且计算量大,匹配的准确率低,汉明距离的具体表达式为:
D ( k 1 , k 2 ) = ∑ i = 1 n x i ⊕ y i (1)
本文采用结合汉明距离的RANSAC算法。RANSAC [
s = ln ( 1 − p ) ln ( 1 − α n ) (2)
其中, α 表示外点的比例, p 表示置信度。为了抑制因误差而导致迭代次数过大,收敛过程耗时较长的情况。将两倍的汉明距离作为约束条件,提前对特征点进行质量排序,每次迭代只在高质量特征点中进行模型估计,大大提高了匹配的准确性和速度。
Vins-Mono算法在后端优化中,非线性优化算法采用高斯牛顿算法。紧耦合将视觉的残差项和IMU预积分残差项组合作为目标函数:
T arg e t = arg min ( E p r o j + E I N S ) (3)
视觉重投影误差指的是相机观测得到的投影位置与按估计位姿变换得到的投影之间的像素误差,IMU预积分误差主要由零偏引起的测量值与观测值的误差,将其目标函数简写为 f ( x ) ,高斯牛顿法将其进行一节泰勒展开:
f ( x + Δ x ) ≈ f ( x ) + J ( x ) Δ x (4)
其中, J ( x ) 是 f ( x ) 关于x的导数,即雅克比矩阵,为了求 Δ x 使得 ‖ f ( x + Δ x ) 2 ‖ 达到最小,构建一个线性的最小二乘方程:
Δ x * = arg min Δ x 1 2 ‖ f ( x ) + J ( x ) Δ x ‖ 2 = 1 2 ( f ( x ) + J ( x ) Δ x ) T ( f ( x ) + J ( x ) Δ x ) = 1 2 ( ‖ f ( x ) ‖ 2 + 2 f ( x ) T J ( x ) Δ x + Δ x T J ( x ) T J ( x ) Δ x ) (5)
将上式对 Δ x 求导,令导数为零,则:
2 J ( x ) T f ( x ) + 2 J ( x ) T J ( x ) Δ x = 0 J ( x ) T J ( x ) Δ x = − J ( x ) T f ( x ) (6)
把左边系数定义为H,右边定义为g,则上式为:
H Δ x = g (7)
高斯牛顿法用J矩阵的转置乘以J矩阵作为牛顿法中二阶H矩阵的近似,从而省略了计算H矩阵的过程。而实际计算中,J矩阵的转置乘以J矩阵并非是正定的,会出现奇异值,即使H非奇异值,如果求得的 Δ x 非常大,也会导致局部近似不够准确,不能保证收敛,还有可能让目标函数更大,导致系统的定位精度降低,因此本文采用LM算法取代高斯牛顿法。
LM算法 [
min Δ x k 1 2 ‖ f ( x k ) + J ( x k ) Δ x k ‖ 2 , s . t . ‖ D Δ x k ‖ 2 ≤ u (8)
上式为带不等式约束条件的优化问题,采用拉格朗日法将其转化为一个无条件约束的问题:
min Δ x k 1 2 ‖ f ( x k ) + J ( x k ) Δ x k ‖ 2 + 1 2 λ ‖ D Δ x k ‖ 2 (9)
上式中对左半边和右半边分别对 Δ x 求梯度,则有:
( H + λ D T D ) Δ x = g (10)
相比于高斯牛顿算法,LM算法多了一个阻尼系数 λ , D T D 可简写为单位矩阵I,当 λ > 0 时, ( H + λ I )
正定,保证了梯度下降的方向;当 λ 很大时, Δ x ≈ 1 λ g 也是最速下降方向,当 λ 较小时,LM算法接近
于高斯牛顿算法。利用增益p来选取阻尼系数,p的表达式为:
p = f ( x + Δ x ) − f ( x ) J ( x ) Δ x (11)
当p变大时,则说明实际目标函数变化超过了预期变化,此时应当减小 λ ,反之则提高 λ 。信赖半径u的变化与p的变化呈正相关,由此控制更新步长,加快目标函数的收敛速度,使得系统的定位精度更高。
本文的实验运行环境为Ubuntu18.04,CPU为Intel (R) Core (TM) i5-11400H。用于实验验证的数据集为EuRoc,EuRoc数据集通过无人机在特定室内场景采集完成,包含了多种场景下的轨迹信息和图像,能有效验证算法的可靠性。
为验证本文图像特征点提取算法的有效性,选取EuRoc数据集中一组连续图像,图像1和图像2是同一场景下的连续图像。将运用本文算法提取的特征点结果与运用传统ORB算法的结果进行对比。
从图3、图4可以看出,每种算法在连续帧中提取的特征点数量都一致,两种算法特征点提取的准确性得到验证。本文算法由于引入四叉树分割法,提高了特征点提取的质量,在图像1和图像2中提取到的特征点数量为134,而ORB算法在两张图像中提取到的特征点数量为500。本文算法的提取速度分别为0.48 s、0.52 s,ORB算法的提取速度为0.47 s、0.53 s,由于四叉树最大分裂次数为4,所以本文算法的提取速度没有收到影响,二者相差不大。
图3(b)、图4(b)可以看出,图像里红框中提取出的特征点出现了“扎堆”现象,这会影响后续对相机位姿的估计,加大了计算量容易造成系统定位精度的降低,本文采用分布均匀度U [
U = 101 log ( v ) (12)
其中,v为区域统计分布向量的方差,区域统计分布向量指各区域特征点数量值形成的向量。在特征点提取准确性得到保证的前提下,U值越小说明提取特征点分布性越好,从图3、图4可以看出,本文算法计算出的分布均匀度为141、144,ORB算法计算出的分布均匀度为311、313,证明本文算法在提取特征点的分布均匀度上提高了54%。
图3. 图像1特征点提取结果对比图
图4. 图像2特征点提取结果对比图
为了直观感受本文特征点匹配算法的有效性,将4.1中图像1和图像2采用ORB算法提取后分别用本文特征点匹配算法和汉明距离匹配算法进行对比,两种算法的匹配结果如表1所示。
算法 | 匹配时间 | 总匹配点数 | 正确匹配点数 | 准确率 |
---|---|---|---|---|
汉明距离 | 0.042 s | 500 | 287 | 57.4% |
本文算法 | 0.034 s | 500 | 429 | 85.8% |
表1. 两种算法匹配结果
表1可以看出,本文采用的RANSAC算法在结合汉明距离后,加快了匹配时间,用两倍汉明距离作为阈值,减少了冗余匹配且RANSAC算法在不断迭代过程中,提高了匹配的准确率,本文算法匹配的准确率为85.8%,比只采用汉明距离的匹配算法提高了28.4%。两种算法匹配的结果如图5所示。
图5. 两种算法特征点匹配结果对比图
本文采用LM算法取代了原Vins-Mono中的高斯牛顿算法,对目标函数进行非线性优化,并结合4.1和4.2的改进,在EuRoc中不同场景下的数据集与原Vins-Mono算法进行对比,场景选为实验室(MH)和工厂(VH)且分别选取两种场景内不同难度的数据集进行验证,两种算法在不同场景下的不同难度上数据集的轨迹对比如图6、图7所示。
图6. 实验室环境下两种难度轨迹对比图
图7. 工厂环境下两种难度轨迹对比图
从图6和图7看出,本文改进后的Vins-Mono算法在不同数据集上的轨迹更加接近真实值,图中红框中可以看出,在部分轨迹段传统Vins-Mono算法出现了明显的轨迹漂移,而本文改进后算法的定位精度更高
为了进一步量化本文算法的定位精度,选择均方根误差(RMSE) [
数据集 | VINS-Mono | 本文算法 |
---|---|---|
MH_01_easy | 0.070 | 0.046 |
MH_03_medium | 0.068 | 0.039 |
VH_01_easy | 0.087 | 0.045 |
VH_02_medium | 0.073 | 0.064 |
表2. 不同数据集定位精度对比
从表2可以看出,本文算法在不同难度数据集上的定位精度分别提高了34%、42%、48%、12%,平均定位精度提高了34%,验证了本文改进算法在INS/视觉组合定位中的有效性。
本文针对现有Vins-Mono算法在INS/视觉组合定位中,存在图像特征点提取不均匀、匹配准确率低、定位精度不高的问题,提出了一种改进的Vins-Mono算法。在EuRoc公开数据集上进行验证,采用基于四叉树法的ORB特征点提取算法,使得特征点分布均匀化,将RANSAC算法结合汉明距离进行特征点匹配,提高了匹配的准确性,将Vins-Mono算法后端优化中原高斯牛顿法替换为LM算法,提高了定位精度。实验结果表明,改进后的Vins-Mono算法在图像特征点提取均匀度上提高了54%、特征点匹配准确率上提高了28.4%、不同难度数据集上的平均定位精度提高了34%,验证了本文改进算法在INS/视觉组合定位中的有效性。
常州市5G+工业互联网融合应用重点实验室(CM20223015)。
吴 浩,陶为戈,孙志刚. 基于改进Vins-Mono的INS/视觉组合定位方法研究Research on INS/Vision Combination Localization Method Based on Improved Vins-Mono[J]. 计算机科学与应用, 2024, 14(05): 255-264. https://doi.org/10.12677/csa.2024.145134
https://doi.org/10.1109/TRO.2018.2853729
https://doi.org/10.1007/s12518-022-00471-x
https://doi.org/10.1080/15435075.2023.2242926