APP下载

基于速度/高度对比的四轴飞行器GPS欺骗检测算法

2022-07-22顾兆军陈辉王家亮崔海彬

西北工业大学学报 2022年3期
关键词:矢量坐标系飞行器

顾兆军, 陈辉,, 王家亮, 崔海彬,

(1.中国民航大学 信息安全测评中心, 天津 300300; 2.中国民航大学 计算机科学与技术学院, 天津 300300)

四轴飞行器是一种常用的多旋翼无人机,具有低成本、操作便捷、灵活性强等特点。目前,四轴飞行器的研究方向涵盖了如路径规划[1]、无人机网络安全[2-4]、传感器安全[2]、稳态飞行控制[5]、避障[6]、姿态调整[7-8]、导航定位[9]、无人机集群网络资源优化[10]等方面。

然而,其涉及的安全问题也逐渐暴露出来,民用消费级无人机通常采用直接的通信方式。但在防黑客攻击方面并没有完善的应对措施,如果被攻击,将存在严重的公共安全隐患。通信链路断开和干扰的攻击方式容易被检测到,而民用全球定位系统(GPS)本身并没有针对欺骗等恶意行为的保护措施,其欺骗也相对复杂很多。因此GPS传感器欺骗检测是保障四轴飞行器安全飞行的重点研究内容。

目前,针对GPS欺骗已经开展了很多研究。Majidi等[11]针对GPS欺骗攻击下定位的问题,提出了一种基于粒子滤波的偏差预测方法,用于降低不同概率密度函数的GPS欺骗误差的影响。Lee等[12]通过使用飞行器自身携带的加速度计,对比加速度计的输出和GPS系统输出估计的加速度值,并基于概率检测的连续告警方法进行GPS欺骗检测。Chen等[13]提出一种基于GPS接收机和惯性测量单元信息融合的方法,使用实时模型导出无人机的当前位置,然后将其余接收机输出的位置信息进行对比,以检测GPS是否存在欺骗。Qiao等[14]提出一种基于单目摄像头和惯性测量单元传感器的GPS检测算法,并在大疆精灵上进行了验证。该算法对单目摄像头采集到的视频数据进行速度计算,并与GPS速度数据比较,检测是否存在GPS欺骗。针对GPS欺骗检测,以上研究提出偏差预测、基于加速度计数据的检测、基于位置信息的检测和基于速度对比的检测方案,但实现起来仍有不足,如加速度的数据容易受到求解加速度时因积分误差带来的影响;采用实时模型的方式导出位置信息可能造成飞行器计算资源的浪费;只对比速度信息可能导致高度方向欺骗检测不及时,同时利用视频数据测算飞行器速度有时会受到前景光流波动带来的误差影响。因此,本文提出一种基于多传感器数据融合的GPS欺骗检测方法,终端获得视频数据后,利用基于聚类的金字塔光流法测得飞行器速度,读取飞行器IMU中速度和高度数据,并融合速度数据。通过速度和高度数据与GPS数据比对,当速度或高度数据超过阈值时,判定为存在GPS欺骗。

1 飞行器数学模型及坐标变换

四轴飞行器机架呈十字交叉状,有4个螺旋桨和电机,电机带动螺旋桨运动产生向上的拉力,如图1所示,设当飞行器处于悬停状态下,每个螺旋桨的拉力均为f,飞行器做俯仰运动、翻滚运动、偏航运动时螺旋桨的拉力变化量分别为Δfp,Δfr,Δfy,则可得出每个螺旋桨的拉力值

四轴飞行器拉力的变化,表现为其姿态角的变化,从而实现飞行器各种飞行动作的完成[15]。为了将光流法测得的速度与四轴飞行器自身实际速度对应,需要建立像素坐标系、像平面坐标系、相机坐标系、机体坐标系和本地坐标系,如图1所示。

图1 四轴飞行器坐标系及拉力分解示意图

