,,,胜南
(1.贵州电网有限责任公司, 贵阳 210046; 2.天津航天中为数据系统科技有限公司天津市智能遥感信息处理技术企业重点实验室,天津 300301)
随着电子信息技术的不断进步,自主导航的多旋翼无人机以体积小、重量轻、操作灵活等优点得到了迅速发展。近年来,多旋翼无人机的应用范围和场景逐渐增加,例如电力巡检、高速巡检、消防、航拍、植保等[1-3]。在实际应用过程中,由于飞行环境未知,复杂的环境对多旋翼无人机的避障能力提出了更高的要求。而对于障碍物信息的检测则是无人机进行自主避障的前提,也是避障过程中极其关键的一部分[4-5]。目前国内外有许多科研机构将单目视觉模块[6]或双目视觉模块[7],挂载到多旋翼[8]、 机器人[9]上,利用光流法、多种传感器融合算法等,对障碍物的检测识别进行了研究,并取得了一定成果[10]。文献[11]研究了基于立体视觉的移动机器人实时障碍检测,文中提出了一种基于区域分割的方法,为了提高立体视觉的精度和实时性,只对分割得到的区域边界点进行处理,结合立体匹配和逆投影变换,将障碍物的三维信息转化为视差阈值的判断。并在室内利用自研机器人对算法进行了验证,结果表明算法取得了良好的效果。但是文末提出在室外环境应用时,由于路面不平、障碍物检测距离增大、干扰增多等因素,需要进一步优化算法。文献[12]对无人机导航中的立体视觉技术进行了研究。针对立体匹配算法速度和匹配精度不足的问题,提出基于色彩分割和自适应窗口的快速匹配算法,但难以满足实时性的要求。并初步研究了采用基于稠密视差图区域生长的障碍物检测方法,通过分析障碍物存在的距离和面积约束,将约束信息与视差图相结合进行障碍物检测,计算出障碍物中心的相对空间位置坐标、高度以及宽度,取得了不错的检测的效果。但对障碍物距离和面积采用了人工阈值设限,在未知环境下缺乏自适应性。文献[13]研究了基于立体视觉和光流的避障算法。一方面通过边缘索引算法获取双目视觉的可靠的视差值,并根据视差线汇聚角度获得空间的深度信息;一方面利用光流法得到障碍物相对于摄像头的运动速度,最终将视觉与光流融合,从而得到障碍物更加准确的位置信息。该算法的优点是实时性较好,缺点是需要先设定一个经验阈值,比较阈值与光流大小判定是否为障碍物。文献[14]通过超声波探测障碍物距离,以及单目摄像头采集图像,图像经过处理得到边缘信息,边缘信息与超声波得到的距离信息进行融合,从而设计相应的避障算法,由于超声波只能返回与飞机最近的障碍物距离,最终将边缘信息近似为多边形障碍物,因此只能得到一个障碍物的距离以及边缘。但是在实际飞行过程中,可能存在多个平行的障碍物,此时这种方法会有一定的局限性。文献[15]重点研究了融合激光测距仪与视觉传感器的信息,从而对障碍物进行精确定位。利用加权最二乘拟合方法和尺度不变特征变换算法,从激光信息和视觉信息中提取直线和点特征,进行信息融合。通过移动机器人进行算法实验,结果表明该方法可以进行机器人的定位与地图构建,有更好的鲁棒性。由于实验要解决地图实时更新中的数据关联问题,给算法的实时性带来一定的影响。综上所述,利用双目视觉检测障碍物并通过视差计算出距离,是检测障碍物的有效方法。双目视觉检测障碍物主要问题在于算法实时性以及障碍物在空间的三维坐标不易获得,给应用带来了检测难度。
多旋翼无人机的续航时间较短,且飞行环境未知,为了用有效的时间执行任务,需要减少在避障过程中所花费的时间。因此除了检测障碍物的距离之外,如果能得到障碍物的方向,会大大缩短避障时间。本文首先对双目摄像头进行标定和校正,利用标定后的双目视觉摄像头采集多旋翼无人机前方的图像信息[16];其次进行图像匹配,查找左右摄像头视场中的相同特征,输出视差图,重投影得到深度信息;然后利用柱状图的方法检测图像中的障碍物方向及个数;最后进行了实际的算法验证。
由于障碍物与多旋翼无人机之间的位置关系,总是涉及到相对位姿,因此本文利用球形坐标系来表示障碍物相对多旋翼无人机的位置关系。假设双目视觉摄像头安装方向与机头方向一致,则障碍物与摄像头的相对位置关系可以理解为障碍物与多旋翼无人机的相对位置关系。三维的笛卡尔坐标系为(X-Y-Z),球形坐标系为(ρ-φ-θ),根据投影关系,三维笛卡尔坐标系的空间任意一点P(x,y,z)与球形坐标系P(ρ,φ,θ)的对应关系可用图1表示。
图1 笛卡尔坐标系与球形坐标系
笛卡尔坐标系与球形坐标系的转换关系:
(1)
(2)
(3)
球形坐标系与笛卡尔坐标系的转换关系:
x=ρsinφcosθ
(4)
y=ρsinφsinθ
(5)
z=ρcosφ
(6)
式中:ρ表示点P与原点的距离,φ表示点P与z轴的夹角,θ表示点P在平面XOY的投影中x轴与y轴的夹角。
1.2.1 摄像头标定
由于摄像头存在透镜畸变,利用标定可以来矫正因使用透镜给针孔模型带来的主要偏差。摄像头的标定过程重要性还在于明确摄像机测量与真实三维世界测量的关系。摄像机标定的过程既给出了摄像机的几何模型,也给出了透镜的畸变模型,从而计算出摄像机的内外参数。可以利用opencv的函数或者Matlab工具箱来进行标定,标定方法是把摄像头对准一个有独立标识点的物体,通常情况下选择棋盘格作为标识物,采集物体不同视角的图像,利用这些图像计算摄像头的相对位置及摄像头的内参数。
在完成两个摄像头的单目定标后,还需要进行双目定标,来测量两个摄像头之间的相对位置。双目的标定方法与单目标定方法相同,标定完成后,两个摄像头的相对位置、焦距等参数即可确定,不应该再次更改。若更改位置或改变焦距,需要重新进行标定。准确的标定摄像头是完成双目视觉测距的前提。
1.2.2 校正与匹配
完成摄像头标定后可以输出无畸变图像,接下来需要进行校正,用数学方式调整摄像机间的角度和距离,输出行对准的校正图像,使左右视图严格对应,保证对极线在同一平面。之后需要添加图像裁剪步骤,使最终图像保持大小一致。
摄像头经过标定、立体校正等一系列处理后,之后需要进行立体匹配,即匹配两个不同的摄像头视图的3D点。匹配算法关键部分是建立有效的代价评估函数,然后通过对该函数做最小化处理来计算匹配像素点的视差。立体匹配算法的种类很多,分类方式也很多,根据最优化理论的差异性规则来分类,可以分为局部算法、全局算法两大类。局部立体匹配算法选择图像局部特征来完成视差值的估计,依据是能量最优、匹配代价最小,优点是运算量较小、实时性较高。全局立体匹配算法采用全局优化理论进行运算,依据是全局分析的能量评估体系,如基于动态规划的立体匹配[17]、基于图割法的立体匹配[18]等,优点是包含平滑项,结果相对准确,但是实时性较差。
1.2.3 测量原理
双目摄像头采集的图像经过滤波处理,灰度处理,得到灰度图和视差图。当知道了摄像头的相对几何位置后(标定和校正得到的参数),可以将视差图通过三角测量的方法转成距离,采用重投影的方法转换为深度图。通过深度图,得到深度Z,代码中用g_depth表示每个像素点的深度值。设定世界坐标系与左摄像头的坐标系保持一致,图2为双目视觉测量原理图[19]。
图2 双目视觉测量原理图
(7)
(8)
(9)
(10)
测距精度在进行无人机避障时是不能忽视的问题,一般而言,影响测距精度的因素有以下几点[7]:1)双目摄像头与成像质量相关的固有物理参数例如分辨率、焦距等,会导致匹配过程出现偏差;2)双目摄像头的基线长度与测量精度有密切关系,基线越长,测量范围越大,但是测距精度也会降低;3)标定过程会带来误差,反应到立体匹配,影响测距精度;4)不同的匹配算法带来的匹配精度与算法实时性也不同;5)外部环境如纹理、光照、背景等也会影响测距的结果。
将整幅图像划分为12等份的柱状图,逐一扫描像素点,深度小于阈值5米的像素点记录下来。最后计算出每个柱状图里的小于阈值的像素点个数,以及平均深度值。用平均深度值作为一个柱状图的深度。用此柱状图里最小的深度值的像素点位置,近似为此柱状图的障碍物位置,并计算方向。这样,检测障碍物的深度和方向就转化为检测柱状图中每个柱形的最小深度和最小深度值的像素点所对应的方向。上述过程对应的流程如图3所示。
图3 检测流程图
文中采用了柱状图的区域分割方法,图4表示把一幅图像等分为12份柱状图。一方面是为了得到障碍物的方向,另一方面为了减轻算法的计算量,提高算法的快速性和实时性。图像R分割的结果满足如下条件:
(11)
g_depth(p)=TRUE
(12)
式中,Ri是划分成的柱状区域,p为区域Ri中的像素点,g_depth(p)表示该像素点的深度值,若g_depth=0表示图像中无障碍物,文中只计算障碍物的信息。
设π为多旋翼无人机在飞行过程中的某时刻拍摄的图像,分辨率为320*240,经过灰度处理,并划分为12等分的柱状图,如图4所示。设定双目视觉摄像头拍摄机头前方图像,即视场沿着y轴看(图像是xoz平面),那么空间三维点o到xoy平面的投影,与x轴的夹角即φ方位角。图5中包括笛卡尔坐标系、图像坐标系、球形坐标系。摄像头位于笛卡尔坐标系原点位置,对应图像坐标系的中心点。摄像头的水平视场角hfov=60°,垂直视场角vfov=54°。从图像左上角P点开始扫描,从左至右的顺序(i从0增大到12),逐行扫描,直至完成整幅图像的扫描计算。
图4 柱状图区域分割
以P点为例,图6表示点在XOY平面的投影,
θp(max)=90°+30°
(13)
当向右扫描时,
φp(min)=90°-54°
(14)
由图4可知,像素点与点p位于同一行时,φ角相同;
图5 笛卡尔坐标系、球 图6 XOY平面图形坐标系与图像坐标系
φw=φp(min)+27/160*j
(15)
θw=θp(max)-i*5°-5°/2
(16)
(17)
根据正余弦定理,上述公式,可变换为:
(18)
假设双目视觉的坐标系是左摄像头的坐标系,并且本文的视场角是整合两个摄像头的视场角之后,达到的水平视场60°和垂直视场54°。
本文采用轴距880的自研四旋翼无人机为实验平台,搭载DJI双目视觉模块,Intel电脑棒,对上述算法的有效性和实时性进行了验证。该多旋翼系统如图8所示。DJI双目视觉模块采集的图像分辨率为320*240(图像高240像素,宽320像素),视场范围水平视场角60°,垂直视场角54°,在实验前经过了双目定标、校正等操作。障碍物检测算法在Win10+VS2015环境下编写,运行于Intel电脑棒。
为了提高算法的实时性,本文实验验证采用的感兴趣区域(ROI)是像素高为110~130的部分图像区域,此时的φ近似为90°,公式(18)则简化为:
图7 感兴趣区域
图8 多旋翼无人机系统
障碍物检测实验在室内进行,自然光光照,背景为白色墙壁,在双目视觉模块的前方放置一个障碍物,图像中的物体为人工摆放的障碍物。距离双目视觉模块中心的距离为80 cm,障碍物前视图大小宽18 cm,高29.5 cm,左边缘距离双目视觉中心距离为80 cm,右边缘距离双目视觉中心距离为78 cm,由此可以得到一个三角形,边长为18 cm,78 cm,80 cm,根据三角几何关系,可以计算出左边缘和右边缘距离双目视觉中心的角度θ。
基于如图8所示的系统进行测试,采用柱状图检测算法,结果如图9所示,图9(a)、(b)是检测过程中拍摄的左视图和右视图的图像;图9(c)是视差图,由于视差图是取左右摄像头两幅图像中间重叠区域的视差,因此会有黑边产生;图9(d)是根据视差图所获取的深度图;图9(e)为程序运行过程中显示的实时障碍物检测结果,其中图像中心像素点深度距离为0.804688 m,双目视觉利用柱状图方法检测的障碍物分为3部分,分别是(ρ=0.804688,φ=1.5708,θ=1.7319),(ρ=0.796875,φ=1.5708,θ=1.65135),(ρ=0.804688,φ=1.5708,θ=1.5708)。DJI的双目视觉模块除了双目视觉还增加了超声波,超声波测量的距离为0.818 m,可靠性为1,表示可以信任此测量值。
图9 图像及结果
将3次测量结果值平均,作为测量结果来分析,表1对比了关于障碍物距离的实际值、视觉测量值、超声波关于距离的测量精度;表2对比了关于测量障碍物方向的精度。
表1 距离对比
表2 方向对比
通过对比发现,在室内检测的本次实验中,关于距离超声波的测量误差为2.25%,视觉的测量误差为0.26%;关于角度,视觉检测的障碍物的角度与真实的障碍物的角度相差3.5%和0.17%。考虑到真实测量值在测量时由于测量工具的精度、人工误差等因素,误差在可以接受的范围内。
在实际应用中,虽然双目视觉可以检测出多个障碍物的距离和方向,但是一般会选择距离最近的障碍物进行实时躲避。图像的采集处理频率为20 Hz,该算法实时性可以满足实际应用的要求。此外,双目视觉的明显优势为可检测障碍物的方向,这为多旋翼无人机的避障提供了参考。
针对双目视觉障碍检测,本文提出了一种新型的柱状图障碍物检测方法,可以检测出障碍物的距离及方向,并对其进行了实验验证。通过柱状图的区域分割,把障碍物的距离及方向限定在每个柱状图中,减少了算法的计算量。分割后的柱状图作为单独的区域进行处理,障碍物的检测转化为每个区域像素点的最小距离的判断。本算法的优点是实现简单、实时性好、可以得到多个障碍物距离和方向、满足实际工程应用,且不需要利用环境的先验知识,具有较强的实时性和自适应性,为飞行器避障绕行策略提供了基础。但是由于双目视觉本身的限制条件如光照、纹理等,一般检测距离超过6 m,精确度会下降,实际飞行避障过程中,可以搭配其他传感器如毫米波雷达、超声波等,进行远距离检测障碍物,视觉辅助实现绕行,这些仍需要进一步研究解决。