刘 伟, 杨延西
(西安理工大学 自动化与信息工程学院, 陕西 西安 710048)
舰载直升机的研制和使用可以追溯到20世纪60年代,随着信息、新材料、航空推进等高新技术的进一步发展,舰载直升机呈现加速发展的趋势,功能将多样化。在民用方面,无人直升机在大气监测、交通监控、资源勘探、电力线路检测、森林防火、物流运输等方面具有广泛的应用前景。
直升机着降过程是事故高发阶段,尤其是当着降平台是移动平台的情况下。对于舰载机,由于海浪影响,船体有横摇、纵摇、起伏和平移等运动,对于车载无人机,在汽车运行过程中降落会受到车体颠簸的影响,且都会受到横风的影响,从而导致着降失败。因此在着降的最后阶段,需要对直升机与着降平面之间实时精确定位。
卫星引导尤其是差分GPS技术[1],具有成本低、精度高,使用简单、全天候的优点,被用于着陆着舰。但由于GPS信号容易受到干扰,在军事领域有安全隐患,且GPS直接给出的是绝对位置,而不是相对位姿。仪表着陆系统和雷达引导着陆系统发展较早,且已经比较成熟,主要针对固定翼飞机着陆。光电引导系统不受电磁干扰,可在无线电静默时工作,光电引导方式有激光、红外、电视和紫外引导方式[2]。目前视觉技术已经广泛应用于生产生活的各个方面,视觉传感器成本低、轻便、功耗低、测量精度高,且不受电磁干扰。国内外很多研究机构和学者采用视觉引导技术,并设计了各种不同形状的着降标志[3]。早在1992年,Salt[4]提出ASIST系统,在直升机上安装合作标志点,用相机从第三方位置观测,从而计算直升机的位姿。该系统已经应用于军事领域。这种方法需要第三方相机,因此占用空间较大。周城宇等[5]用四个红外灯作为着降标志,并在机载摄像头上加装窄带滤光镜,能够提高定位标识的识别可靠性。齐咏生,张伟和吴鹏飞等[6-8]采用机载摄像头拍摄“H”标志来确定自身位姿。孙建新等[9]采用“F”形着陆定位标志来消除着降标志的对称性。吴益超等[10]设计了圆形带方向的着降标志图案,用于直升机着舰定位。徐滔宏等[11]采用黑色块作为着降标志,并采用OpenMV作为视觉计算平台。张咪等[12]采用二维编码嵌套的方式,能够实现在较大尺度变化下的精确定位。其多泊位停机坪可以为无人机提供多个定位标识,使无人机在停机坪的多个位置都可以实现精确定位。
Vidal等[13]采用圆形着降标志引导四旋翼直升机着陆。Marut和Wang等[14-15]设计黑白格图案作为着降标志。Grobler等[16]采用不同尺寸黑白图嵌套作为定位标志来应对尺度变化。Nguyen等[17]在移动小车上放置多个黑白格图案作为着降标志。当距离较远图像不清晰时,Truong等[18]采用深度学习算法进行定位标志识别。Kim等[19]设计了一种半稠密优化方法来优化位姿参数,来应对图像模糊造成位姿估计误差问题。
直升机着陆的最后阶段,由于陆地是固定的,因此通常是垂直降落下来,而不需要实时精确定位。但对于移动平台着降,或者在具有很强横风影响的情况下,需要能实时精确获取无人直升机的位置和姿态,而不能直接降落下来。上述定位方法中,采用合作标志,在距离较近时,容易看不全标志而导致定位失败,从而不得不复飞。张咪和Nguyen等[12,17]的多停机坪图案能够提供多个着降点,可以在一块区域放置多个互不相同的着降标志,从而实现偏离以后的定位,但在水平方向定位并不连续。在无人机上放置合作标志[4]的方法,用第三方相机进行定位,则可以连续获取无人机的位姿,但用第三方相机需要占用较大空间。
为解决上述问题,本文设计了一种基于唯一性编码的定位标识,并针对该标识提出一种快速识别和定位算法,能够实时连续给出无人机位姿。与现有视觉定位系统相比,本文方法能够在无人机着降的最后阶段,在整个着降标志范围内连续给出无人机的位姿,有效防止由于飞行高度过低及偏离着降中心,导致无法看到完整的着降标志,进而导致无法定位的情况,从而有效降低着降失败复飞风险。
系统总体流程见图1。首先通过机载摄像头垂直向下拍摄图像,并结合飞行高度检测着降标志,即着降标志在图像中的像素大小由飞行高度决定。如果检测到完整的标志,则直接根据着降标志四个角点在着降平面上的位置来解算相机的位姿。如果无法检测到完整的标志,并且飞行高度较低,则对图像进行边缘提取,直线提取等算法来提取编码区域,并提取编码区域对应的像素灰度值,然后根据像素灰度值提取该区域对应的编码。将提取的编码与着降标志设计的编码进行对照,找出该编码在整个着降图案中的位置,就得到着降编码的四个角点在整个着降平面上的位置。然后用PnP算法解算相机位置和姿态。该着降标志的整体和局部都能提供着降定位信息,并且其中的黑白方块每移动一格,就组成一个全新编码,因此能够对无人机进行连续定位。
图1 系统工作流程图Fig.1 System work flow chart
用于直升机着降的相机,其视场角不能设计过大,否则有效作用距离太近。由于降落过程中,视场尺度变化很大,当距离较近时,视场范围很小。对于移动平台着降系统,由于受到运动扰动、横风等因素的影响,着降的最后阶段,很容易偏离预定着降轨迹,从而丢失定位,不得不复飞。要解决上述问题,就需要在着降的最后阶段,在较大范围内实现无人机实时定位。如果不采用机载合作标志第三方观测的方式,就需要设计新的合作标志。本文基于全局唯一性编码[20]设计了新的着降标志,唯一性编码计算方法如下所述。
取正方形矩阵,尺寸为b2,矩阵中每个元素取值为y(0 (1) 则其对应的Y进制数的十进制值为: (2) 全局唯一性编码图随机生长步骤为如下。 1) 随机生成b×b二维矩阵,元素取值[0,Y]。 2) 对前b行,向右生长一列,与前b-1列组成新的b2大小的二维矩阵,取值可能性有Yb个,遍历所有可能取值,随机选择一组数值,使其B值是未使用过的。从b+1行开始,向右下角生长一个元素,与前b-1行及前b-1列组成新的b2大小的二维矩阵,取值可能性有Y个,遍历所有可能取值,随机选择一个数值,使得B值是未使用过的。 3) 对前b列,向下生长一行,与前b-1行组成新的b2大小的二维矩阵,取值可能性有Yb个,遍历所有可能取值,随机选择一组数值,使其B值是未使用过的。从b+1列开始,向右下角生长一个元素,与前b-1行及前b-1列组成新的b2大小的二维矩阵,取值可能性有Y个,遍历所有可能取值,随机选择一个数值,使得B值是未使用过的。 4) 向中间生长一个元素,与前b-1行及前b-1列组成新的b2大小的二维矩阵,取值可能性有Y个,遍历所有可能取值,随机选择一个数值,使其B的值是未使用过的。 5) 回到第2步,循环执行2-3-4步,直到无法找到未使用过的B值。 6) 重复执行1~5步,直到生成所要求的矩阵。 取b=5,Y=2,所得二维编码图案见图2。 图2 40×40黑白二维码,其中任意5×5的二维码取值全局唯一,总共有1 296个不同的编码Fig.2 Of the 40 × 40 black and white two-dimensional codes, any 5 × 5 two-dimensional codes are globally unique, and there are 1 296 different codes in total 首先根据飞机的GPS位置确定飞机是否到达指定着降区域,如果到达着降区域,就启动视觉相对定位算法。当无人机飞行高度较高,能够观测到完整的着降标志时,只需检测整个着降标志即可完成定位,与本文前言中提到的视觉定位方法类似。而当飞行高度较低,无法观测到完整的着降标志时,就需要通过检测本文设计的全局唯一性编码图案中的编码来实现相对定位,具体过程如下所述。 首先采用Canny算子对图像进行边缘检测,然后对检出的边缘进行膨胀处理,对膨胀后的边缘进行Hough变换,获取直线段。对于间距和夹角小于一定阈值的直线进行合并,用其坐标均值作为新的合并后的直线。对于合并后的直线,根据其斜率将其划分为纵向和横向两组直线。如果同组直线相交,则将相交直线中与旁边直线斜率差异较大的直线去掉。如果同组直线不相交,但相邻直线间距远小于其他直线间距时,去掉与其他直线间距差异较大的直线。如果相邻直线间距是其他直线间距的倍数,则在该相邻直线间等间距加入新的直线。 如果一组直线有奇数条,则选取中间直线,如果有偶数条,则选取中间两条直线。提取横向和纵向直线中间的一条或两条直线的交点,计算这些交点的几何中心点,并以该点为中心,上下左右各取三根直线作为编码选择区域。如果该中心点在线上,则在其一侧少取一根直线。计算最外层四条直线四个交点的图像坐标pt4,并计算这六条线内5×5个格子的中心点坐标,及其对应图像的灰度值。根据这5×5个格子的图像灰度值,计算其编码B值。 根据编码B值及图2所示的编码图确定pt4在着降标志上的坐标,并根据着降标志的世界坐标得到该编码四个交点的世界坐标pt4w。 利用四个交点在图像中的坐标pt4及其在世界坐标系下的坐标pt4w,计算相机在世界坐标系下的位姿,见图3。该问题是PnP问题,在世界坐标系下平面四点位置已知,在图像坐标系下对应的四点位置也已知,就可以解算出相机的位姿[21]。由于相机和无人机固连,即可得出无人机在世界坐标系下的位姿。 图3 PnP算法位姿计算示意图Fig.3 PnP algorithm pose calculation diagram 试验所采用的无人机为普通四旋翼,见图4(a),图4(b)为无人机着降过程中悬停于着降标志上方。图5为四旋翼着降过程中拍摄的图像采样,图像分辨率为1 080 P。 图4 无人机及着降过程Fig.4 UAV and the landing process. 图5 无人机着降过程中拍摄的图像采样Fig.5 Image sampling during UAV landing 着降标志为图2所示的二维码,将该编码打印成80 cm×80 cm的图案,其中每个黑白块大小为2 cm×2 cm。将其平放在地上,并建立世界坐标系,无人机以该二维码为着陆标志,垂直向下拍摄图像,通过视觉算法进行相对定位,从而引导无人机着陆。 实验所用相机在180 cm高度可以恰好看见整个二维码,22 cm时恰好可以看见一个5×5的方块。因此,当飞行高度高于180 cm且可以看到完整图案时,就可以采用整幅图作为着降定位图案。而当飞行高度低于22 cm时,由于无法看到最小编码图案,将无法定位。而当飞行高度在22~180 cm之间时,在80 cm×80 cm范围内,就可以依赖局部编码实现精确定位。当飞行高度高于180 cm时,如果由于偏离中心而无法看全整个图案,也可以通过观察到的着降标志的局部进行定位。 编码提取过程见图6,首先采用Canny对无人机观测到的图像进行边缘提取,见图6(a)。然后对边缘进行膨胀处理,并进行Hough变换,得到由边缘组成的直线段,见图6(b)。再对Hough变换生成的线段进行合并,并提取中间直线围成的5×5的黑白格,提取这些黑白格中心的灰度值作为编码,见图6(c),图中红线是该编码块外围直线,小圈是各黑白格的中心点。根据该编码值就可以确定该编码在世界坐标系下的位置。最后采用PnP算法,根据编码区四个角点的图像位置和在世界坐标系下的位置,解算出相机在世界坐标系下的位姿。 图6 编码提取过程Fig.6 Code extraction process 图7为着降过程中位置编码检测识别的图像采样,随着距离的靠近,黑白格逐渐变大,当距离小于22 cm时,将无法获取5×5个黑白格,定位结束。无人直升机着降过程位姿采样见图8和图9。该图为无人机从120 cm降落到22 cm过程的位姿采样。在X-Y平面上的彩色圆点表示选取的编码块的四个角点。上面标有数字的椎体符号表示无人机在着降过程中的位置和姿态。数字表示相机的位姿顺序,数字不连续表示该帧图像未能计算出相机位姿。主要原因是实验用的无人机拍摄效果较差,拍摄图像因为无人机大幅抖动或快速移动,图像发生严重模糊。 图7 位置编码检测与识别Fig.7 Location coding detection and recognition 图8 无人机着降过程位姿采样Fig.8 Pose sampling of UAV landing process 图9 无人机着降过程位置变化曲线Fig.9 Position change curve of UAV during landing 本实验中由于实验条件受限,无法实时获取无人机的真实位姿,但最终着降位置的计算值和实际值误差在5 mm以下。在整个着降过程中,引起定位误差的因素包括如下三点。 1) 图像模糊造成边缘不精确,从而导致直线交点位置偏差。应对该问题可以采用全局快门摄像头,并增加减震。 2) 相机分辨率及畸变引起的误差,该误差通常较小。 3) 相机坐标系与无人直升机机体坐标系之间的转换误差,坐标转换通过安装标定计算得到。 本文针对当着降平台发生移动或无人直升机受横风干扰,导致直升机着降定位失败的问题,设计了一种基于唯一性编码技术生成的二维码图案作为着降标志,该标志既可以整体作为着降标志,同时其内部任意相邻的5×5的黑白方块组成的图案也可以单独作为着降标志。 基于该标志给出了快速识别和定位算法,从而实现在着降标志范围内对无人机进行连续定位,降低因距离太近或太偏而无法观测到着降标志,从而定位失败,进而导致着降失败的风险。 试验结果表明,相机只要能够观测到着降图案的任意5×5个小方格,就能够精确定位,并使最终着降位置误差小于1 cm。3 无人机着降定位算法
3.1 边缘直线检测
3.2 提取图像编码
3.3 获取坐标
3.4 位姿解算
4 实验测试
5 结 论