像素坐标系OpUpVp以图像左上角为原点,U轴向右为正方向,V轴向下为正方向。像平面坐标系OiXiYi以图像中心为原点,X轴向右为正方向,Y轴向下为正方向。为简化光流法测速计算过程,设定云台垂直向下,则此时相机坐标系OcXcYcZc和机体坐标系OuXuYuZu相同。机体坐标系OuXuYuZu以飞行器重心处为原点,以飞行器前进方向为X轴正方向,Z轴以X轴垂直向下为正方向,Y轴可由右手定则确定,向右为正方向。通过坐标系的转换[9],可将卡尔曼滤波数据融合后得到的速度矢量由像素坐标系转换到世界坐标系中,方便速度对比。

2 四轴飞行器GPS欺骗检测的设计与实现

针对四轴飞行器GPS异常检测,增加辅助设备将会增加飞行器制造成本和负载。而飞行器一般都装有惯性测量单元(IMU)和单目摄像头,则最好的检测方式应利用飞行器自身固有传感器的数据。因此本文利用飞行器自身携带的IMU和单目摄像头,对GPS进行异常检测。检测系统结构如图2所示,流程设计如下:

1) 系统初始化

系统终端与四轴飞行器建立链接,控制飞行器起飞后向目标点飞行,实时接收单目摄像头采集的视频数据。

2) 基于聚类的光流法计算速度矢量

逐帧读取视频数据,通过金字塔LK光流法计算稀疏光流,并通过聚类提取特征点,计算特征点的速度矢量。

3) 读取飞行器GPS数据

提取出经度、纬度、海拔等信息。将经纬度转换为XY平面坐标,并计算飞行器X,Y方向速度矢量。

4) 读取飞行器IMU惯性测量单元数据

获取飞行器离地高度、X和Y方向速度矢量。

5) 速度信息转换并融合

将像素坐标系速度矢量转换成本地坐标系速度矢量。并将该速度信息和来自IMU的速度信息使用卡尔曼滤波方式进行信息融合,得到该时刻最优估计速度。

6) 数据对比

对实时计算出的速度和高度信息进行统计,通过比较不同来源的数据差值是否超过设置阈值,判断GPS数据是否异常,当速度或者高度数据超过设定阈值时,代表存在GPS异常行为。

图2 基于传感器的GPS异常检测系统结构图

2.1 基于多传感器数据融合的飞行速度对比

光流可以定义为运动物体在成像平面中像素运动的瞬时速度,LK(Lucas-Kanade)光流法是一种连续2帧差分的稀疏光流估计算法。但在飞行器执行飞行任务时,其运动速度较快,可能会导致特征点脱离检测窗口,无法满足传统LK光流算法的3个假设条件,因此无法通过LK计算光流矢量。而图像金字塔光流法,通过建立高斯金字塔的方式,得到多分辨率的图像,并将图像分辨率从下往上依次降序,可以提高光流计算的准确性,故本文使用基于金字塔LK光流法的速度估计算法为核心测得飞行器速度信息,通过与IMU中读取的速度融合得到最优速度估计值,并与GPS速度信息进行比较,判断飞行器GPS速度信息是否存在异常。

本文基于多传感器数据融合速度对比的GPS异常检测算法,具体算法如算法1所示(frame为系统终端接收的图片帧、Dmax为设置的阈值范围、K为卡尔曼增益值),其设计思路如下:

1) 实时接收视频数据,不连续的读取视频帧;

2) 计算光流速度矢量;

使用Shi-Tomaasi算法提取强角点,并通过金字塔LK光流法计算得到全部强角点的光流速度矢量。

3) DBSCAN聚类剔除前景光流误差;

计算得出全部强角点光流,使用聚类算法,剔除前景光流干扰,得到此时基于光流法测得的像素运动的速度。

4) 速度转换;

将像素坐标系下速度矢量,转换成世界坐标系下物体速度,得到此时飞行器自测速度。

5) 速度融合;

将飞行器自身IMU解算出的速度信息和基于光流法测得的速度信息,采用卡尔曼滤波的方式融合,得到该时刻最优速度估计值。

6) 速度对比;

将融合后的最优速度估计值与获取的GPS速度信息进行对比,如果超过设置的阈值范围,则判定存在GPS速度异常。

算法1GPS速度异常检测算法

Input: frame,Dmax,K

1: Result=False

2: getVgx,Vgy

3:Vlx,Vly=LK(frame)

4:Vlx,Vly=DBSCAN(Vlx,Vly)

