舰船科学技术  2022, Vol. 44 Issue (5): 65-69    DOI: 10.3404/j.issn.1672-7649.2022.05.013   PDF    
基于单目直接法的水下视觉惯性里程计方法
赵洪全1,2,3,4, 徐会希1,2,3     
1. 中国科学院沈阳自动化研究所 机器人学国家重点研究室,辽宁 沈阳 110169;
2. 中国科学院机器人与智能制造创新研究院,辽宁 沈阳 110169;
3. 辽宁省水下机器人重点实验室,辽宁 沈阳 110169;
4. 中国科学院大学,北京 100049
摘要: 为将视觉惯性里程计(VIO)有效地应用到水下场景中,提出一种适用于自主水下机器人(AUV)执行近距离作业任务时的水下VIO。针对水下环境中缺乏角点以及存在大量重复特征的特点,该系统在视觉部分使用了基于直接法的数据关联方式,在特征点提取过程中将像素点的梯度模作为特征提取的标准;为保证提取出足够多且有效的特征点,采用动态调整特征点提取数量和提取阈值的方法。此外,通过最小化光度误差对视觉状态量进行估计。在AQUALOC数据集上的实验表明,本系统采用的直接法在比较恶劣的水下环境中获得了比ORB-SLAM3更高的定位精度,并可构造出相对稠密的地图。
关键词: 自主水下机器人     水下定位     视觉惯性里程计     单目直接法    
Underwater visual-inertial odometry based on monocular direct method
ZHAO Hong-quan1,2,3,4, XU Hui-xi1,2,3     
1. State Key Laboratory of Robotics, Shenyang Institute of Automation, Chinese Academy of Sciences, Shenyang 110016, China;
2. Institutes for Robotics and Intelligent Manufacturing, Chinese Academy of Sciences, Shenyang 110016, China;
3. Key Laboratory of Marine Robotics of Liaoning Province, Shenyang 110169, China;
4. University of Chinese Academy of Sciences, Beijing 100049, China
Abstract: In order to effectively apply visual-inertial odometry (VIO) to underwater scene, this paper proposes a visual-inertial odometry system which is suitable for autonomous underwater vehicle (AUV) to perform close range tasks. In view of the lack of corner points and the existence of a large number of repeated features in the underwater environment, a data association method based on direct method is used, which takes the gradient modulus of pixels as the standard of feature extraction. In order to extract enough effective feature points, the method of dynamically adjusting the number of feature points and the threshold of feature points extraction is adopted. In addition, the visual state is estimated by minimizing the photometric error. The experimental results on AQUALOC dataset demonstrate that the direct method adopted by this proposed system has higher localization accuracy than ORB-SLAM3 in a relatively harsh underwater environment, and can construct a relatively dense map.
Key words: autonomous underwater vehicle     underwater localization     visual-inertial odometry     monocular direct method    
0 引 言

自主性是自主水下机器人(autonomous underwater vehicle,AUV)一个很重要的特征[1],而强大的自主定位能力是实现AUV完全自主运动能力的关键。当AUV执行水下对接、水下设备检查等近距离作业任务时,要求有更高的定位精度,而基于视觉传感器与IMU融合的视觉惯性里程计(visual-inertial odometry,VIO)[2]比传统的水下自主定位方式会有更大的优势。

VIO是同时定位与地图构建方法(simultaneous localization and mapping,SLAM)[3-4]的主要组成部分,是目前移动机器人领域的一个研究热点。VIO系统根据图像间运动的推算方法可分为特征点法和直接法。特征点法,如VINS-Mono[5],ORB-SLAM3 [6]等是目前VIO系统的主流方法,它需要提取图像中的角点,并进行特征描述子的计算和图像间角点的匹配,之后通过最小化重投影误差对相机位姿和路标点的坐标值进行估计[7],该方法有效使用的前提是图像中有大量代表性的角点。直接法,如VI-DSO[8]等,基于连续图像间灰度不变的假设,通过最小化光度误差来估算系统的运动状态,该方法不需要计算特征描述子,同时不要求严格的角点匹配,只要图像中存在明显的梯度该方法就可以工作,所以直接法可以应用在缺乏角点、存在大量重复纹理的场景中。

目前,对VIO系统的研究与应用主要集中在陆上环境,并且已经取得了一定的进展,而对水下VIO系统的研究相对较少,其主要原因在于VIO系统在水下场景中的应用存在一些局限性,比如水下是一个弱纹理环境,缺乏明显的角点,存在大量重复纹理,同时视觉传感器在水中的作用范围有限等。针对这些问题,从提高水下VIO系统在复杂水下环境中运行的精度和可靠性出发,对基于直接法的水下VIO系统进行研究。

1 针对水下场景特征点的提取方法

