杨 楠,刘小雄,苗 升,秦 斌
(西北工业大学 自动化学院,西安 710129)
无人机的顺利着陆是无人机执行任务中重要的一环。在着陆过程中,无人机的姿态、三维位置等导航信息的准确性和实时性将直接决定着陆的成功与失败。目前,获取导航信息的方式主要是采用差分GPS、仪表、微波、雷达等传感器,这种传统的方式在GPS缺失的拒止环境和复杂的电磁干扰下缺乏稳定性,影响着陆安全。基于视觉传感器的着陆导航技术利用无人机采集的图像,对机场跑道等特征进行检测和识别,从而在无人机飞行过程中确定其与机场跑道的相对位置、姿态等信息。视觉传感器相比于其他传感器,具有自主性强、结构简单、非接触、成本低和近距精度高等优势[1]。
文献[2]用视觉合作标志,通过控制飞机俯仰和滚转将飞机运动矢量与目标位置矢量对准,从而实现静止目标和移动目标的降落;文献[3]将捕获的跑道图像与已知跑道的三维位置的图片进行图像配准,得到跑道前视图的投影模型,通过下滑角偏差和与航向偏差来控制飞机保持在正确的下滑路径上;文献[4]通过设计地面嵌套合作目标,该目标由3个不同的协作模块组成,覆盖无人机在着陆阶段的整个高度范围的定位需求。文献[5]提出了一种新型的红外相机阵列制导系统,可以在过程中跟踪和提供固定翼无人机的实时位置和速度,实验表明红外相机阵列系统可以实时安全准确地引导UAV着陆,并且测量和控制距离超过1 000 m。文献[6]利用色彩空间转换,将跑道的RGB图像转换到HSV色彩空间下,通过跑道表面与跑道周围的色彩区分图像中的跑道区域,进一步定位得到当前飞机的位置和朝向。文献[7]利用霍夫变换检测图像中跑道边线的位置,通过已知跑道的宽度来解算飞机相对于跑道的高度以及横向偏移量。文献[8]利用夜间跑道灯光的信息、通过机载相机捕获的图像以及飞机自身的状态构建卡尔曼滤波,从而获得飞机的位置和姿态信息。国内在此项技术方面也开展大量的研究工作。文献[9]通过在跑道两端搭建图像跟踪系统,利用图像跟踪算法检测图像中的无人机,最后通过图像系统中云台的俯仰航向角以及两台云台的相对距离来结算无人机相对跑道的三维位置。文献[10]将着陆的引导过程分为两个阶段,在距离较远时利用跑道的角点特征引导无人机,在距离较近时利用更加鲁棒的AprilTag引导无人机着陆,实验表明两阶段引导方式满足着陆精度要求。文献[11]设置地面合作标识,基于几何特征和SVM分类器进行目标检测,然后使用光流法对目标进行跟踪,最后提取出合作标识亚像素级角点特征,利用PNP算法解算飞机位姿信息。文献[12]通过对比常见的位姿估计算法,得出RPNP算法适合无人机着陆位姿的结论,并且改进了Tsai算法对平移矩阵求解精度低的问题,最后利用遗传算法优化了合作目标的构型。文献[13]在舰船上设置5个红外合作标识点,通过多次阈值分割和形态学处理得到合作目标的像素点位置,再利用N点算法求解飞机相对于合作目标的相对位置,并且利用卡尔曼滤波对舰船运动导致的位姿偏差进行补偿。文献[14]利用地平线和跑道左右边线的信息解算出飞机的3个姿态角。文献[15]利用霍夫变换和RANSAC方法计算跑道边线消影点,从而估计出无人机的俯仰角,再通过双目视觉深度估计从而获得无人机的高度参数。文献[16]提出一种适用于无人机板载端轻量高效的Onboard-YOLO算法可以实现无人机板载端的实时自主精准降落。分析以上研究方法,国外在此技术方面已经取得试飞验证的成果,国内在此技术领域的研究还不够全面,部分研究只局限于定位算法,而对于传统图像检测算法的研究还不够深入,并且大多数研究采用了一些特定的合作标识,缺乏通用性和泛化能力。
考虑到视觉着陆系统优秀的应用环境和先前的成功试飞实例,我们设计了一种基于LSD(line segment detector)检测的视觉着陆定位算法,以实现全套着陆定位算法的目标。无人机能够依靠视觉导航技术,对机场跑道进行识别、检测和定位,从而获得无人机相对于跑道的位置信息,最终引导无人机自动着陆。对设计的算法进行编码设计,分别在仿真和真实机场环境下进行分析验证,结构表明本文设计算法的有效性。本文的研究成果对提高无人机起降的能力和安全飞行具有重要意义。本文的创新点主要有以下两个方面:
1)针对定位算法计算速度和抗干扰能力,通过使用蒙版技术来划分跑道区域并应用跑道几何约束关系构建检测阈值,提高了算法的鲁棒性和实时性;
2)根据机场跑道特点,设计了一整套视觉着陆定位算法,并将其应用于实际试飞环境,表明了算法的泛化能力和通用性。
无人机视觉着陆主要包括两部分:跑道检测和定位。在跑道检测部分中,无人机依靠视觉检测跑道,并输出定位所需要的信息。检测相当于算法的前端部分,依靠视觉和外部环境进行交互。定位主要是借助跑道的先验信息以及检测输出的参数,计算无人机和跑道之间的相对位置,和数据进行交互,可以理解为算法的后端部分。因此,检测精度的高低、检测的稳定性和鲁棒性将直接影响定位算法计算的精度。固定翼无人机自主着陆的基准轨迹是根据一系列约束条件而设定的能够保证无人机安全着陆的一条高度剖面下滑轨迹,控制系统需要无人机相对跑道的位置和姿态信息,以便控制无人机得到最优的下滑轨迹。
无人机视觉着陆的过程中,检测算法的输入有相机发送出来的RGB图像信息,跑道的先验信息,相机的先验信息如:图像的分辨率和焦距等参数。检测算法接收到图像后需要对图像进行灰度化,滤波和图像增强等预处理,例如高斯滤波,先验Mask确定ROI区域等,这样可以去除图像中的噪点,调整图像的对比度,便于跑道线的检测。跑道线检测包括左右跑道线和起始跑道线的检测。检测完成之后,需要提取出直线在像素坐标系上的斜率和截据,并将这些信息发送给定位算法,定位算法可以根据跑道和相机的先验信息以及检测得到的跑道线位置信息,计算出无人机相对于跑道的位置[x,y,z]。整个算法的流程图如图1所示。
图1 无人机视觉着陆系统流程图
机场跑道进行直线检测的目的是得到机场跑道线的斜率k和截距b信息,以供无人机进行位置估计。传统的线段检测算法利用边缘检测算子对图像中的边缘信息进行检测,然后利用霍夫变换提取图像中的直线特征。传统线段检测算法的缺点是实时性不高,而且在边缘密集处容易产生误检测。LSD是一种局部提取直线的算法[17],该算法通过计算像素点的梯度方向,梯度方向相近的像素点被认为是同一条直线上的点,从而将其合并到直线上。本文中采用LSD对机场跑道线进行检测,检测的流程图如图2所示。
图2 基于LSD的机场跑道检测
LSD检测直线的过程如下:
1)对输入图像进行预处理。通过图像降采样降低图像的大小,减少图像中的锯齿效果;通过高斯滤波去除图像中噪声的干扰,提高检测的准确性。如图3(a)中所示。
图3 LSD检测
2)计算图像中每个像素的梯度值和梯度的方向。如图3的b)中所示。
3)将图中梯度方向相近的像素点合并,认为其在一条直线上,形成线段的支持域。如图3的(c)所示。
LSD算法的具体步骤如下:
1) 高斯降采样。首先使用高斯核对图片进行滤波,以减弱图像中出现的锯齿效应,接着进行一次降采样。
2) 梯度计算。利用每个像素点(x,y)的右下角的4个像素计算该点处的梯度,以记录像素的明暗变化,从而找出可能是线段边缘的地方,本文选择2×2的小模板是为了减少梯度计算过程中的依赖。
这里i(x,y)是灰度图像上像素点(x,y)的灰度值,梯度的计算公式如下:
gx(x,y)=
(1)
gy(x,y)=
(2)
梯度的幅值为:
(3)
Level-line的角度为:
(4)
3) 梯度排序:LSD选择从具有较高梯度幅值的像素点入手进行直线分割检测,这就需要对图像中的像素按照梯度幅值进行排序。通常,排序算法处理n个数值的时间复杂度为O(nlogn),LSD选择具有线性时间复杂度的伪排序算法,即首先将0和图像中最大梯度值之间的范围等间隔的划分为1 024个等级,然后将每个像素根据其梯度值分类到对应的梯度等级中。接着选择图像中具有最大梯度值得像素作为种子点,然后从第二大梯度等级中选择种子点,如此依次进行直到遍历完所有的梯度等级。
4) 区域增长:在梯度排序列表中选取一个没有使用的像素点作为种子点,区域生长算法将通过这个种子点生成一个直线的支持区域。递归的将该像素点周围区域的像素点测试,将level-line角度和区域角度之间的误差在τ范围内的像素点加入到该区域中。区域的初始角度就是种子点level-line角度,每次添加一个新的像素到该区域,区域的角度更新公式为式(5):
(5)
式(5)中的下标j表示遍历区域中的每个像素点。不断地迭代判断区域内地像素点,直到没有满足条件的像素点可以继续被添加到区域中。对于整个矩形而言,设置45度的误差容忍度,从而设置τ为22.5°,该误差范围内的像素点都将被合并到当前矩形中。
5)矩形估计:在区域增长中提到直线分割的结果对应一个矩形,即可以用一个外接矩形表示分区域增长生成的直线,找出直线对应的矩形中心为:
(6)
(7)
式中,G(j)表示像素点j的梯度值,下标j遍历区域内的所有像素点,用矩阵最小特征值的特征向量的角度表示矩形的方向。
相机拍摄到的是彩色图像,为了减少图像处理的计算量,需要对原始图像进行灰度化处理。灰度化能够大大减小程序的计算量,提高图像处理的实时性。高斯滤波是一种低通滤波,用于对图像进行平滑和模糊处理,因此其被广泛应用在图像处理的减噪过程中。高斯滤波的基本思想是:用图像中每一个像素点本身和其领域内的其他点的像素值加权平均来代替该点的像素值,即用一个卷积核扫描图像中的每一个像素点,将领域内的各个像素值与对应位置的权值做点乘然后求和。高斯滤波之后的图像如图4所示。
图4 高斯滤波后的图像
在跑道识别的过程中,如果跑道的周围存在位置比较固定的干扰,此时可以加入静态蒙板技术,只在划定的区域内对跑道进行检测。静态蒙板的原理是先创建一个与原始图像相同大小像素值全为常值的图像mask,然后利用多个点在mask上绘制多边形,这些点相当于多边形的顶点,并将多边形区域内的像素值填充为0,此时mask就是一个静态蒙板。将mask与原始图像对应的像素按位与之后,则在多边形区域内显示的是原始图像,而在多边形之外的区域像素值为255,即全部为白色。本文针对自建的跑道数据集,跑道位于width∈(1/3,2/3)的范围,针对不同的应用场景,蒙版可以进行微调。
经过上面的图像预处理之后,可以减少一部分干扰,但是LSD检测出的跑道线周围会存在着一些误检测,需要对检测结果进行滤波从而消除跑道周围的干扰。本文采用几何滤波的思想对跑道线的斜率和线长进行约束,通过约束可以将部分非跑道的误检测剔除。
对于斜率k的约束,我们认为跑道左右边线斜率在真实图像当中不应该是一个接近于0的数,而应该是一个很大的数字。因此,我们对于所有的检测结果进行斜率约束,滤除一些斜率过于小或者过于大的直线。由于跑道的左右边线在图像中是对应的,所以左右跑道的线段中点在像素坐标系y轴上的位置应该较为接近,并且将左右跑道线之间的夹角限制在一定的范围之内。通过对直线斜率的聚类,我们将检测出的直线可以分成左跑道候选线和右跑道候选线,再通过几何滤波从众多候选线中选择出对应的左右跑道。最后,对满足条件的左右跑道进行均值处理,可以求出理想的跑道线的斜率k和截距b。
(8)
(9)
PnP(Perspective-n-Point)是视觉里程计领域求解3D到2D点对应位姿变化的方法[18-20],它描述了当知道n个3D空间点及其像素位置,如何估计相机的位姿。本文采用PNP原理,推导基于线检测信息的定位算法。
跑道线的定位解算主要包括世界坐标系、摄像机坐标系、像素坐标系。跑道线的左边线为ll,跑道的起始线ls,跑道的右边线为lr。A、B两个点分别是跑道线左边线和跑道右边线与跑道起始线的交点。C点是跑道左右边线的消影点,如图5所示。
图5 无人机着陆跑道坐标系
机场跑道三条边线在像素坐标系的方程可以描述为[21]:
(10)
其中:r与c分别表示像素点在像素坐标系中y轴和x轴坐标,ki和qi分别为直线方程的斜率与截距,(l,r,s)分别代表跑道的左边线、右边线和起始线,写成矩阵的形式即:
(11)
(12)
(13)
(14)
上式左乘[ai,bi,ci]:
0⟹[aifxbifyaiu0+biv0+ci0]R*
(15)
其中:Ai=[aifxbifyaiu0+biv0+ci0]R。在世界坐标系中,跑道坐标系的左右边界为:
A13xw-A11xy+A11tx+A12xy+A13tz=0
(16)
A23xw-A21xy+A21tx+A22xy+A23tz=0
(17)
上面的式子对比各单项,可以得到:
A13=A23=0
tx+(A12/A11)ty+(A13/A11)tz=l
tx+(A22/A21)ty+(A23/A21)tz=-l
(18)
改写成矩阵的形式:
(19)
根据相机和机场跑道参数,通过上面的式子可以求解出Z和Y方向的位移。
无人机与跑道起始线在X方向上的位移需要通过跑道实际的宽度和起始线在图像中的长度来计算。假设跑道的真实宽度为W,跑道起始线铅锤面到相机光心的距离为x,图像中跑道起始线的像素长度为L,像素坐标系与物理成像平面在x轴上的缩放因子为α,假设无人机滚转角为零,根据成像原理可以得到:
(20)
(21)
其中:pitch为俯仰角。通过式(20)和式(21)可以计算出无人机和跑道在X轴方向上相对距离。
根据本文设计算法,分别在仿真环境和真实环境中进行机场跑道检测和定位算法分析。
视觉着陆仿真环境由两台计算机构成,一台计算机运行视景环境和无人机模型,根据飞行场景提供视觉信息,另一台计算机运行Linux操作系统进行检测和位置解算;运行的视景仿真软件通过设计运动参数,能够完成各种降落场景下机场跑道的动态视景,通过数据处理算法将跑道视景保存为图像序列,并将图像和无人机位姿信息通过通讯协议传送到检测计算机进行检测和定位。
仿真验证平台分为主线程、数据接收线程、图像显示线程,其中主线程运行图像预处理算法、跑道检测算法和定位算法,数据接收线程通过通信从虚拟视觉传感器中接收数据并解包,从而获取跑道图像、位姿信息、时间等。图像显示线程负责将检测到的跑道线、无人机的真实位姿信息和定位结果实时显示在终端中,终端显示效果如图6所示。
图6 仿真验证平台实物图
图7 无人机进场时的定位效果
图8 定位结果与真值对比图
本文设计的算法在Ubuntu18.04 系统运行,编程语言采用C++,无人机降落的场景由视景系统生成,并提供无人机在进场的姿态和位置真值。采用本文算法对无人机在进场时位置估计仿真的结果如下。
表1 解算参数和真值的偏差 m
仿真结果表明,检测算法能够较好的检测出跑道线的位置,对不同高度下的检测结果有很好的适应性,同时算法计算量小,实时性能够得到保证。同时由于定位算法采用线特征匹配的方案,因此定位精度能够得到保证。综上所述,本文所提出的检测和定位算法能够满足视觉引导降落的要求。
实际试飞时搭建的固定翼无人机平台如图9所示,其翼展为1.8 m,最大飞行高度为120 m。无人机搭载的设备主要包含相机、机载计算机、飞控和电源等,其中相机固联于无人机头部,其安装角为0度,机载计算机、飞控和电源等设备安装在机身内部。相机通过USB3.0接口将图像传输到机载计算机,机载计算机上部署了跑道线检测和视觉定位算法,用于图像处理和视觉导航数据的解算,并通过USART将视觉导航结果传输到飞控端。飞控中的控制率解算出控制指令后,以PWM的形式控制舵机,最终控制无人机平稳着陆。
图9 实验使用的固定翼无人机
图10 飞行过程中的解算效果图
根据本文设计的算法,进行试飞验证,采用多组数据进行定位结果分析,无人机对准跑道从25 m高度开始下滑,实时抓取解算过程中的一副图片如图所示,整个下滑过程计算结果如图11所示。
图11 实际试飞的定位结果
从试飞结果可以看出,第200个数据点之前,检测和定位效果较好,y方向的误差为2 m左右,z方向的误差为5 m左右。第200个数据点之后,由于接近跑道尽头且无人机滚转太大,此时检测效果变差。检测算法能够很好的检测出跑道的轮廓,对不同高度下的跑道检测有很好的适应性和鲁棒性。定位算法的解算精度对于如果只依靠视觉进行导航定位,则在可接受的范围内,而且整个视觉检测和定位算法的计算量小,解算时间较短。
本文以视觉引导着陆为研究内容,针对检测和定位端分别设计了相应的算法,并对算法进行仿真验证。先利用LSD检测图像中的直线特征,用几何约束来提取出机场左右跑道线在像素坐标系中的斜率和截距信息,VP视景软件可以生成无人机在不同时期入场的图像和位置姿态真实值。最后利用像素坐标系和真实世界之间的转换关系,计算出无人机相对跑道的位置信息。实验结果表明了本次研究所设计的算法的有效性。