5: getVlx,Vly

6: ΔV1=Vlx-Vux

7: ΔV2=Vly-Vuy

8: if ΔV≥1.5 thenK=0.8

9: else if 1<ΔV<1.5 thenK=0.7

10: else if 0.4<ΔV≤1 thenK=0.6

11: else 0≤ΔV≤0.4 thenK=0.5

12: end if

13: while Result==False do

14:Vrx=K×Vux+(1-K)×Vlx

15:Vry=K×Vuy+(1-K)×Vly

16: ΔVx=|Vrx-Vgx|

17: ΔVy=|Vry-Vgy|

18: if ΔVx>Dmaxor ΔVy>Dmaxthen

19: Result=True

20: end if

21: end while

22: Update Result=False

Output: Result(True:存在GPS速度异常;False:不存在GPS速度异常)

2.1.1 用于小型四轴飞行器测速的金字塔LK光流法

金字塔光流法通过在图像的金字塔结构基础上使用LK光流法迭代,可计算图像中每个像素点的光流矢量,但将消耗大量计算资源。而四轴飞行器测速时,由于速度的一致性,只需要部分像素点矢量信息即可,因此先采用Shi-Tomaasi角点检测算法提取出图像中强角点,再估计光流速度矢量。具体实现流程为:

1) 读取实时视频流数据;

使用Shi-Tomaasi角点检测算法找出当前视频帧中的强角点集合

Sp={S0,S1,S2,…,Sn}

(5)

式中,n为检测出当前视频帧中强角点个数,n∈N。

2) 通过金字塔LK算法,找出强角点集合Sp的光流向量坐标集合Ip;

Ip={(ps0,pe0),(ps1,pe1),(ps2,pe2),…,(psn,pen)}

(6)

式中:Ip为强角点产生的光流向量集合;(psi,pei)为该光流向量di的起始点和结束点。

3) 计算每个光流向量在x和y方向上的大小;

式中,(x,y)为第i个强角点的坐标。

4) 计算速度矢量;

将光流矢量表示为每秒移动若干像素点,方便与GPS读取的速度对比。根据步骤3)中计算出x,y方向上每个强角点的位移,则该强角点的像素速度矢量可以表示为:

(9)

(10)

式中:vix,viy分别代表在x和y方向上的速度;T表示强角点发生位移所用时间。

2.1.2 基于DBSCAN聚类算法的改进LK光流测速

四轴飞行器在利用图片帧中的光流信息进行测速时,其精度容易受到前景光流误差的影响。当飞行器处于静止悬停状态时,若此时视频信息中存在部分物体运动,则此时利用光流法测得飞行器处于运动状态。因此,为了提高光流测速的精度,必须从光流矢量中剔除这些因前景运动带来的干扰项。本文算法使用一种基于密度的DBSCAN(density-based spatial clustering of applications with noise)聚类光流测速优化方法,剔除前景运动带来的干扰。DBSACN算法假定种类可以通过数据样本分布的密度决定,属于同一种类的数据,它们之间相距较近,密度较大。其的核心思想是找到高密度的区域,将高密度区域通过低密度区域相互分开。

使用DBSCAN算法对飞行器光流信息处理,会将速度矢量进行聚类,物体运动产生的前景光流和静态的背景光流根据速度不同聚集成不同的类别,每个簇的中心位置为该类别的数据概率密度极大位置。因为物体运动,前景光流和背景光流产生较大的差别,但多数情况下背景光流在光流场中概率密度最大,对光流场起决定作用。故提取聚类后样本个数最多的类别,并求其均值即可较为精确地反应飞行器速度。使用原金字塔LK光流测速算法和基于DBSCAN聚类算法改进LK光流测速算法分别处理视频流数据,对实验结果进行分析,如表1所示。分析实验数据,当四轴飞行器处于悬停状态下,金字塔LK光流测速算法在X和Y方向测得速度均值分别为0.049和0.081 m/s,而基于聚类算法的改进金字塔LK光流算法测得速度为0.004和0.014 m/s;当四轴飞行器在运动时,金字塔LK光流测速算法在X和Y方向测得的速度均值分别为0.581和3.044 m/s,而基于聚类算法的改进金字塔LK光流算法测得的速度为0.221和3.219 m/s,速度实际值为0和3.343 m/s。可见,使用聚类算法后,提取光流样本个数最多的类别样本均值并计算飞行器速度,更接近真实值,可有效降低前景光流带来的误差。