相机拍摄的水下图像如图1所示,可看出水下图像通常有较严重的模糊问题,并且图像中存在较多的一种视觉特征是重复性的纹理,而十分明显的角点较少。由于基于特征点法的VIO系统需要依靠图像中明显的角点进行数据关联,当在水下图像中提取不到足够多有效的角点时,该方法会工作失败。

图 1 不同水下场景中的水下图像 Fig. 1 Underwater images in different underwater scenes

相较于特征点法,直接法在进行数据关联时不需要提取复杂的特征点,并且不需要特征匹配,所以它对图像特征的处理比特征点法要简单。只要一个像素点有明显的梯度变化,就可以将它作为一个特征点。如图2所示,由于使用这种策略,直接法既可以提取到特征点法中特征明显的角点,也可以提取出大量的除角点外的特征点,所以基于直接法的VIO系统可以在角点缺失、存在大量重复纹理的水下环境中工作。

图 2 直接法在图像中提取出的特征点 Fig. 2 Feature points extracted from image by direct method

该VIO系统特征点的提取方式是基于DSO[9]系统中的方法,其具体提取过程如下:

1)将原图像均匀地划分为大小为 $d \times d$ 的像素块。

2)比较各像素块中每个像素点的梯度模与梯度阈值gt的大小。如果某一像素块中存在多个大于gt的像素点,则从中选取沿某一随机方向上梯度模最大的一个像素点作为该像素块中提取到的像素点。如果提取不到,则放大像素块到 ${\text{2}}d \times {\text{2}}d$ ,同时降低gt,然后重新进行提取。如果仍然提取不到,则将像素块放大到 ${\text{4}}d \times {\text{4}}d$ ,并再次降低gt,继续提取。该过程如图3所示。

图 3 提取特征点时像素块的变化过程 Fig. 3 Change of pixel block when extracting feature points

3)如果在图像中提取出的特征点数量过多或过少,则增大d值,否则减小d值,之后再重新提取一遍。

4)如果最终提取到的特征点数量仍然较多,则从中随机删除一些多余的点。

这种特征点提取方式会优先在更小的像素块中取点,如果已经在该区域提取到了特征点,则会放弃在更大的区域中取点。另外,该过程中还会动态调整d的大小,这样做可以在图像上提取到分布均匀且满足数量要求的像素点。上述过程中的梯度阈值gt是提取点时的一个很重要参数,该阈值的大小会直接影响在不同像素块中提取出的特征像素点数量。对gt的设置过程如下:

1)将原图像均匀分为32×32大小的像素块。

2)在每个像素块中建立如图4所示的关于像素梯度模的直方图,并统计梯度模的分布。

图 4 梯度模的直方图 Fig. 4 Histogram of gradient

