Dynamic water surface environment perception SLAM algorithm based on visual semantics and point-line fusion for unmanned surface vessels
-
摘要:
无人艇在复杂水面环境下的自主导航能力是其完成养殖作业的基础,其在智能水产养殖中的发展前景巨大。视觉同时定位与地图构建 (Simultaneous location and mapping, SLAM) 技术可以提供实时的环境信息,是实现无人艇自主导航的关键。然而,水面环境是一种缺乏足够有效特征点的低纹理场景,且受水面波纹和反光影响存在大量动态无效特征点,导致视觉SLAM位姿的计算精度较差、性能严重下降。为此,提出了一种面向动态水面环境的基于视觉语义和点线融合的SLAM系统。首先,对ORB-SLAM3算法框架进行改进,增加语义分割线程,利用语义信息生成掩码消除水面无效特征点,以消除动态水面环境的干扰。其次,加入线特征来加强系统稳定性,提出了一种基于几何约束的线段匹配方法,提高水面线特征提取和跟踪的准确性,并利用点线特征融合提高数据关联的准确性,解决传统SLAM算法在水面低纹理场景中提取不足的问题。在USVInland数据集上的实验结果显示,与ORB-SLAM3和PL-SLAM算法相比,改进后算法的定位精度在直线航行中平均提高了44.74%和55.48%,在机动航行中最多提高了76.60%和70.15%,有效消除了水面干扰对位姿估计的影响,提升了视觉SLAM系统在水面低纹理场景中位姿估计的准确性和鲁棒性。
Abstract:Unmanned surface vessels (USVs) have autonomous navigation capacities under complex water surface environment, which is the basis for aquaculture operation, with great development prospects in intelligent aquaculture. Simultaneous localization and mapping (SLAM) technology provides real-time environmental information, playing a pivotal role in enabling autonomous navigation for USVs. However, water surfaces present low-texture scenes with insufficient distinct features, compounded by dynamic invalid features caused by surface ripples and reflections, which result in poor calculation accuracy and serious performance degradation of visual SLAM pose. To address this problem, the paper proposes a SLAM system oriented towards dynamic water surface environments based on visual semantics and point-line fusion. Firstly, the ORB-SLAM3 framework is enhanced by introducing a semantic segmentation thread to eliminate invalid water features using semantic masks, thereby mitigating dynamic water interference. Secondly, the system stability is enhanced by incorporating line features to propose a geometric-constraint-based line-matching method to improve the accuracy of waterline feature extraction and tracking. Moreover, the point-line feature fusion is utilized to enhance data association accuracy, resolving the deficiency of traditional SLAM algorithms in extracting features from low-texture water surfaces. The results of the USVInland dataset demonstrate that compared with ORB-SLAM3 and PL-SLAM algorithms, the positioning accuracy of the improved algorithm has averagely increased by average of 44.74% and 55.48% in straight-line navigation, and up to 76.60% and 70.15% in maneuvering navigation, which mitigates the impact of water surface disturbances on pose estimation effectively, and enhances the accuracy and robustness of visual SLAM systems under low-texture water environment.
-
水产养殖装备是高效发展现代水产养殖、促进水产养殖产业结构调整的重要技术支撑。基于养殖装备、信息技术和自动控制等多学科协同发力的智慧水产养殖模式已成为现代渔业高质量发展的新趋势与重要抓手[1]。无人艇是一类在水中自主航行的多功能移动机器人。作为内陆水产养殖智能化建设的重要装备,无人艇因机动性好、耗费人工成本低等特点,已应用于水产养殖智能投喂[2]、巡检[3]、水质监测[4]等方面。
无人艇能够在动态水环境中实现安全自主航行的前提是鲁棒且接近实时的环境传感和障碍物检测。同时定位与地图构建 (Simultaneous localization and mapping, SLAM) 技术是机器视觉领域的一个研究热点,它根据观察到的局部信息构建全局模型[5],为机器人感知外部环境提供了有效的解决方案。根据采用的传感器,SLAM 主要分为激光 SLAM 和视觉 SLAM 2类[6]。激光雷达的价格昂贵,无法满足小型无人设备的实际需求,因此价格相对便宜、体积小便于安装的相机成为了 SLAM 的研究热点。ORB-SLAM[7]是一种完全基于稀疏特征点的单目视觉SLAM系统,包括视觉里程计、跟踪、回环检测等线程,ORB-SLAM 算法根据实际情况需求不断更新,现已更新至 ORB-SLAM3。ORB-SLAM3[8]是一个支持视觉、惯导以及混合地图的 SLAM 系统,广泛应用于单、双目相机和RGB-D 相机。目前,SLAM方案在室内机器人和无人车上应用较多,而在动态水面环境的应用较少。这是因为水面是一种低纹理场景,可用于视觉SLAM的有效特征点较少。同时,由于环境变化较大,存在较多干扰因素,如涟漪、波浪以及耀眼的反射光等,使得水面图像无法同陆地图像一样长时间维持静态,还存在大量不可靠、动态的特征点,使得视觉 SLAM产生跟踪漂移和定位失败,因此传统的视觉SLAM算法在动态水面环境中的性能会严重下降。
在应用于动态水面的SLAM中,为消除动态水面环境的干扰,付洪宇等[9]提出基于色相饱和度值颜色通道对图像数据进行阈值分割,并采用Ball k-means算法对分割后的图像进行聚类完善,消除图像中的水面动态区域。但此方法对水面倒影的识别精度较差,只适用于倒影不明显的水面环境。郑又能[10]通过对传统区域生长法进行改进,实现水岸分割和水岸线提取,同时采用基于核化相关滤波 (Kernelized correlation filters, KCF)目标跟踪算法实现水面目标跟踪。但此类方法受环境条件影响较大,面对不同水域、不同天气条件不具有普适性。高于科等[11]提出匹配地图点和最大梯度估计的方法用于估计水平面位置,区分了水域环境和真实环境的地图点。前者在物体与水面倒影完全对称时的效果较好,但是不适合应用于水面有波浪的情况,后者对于水域范围即时估计精度尚显欠缺。近年来,水岸线分割技术[12-21]取得了重大进展,在划分无人艇工作区域的同时,也区分了水面图像的静态物体 (岸体) 和动态物体 (水面),同时水面物体标定也可大大缩小对水面障碍物的处理范围。但此类方法直接加入视觉SLAM中滤除水面特征点会导致系统占用内存过大且能提取的有效特征点少。
视觉 SLAM 主要使用点特征[22-25],但是在室外光照强度变化明显以及缺少纹理的水面环境中,使用点特征的算法缺乏鲁棒性,而线特征在这种情况下可以很好地弥补点特征的弱点。Castellanos等[26]通过两点构建直线段,以扩展卡尔曼滤波 (Extended Kalman filter, EKF) 算法框架为基础,提出了以线段作为特征的视觉 SLAM 系统,但该系统仅适用于相机运动范围较小的场景。Gomez-Ojeda等[27]在半直接视觉里程计 (Semi-direct visual odometry, SVO) [28]算法的基础上融合了线段特征,提出了 PL-SVO,提升了 SLAM 算法在低纹理下的鲁棒性。然而,由于该算法采用直接法对点特征进行跟踪,在快速移动情况下容易出现点特征跟踪失败的问题。Company-Corcoles等[29]提出了一种新的基于线特征的多视图曼哈顿轴估计方法优化相机姿态,但这种方法只适用于室内环境。PL-SLAM系统[30]将线特征引入 ORB-SLAM2系统,形成了点线融合的SLAM算法,该算法能够在所有类型的环境中工作,包括低纹理环境,提高了视觉SLAM的性能。然而,这些基于线特征的SLAM算法仍存在提取过多无用短线特征、几何约束不明确导致过多误匹配的问题。因此,有必要进一步研究动态环境下的视觉SLAM算法。
针对上述问题,本文在ORB-SLAM3[8]的基础上,提出一种面向动态水面环境的基于视觉语义和点线融合的SLAM系统,其将语义分割网络置于一个独立的线程中,将语义分割与移动一致性检查方法相结合,分割出场景中的水面部分和岸上动态部分,消除水面的波纹、反光等影响,从而提升了跟踪模块在水面场景中的准确性。然后,加入线特征来加强系统稳定性,提出一种基于几何约束的线段匹配方法,使语义分割后的地图中尽可能保留丰富的有效特征,在基于重投影误差的光束平差法 (Bundle adjustment, BA) 中进行局部位姿优化,以实现更高精度的相机姿态和面对水面场景的鲁棒性能。最后,在USVInland数据集上评估系统的有效性。结果表明,在水面环境中,本SLAM系统能够有效降低水面特征点对无人艇位姿估计的影响,在准确性和鲁棒性方面显著优于ORB-SLAM3和PL-SLAM系统。
1. 算法框架
本文算法的系统框架基于ORB-SLAM3[8]改进,增加了语义分割线程和改进的线特征提取与匹配方法,并利用点线特征融合进行局部位姿优化。其总体结构如图1所示。图中的绿方块是本文进行优化改进的模块。整个 SLAM系统由语义分割、跟踪线程、局部建图和闭环检测4个线程并行运行。
1) 语义线程中使用语义分割网络提取出所有先验的水面部分,用于剔除位于水面的无效特征点。
2) 跟踪线程包括特征提取、动态点剔除、特征匹配和局部地图追踪。提取分割水面后当前帧中的点线特征,改进传统线特征提取算法合并折断线段,用考虑无人艇运动方向的对极几何约束方法滤除岸上动态特征点,提出一种用于线段匹配的几何约束方法。采用Campos等[8]和Zuo等[31]描述的方法,通过处理点和线特征来估计姿态,进行初始化或重定位。并将这些特征与前一帧中的特征关联起来,更新地图信息,进行局部地图追踪。
3) 局部建图线程由三维地标 (点和线段) 和一组关键帧组成。如果当前帧被确定为关键帧,将其插入到要维护的局部建图线程中。利用特征点联合线段的重投影误差函数,完成局部BA的姿态优化过程。
4) 闭环检测线程是一个重新识别和重新定位的过程。遵循 ORB-SLAM3[8]和 PL-SLAM[30]的方法,通过计算词袋 (Bag of words, BoW) [32]方法中词向量的相似性来确定图像的相似性,检测是否生成闭环。一旦闭环生成,BA过程被用来优化位姿并获得一个全局一致的地图,纠正相机轨迹。
2. 动态特征点滤除
在动态水面环境中,无人艇利用艇载视觉图像对自身进行位置估计,需要稳定可靠的视觉特征。在场景中存在静态特征时,传统的视觉SLAM表现出良好的精度和稳定性。然而,在实际无人艇行驶场景中,存在大量无效动态特征点影响视觉SLAM的性能,主要包括水面不稳定特征点和岸上动态特征点。本文对这2种动态特征点采取2种不同的剔除策略。
2.1 基于语义SLAM的水面动态特征点剔除方法
针对涟漪、波浪以及水面反射光造成的水面动态特征点,导致位姿估计不准确的问题,本文在 ORB-SLAM3 原本有三线程的基础上增加了一条独立线程用于语义分割模块,利用语义信息生成掩码消除水面无效特征点,消除动态水面环境的干扰。
在动态水面环境中进行水岸分割时,空间细节例如水面边界和曝光区域,是水岸分割的一大难点,深色的水面和暗面的河堤会被分割算法识别为一体。且由于水面环境固有的物理特性,很难区分岸上的物体投射在水面上的倒影,岸上建筑的光滑表面也可能被错误地归类为水面,语义信息的类别容易混淆。本文选择BiSeNetV2[33]作为用来提取图像中的语义信息的网络结构 (图2)。 BiSeNetV2是一种双边语义分割网络,其双通道主干中的细节分支可以聚焦于空间细节,语义分支可以准确地捕捉语义信息。同时,BiSeNetV2可以在保证较高分割质量的同时也兼顾分割效率,是推断质量较高的实时分割网络,能够实现以30帧·s−1的速度对1 024×2 048的高分辨率图像进行实时推理,满足了无人艇自主导航对算法实时性的需求。
图 2 BiSeNetv2的总体结构[33]Figure 2. Overall structure of BiSeNetv2BiSeNetV2主要分为3个部分:
1) 蓝色虚线框内的双通道主干,橙色虚线框内的聚合层以及黄色虚线框内的辅助增强部分。双通道主干有1个细节分支 (蓝色数据集) 和1个语义分支 (绿色数据集)[34]。
2) 细节分支负责空间细节,获取低级信息,例如水面边界和曝光区域。该分支由数个卷积层组成,通过使用宽通道和浅层来处理空间细节进行特征提取,最终使图片减小到原图的1/8。
3) 语义分支主要用来捕获高级语义信息,比如有倒影的水面。它由Stem模块 (Stem Block)、GE模块 (Gather-and-Expansion Layer) 和CE模块 (Context Embedding Block)组成,结构如图3所示。Stem模块是特征提取模块,图片不断经过卷积层和最大池化层,输出为原图的1/4。GE模块即扩展层,使用3×3深度卷积DWconv (Depthwise Conv2D) 降低参数量,有利于模型的轻量化。CE模块为上下文嵌入模块,其运用了全局平均池化,有利于语义分支获得较大的感受野。经过语义分支后,图片缩小为原图的1/32。
图 3 Stem、GE、CE模块结构[33]Figure 3. Structure of Stem, GE and CE modules语义分支与细节分支需要进行上下采样及融合;为此,引入聚合层,通过不同的尺度引导来将两部分进行通信处理。
辅助增强训练策略在训练阶段可以增强特征表示,在推理阶段可以丢弃,进一步提升了分割精度且几乎不增加计算复杂度。
本文算法在ORB-SLAM3 的跟踪线程之前输入图像帧,通过BiSeNetV2算法对图像帧中的水面环境进行分割,得到每一帧图像中水面环境的掩码信息。其次提取图像帧所有特征点,利用掩码信息去除水面环境中的动态无效特征点,只保留提取的岸上特征点用于后续特征点的处理与匹配。
2.2 基于极线几何约束的岸基动态点剔除方法
为了进一步提高无人艇SLAM算法的定位精度与鲁棒性,对于岸上动态特征点采用考虑无人艇运动方向的对极几何约束方法进行滤除,避免了岸基动态目标的特征匹配对位姿估计造成干扰,减少地图中的噪声和不稳定性。通过比较极线距离与阈值,筛选检测出的动态点,以去除真实动态特征点和检测出一部分的匹配错误。但是在动态场景下,动态点会干扰基础矩阵的计算,导致极线距离判断可能存在偏差,无法很好地滤除动态特征点,因此本文在考虑无人艇在水面行驶的情况时,用其方向信息来调整对极几何约束,使其与前进方向保持一致,降低岸上动态目标的特征匹配对位姿估计造成干扰。
设 $ P $ 为空间中一点,根据针孔相机模型,在 $ {I}_{1} $ 和 $ {I}_{2} $ 2个相邻时刻的图像帧中分别对应特征点 $ {P}_{1} $ 和 $ {P}_{2} $,$ {O}_{1} $ 和 $ {O}_{2} $ 分别对应两时刻相机的光心,对极几何约束示意图如图4所示,$ {O}_{1} $、$ {O}_{2} $、$ P $ 3个点确定的平面称为极平面,线 $ {O}_{1}{O}_{2} $ 称为基线,基线与 $ {I}_{1} $ 和 $ {I}_{2} $ 的交点为极点 $ {e}_{1}、{e}_{2} $,$ {h}_{1}、{h}_{2} $ 为极线。
图 4 对极几何约束[35]Figure 4. Epipolar geometry constraint特征点 $ {P}_{1} $ 和 $ {P}_{2} $ 的齐次坐标形式为:
$${P}_{1}{\text{=}}{\left[{u}_{1},{v}_{1},1\right]}^{T},{P}_{2}{\text{=}}{\left[{u}_{2},{v}_{2},1\right]}^{T} $$ (1) 式中:$ u,v $ 分别代表在图像像素坐标系中像素点的坐标值;$ {I}_{1} $ 图像平面的极线为:
$$ \begin{array}{c}\;\\{h}_{1}{\text{=}}\left[\begin{array}{c}X\\ Y\\ Z\end{array}\right]{\text{=}}F{P}_{1}{\text{=}}F\left[\begin{array}{c}{u}_{1}\\ {v}_{1}\\ 1\end{array}\right] \end{array} $$ (2) 式中:$ X,Y,Z $ 代表极线的方程向量;$ F $ 表示基础矩阵,为 $ P $ 在2个图像平面上像素点间的几何约束关系。则像素点 $ {P}_{2} $ 到极线 $ {h}_{1} $ 的距离为:
$$ \begin{array}{c}H{\text{=}}\dfrac{\left|{P}_{2}^{T}F{P}_{1}\right|}{\sqrt{\parallel X{\parallel }^{2}+\parallel Y{\parallel }^{2}}} \end{array} $$ (3) 当场景中出现动态特征点,如岸上有动态物体时,会出现距离 H 过大的情况,因此需要设置阈值 $ \varepsilon $ 对距离 H 进行约束限制。设置阈值为:
$$ \begin{array}{c}\left\{\begin{array}{c}\varepsilon {\text{=}}\dfrac{{\Sigma }_{i{\text{=}}0}^{N}{w}_{i}{\mathrm{e}}^{-{H}_{i}}}{{\Sigma }_{i=0}^{N}{w}_{i}}\\ {w}_{i}{\text{=}}\mathrm{exp}\left[{\text{−}}\alpha {\left({\theta }_{i}{\text{−}}{\theta }_{\mathrm{m}\mathrm{o}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}}\right)}^{2}\right]\end{array}\right. \end{array} $$ (4) 式中:$ {w}_{i} $ 是方向权重;N表示 ORB 特征点的总期望数量;$ {H}_{i} $ 表示从第i个特征到其对极线的距离;$ {\theta }_{i} $ 表示对极线的方向;$ {\theta }_{\mathrm{m}\mathrm{o}\mathrm{t}\mathrm{i}\mathrm{o}\mathrm{n}} $ 是无人艇的运动方向;$ \alpha $ 是一个调整权重强度的参数。$ {w}_{i} $ 函数表示对与无人艇运动方向一致的对极线方向,赋予更大的权重。
基于无人艇的运动特性,无人艇大部分时间是直线行驶,没有长时间相机视角变化过大的情况,本文算法在无人艇前进方向上施加更强的约束,当$ H > \varepsilon $ 时,判定该点为动态特征点并剔除,从而剔除不匹配的特征点对和动态物体。
3. 改进的线特征
滤除动态特征点,消除水面波纹、反光的干扰后,由于传统SLAM算法在水面低纹理场景中无法提取足够的有效特征点,使用线特征可以提供更多的约束条件,提高系统的稳定性,所以采用点线特征融合的方法来弥补点特征在这类环境中的缺点。由于现实场景中,提取到的线段往往被分割成几段,于是对检测到的线段进行合并筛选,并基于水面环境的特点提出了一种基于几何约束的线段匹配方法。同时,利用点线特征融合重新定义重投影误差函数,对位姿进行优化,提高位姿精度。
3.1 线特征的提取与匹配
针对直线特征,使用线段检测器 (Line segment detector, LSD) 线段检测算法[36]。在现实场景中,由于遮挡或部分模糊等原因,线段往往会被分割成多条短线。这些短线数量众多,且彼此之间的相似度极高,这极大地影响了线特征提取的实时性和下一步的线特征匹配,容易造成误匹配。为解决上述问题,本文提出了合并折断线段的方法。折断线段是否满足合并条件取决于端点之间的距离和线段之间的距离。如图5所示,$ {s}_{1}、{s}_{2} $ 是图片中提取到的两个线段,$ a、b $ 为 $ {s}_{1} $ 的两端点,$ c、d $ 为 $ {s}_{2} $ 的两端点,$ l $ 表示两端点 $ a、c $ 之间的距离,$ r $ 表示从点 $ b $ 到线段 $ {s}_{2} $ 的距离,$ {s}_{1}、{s}_{2} $ 的延长线之间的夹角为 $ \omega $。如果同时满足:
1) $ d $ 和 $ l $ 小于给定的阈值;
2) $ \omega $ 小于给定的阈值。
则这2个线段被认为是可以被合并为1条长线段的候选段。在合并之后,设置1个线段长度筛选器,移除不满足长度阈值的过短线段。设 L 表示在三维空间中的1条直线,直线上的2个点的坐标设置为$ {\left.S=\left({x}_{1},{y}_{1},{z}_{1}\right.\right)}^{T},E={\left({x}_{2},{y}_{2},{z}_{2}\right)}^{T} $,长度系数$ Ф $如公式 (5)所示,$ W、H $分别为图片的宽和高。
$$ \begin{array}{c}{\text{Ф}}=\dfrac{\sqrt{{\left({x}_{1}-{x}_{2}\right)}^{2}+{\left({y}_{1}-{y}_{2}\right)}^{2}+{\left({z}_{1}-{z}_{2}\right)}^{2}}}{\mathrm{min}\left(W,H\right)} \end{array} $$ (5) 对于提取到的线特征,计算$ Ф $长度系数,当长度系数大于阈值时被保留,否则认为是过短线段,被移除。这种改进的线检测器使数据关联更加准确。
本文采用LBD描述符[37]来表示每个线特征,与点特征的ORB描述符类似,LBD描述符包含相应线特征的几何属性和外观描述。对于两帧图像,通过计算线对间LBD描述符的一致性来度量线特征的相似性。由于线段匹配中存在误差,提出了一种线段匹配的几何约束方法。本文算法中,2个成功匹配的直线特征 $ {l}_{1} $ 和 $ {l}_{2} $ 需要满足以下条件:
1) 2条线段需都处于语义分割的掩码中或都不处于掩码中。
2) 2条线段之间的角度差小于阈值$ \Phi $:$ {\gamma }_{ij}= \mathrm{arctan}\left(\frac{{l}_{i}\times {l}_{j}}{{l}_{i}{l}_{j}}\right) < \Phi $。
3) 2条线段的长度相似:$ {\rho }_{ij}=\frac{\mathrm{m}\mathrm{a}\mathrm{x}({l}_{i},{l}_{j})}{\mathrm{m}\mathrm{i}\mathrm{n}({l}_{i},{l}_{j})} < \mu $。
4) 2条线段的重叠大于阈值 $ \frac{{l}_{\mathrm{o}\mathrm{v}\mathrm{e}\mathrm{r}\mathrm{l}\mathrm{a}\mathrm{p}}}{\mathrm{m}\mathrm{i}\mathrm{n}(‖{l}_{i}‖,‖{l}_{j}‖)} > \tau $。
5) 2条线段的描述符距离小于阈值 $ \beta $。
对线特征使用加入合并筛选的提取算法,以及基于几何约束的线段匹配方法,有利于提取更多有效的长线段,加强系统稳定性;提高匹配成功率,增加数据关联的准确性。
3.2 点线融合的重投影误差函数
在 ORB-SLAM3 的后端优化中,只计算了点特征的误差,点特征的误差计算为重投影误差和光度误差,所以在本文算法中需要针对点线特征结合定义不同的重投影误差计算方式。
由于遮挡或其他原因,线段端点在重投影中存在不确定性。因此,线段的投影误差函数不能简单地通过观察到的线段与其重投影之间的坐标距离来定义。本文算法根据投影线段的端点到检测到的直线的垂直距离之和定义线段的投影误差。如图6所示,$ {l}_{{\mathrm{o}}} $ 是投影的三维线段,$ {P}_{{\mathrm{e}}}{\mathrm{、}P}_{{\mathrm{s}}} $ 是 $ {l}_{{\mathrm{o}}} $ 的2个端点,$ {l}_{{\mathrm{r}}} $ 是线段的观测值,$ {d\,{\mathrm{\text{'}}}_{ {\mathrm{s}}} }$ 和 ${d\,{\mathrm{\text{'}}}_{ {\mathrm{e}}} } $ 表示线段的投影误差。因此,线段的重投影误差 $ {E}_{{\mathrm{L}}} $ 的定义如下:
$$ \begin{array}{c}{E}_{{\mathrm{L}}}{\text{=}}{d{\mathrm{\text{'}}}}_{{\mathrm{s}}}^{2}{\text{+}}{d{\mathrm{\text{'}}}}_{{\mathrm{e}}}^{2} \end{array} $$ (7) 点特征重投影误差 $ {E}_{{\mathrm{P}}} $ 是第 $ i $ 个三维点的观测点 $ {\mu }_{ik} $ 与其在第 $ k $ 个关键帧中的投影之间的距离:
$$ \begin{array}{c}{E}_{P}{\text{=}}{\mu }_{ik}{\text{−}}{\textit{π}} \left({P}_{i},K,{T}_{k}\right) \end{array} $$ (8) 式中:${\textit{π}} \left({P}_{i},K,{T}_{k}\right) $ 表示三维点 $ {P}_{i} $ 的投影坐标;$ K $ 代表相机的内在矩阵;$ {T}_{k} $ 是相对运动矩阵。
代价函数 $ C $ 定义为点、线特征的重投影误差之和,该误差可通过调整待估计状态量使得三维点、线的重投影误差最小。
$$ \begin{array}{c}C{\text{=}}\sum\limits _{i,k}{\rho }_{s}\left({{E}_{{\mathrm{P}}}}^{T}{\sum\limits }_{{E}_{{\mathrm{P}}}}^{-1}{E}_{{\mathrm{P}}}\right){\text{+}}\sum\limits _{i,k}{\rho }_{l}\left({{E}_{{\mathrm{L}}}}^{T}{\sum\limits }_{{E}_{{\mathrm{L}}}}^{-1}{E}_{{\mathrm{L}}}\right) \end{array} $$ (9) 式中:$ {\rho }_{s} $ 和 ${\rho }_{l} $ 分别是点和线的Huber鲁棒性成本函数。利用新定义的代价函数 $ C $,可在跟踪线程中优化相机位姿,在局部建图线程中优化关键帧和地图点的局部窗口。
4. 实验结果
采用USVInland数据集[15],测试水分割模块和改进的线特征算法的有效性,并使用EVO[38]评估工具评估SLAM系统的估计值与数据集给出的实际值之间的绝对轨迹误差和姿态变化。USVInland 数据集是一个用于内河航道USVs的多传感器数据集,收集了不同时间的内陆水道真实世界场景,涵盖了各种水道景观和天气条件。表1展示了USVInland数据集每个序列的天气条件。所有实验均在配备Inteli9-7900XCPU@3.30 GHz×20、16 GBRAM和3060TiGPU的计算机上进行,操作系统的版本是Ubuntu18.04。
表 1 USVInland 数据集各序列的驾驶场景Table 1. Driving scenarios of sequences of USVInland dataset场景
Scene序列Series N02_4 N03_2 N03_3 N03_4 N03_5 H05_7 H05_9 W06_2 天气
Weather多云
Cloudy多云
Cloudy多云
Cloudy晴天
Sunny多云
Cloudy雨雾
Rainy and Foggy雾天
Foggy雨天
Rainy机动情况
Mobile situation转弯
Swerve转弯
Swerve直线
Straight line直线
Straight line直线
Straight line直线
Straight line转弯
Swerve直线
Straight line4.1 水岸分割测试
本文使用USVInland中Water Segmentation数据集,包含无人艇在不同场景和不同天气条件下捕获的图像,数据集中有518幅相对低分辨率 (640 × 320) 和182幅相对高分辨率 (1 280 × 640) 的图像以及注释数据。
在网络训练结束后,随机选取了验证集的图像进行可视化展示,结果如图7所示。图7-a为分割前的原始水面数据集图像,图7-b为使用BiSeNetv2分割的效果,图7-c中灰色部分为水面掩膜,位于此区域的特征点将会被剔除。
在USVInland数据集中实验的跟踪结果如图8所示,其中,每个序列上方为本文算法的跟踪过程中提取特征效果,下方为ORB-SLAM3的效果。
由表1可知,数据集H05_7和W06_2序列的录制环境均为雨天,H05_7和H05_9序列均受雾气影响,这类环境会使视觉SLAM算法提取到很多错误特征点,可能导致跟踪失败。ORB-SLAM3算法会将提取到的水面不稳定特征点进行位姿估计,造成偏差。
在N03_4、N03_5序列中,波纹的存在导致水面镜像呈现出明显的扭曲现象。ORB-SLAM3算法识别被扭曲的镜像特征点并进行位姿估计时,会导致位姿估计的准确性下降。
对于存在机动转弯的N02_4、N03_2、H05_9序列,ORB-SLAM3视角突然变化过大会导致跟踪过程出现漂移,不稳定的水面特征点加剧了位姿估计的不准确性。
本文算法使用BiSeNetv2识别出水面区域并滤除水面的特征点,这部分特征点将不会被加入算法的位姿估计中造成偏差。同时加入了线特征,提取出了更多能够有效估计位姿的特征。
4.2 改进线特征算法的性能比较
为验证改进线特征的提取配匹配算法的有效性,选取USVInland数据集中N03_2序列进行试验,对LSD线段提取和LBD描述匹配与本文算法进行对比 (图9、图10)。
图9 为相邻两帧之间进行线段提取与匹配。可明显看出,红框中线段颜色不一致,说明出现了误匹配,由于短线特征太多导致。改进前,蓝框中有很多没有匹配的短线,本文算法均进行了合并和筛选,减少不必要的计算量。
图10 为时间差距较大的两帧图像进行线段检测与匹配,可以明显看出,传统算法和本文算法在时间差较大时,匹配成功的线段数减少,但传统算法匹配的结果出现了水面倒影与岸上建筑的误匹配。本文算法明显优于LBD线段匹配算法,未出现误匹配,更能提高数据关联的准确性。
4.3 无人艇导航精度测试
为验证改进后算法的有效性,采用USVInland数据集进行实验验证,USVInland数据集包含8段真实内河水域环境数据 (表1)。本实验中,选择数据集中的RTK数据作为位置基准,IMU数据作为姿态基准,作为实验评价的真值(Ground truth)。RTK是一种利用 GPS 载波相位观测进行实时动态相对定位的技术,船载IMU可以获得较为精准的无人艇姿态。为评估SLAM算法的精度和轨迹的全局一致性,使用EVO评估工具,对轨迹进行可视化并定量评价精度。选择ORB-SLAM3与PL-SLAM作为对比算法,ORB-SLAM3算法为经典视觉SLAM算法,也是本文算法的初始框架,兼容单目、双目和RGBD相机,但仅提取了ORB特征点;PL-SLAM算法为经典点线特征纯视觉SLAM,基于ORB-SLAM2算法改进,可实现单目和双目相机运行。与本文算法一样,PL-SLAM算法跟踪线程也提取了点线特征,但仅基于原始的LSD算法提取线特征, LBD算法获取线的描述子进行匹配。2种算法都不能提取语义信息。
在USVInland数据集中进行精度对比,本文算法和ORB-SLAM3、PL-SLAM算法的绝对轨迹误差对比结果如表2所示。
表 2 绝对轨迹误差对比Table 2. Comparison of absolute trajectory errorm
序列
SeriesORB-SLAM3 PL-SLAM 本文算法 This paper's algorithm 均方根误差
RMSE标准偏差
SD均方根误差
RMSE标准偏差
SD均方根误差
RMSE标准偏差
SDN02_4 3.233 0 1.961 9 2.318 0 1.561 6 0.692 0 0.303 7 N03_2 30.459 3 17.493 8 31.975 1 18.943 1 9.643 0 4.200 2 N03_3 1.300 5 1.167 5 1.282 7 1.183 5 0.586 3 0.330 2 N03_4 1.128 7 0.712 1 0.964 3 0.513 0 0.680 7 0.345 5 N03_5 1.599 2 0.623 6 1.782 8 0.046 9 0.732 1 0.385 0 H05_7 2.075 4 0.857 4 7.459 4 4.605 5 1.506 9 0.010 4 H05_9 22.047 3 14.601 5 20.311 2 13.519 0 7.214 8 3.120 0 W06_2 1.351 4 1.180 1 1.574 7 1.310 4 0.709 5 0.402 2 由表2可知,本文算法的绝对轨迹误差精度整体均优于ORB-SLAM3和PL-SLAM,均方根误差和标准差指标均有下降。此外,本文算法的误差均值、误差中位数和标准差均优于ORB-SLAM3和PL-SLAM算法。对于有机动转弯的N02_4、N03_2、H05_9序列,本文算法的均方根误差指标明显优于ORB-SLAM3和PL-SLAM算法,精度分别提高了78.60%、70.15%、68.34%,69.84%、67.28%、64.48%。对于基本为直线轨迹的N03_3、N03_4、N03_5、H05_7、W06-2序列,精度平均提高了44.74%和55.48%。对于雨雾天气的H05_7、H05_9、W06_2序列,精度平均提高了47.39%和66.41%。
图11展示了在N02_4、N03_2、N03_4、H05_7序列上实验得到不同算法估计的轨迹与用数据集提供的真值间的对比结果。实验中,N03_4、H05_7序列几乎无机动转弯,相机视角几乎未发生变化;N02_4、N03_2序列相机视角发生了较大改变,且N03_2属于大尺度场景,会随时间误差累积导致轨迹漂移,水面平静,无水波影响。H05_7序列为雨天环境且水面附近存在水雾,会降低能见度并导致检测特征点困难。
由图11-c可见,对于无转弯的N03_4序列,本文算法的绝对轨迹误差精度比ORB-SLAM3和PL-SLAM算法提高了39.69%和29.41%。在这个序列中,受无人艇自身运动的影响,水面产生波纹,水波会扭曲水的反射,使反射中的关键点在相邻帧中不稳定。ORB-SLAM3和PL-SLAM算法提取不稳定的水面特征点估计位姿,降低了位姿估计的准确度。在这种情况下,估计结果与实际情况大相径庭。本文算法识别出水面区域,对处于水面的地图点进行选取和优化,提升了结果准确度。
由图11-d可见,对于无转弯但有雨雾影响的H05_7序列,本文算法的绝对轨迹误差精度比ORB-SLAM3和PL-SLAM算法提高了27.39%和79.79%。而从图中可以看出这类环境中能提取到的特征点明显变少,且水面特征点受到雨滴影响极易产生扰动,导致特征点匹配出现较大误差。本文算法增加了线特征,点线特征的互补优势提高了数据关联的准确性,使结果更加鲁棒。
对于相机视角有变化的N02_4序列,在图11-a的下方即开始转弯时,PL-SLAM出现了较大的漂移,这是由于将水面的特征点和线段全部进行位姿估计,导致位姿估计的准确度下降,从而误差累积导致轨迹漂移。本文算法克服了水面地图点的影响并通过重新定义点线重投影误差,提高了相机位姿的估计准确性。
对于N03_2序列,根据图11-b,ORB-SLAM2和PL-SLAM算法的轨迹漂移较大,而本文算法能够较好地保持轨迹的稳定。这是由于在较宽的内河航道中,当车辆行驶在航道中间时,提取的大部分特征来自水面上的反射,并且距离较远,特征点的深度估计误差会导致相邻帧之间的相对姿态估计误差。且N03_2属于大尺度场景,总轨迹长度为516 m,行驶时间为456 s,传统算法会随时间累积误差导致轨迹漂移,由于此数据集没有闭环,无法通过回环来矫正误差;而本文算法通过滤除水面特征点和提取更丰富的线特征,并对线特征进行几何约束,得到了更高精度的相机姿态,减少了轨迹的累计漂移问题。
在N03_4序列中,3种算法的绝对姿态误差 (Absolute pose error, APE) 如图12所示。PL-SLAM算法在N03_4序列下运行时的误差最大,最大误差为3.147 m,ORB-SLAM3算法最大误差为2.500 m,而本文算法最大误差约为1.844 m。由此可见,在动态水面环境中,本文算法可以有效降低相机位姿的估计误差。因此,在水面环境中,剔除水面特征点并增加有几何约束的线特征,能够有效减少动态水面环境对位姿估计造成的误差,提高定位准确性。
在无人艇实现自主导航的过程中,航向保持作为无人艇控制中最基本的控制任务,影响其操纵性能,并与船舶安全密切相关。为确保行驶安全,船舶航向偏差需限制在特定范围内,即无人艇的姿态估计也要具有精确性,因此实验验证了本文算法的平移分量与旋转分量的估计值与姿态基准的误差。图13展示了本文算法与数据集真值在N02_4序列中平移与旋转上的估计随运行时间的变化。在平移分量上,可以看到本文算法几乎在整个过程中均和真值的x轴分量和y轴分量最接近,而由于无人艇行驶过程会受到水面波浪或风的影响,相机俯仰变化明显,所以平移分量的z轴差距过大。旋转估计上,在转向过程中,会有部分特征点丢失,横滚角roll误差增加。俯仰角pitch和偏航角yaw的变化趋势与真值相符,但本文算法只通过双目相机进行定位,没有IMU为pitch和yaw提供重力约束,所以与真值有一定区别。当本文算法稳定运行时,其累积误差比真实值大,但精度可满足定位要求。
4.4 时间分析
在实际应用中,实时性能是评估SLAM系统的重要指标。本文在USVInland数据集上的N03_4序列测试了各算法的平均跟踪运行时间,表3为不同SLAM系统的跟踪线程耗时。本文算法和PL-SLAM在跟踪线程上比ORB-SLAM3消耗了更多的时间。这是由于该线程中添加了动态点剔除和线段的提取及处理部分。在 SLAM 系统的4个并行线程中,跟踪线程占用了系统的大部分时间,因此本文测量跟踪线程以每秒跟踪帧数来评估实时性,并与基于点线特征结合的方法PL-SLAM及 ORB-SLAM3进行比较。最后,在本文的实验设备上,本文算法的跟踪线程可以达到25.2 帧·s−1的性能。因此,本文算法基本可以满足实时性要求。
表 3 跟踪线程耗时对比Table 3. Time consuming comparison of trace thread算法
Algorithm每秒跟踪帧数
Tracking frames per second本文算法
This paper's algorithm25.19 ORB-SLAM3 41.20 PL-SLAM 28.37 5. 结论
为解决水面环境缺乏足够的有效特征点以及水面波纹和反光现象造成的干扰,导致SLAM位姿估计精度变差问题,本文提出了一种面向动态水面环境的基于视觉语义和点线融合的SLAM系统。语义信息生成掩码消除水面无效特征点,该方法能够有效降低水面无效特征点对姿态估计的影响。同时,提出了一种基于几何约束的线段匹配方法,对点线融合方法进行改进,提高数据关联的准确性,以应对水面特征点剔除后有效特征点变少的挑战。在USVInland数据集上评估系统的有效性,将实验结果与ORB-SLAM3、PL-SLAM算法进行了比较。结果表明,本文算法在动态水面环境中可有效提高系统的定位精度,减少轨迹漂移,且满足实时性需求和姿态精度。由于语义分割信息是预处理的,因此在系统中不能直接对原始图像进行实时分割。后续在应用实时语义分割时将考虑进一步提高系统的完整性。
-
图 2 BiSeNetv2的总体结构[33]
Figure 2. Overall structure of BiSeNetv2
图 3 Stem、GE、CE模块结构[33]
Figure 3. Structure of Stem, GE and CE modules
图 4 对极几何约束[35]
Figure 4. Epipolar geometry constraint
表 1 USVInland 数据集各序列的驾驶场景
Table 1 Driving scenarios of sequences of USVInland dataset
场景
Scene序列Series N02_4 N03_2 N03_3 N03_4 N03_5 H05_7 H05_9 W06_2 天气
Weather多云
Cloudy多云
Cloudy多云
Cloudy晴天
Sunny多云
Cloudy雨雾
Rainy and Foggy雾天
Foggy雨天
Rainy机动情况
Mobile situation转弯
Swerve转弯
Swerve直线
Straight line直线
Straight line直线
Straight line直线
Straight line转弯
Swerve直线
Straight line表 2 绝对轨迹误差对比
Table 2 Comparison of absolute trajectory error
m
序列
SeriesORB-SLAM3 PL-SLAM 本文算法 This paper's algorithm 均方根误差
RMSE标准偏差
SD均方根误差
RMSE标准偏差
SD均方根误差
RMSE标准偏差
SDN02_4 3.233 0 1.961 9 2.318 0 1.561 6 0.692 0 0.303 7 N03_2 30.459 3 17.493 8 31.975 1 18.943 1 9.643 0 4.200 2 N03_3 1.300 5 1.167 5 1.282 7 1.183 5 0.586 3 0.330 2 N03_4 1.128 7 0.712 1 0.964 3 0.513 0 0.680 7 0.345 5 N03_5 1.599 2 0.623 6 1.782 8 0.046 9 0.732 1 0.385 0 H05_7 2.075 4 0.857 4 7.459 4 4.605 5 1.506 9 0.010 4 H05_9 22.047 3 14.601 5 20.311 2 13.519 0 7.214 8 3.120 0 W06_2 1.351 4 1.180 1 1.574 7 1.310 4 0.709 5 0.402 2 表 3 跟踪线程耗时对比
Table 3 Time consuming comparison of trace thread
算法
Algorithm每秒跟踪帧数
Tracking frames per second本文算法
This paper's algorithm25.19 ORB-SLAM3 41.20 PL-SLAM 28.37 -
[1] 刘世晶, 李国栋, 刘晃, 等. 中国水产养殖装备发展现状[J]. 水产学报, 2023, 47(11): 190-203. [2] 沈启扬, 朱虹, 于庆旭, 等. 河蟹养殖智能化投饵装备适用性能试验研究[J]. 中国农机化学报, 2022, 43(12): 51-59. [3] 李昕聪, 余紫扬, 刘璞, 等. 基于NB-IoT和无人船巡检的水产养殖场物联网系统研究[J]. 渔业现代化, 2022, 49(1): 72-81. [4] 赵同强, 韩超, 徐玉良, 等. 无人船技术应用于城市内河水质监测[J]. 中国给水排水, 2021, 37(7): 71-77. [5] ROSEN D M, DOHERTY K J, TERÁN ESPINOZA A, et al. Advances in inference and representation for simultaneous localization and mapping[J]. Annu Rev Control Robot Auton Syst, 2021, 4: 215-242. doi: 10.1146/annurev-control-072720-082553
[6] 田野, 陈宏巍, 王法胜, 等. 室内移动机器人的SLAM算法综述[J]. 计算机科学, 2021, 48(9): 223-234. [7] MUR-ARTAL R, MONTIEL J M M, TARDOS J D. ORB-SLAM: a versatile and accurate monocular SLAM System[J]. IEEE Trans Rob, 2015, 31(5): 1147-1163. doi: 10.1109/TRO.2015.2463671
[8] CAMPOS C, ELVIRA R, RODRÍGUEZ J J G, et al. ORB-SLAM3: an accurate open-source library for visual, visual-inertial, and multimap SLAM[J]. IEEE Trans Rob, 2021, 37(6): 1874-1890. doi: 10.1109/TRO.2021.3075644
[9] 付洪宇, 史国友, 冉洋, 等. 基于单目相机与K均值聚类分割的船舶航行环境地图深度构建[J]. 上海海事大学学报, 2022, 43(4): 1-8. [10] 郑又能. 面向无人船的计算机视觉应用研究[D]. 绵阳: 西南科技大学, 2020: 10. [11] 高于科, 章伟, 胡陟, 等. 一种水平面估计的水域环境视觉SLAM算法[J]. 测绘科学, 2023, 48(5): 104-112, 128. [12] ZHAN W Q, XIAO C S, WEN Y Q, et al. Adaptive semantic segmentation for unmanned surface vehicle navigation[J]. Electronics-SWITZ, 2020, 9(2): 213.
[13] JAMES T, SCHILLACI C, LIPANI A. Convolutional neural networks for water segmentation using sentinel-2 red, green, blue (RGB) composites and derived spectral indices[J]. Int J Remote Sens, 2021, 42(14): 5338-5365. doi: 10.1080/01431161.2021.1913298
[14] 沈建军, 陶青川, 肖卓. 结合改进Deeplab v3+网络的水岸线检测算法[J]. 中国图象图形学报, 2019, 24(12): 2174-2182. doi: 10.11834/jig.190051 [15] BOVCON B, KRISTAN M. WaSR: a water segmentation and refinement maritime obstacle detection network[J]. IEEE Trans Cybern, 2021, 52(12): 12661-12674.
[16] TAIPALMAA J, PASSALIS N, ZHANG H L, et al. High-resolution water segmentation for autonomous unmanned surface vehicles: a novel dataset and evaluation[C]//2019 IEEE 29th International Workshop on Machine Learning for Signal Processing (MLSP). Pittsburgh, PA, USA: IEEE, 2019: 1-6.
[17] TEICHMANN M, WEBER M, ZOELLNER M, et al. MultiNet: real-time joint semantic reasoning for autonomous driving[C]//2018 IEEE intelligent vehicles symposium (IV). Changshu, China: IEEE, 2018: 1013-1020.
[18] SIT M, DEMIRAY B Z, XIANG Z R, et al. A comprehensive review of deep learning applications in hydrology and water resources[J]. Water Sci Technol, 2020, 82(12): 2635-2670. doi: 10.2166/wst.2020.369
[19] ZHAN W Q, XIAO C S, WEN Y Q, et al. Autonomous visual perception for unmanned surface vehicle navigation in an unknown environment[J]. Sensors-BASEL, 2019, 19(10): 2216. doi: 10.3390/s19102216
[20] CHENG Y W, JIANG M X, ZHU J N, et al. Are we ready for unmanned surface vehicles in inland waterways? The USVInland multisensor dataset and benchmark[J]. IEEE Rob Autom Lett, 2021, 6(2): 3964-3970. doi: 10.1109/LRA.2021.3067271
[21] 余思雨, 齐林, 李逸文, 等. 语义驱动下水面场景中AR效果提升方法[J]. 计算机应用与软件, 2021, 38(4): 245-249. [22] GAN Y, ZHANG J H, CHEN K Q, et al. A dynamic detection method to improve SLAM performance[J]. Optoelectron Lett, 2021, 17(11): 693-698. doi: 10.1007/s11801-021-1022-5
[23] CHEN S B, ZHOU B D, JIANG C H, et al. A LiDAR/Visual SLAM backend with loop closure detection and graph optimization[J]. Remote Sens, 2021, 13(14): 2720. doi: 10.3390/rs13142720
[24] TANG J X, ERICSON L, FOLKESSON J, et al. GCNv2: efficient correspondence prediction for real-time SLAM[J]. IEEE Rob Autom Lett, 2019, 4(4): 3505-3512.
[25] ZHANG Z Q, DONG P, WANG J R, et al. Improving S-MSCKF with variational bayesian adaptive nonlinear filter[J]. IEEE Sens J, 2020, 20(16): 9437-9448. doi: 10.1109/JSEN.2020.2989206
[26] CASTELLANOS J A, NEIRA J, TARDÓS J D. Limits to the consistency of EKF-based SLAM[J]. IFAC Proceedings Volumes, 2004, 37(8): 716-721.
[27] GOMEZ-OJEDA R, BRIALES J, GONZALEZ-JIMENEZ J. PL-SVO: semi-direct monocular visual odometry by combining points and line segments[C]//2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). Daejeon, Korea (South): IEEE, 2016: 4211-4216.
[28] FORSTER C, PIZZOLI M, SCARAMUZZA D. SVO: fast semi-direct monocular visual odometry[C]//2014 IEEE International Conference on Robotics and Automation (ICRA). Hong Kong, China: IEEE, 2014: 15-22.
[29] COMPANY-CORCOLES J P, GARCIA-FIDALGO E, ORTIZ A. MSC-VO: exploiting manhattan and structural constraints for visual odometry[J]. IEEE Rob Autom Lett, 2022, 7(2): 2803-2810. doi: 10.1109/LRA.2022.3142900
[30] GOMEZ-OJEDA R, MORENO F A, ZUNIGA-NOËL D, et al. PL-SLAM: a stereo SLAM system through the combination of points and line segments[J]. IEEE Trans Rob, 2019, 35(3): 734-746. doi: 10.1109/TRO.2019.2899783
[31] ZUO X X, XIE X J, LIU Y, et al. Robust visual SLAM with point and line features[C]//2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). Vancouver, BC, Canada: IEEE, 2017: 1775-1782.
[32] GÁLVEZ-LÓPEZ D, TARDOS J D. Bags of binary words for fast place recognition in image sequences[J]. IEEE Trans Rob, 2012, 28(5): 1188-1197. doi: 10.1109/TRO.2012.2197158
[33] YU C Q, GAO C X, WANG J B, et al. BiSeNet V2: bilateral network with guided aggregation for real-time semantic segmentation[J]. Int J Comput Vision, 2021, 129: 3051-3068. doi: 10.1007/s11263-021-01515-2
[34] 余昌黔. 面向场景分割的判别特征感知方法研究[D]. 武汉: 华中科技大学, 2023: 50-59. [35] 高翔, 张涛, 刘毅, 等. 视觉SLAM十四讲[M]. 2版. 北京: 电子工业出版社, 2019: 166 [36] 郑行家, 钟宝江. 图像直线段检测算法综述与测评[J]. 计算机工程与应用, 2019, 55(17): 9-19. [37] 张震, 王永雄. 基于Edline线特征的图像快速匹配算法[J]. 计算机与数字工程, 2019, 47(3): 652-656. [38] 王金戈, 邹旭东, 仇晓松, 等. 动态环境下结合语义的鲁棒视觉SLAM[J]. 传感器与微系统, 2019, 38(5): 125-128, 132. -
期刊类型引用(1)
1. 李水斌,王双龙,董晓峰. 基于图像处理的电喷雾萃取电离源直线特征提取方法. 机电工程技术. 2025(06): 40-44 . 百度学术
其他类型引用(0)