发明内容
针对现有技术中存在的问题,本发明提供一种能够对低空飞行目标进行安全监控和指挥引导,进行威胁综合评估,实时告警的基于北斗卫星导航系统的综合飞行安全告警系统和方法。
本发明是通过以下技术方案来实现:
本发明基于北斗卫星导航系统的低空飞行目标告警方法,包括如下步骤:
步骤一,设定飞行目标任务航行轨迹,任务飞行空域,装载二维和三维地图,读取地图高程信息;
步骤二,通过北斗卫星导航系统,实时获取飞行目标经度、纬度和高度值,生成当前时刻飞行目标所在位置地形的横向和纵向剖面图;
步骤三,根据预设任务区域、高程数据、地图信息、预设航线以及飞行目标的当前飞行信息,分别进行飞行目标的空域判断、高度判断、障碍判断和偏航判断;
步骤四,如果步骤三中任意一个判断结果显示飞行目标出现了安全威胁,则对飞行目标进行安全告警,并记录和更新安全告警信息;
所述的安全威胁包括空域判断对应的飞离任务空域的结果,高度判断对应的飞行高度低于安全高度的结果,障碍判断对应的前方有障碍的结果,以及偏航判断对应的航线偏离的结果;
步骤五,如果步骤三中所有判断结果均显示飞行目标没有安全威胁,则更新飞行目标的当前飞行信息,重复步骤二到步骤五,直到飞行任务完成;所述的飞行信息包括飞行目标的经度、纬度、高度、航向角、翻滚角、俯仰角和速度。
优选的,步骤二中生成横向剖面时,以飞行目标为中心,按横向步进长度扫描横向安全距离内的区域,计算地形高程与飞行目标高度,生成横向高度对比图;具体包括如下步骤,
2.1a根据飞行目标当前的航向,计算出垂直于航向的横向单位向量;
2.2a以飞行目标为中心,分别向垂直于航向的横向水平方向,扫描横向安全距离内的区域,以横向步进长度为单位选择横向高程点,并计算每个横向高程点的经纬度值;
2.3a通过得到的经纬度值查找地图高程数据,得到横向高程点的高度,形成横向剖面高度列表,最后比对飞行目标高度,形成当前位置的横向剖面图;
步骤二中生成纵向剖面图时,按纵向步进长度扫描飞行目标前方纵向安全距离的区域,获取地形高程与飞行高度,生成序列化的高度差图形,具体包括如下步骤,
2.1b根据飞行目标当前的航向,计算沿航向的单位向量;
2.2b以飞行目标为起点,按纵向步进长度扫描飞行目标前方纵向安全距离的区域,以纵向步进长度为单位选择纵向高程点,并计算每个纵向高程点的经纬度值;
2.3b通过得到的经纬度值查找地图高程数据,得到纵向高程点的高度,形成纵向剖面的高度列表,最后比对飞行目标高度,形成当前位置的纵向剖面图。
进一步,步骤三中障碍判断时,具体方法如下,
3.1设置障碍告警标志为false;
3.2判定横向剖面高度列表中各横向高程点与飞行目标高度的关系,若其中任意一点高度值大于等于飞行目标高度,设置障碍告警标志位ture,同时终止横向比对;
3.3判定纵向剖面高度列表中各纵向高程点与飞行目标高度的关系,若其中任意一点高度值大于等于飞行目标高度,设置障碍告警标志位ture,同时终止纵向比对;
3.4告警判定;
若障碍告警标志为ture,则对飞行目标进行对应障碍判断的安全告警,并记录和更新安全告警信息;
若障碍告警标志为false,则清除对应障碍判断的安全告警。
优选的,步骤三中空域判断时,具体方法如下,
4.1获取划定空域的多边形各顶点的经纬度坐标;
4.2判定飞行目标当前位置与划定多边形空域的关系,若不在划定空域内,则对飞行目标进行对应空域判断的安全告警,并记录和更新安全告警信息;否则,则清除对应空域判断的安全告警。
优选的,步骤三中高度判断时,具体方法如下,
5.1通过飞行目标当前经纬度,获取此位置的地图高程数据;
5.2计算目标高度与地图高程的差值,判定该差值与安全高度的关系;
若差值小于安全警戒高度,则对飞行目标进行对应高度判断的安全告警,并记录和更新安全告警信息;
若差值大于安全警戒高度,则清除对应高度判断的安全告警。
优选的,步骤三中偏航判断时,具体方法如下,
6.1根据当前飞行目标经纬度,获取航迹列表中两个最邻近航迹点;
6.2位置坐标变换;将飞行目标及两个最邻近航迹点的地理坐标值转化为笛卡尔坐标值;
6.3根据转化得到的笛卡尔坐标值计算飞行目标到两个最邻近航迹点形成的直线的距离d;
6.4判定距离d是否为安全距离;
若d大于等于安全距离,则对飞行目标进行对应偏航判断的安全告警,并记录和更新安全告警信息;
若d小于安全距离,则清除对应偏航判断的安全告警。
优选的,对飞行目标进行对应判断的安全告警时,通过形成告警消息队列,实时显示、存储、更新安全告警信息;
形成告警消息队列时,根据告警的优先级顺序由高到低依次排列,其中,障碍告警、高度告警、空域告警和偏航判断的优先级依次降低。
本发明基于北斗卫星导航系统的低空飞行目标告警系统,包括,
用于设定飞行目标任务航行轨迹,任务飞行空域,装载二维和三维地图,读取地图高程信息的装置;
用于通过北斗卫星导航系统,实时获取飞行目标经度、纬度和高度值,生成当前时刻飞行目标所在位置地形的横向和纵向剖面图的装置;
用于根据飞行目标的当前飞行信息,分别进行飞行目标的空域判断、高度判断、障碍判断和偏航判断的装置;
当任意一个判断结果显示飞行目标出现了安全威胁,用于对飞行目标进行安全告警,并记录和更新安全告警信息的装置;
当所有判断结果均显示飞行目标没有安全威胁,用于更新飞行目标的当前飞行信息的装置;
所述的安全威胁包括空域判断对应的飞离任务空域的结果,高度判断对应的飞行高度低于安全高度的结果,障碍判断对应的前方有障碍的结果,以及偏航判断对应的航线偏离的结果;
所述的飞行信息包括飞行目标的经度、纬度、高度、航向角、翻滚角、俯仰角和速度。
优选的,其还包括,
用于以飞行目标为中心,按横向步进长度扫描横向安全宽度内的区域,计算地形高程与飞行目标高度,生成横向高度对比图的装置;
用于按纵向步进长度扫描飞行目标前方纵向安全距离的区域,获取地形高程与飞行目标高度,生成序列化的高度差图形显示的装置。
优选的,用于飞行目标障碍判断的装置中,包括,
设置障碍告警标志为false的装置;
用于判定横向剖面高度列表中各横向高程点与飞行目标高度的关系的装置;
当横向判断结果为其中任意一点高度值大于等于飞行目标高度时,用于设置障碍告警标志位ture,同时终止横向比对的装置;
用于判定纵向剖面高度列表中各纵向高程点与飞行目标高度的关系的装置;
当纵向判断结果若其中任意一点高度值大于等于飞行目标高度时,用于设置障碍告警标志位ture,同时终止纵向比对的装置;
当障碍告警标志为ture,用于对飞行目标进行对应障碍判断的安全告警,并记录和更新安全告警信息的装置;
当障碍告警标志为false,用于清除对应障碍判断的安全告警的装置。
与现有技术相比,本发明具有以下有益的技术效果:
本发明所述的系统和方法通过采用北斗卫星导航系统,不仅可以提供飞行目标的三维定位信息,还可以传输飞行参数,为实现综合告警应用提供了很好的技术支撑平台。本发明在全面分析各种安全威胁的前提下,对低空飞行目标实现了实时的安全告警;对于直接安全威胁方面的告警,不仅体现了飞行轨迹中最为关注的航向前方高度告警,同时,通过障碍告警方法也对飞行目标左右两侧进行地形感知、威胁评估和安全告警,健全了飞行目标前后左右全方位的障碍感知和告警体系。其中纵向剖面图就是航向前方地形高程显示,横向剖面图就是垂直于航向的左右两侧地形高程显示。障碍告警方法的实现,不仅规划出安全的航行轨迹,更能确保整个飞行管道的安全。
进一步的,通过任务空域来规划飞行目标的活动区域,航线点来指定合理安全的航路,完成间接安全隐患方面的告警,实现了指导性、常规性、经验性辅助安全信息的决策支持作用,其告警优先级低于直接安全威胁告警,为进一步提高飞行安全,规避安全风险提供告警支持。
进一步的,针对安全威胁的等级层次设计综合告警消息队列,解决了实时性安全威胁告警和预见性安全评估告警的问题,为进一步提高飞行安全提供保证;同时,告警队列采取实时更新的策略,更加保证了告警信息的及时准确。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明基于北斗卫星导航系统的低空飞行目标告警方法。总体流程如图2所示,通过设置告警信息列表lstAlert,对动态维护各类告警信息,及时显示和存储不重复的记录。配合采用时钟函数实时地维护告警信息列表lstAlert;实现如下功能,1、实时处理飞行过程中的各种信息,包括实时空情、地理位置、飞行时间、空域状况等信息;2、判定是否出现安全威胁,包括进入危险空域、飞离任务空域、飞行高度过低、前方障碍和航线偏离;3、实时提醒和记录告警信息。
各类安全威胁的判断原理如下。
空域告警。空域告警在二维监控中实现,针对飞行目标飞离任务空域进行判定。空域由多个多边形(Polygon)组成的复合区域表示,各Polygon顶点为经纬度坐标(lon,lat)。空域告警的原理就是判断目标点Target(id,lon,lat,h,v,heading)是否超出了Polygon List组成的复合区域,具体流程设计如图3所示。
高度告警。高度告警在三维监控中实现,出现告警是因为目标的飞行高度低于由用户设置的安全警戒高度。由于本系统中接收到的目标飞行高度是绝对高度,因此需要结合高程数据才能实现高度告警。目前能够获得的高程数据主要有两种:90m精度和30m精度。90m精度的高程数据可通过Esri网站免费获得。由于高程数据存在误差,在设置警戒高度时应充分考虑这一因素。
从高程数据中获得某个坐标(lon,lat)处的地形高度,其基本原理是将某个区域的地形作为一个二维的网格,如图4所示。把高程数据".GIF"文件,如图5所示,中每个像素点的颜色值作为一个地形网格节点的高度,那么就得到了一个起伏的地形表面。
进行位置坐标的变换,若把(lon,lat)坐标中的经度lon作为x,lat作为z,那么求(lon,lat)处高度就转换为图6中求(x,z)处的y值。地形网格中的每个单元都是四边形,而四边形是不能保证共面的,因此首先需要判断坐标(x,z)是位于上三角还是下三角。若位于上三角则使用空间位置的顶点v0、v1和v2计算y的值,反之使用空间位置的顶点v0、v2和v3计算y值。y的值采用插值方法计算,具体计算过程如下:
设(x,z)在地形网格中处于row行col列和(row+1)行(col+1)列构成的四边形范围之内,令:
s=x–col
t=z–row
那么,若t<1.0–s则点位于上三角内,反之位于下三角内。以点位于上三角内为例,构造向量u(Δx,Δh1,0)和v(0,Δh2,Δz),其中Δh1为v2和v0的高度差,Δh2为v1和v0的高度差,Δx、Δz分别为(x,z)与v0点x、z坐标的差值。则(x,y,z)=v0+s×u+t×v,其中y分量即为所求高度。若点位于下三角内,可仿照上三角情况下的方式计算。
由于地形数据规模非常大,为了能够实时渲染,需要采用LOD(Level ofDetail)技术进行加速,通常在渲染地形时使用四叉树结构。使用四叉树结构,随着视点的变化,不同的区域将以不同的细节层次显示,各个区域的网格点疏密程度也随之变化。离视点越近则密度越高,反之密度则越低。上述插值算法在高密度网格和低密度网格中计算得到的地形高度值显然是不同的。为了保证精度,本系统中的高度计算都是在原始高密度网格中进行的。具体设计流程如图7所示。
障碍告警。障碍告警在三维监控中实现,实现障碍告警的基本原理是:以飞行目标当前位置为起点,沿航向作一条直线,设定纵向安全距离;同时,垂直于航向再作一条直线,设定横向安全距离。在纵向和横向安全范围内,若有地形高度超过飞行高度,则显示告警信息。实现障碍告警需要作地形的纵向和横向剖面图,如图8所示,而且剖面图要随着目标的移动实时更新。
在本系统中,按纵向步进长度每50m采集一个地形高度,设定纵向安全距离5km;按横向步进长度每10m采集一个地形高度,设定横向安全距离500m。计算过程全部采用经纬度坐标。设目标航向为heading,则沿航向的单位向量为:
xDir=cos(heading×π/180)
yDir=sin(heading×π/180)
设目标当前位置坐标为target(lon,lat),则沿航向前方50m处的经纬度可近似计算为:
Lon=50×xDir/(112000*cos(target.lat×π/180))
Lat=50×yDir/112000
如此循环步进,直到前方5km处停止,即可计算出生成纵向剖面所需的100个纵向高程点的经纬度,然后调用前述高程获取算法得到这些点对应的高度值,并将这些值存储于一个高度列表中,用于障碍告警和纵向剖面显示。
横向剖面生成与纵向剖面生成的方法基本相同,只是计算略有差别。设目标当前航向为heading,则横向单位向量为:
xDir=cos((heading-90)×π/180)
yDir=sin((heading-90)×π/180)
循环步长设为10m,迭代范围从-250m至+250m。
生成剖面图后,需要将二者同时显示在窗口中。绘制剖面图能够采用GDI。GDI绘制速度较慢,不适合高速的动态更新。若将剖面图直接在主线程中进行绘制会有明显的闪烁。本优选实例中中,为剖面图绘制启动了一个工作线程,取得了较好的显示效果。
剖面生成和显示问题解决后,即可进行障碍告警。在生成的纵向和横向两个高度列表中查询,只要有高度值超过当前目标高度,则显示告警信息,具体实现流程如图9所示。
偏航告警。偏航告警在三维监控中实现,偏航告警的实现原理是计算目标当前位置与航线的垂直距离,若其超过警戒门限则判定为偏航并显示告警信息,如图10所示。
设P1为航线转弯后出点,P2为航线转弯时入点。P为目标当前位置,它与航线P1P2的垂直距离为d。t1为目标到达航点P1的时刻,t2为目标到达航点P2的时刻,t为当前时刻。根据当前时刻即可知目标应处于哪两个航点之间。
设航线方向单位矢量为vDir,它可以通过Normalize(P1P2)得到,Normalize表示标准化运算,将矢量转换为长度为1的单位矢量。P1P在P1P2上的投影P1Padj为Dot(P1P,vDir)×vDir,其中Dot为点积运算,|P1P-P1Padj|即为距离d。
d的计算在地心坐标系中更为方便,可以先将航点的经纬高(lon,lat,h)转换为地心坐标(x,y,z),然后再计算。坐标转换公式如下:
x=(v+h)cos(lat)cos(lon)
y=(v+h)cos(lat)sin(lon)
z=[(1-e2)v+h]sin(lat)
其中e是椭球偏心率,v是纬度为lat处的卯酉圈半径。e和v分别为:
a和b分别为地球椭球的长半轴和短半轴,对于WGS84参考坐标系,a为6378137.000m,b为6356752.314m。
基于以上分析,偏航告警算法可设计如图11所示。
具体的方法步骤,如下所示。
步骤1:设定飞行目标任务航行轨迹,任务飞行空域,装载二维和三维地图,读取地图高程信息;
步骤2:通过北斗卫星导航系统,实时获取飞行目标经纬高度值,生成当前时刻飞行目标所在位置地形的横向和纵向剖面图。也就是结合地形高程,绘制出飞行目标前进方向和左右方向上的高程剖面图,得到的纵向和横向剖面图。
本优选实例中,横向剖面扫描飞行目标左右各250米的区域,循环步长设为10米,计算地形高程与飞行目标高度,生成的高度对比图;步骤如下;
2.1a根据飞行目标当前的航向,计算出垂直于航向的横向单位向量(xDir,yDir);
2.2a以飞行目标为中心,分别向垂直于航向的横向水平方向,扫描左右各250米区域,也就是横向安全距离,步进长度为10米,计算地形高程与飞行目标高度的对比情况;具体实现为:首先获取飞行目标经纬度值(Lon,Lat),计算横向水平方向(-250,250)米距离内,间隔为10米点的经纬度值;
2.3a通过得到的经纬度值查找地图高程数据,得到这些横向高程点的高度,形成基于距离的高度列表(hList),最后比对飞行目标高度,形成当前位置的横向剖面。
随着时间推进到下一帧,重复以上步骤,直到飞行任务结束。
其代码实现如下:
本优选实例中,纵向剖面将扫描飞行目标前进方向5千米地形,步进长度为50米,获取地形高程与飞行高度,生成序列化的高度差图形显示,步骤如下。
2.1b根据飞行目标当前的航向,计算沿航向的单位向量(xDir,yDir);
2.2b以飞行目标为起点,沿航向前方扫描5千米区域,步进长度为50米,计算地形高程与飞行目标高度的对比情况;具体实现为:首先获取飞行目标经纬度值(Lon,Lat),计算沿航向方向(0,5000)米距离内,间隔为50米纵向高程点的经纬度值;
2.3b通过得到的经纬度值查找地图高程数据,得到这些点的高度,形成基于距离的高度列表(vList),最后比对飞行目标高度,形成当前位置的纵向剖面。
随着时间推进到下一帧,重复以上步骤,直到飞行任务结束。
算法的代码实现如下:
步骤3:根据飞行目标的当前飞行信息,分别进行飞行目标的空域判断、高度判断、障碍判断和偏航判断;
步骤4,如果步骤3中任意一个判断结果显示飞行目标出现了安全威胁,则对飞行目标进行安全告警,并记录和更新安全告警信息;
所述的安全威胁包括空域判断对应的进入危险空域或飞离任务空域的结果,高度判断对应的飞行高度低于安全高度的结果,高度判断对应的前方有障碍的结果,以及偏航判断对应的航线偏离的结果.
步骤3和4中的四种判断以及告警的顺序能够根据具体的实际需求进行设定,本优选实例中按以下顺序依次进行判断并生成对应的告警。
空域告警判定。
获取任务空域位置信息,按照图6所示的三角形判定法,实时比对飞行目标当前地理位置(经纬度)与划定空域的关系,得到飞越空域边界判定,及时更新告警列表,提醒显示并记录,首先获取划定空域的多边形各顶点的经纬度坐标,其次判定飞行目标当前位置,也就是其经纬度与划定多边形空域的关系,若不在空域内,设定告警信息插入告警列表,实时显示警告并存储;否则,更新告警列表,删除对应的告警信息。
其实现代码如下:
高度告警判定。
实时计算飞行目标当前高度和地形高程的差值,判定是否小于安全高度,若是产生告警信息,更新告警队列lstAlert,并存储当前航迹、高度、告警时间、告警信息等内容。具体步骤如下,
5.1通过飞行目标当前经纬度(Lon,Lat),获取此位置的地图高程数据;
5.2计算目标高度与地图高程的差值,判定结果与安全高度的关系。
若小于安全警戒高度,设置告警信息,判定当前告警信息是否在告警队列中,若没有,在队列中插入此告警信息,获取当前时间并实时显示警告、存储数据;
若大于安全警戒高度,更新告警信息列表,判定是否存在高度告警,若有,则删除之;
最后随着时间推进到下一帧,重复第一步到第二步的过程,直到飞行任务结束。
其实现算法的程序如下:
障碍告警判定。
障碍告警主要针对三维条件下,实时判定地形、空情目标等对飞行器产生的安全威胁,评估当前飞行状态。这种告警判定方式需要维护hList、vList两个队列,分别表示垂直方向和水平方向上的目标信息,根据飞行目标当前状态,及时更新这两个队列,判定与本目标的相对位置,得出告警信息,具体步骤如下。
3.1设置障碍告警标志为false;
3.2判定横向剖面高度列表hList中各数据点高程与飞行目标高度的关系,若其中有一点高度值大于等于飞行目标高度,设置障碍告警标志位ture,同时终止横向比对;
3.3判定纵向剖面高度列表vList中各数据点高程与飞行目标高度的关系,若其中有一点高度值大于等于飞行目标高度,设置障碍告警标志位ture,同时终止纵向比对;
3.4告警判定。
若障碍告警标志为ture,判定当前告警信息是否在告警队列中,若没有,在队列中插入此告警信息,获取当前时间并实时显示警告、存储数据;
若障碍告警标志为false,更新告警信息列表,判定是否存在障碍告警,若有,则删除之;
最后,随着时间推进到下一帧,重复第一步到第四步的过程,直到飞行任务结束。
其实现算法的程序如下:
偏航告警判定。
偏航告警需要预先设定航迹点,维护航迹点队列lstFlyLine,实时判定飞行目标当前位置与最邻近两个航迹点之间的投影关系,若投影距离小于安全距离,发出告警信息并存储,其步骤如下。
6.1根据当前飞行目标经纬度(Lon,Lat),获取航迹列表lstFlyLine中两个最邻近航迹点(start,end);
6.2位置坐标变换,将飞行目标及两个最邻近航迹点的经纬高度值(Lon,Lat,High)转化为(x,y,z)值,也就是将地理坐标值转化为笛卡尔坐标值;
6.3计算飞行目标到两个最邻近点形成直线的距离d;
6.4判定距离d是否为安全距离。
若d大于等于安全距离,判定当前告警信息是否在告警队列中,若没有,在队列中插入此告警信息,获取当前时间并实时显示警告、存储数据;
若d小于安全距离,,更新告警信息列表,判定是否存在偏航告警,若有,则删除之;
最后,随着时间推进到下一帧,重复第一步到第四步的过程,直到飞行任务结束。
其实现算法的程序如下:
步骤5,如果步骤3中所有判断结果均显示飞行目标没有安全威胁,则更新飞行目标的当前飞行信息,重复步骤2到步骤5,直到飞行任务完成;所述的飞行信息包括飞行目标的经度、纬度、高度、航向角、翻滚角、俯仰角和速度。
至此,本方法已经实现了空域、高度、障碍、偏航等综合条件的实时告警,对航线上告警触发点进行管理和维护,为评估决策提供依据。