表1 某时刻飞行器速度统计表 m/s

2.1.3 小型四轴飞行器速度检测

在对飞行器GPS速度数据进行比较时,将飞行器自身IMU解算出的速度信息和基于光流法测得的速度信息,使用卡尔曼滤波器进行融合,得到飞行器在该时刻速度的最优估计值Vr。并将计算得出的来自GPS数据的速度Vg与Vr比较,判断是否存在GPS速度异常。假设飞行器在t0时刻光流法测得速度为Vl,自身IMU单元解算出的速度为Vu,同时判断Vl与Vu的差值ΔV,根据其差值ΔV自适应动态调整卡尔曼增益K的值,以达到最优的估计效果,降低光流法在特征点匹配时因光线等环境因素导致的特征点跳跃情况,从而带来测速的误差。当ΔV在[1.5,+∞)区间内,说明速度差值很大,因为飞行器自身IMU单元解算出的速度较稳定,因此设定卡尔曼增益为0.8,数据融合时自身IMU数据所占比重大;同理,当ΔV在(1,1.5)区间内,设定卡尔曼增益为0.7;当ΔV在[0.4,1]区间内,设定卡尔曼增益为0.6;当ΔV在[0,0.4)区间内,设定卡尔曼增益为0.5。速度比较阈值Dmax为1.5,则其原理如下所示:

2.2 基于多传感器数据融合的飞行高度对比

通过读取飞行器GPS数据,可以获得当前时刻飞行器的海拔高度。同时,读取飞行器自身传感器获得其离地高度。将GPS数据中的海拔高度减去当地海拔高度,可得到通过GPS估算的飞行器离高度,与飞行器自身传感器获取的高度值对比,即可判断该时刻GPS海拔数据是否异常,如算法2所示。

算法2GPS海拔高度异常检测算法

Input:hg,hu,hmax,h

1: Result=False

2: while Result==False do

3: Δh=|hg-hu-h|

4: if Δh>hmaxthen

5: Result=True

6: end if

7: end while

8: Update Result=False

Output: Result(True:存在GPS海拔高度异常;False:不存在GPS海拔高度异常)

此处在计算源自GPS数据的四轴飞行器离地高度信息时,设定本地平均海拔高度h=3.5 m。在四轴飞行器起飞后,为保持数据处理频率一致性,按照系统终端处理图片帧的速度获取GPS海拔数据,即每处理一帧图片帧就获取一次GPS海拔高度进行GPS欺骗检测。

3 实验结果与分析

3.1 实验环境介绍

本文采用Anafi(安娜飞)作为硬件实验平台。Anafi是Parrot公司生产的一款小型四轴飞行器,焦距35 mm,可进行4k高清图传,传输速率24 frame/s。使用python3在Ubuntu Linux 18.04操作系统上进行开发,通过OpenCV3.4实现金字塔LK方法来处理系统终端实时接收到的视频流。利用卡尔曼滤波器实现单目相机和惯性测量单元的信息融合。

3.2 实验结果与分析

通信链接建立后,系统终端将接收视频数据,数据经过实时处理后如图3所示,图3a)是四轴飞行器起飞前,单目摄像头(云台相机)朝向前方时的处理结果,图片帧中的多个彩色圆点为提取出的特征点,此时为静止状态。图3b)是四轴飞行器起飞后的图片帧处理结果。图3c)和3e)是控制四轴飞行器起飞,将云台相机的角度改为垂直地面向下时,接收的图片帧处理结果。图3d)和3f)是改变四轴飞行器运动状态后,视频数据处理结果,图片帧中显示多个特征点运动轨迹。

图3 视频帧处理结果图