3)取直方图中占总像素数50%处的梯度模g,然后将该像素块的梯度阈值取为 $ {g'_{{t}}} = g + {g_{{{th}}}} $ 。其中参数gth表示对g的偏移量,该值的大小会影响提取的特征像素点的数量和质量。

4)对不同像素块间的 $ {g'_{{t}}} $ 进行3×3的均值滤波,将处理后的值作为各像素块的梯度阈值gt

为保证在图像中提取到足够多有效的特征点,应该在 $d \times d$ 大小的像素块中提取到更多的特征点。但是相机在水中的可视距离通常在10 m以内,并且随着距离的增大,图像的模糊程度会急剧加重。如果gth取较大的值,则在距离稍微变大一些后,容易出现在 $d \times d$ 的像素块中提取不到足够多特征点而在 ${\text{2}}d \times {\text{2}}d$ ${\text{4}}d \times {\text{4}}d$ 的像素块中提取出较多的特征点的情况。而如果gth取较小的值,则在较短距离下会提取到更多的外点。为此,本系统在提取特征点时采用了动态调节gth的方法:首先使用较大的gth提取特征像素点,如果在 $d \times d$ 的像素块中提取出的特征点的比例小于92%,则将gth减小到原来的75%,然后重新提取特征点。

2 基于直接法的视觉状态量的估计方法

直接法比较的是2幅图像间像素点的灰度值,所以该方法构造的能量函数统计了2幅图像间所有特征点的光度误差。

设特征点所在的图像帧为i,这些特征点被投影到的目标帧为j,根据相机的投影模型可以将i帧上的p点投影到j帧上的p′点,即有如下的投影过程:

$ {\boldsymbol{p}}' = {{\boldsymbol{\varPi}} _{\text{c}}}\left( {{\boldsymbol{R}}{\boldsymbol{\varPi}} _{\text{c}}^{ - 1}\left( {\boldsymbol{p}} \right) + {\boldsymbol{t}}} \right)。$ (1)

其中: ${{\boldsymbol{\varPi}} _{\text{c}}}$ 表示投影矩阵; ${\boldsymbol{\varPi}} _{\text{c}}^{ - 1}$ 表示反投影矩阵;Rt表示i帧到j帧间的旋转矩阵和位移向量。

根据直接法的灰度不变假设可构造出p点和p′点间的光度误差为:

$ {e_{{\text{photo}}}} = \left( {{I_j}\left( {{\boldsymbol{p}}'} \right) - {b_j}} \right) - \frac{{{t_j}{{\text{e}}^{{a_j}}}}}{{{t_i}{{\text{e}}^{{a_i}}}}}\left( {{I_i}\left( {\boldsymbol{p}} \right) - {b_i}} \right) 。$ (2)

式中: $ {I_i}\left( p \right) $ $ {I_j}\left( {p'} \right) $ 表示p点和p′点在i帧和j帧上的灰度值;aibiajbj分别表示i帧和j帧的光度系数;titj表示ij帧的相机曝光时间。

由于单个像素的亮度没有区分性,于是采用图5所示的由8个像素组成的像素块来计算每对点的残差,并且假设一个像素块上的点具有相同的逆深度。将i帧所有的点投影到j帧上,可构造出如下的能量函数:

图 5 Np中8个点的分布 Fig. 5 Distribution of 8 points in Np
$ {E_{{\text{photo}}}} = \sum\limits_{p \in {O_{{p}}}} {\sum\limits_{p \in {N_{{p}}}} {{{\left\| {{e_{{\text{photo}}}}} \right\|}_{{h}}}} }。$ (3)

其中:Np表示图5中的像素块;Op表示i帧中的所有的特征点; ${\left\| \cdot \right\|_{{h}}}$ 表示Huber核函数 $H\left( e \right)$ ,它表示为:

$ H\left( e \right) = \left\{ {\begin{split} &\dfrac{1}{2}{e^2},\quad\left| e \right| \leqslant k ,\\ &{k\left| e \right| - \dfrac{1}{2}{k^2}{\kern 1pt} , \quad\left| e \right| > k} 。\end{split}} \right. $ (4)

式中:k表示残差e的阈值。

由式(3)需要估值的视觉状态量为:

$ x = {\left( {{{\left( {{T_{ij}}} \right)}^{\text{T}}},{a_i},{b_i},{a_j},{b_j},d_{{p_1}}^i,d_{{p_2}}^i, \cdots ,d_{{p_n}}^i} \right)^{\text{T}}}。$ (5)

其中:Tij表示ij帧间的相对位姿; $d_{{p_n}}^i$ 表示i帧上的特征点pn的逆深度。

求出光度误差ephoto关于x的雅可比J后需要通过非线性优化的方法对状态量进行迭代优化,该过程需要构造如下的正规方程:

$ \left( {{J^{\rm{T}}}WJ} \right)\Delta x = - {J^{\rm{T}}}W{e_{\rm{photo}}} 。$ (6)

式中,W表示ephoto的权重。

当最小化公式(3)的能量函数时,为保证解收敛到全局最优值,需要引入图像金字塔来求解。在如图6所示的图像金字塔中,将原始图像作为金字塔的底层L0,上面一层图像通过对下层进行一定倍率的缩放得到。利用图像金字塔可以使在原图中相距d0的两像素点,在最高层LM上的距离减小到dM,从而增大了解的收敛半径。在求解时,首先从图像金字塔的最顶层LM层开始计算,然后将该层的计算结果作为下一层求解时的初始值,直到求解到L0层。

图 6 图像金字塔 Fig. 6 Image pyramid
3 实验结果与分析

为比较基于直接法的VIO系统与基于特征点法的VIO系统在不同水下场景中的运行效果,将提出的VIO系统与ORB-SLAM3进行对比实验。该实验使用AQUALOC[10]水下数据集中3个水下场景中的数据集序列进行了实验,这些序列包括A07,A03和H01,其中序列A07和A03只用了其中的一段数据。这3个序列中的水下图像如图7所示,其中序列A07中的水下图像在3个序列中质量最好,其图像的模糊程度较低,并且图像中具有大量明显的角点。序列A03中的水下图像质量次之,在该图像中存在较多的重复特征,并且含有较多的角点等视觉特征。序列H01的水下图像质量最差,由于该序列记录的是一段海港区域,所以水体中存在大量的悬浮物质,并且该图像具有较严重的模糊问题,同时图像中明显的角点较少。

图 7 对比实验中的水下图像 Fig. 7 Underwater images in a comparative experiment

实验中使用了绝对轨迹误差(absolute trajectory error,ATE) [11]作为算法精度的评价指标,并且使用均方根误差(root mean squared error,RMSE)来统计该误差。同时为保证实验的可靠性,在实验过程中将2个系统在每个序列分别重复运行了7次,然后取其中的中值作为实验结果。

这2个系统均方根误差的对比结果如表1所示,运行轨迹的对比如图8所示。由表1可知,ORB-SLAM3在序列A07和序列A03上比本文的VIO系统有更高的定位精度,而本文的VIO系统在序列H01上获得了比ORB-SLAM3更高的定位精度。由于ORB-SLAM3是一个基于特征点法的SLAM系统,所以当图像质量较好,并且环境中具有丰富的角点时,该系统会有更好的性能。但当图像有比较严重的退化问题,并且环境中缺乏明显的角点时,ORB-SLAM3的定位精度会显著的降低,而本文的VIO系统在该水下环境中依然能保证较高的定位精度。

表 1 本文的VIO和ORB-SLAM3的均方根误差(m) Tab.1 RMSE of proposed VIO and ORB-SLAM3(m)

图 8 本文的VIO与ORB-SLAM3的轨迹对比图 Fig. 8 Comparison of trajectories among proposed VIO and ORB-SLAM3

本文的VIO和ORB-SLAM3在序列H01中提取的特征点如图9所示。由于ORB-SLAM3使用了ORB特征,所以它只能提取出图像中特征明显的角点,但是该图像中存在更多的视觉特征是重复性的纹理,而ORB-SLAM3无法充分利用这些重复性的特征,所以当图像中缺乏角点时,ORB-SLAM3的性能会降低。本文的VIO系统由于使用了直接法,所以该系统不但能提取出图像中的角点,还能够在重复性的纹理中提取出一些特征点,所以直接法相较于特征点法可以利用图像中更多的信息。由于ORB-SLAM3提取了图像中较少的特征点,所以只能构造出比较稀疏的地图,而本文的VIO由于使用了直接法,该方法利用了图像中较多的像素点,所以该系统可以构造出相对稠密一些的地图。

图 9 本文的VIO与ORB-SLAM3提取的特征点和构造的地图 Fig. 9 Feature points extracted and maps constructed by proposed VIO and ORB-SLAM3
4 结 语

为将水下视觉惯性里程计有效地应用在缺乏角点以及存在大量重复纹理的水下场景中,在DSO系统的基础上,在系统的视觉部分采用了基于直接法的数据关联方式,并对该数据关联方式使用了适用于水下场景的特征点的提取方法,并利用直接法构造出关于视觉状态量的估计模型。实验结果表明,该系统在相对恶劣的水下场景中有更好的性能。

参考文献
[1]
黄琰, 李岩, 俞建成, 等. AUV智能化现状与发展趋势[J]. 机器人, 2020, 42(2): 215-231.
[2]
HUANG G Q. Visual-inertial navigation: a concise review[C]// IEEE International Conference on Robotics and Automation (ICRA). Montreal, QC, Canada: IEEE, 2019: 9572−9582.
[3]
DURRANT W H, BAILEY T. Simultaneous localization and mapping: Part I[J]. IEEE Robotics & Automation Magazine, 2006, 13(2): 99-108.
[4]
刘浩敏, 章国锋, 鲍虎军. 基于单目视觉的同时定位与地图构建方法综述[J]. 计算机辅助设计与图形学学报, 2016, 28(6): 855-868. DOI:10.3969/j.issn.1003-9775.2016.06.001
[5]
QIN T, LI P, SHEN S. VINS-Mono: a robust and versatile monocular visual-inertial state estimator[J]. IEEE Transactions on Robotics, 2018, 34(4): 1004-1020. DOI:10.1109/TRO.2018.2853729
[6]
CAMPOS C, ELVIRA R, RODRÍGUEZ J, et al. ORB-SLAM3: An accurate open-source library for visual, visual-inertial and multi-map SLAM[EB/OL]. [2020-07-23]. http://arxiv.org/abs/2007.11898.
[7]
CADENA C, CARLONE L, CARRILLO H, et al. Past, present, and future of simultaneous localization and mapping: toward the robust-perception age[J]. IEEE Transactions on Robotics, 2016, 32(6): 1309-1332. DOI:10.1109/TRO.2016.2624754
[8]
VON STUMBERG L, USENKO V, CREMERS D. Direct sparse visual-inertial odometry using dynamic marginalization[C]// IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2018: 2510–2517.
[9]
ENGEL J, KOLTUN V, CREMERS D. Direct sparse odometry[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(3): 611-625. DOI:10.1109/TPAMI.2017.2658577
[10]
FERRERA M, CREUZE V, MORAS J, et al. AQUALOC: an underwater dataset for visual–inertial–pressure localization[J]. The International Journal of Robotics Research, 2019, 38(14): 1549-1559. DOI:10.1177/0278364919883346
[11]
STURM J, ENGELHARD N, ENDRES F, et al. A benchmark for the evaluation of RGB-D SLAM systems[C]// IEEE/RSJ International Conference on Intelligent Robots and Systems. Piscataway, USA: IEEE, 2012: 573–580.