为验证本文所提出的四轴飞行器GPS欺骗检测算法,布置如下实验:四轴飞行器在最大离地高度2.5 m进行飞行实验,同时控制飞行器以最大速度约4.5 m/s,沿正西方向飞行,前进大约70 m,在执行飞行任务时,四轴飞行器若受到GPS欺骗攻击并被控制,将表现为飞行器飞行速度和高度发生突变。因此,本实验采用生成随机指令函数的方式,在实际飞行时随机发送控制指令控制飞行器随机移动,以模拟受到GPS欺骗攻击行为的效果。在第一次飞行时记录轨迹数据,作为正常值;在随后几次飞行实验时使用随机函数,模拟GPS欺骗攻击行为并与正常值对比,检测GPS数据是否异常。设置如下实验情景:

情景1:四轴飞行器受到GPS欺骗攻击后,向左方偏航;情景2:四轴飞行器受到GPS欺骗攻击后,向右方偏航;情景3:四轴飞行器受到GPS欺骗攻击后,上下移动。

分析四轴飞行器实验数据,如图4所示。为了统一数据融合时的时间单位,采用帧数作为横坐标,表示系统终端处理四轴飞行器单目摄像头采集图像的帧数,设定每10帧处理1帧,即每3.333 s处理1帧。情景1时,四轴飞行器受到GPS欺骗,在起飞后第49帧左右开始向左方移动,此时系统在y方向检测出飞行器有相对于正常信号减速现象,如图4a)所示。第53帧左右在x方向检测出GPS欺骗,如图4b)所示。从欺骗发生到系统检测出欺骗用时约1.33 s,其姿态角如图4e)和4g)所示。情景2时,四轴飞行器受到GPS欺骗,起飞后第42帧左右开始向右方移动,此时系统在y方向检测出飞行器有相对于正常信号减速现象,如图4c)所示。第44帧左右在x方向检测出GPS欺骗,如图4d)所示。从欺骗发生到系统检测出欺骗用时约0.666 7 s,其姿态角如图4f)和4h)所示。情景3时,四轴飞行器受到GPS欺骗时,在起飞后第20帧左右开始偏离原航行高度继续向上方移动,系统在第23帧检测出四轴飞行器高度数据异常,如图4i)所示,从欺骗发生到系统检测出欺骗用时约0.99 s。

图4 小型四轴飞行器实验结果图

如表2所示,文献[11]提出改进粒子(PDIPF)的方式检测GPS欺骗,使用均方误差评估系统性能,无人机位置估计的精度可达96%;文献[12]采用基于加速度计值的检测,得出报警概率随着K值增加而降低的结论,实验测得当K=3时性能最佳,固定误报率为10-6;文献[13]提出一种基于位置信息对比的GPS欺骗检测,该方法可在8 s内准确检测出欺骗行为;文献[14]提出的基于视觉的GPS欺骗检测方式,可以在5 s周期内检测x和y方向上的GPS欺骗行为。因检测方式的不同,在评估系统性能时可能会有不同,本文基于数据融合的四轴飞行器GPS欺骗检测算法,可从GPS速度和高度2个层面,在欺骗发生的较短时间内检测出欺骗,如表3所示,检测时间在2 s内,具有较好的检测效果。

表2 文献结果与实验结果对比

表3 四轴飞行器实验结果

4 结 论

本文基于多传感器数据融合的四轴飞行器GPS欺骗检测算法,对GPS数据从速度和高度2个层面进行检测。系统终端实时接收四轴飞行器采集的视频数据,通过改进金字塔光流法测出飞行器速度矢量。并通过卡尔曼滤波的方式与IMU的速度进行数据融合,得到融合后的最优速度估计值,将该值与来自GPS数据的速度信息对比,检测是否异常;实时读取GPS信号获取海拔信息,减去当地海拔高度并与IMU解算处理的飞行器离地高度对比,检测飞行器GPS海拔数据是否异常。实验结果表明,本文提出的算法在四轴飞行器GPS欺骗检测时,具有较好的检测效果。下一步将考虑加入四轴飞行器所受风力值等作为GPS欺骗检测判断条件。

猜你喜欢

矢量坐标系飞行器
一种矢量信息重构的最优双矢量定姿算法
高超声速飞行器
独立坐标系椭球变换与坐标换算
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
极坐标系中的奇妙曲线
基于支持向量机的飞行器多余物信号识别
三角函数的坐标系模型
求坐标系内三角形的面积
三角形法则在动态平衡问题中的应用