基于BCB_MapX的无人机航路规划与监控系统实现

更新时间:2023-05-31 07:33:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

bcb数据库功能及其他功能

第27卷第9期

 

2007年9月

文章编号:1001-9081(2007)09-2315-04

计算机应用

ComputerApplications

 

Vol.27No.9Sep.2007

基于BCB&MapX的无人机航路规划与监控系统实现

李华超,吴 潜,陈春俊,胡茂海

(1.西南电子技术研究所,成都610036; 2.西南交通大学机械工程学院,成都610031;

3.哈尔滨工程大学信息与通信工程学院,哈尔滨150001)

(huachaolii@)

摘 要:给出了无人机监控系统的模块构成,在分析模块要素的基础上,给出了在BCB下实现无人机任务规划与监控系统的方法。通过在BCB中引入MapX控件,提高系统对GIS信息的监控处理能力;建立了无人机航路优化的VORONOI图数学模型,通过最小化航路代价的Dijkstar算法,在MapX中实现了最优航路的搜索,并针对MapX、动态更新的关键技术问题提出了一套有效的解决的方案,给出了其实现的核心代码关键词:MapX;无人机;航路规划;监控系统中图分类号:TP311.52  文献标志码:A

1,2

1

2

3

StudyonpathplanningitorUAVbasedonBCB&MapX

IQ,CHENChun2jun,HUMao2hai

123

(TechnologyInstitution,ChengduSichuan610036,China;

2.CollegeMEngineering,SouthwestJiaotongUniversity,ChengduSichuan610031,China;

3.CollegeofInformationandCommunicationEngineering,HarbinEngineeringUniversity,HarbinHeilongjiang150001,China)

Abstract:Onthebasisoftheanalysisofmodulestructureofthesystem,anapproachtoMissionPlanningandMonitoringSystemofUnmannedAerialVehicle(UAV)wasgiveninthepaper.ByimportingtheMapXActiveXcontrolintotheBCBdevelopinterface,thecapacityofmonitoringonGISwasimprovedinthesystem.ThemathematicmodelbasedonVORONOIdiagramoftheoptimalpathplanningoftheUAVwasestablished.TheoptimalpathsearchingwasrealizedintheMapXbyDijkstararithmeticwhichwillminimizethecostoftheroads.AsuitofeffectivemethodwasproposedtodealwiththeproblemofdynamicmarkingofcomplexICOandflashproblemwhenglobalrefreshintheMapXandthekeycodeswereprovided.

Keywords:MapX;UnmannedAerialVehicle(UAV);pathplanning;monitoringsystem

0 引言

随着无人机军事用途的不断扩大,无人机已经成为一种新型的空中力量,作为一种高效费比、攻防兼备的新概念武器,无人机在“枯燥任务领域、恶劣环境任务领域和危险任务领域”三个特定环境中发挥出重要的作用,已经成为各主要军事国家新世纪备受青睐的武器装备[1]。指挥控制站是无人机测控与信息传输系统中的主要组成之一,其他组件大都与他有接口,旨在加强他们之间的通用性。指挥控制站由指挥控制计算机、监控与数据处理计算机、飞行控制设备、任务控制设备、通讯设备、任务保障设备等组成。其中的软件部分需要对所有的设备进行参数控制与显示,对飞行任务进行智能规划,并完成数据注入;对航迹参数进行显示记录与及数据回放;对飞行及任务状态进行实时监控。

本文针对某无人机地面指挥控制站在BorlandC++Builder(BCB)平台上结合MapInfo公司提供的地理信息系统

(GIS)处理控件MapX,介绍无人机系统航路规划与系统监控

分析功能的建立在OCX技术基础上的可编程Active组件[2]。它是一种基于Windows操作系统的标准控件,能支持绝大多数标准的可视化开发环境。开发的应用系统可以脱离MapInfo的软件平台单独运行。利用MapX能够在应用系统中嵌入地图功能,使系统具有空间分析能力。

1 

系统概述

图1 无人机航路规划与监控系统结构

功能的开发。BCB既具有非常丰富的界面库控件,为界面的开发设计提高了工作效率,在代码上又延续了C++的风格,其程序模块化和类的设计方法保证了程序可靠性、可读性和安全性。MapX是MapInfo公司向用户提供的具有强大地图

无人机系统航路规划与监控系统组成结构如图1所示。该软件系统以硬件平台为基础,为无人机地面站测控系统的一部分。系统运用以工控计算机为核心的自动化设备和软件构架,实现对无人机航路智能规划和状态控制与监测。软件部分通过硬件通信接口上行发送遥控指令和对下行遥测数据进行处理,并可完成方案的制定与实施、任务的生成与管理、任务回放等功能。其中,GIS处理模块采用嵌入的MapX控件

收稿日期:2007-03-27;修回日期:2007-06-01。  作者简介:李华超(1982-),男,硕士研究生,主要研究方向:智能控制与自动化、状态监测; 吴潜(1969-),男,高级工程师,主要研究方向:测控总体; 陈春俊(1969-),男,副教授,主要研究方向:自动控制、PC仪器。

bcb数据库功能及其他功能

2316    计算机应用2007年

对飞行的轨迹与相关地理信息进行处理;飞行状态信息(如方位角,各舵机状态,机载电源,飞行空速、地速等)采用仪表化的控件显示;设备状态监视主要是监控包括机载设备、地面设备在内的状态信息,如接收机、调制器/模拟源、天馈、信道、频标等。地面数据回放处理根据遥测与遥控的帧结构在SQLServer2000中设计含有帧报告正文中字段集合的表,用SQL命令实现存储、查询、删除等功能。

法,已被众多的学者研究。其基本原理可以表述为:穿越两个具有相同威胁权的威胁源时,其最安全的路径在连接两个威胁源的直线的垂直平分线上。通过构成的VORONOI图可以快速确定所有的初始可飞航路,然后通过一系列的航路搜索算法在VORONO

I图中找出最优的航路,它的航路初始规划方法可以为各种不同航路搜索算法提供局部的可飞区

,快速确定第一层次的航路。

2 基于VORONOI图的航路规划算法

2.1 航路规划的离散威胁模型

在各种航路搜索算法中,是一个在给定航路代价指标下使其最小的过程,不考虑雷达探测概率与距离的关系,以及直距离和大气衰减的影响,雷达的威胁方程[3]:

222PGλσF

PR=

(4π)3R2CBL2

(1)

其中:PR为雷达接收机收到的回波信号功率;PT为雷达发射

机输出功率;G为发射天线增益;λ;目标的雷达散射截面积;F接受方相等);R();CBL。由式(1)可知,除R之外,,因此可以近似地认为雷达的探测能力正比于1/R4。单个的

UAV沿某段航路边i飞行时,第j个威胁点对该条航路的威胁

图2 航路规划模块实现流程

代价可以表示为[4]:

Xth(l)=

f(l)dl∫

4

(2)

其中,f为威胁点与航路之间的关于距离的四次方的函数。为简化问题的处理,将比例系数置1,并将式(2)离散化,取航路中的若干个均分点(舍弃始末端点)到威胁点的距离计算航路代价:

Xth(i,j)=

Lk

n=2k-1

4

(3)

(n/k)i,j

其中,k为第i条边的均分点数;Li为第i条边的航程;d4(n/k)i,j为第i边中的第n个均分点到第j个威胁点之间的距离。这样第i条边在所有能探测到雷达下的总威胁为:

Xth(i)=

N

k-1

N

∑∑

j=1n=2

Xth(i,j)=

j=1

Lk

n=2

k-1

4(n/k)i,j

]

图3 VORONOI图网络及Dijkstar算法在MapX中的实现

(4)

其中,N为所有能探测到第i条边的雷达数目。对于一条由

M条VORONOI边构成的航路,其航路的威胁代价为:

M

N

本软件在最优航路的搜索算法中,采用了经典的Dijkstra

最短路算法[6],Dijkstra算法是求一个连通加权简单图中从节点s到节点t的最短路的代价,该算法将网络节点分成三部分:未标记节点、临时标记节点和永久标记节点。网络中所有节点首先初始化为未标记节点,在搜索过程中凡与最短路径中的节点相连通的节点为临时标记节点,每次循环都是从临时标记节点中搜索距源点路径长度最短的节点作为永久标记节点,直至找到目标节点或者所有的节点都成为永久标记节点来结束算法。航路规划的搜索流程如图2所示,软件中的实现如图3所示,圆点所示为在25km×18km的作战范围内随机生成的威胁源,它通过情报文件的格式导入;虚线所示为通过威胁点源构造的VORONOI网络,它为任务执行者提供了一个直观的航路模型;假定无人机要从24号威胁源附近进入,到达21号威胁源附近的目标区域,在威胁代价和燃油代价折中权系数取0.2时,在VORONOI图网络中搜索出的最优航路如粗实线所示,可见最优航路在避开威胁同时,尽量以最短的路线达到目的地。

Xth(road)=

∑∑

i=1

j=1

其中,i为某一边的标号。在考虑式(5)的同时,一般情形下,最优的航路还需要考虑该条航路的燃油代价Xth(road),它是M条VORONOI边长的正比例函数:

M

Lk

n=2

k-1

4(n/k)i,j

]

(5)

Xfuel(road)=

∑L

i=1

i

(6)

联合式(5)和式(6),某一航路的总代价表示为他们的加权形式,权系数的确定由任务的性质和决策者的侧重因素确定[5]:

X(road)=kXth(road)+(1-k)Xfuel(road)

(7)

2.2 最优航路的搜索流程

基于VORONOI图的航路规划是计算几何学的规划算

bcb数据库功能及其他功能

第9期李华超等:基于BCB&MapX的无人机航路规划与监控系统实现2317    

3 飞行监控

3.1 MapX中自定义复杂图标的动态标绘

标系。在MapXActiveX控件上,屏幕坐标与地图坐标的关系

如图5所描述:其中sx2os2sy为以像素为单位尺度的屏幕坐标系;mx2om2my为经纬度为尺度的投影坐标系;x2o2y为图标坐标系,即图5描述的坐标系。如果调用MapX的FeatureFactory来创建如图5所示的图形,对于坐标的定位是基于地图数字化经纬度的,它从遥测的数据帧中获取。为了保证图标外形的确定性,同时又调用MapX的绘图办法,需要坐标的转换,具体的图标的绘制过程如下:

1)确定图标坐标系在地图坐标系的位置(遥测帧数据中获取),即O在坐标系mx2om2my中的位置;

2)在图标坐标系中,计算零度(正北方向)图标的各特征

在MapX中,在符号标绘方面支持位图、矢量图和TTF图

3种符号的标绘。但是这3种形式都存在着与二次开发不相符的缺陷。其中的位图符号和矢量图符号不能旋转[2],TTF符号虽然能旋转,但是需要专业工具制作且工作量大。此外,以上3种标绘符号都不能随整幅电子地图同步缩放,导致在地图图层缩放时图标大小不适宜,影响监控。因此,在一些大量使用标绘符号的系统里,需要采用新的方法。目前,一些专业的GIS机构是采用从底层开发的方法来开发符号标绘系统[7]。这些符号标绘系统一般都具备较强的标绘功能,但因其开发周期长、投入大,不宜用于一些短平快的开发项目。由于本文涉及的监控系统中,自定义标会的动态图标数量少,本文利用MapX的FeatureFactory对基本元素(符号、线、弧段、区域)的创建功能,组合创建自定义的动态图标。

针对需要动态绘制的图标,,例中图4所示的P1~P18,的坐标,

点坐标;

3)M的ConvertCoord函数,设;

)3步计算π-a度(屏幕坐标系的y方向与图标坐标y方向相反)。其中,a为航向角(与正北方向的夹角),旋转前后的坐标关系按式(9)计算;

5)将第4步计算出的各屏幕坐标转换为地图坐标(调用Mapx的ConvertCoord函数,设置参数为miScreenToMap),在地图坐标系中,通过封闭的点构成区域,在MapX的FeatureFactory中形成自定义的区域图形。

按照上述步骤,首先在主窗体的头文件中定义一个飞机图标结构的类:

classAirPLIco{private:SingleS;

//图标大小//图标的方向;//图标中心的位置;//图标系统特征点位置;

doubleDirAngle;doublePX,PY;double33pst;public:

AirPLIco(Singles,doublepx,doublepy,doubleDirA);

//构造函数//析构函数//获取坐标值;

//内联函数

//end//飞机图标

图4

 图标坐标系下特征点集描述的图标

~AirPLIco(){delete[]pst;}

doubleget_pst(intx,inty){returnpst[x][y];}};

图5 图标坐标系、地图坐标系与屏幕坐标系关系

在本例中,涉及到图标的方向旋转问题。旋转需要有一个旋转中心。定义旋转中心为飞机图标的位置坐标(x,y),即图5所示x2o2y坐标系的原点。图中r为要旋转的特征点到原点的距离。在旋转过程中,r保持不变;b为r与x轴之

间的夹角。设初始位置为(x0,y0),旋转到(x1,y1),在坐标系x2o2y中,旋转前则有:

x0=rcosby0=rsinb

在BCB的主窗体类中添加新的方法绘制无人机动态图标,并通过改变图元的边界颜色使产生闪烁以提高视觉可观测性:

void__fastcallPlotAirplane(doublex,doubley,doubleangle);{//x,y为无人机的经纬度位置,angle为航向角;Doubleafa=(180-angle)3DEG2ARE;//角度转换为弧度AirPLIcoAPLI(SIZE,x,y,afa);CMapXPointsDisppoints;

//定义图标类的一个对象

//MapX中的点集合

(8)

CMapXFeature3ft=NULL;//MapX中的一个图元特征points.Bind(StringToOleStr("MapX.Points.5"));unsignedintm=18;

SingleSr_Xt,Sr_Yt,3Sr_X=newSingle,

//图标特征点数

旋转角度a后:

x1=rcos(b-a)=x0cosa+y0sinay1=rsin(b-a)=-x0sina+y0cosa

(9)

3Sr_Y=newSingle;

DoubleMap_X=x,Map_Y=y,

式(9)是在基于图标坐标系中的旋转关系,由于地球本身是一个椭球体,其经纬度的投影是非正交的[8,9],故在非笛卡儿坐标系下绘制的图形在经过旋转后会发生形变,这不是

我们希望的。为了保证在视觉上图标的形状的确定性,并能随地图的缩放一起缩放,图标的参数调整应该是基于屏幕坐

3Map_Xt=newDouble,3Map_Yt=newDouble;

for(inti=0;i<m;i++){

MapX1->ConvertCoord(Sr_X,Sr_Y,&Map_X,&Map_Y,//地图坐标转换为屏幕坐标Sr_Xt=3Sr_X+APLI.get_pst(i,0)3cos(afa)+APLI.get_pst(i,1)3sin(afa);//在屏幕坐标系下旋转miMapToScreen);

bcb数据库功能及其他功能

2318    

Sr_Yt=3Sr_Y-APLI.get_pst(i,0)3sin(afa)+

APLI.get_pst(i,1)3cos(afa);

计算机应用

TwoPoints->AddXY(pt.x,pt.y);Line=NULL;

Line=MapX1->FeatureFactory->

CreateLine(EmptyParam,EmptyParam);Line->Parts->Add(Tpoints);

MapX1->Layers->_Item(Variant(1))->AddFeature(Line,EmptyParam);

2007年

MapX1->ConvertCoord(&Sr_Xt,&Sr_Yt,Map_Xt,Map_Yt,miScreenToMap);//屏幕坐标转换为地图坐标points.AddXY(3Map_Xt,3Map_Yt);

//地图坐标添加到点集

}

ft=MapX1->FeatureFactory->CreateRegion(Variant((CMapXPoints3)points),EmptyParam);

//通过点集创建区域

MapX1->Layers->_Item(Variant(1))->AddFeature(ft,EmptyParam);

//区域添加到地图首图层上显示

deleteSr_X;Sr_X=NULL;deleteSr_Y;Sr_Y=NULL;deleteMap_Xt;Map_Xt=NULL;deleteMap_Yt;Map_Yt=NULL;}

//PlotAirplane函数end

//安全释放内存

//forend

//创建线

//修改线段的特性//添加到动态图层

//移除上一位置的点,为下一次轨迹绘制保留当前点Tpoints->Remove(Variant(1));

程序航迹显示与监控信息处理模块结果如图6所示。其中,深色直线段为规划的轨迹,浅色曲线为某次飞行的飞行实际轨迹,无人机的飞行状态信息(姿态、速度、高程、油门等)尽可能的采用仪表化的设计,机接口

在BCB中,通过定时器(Timer)调用PlotAirplane函数,新函数的调入参数,3.2 飞行轨迹显示

,如果采[10],采用MapX,但是采用全局更新的办法时仍然会出现地图整体闪烁的现象,影响对目标的监测。本文在采用动态图层的基础上,对轨迹的更新采用局部更新的办法,仅对航迹链表中最近的两个点更新,以提高显示速率,同时通过设置MapX中地图的

[2]

RedrawInterval,当设置一个较高值(例如3000)时将有效关闭增量绘图———屏幕在地图完成充屏之后更新。校飞试验表明采用这种方式能非常有效地克服地图闪烁问题,并尽可能地提高刷新速率,向用户实时显示确实发生的事。

首先,定义一个以双精度数据描述的点坐标的结构体:

structmyPoint{doublex;doubley;}

//end

图6 某型无人机校飞试验监控系统的实现

4 结语

采用BCB结合MapX的方法能够快速地开发无人机地

面站的任务规划与飞行监控软件。文章建立了无人机航路规划的优化数学模型,并通过Dijkstar算法在MapX中实现了航路的拓扑分析,实现了最优航路的搜索。针对MapX的在复杂图标标绘方面的某些局限性讨论了其解决的方案,并给出了其核心代码。考虑到篇幅的限制,对本软件设计中涉及到的数据库技术、飞行姿态信息的处理以及系统设备状态的监控未加详细介绍。该软件在某地面站系统中成功应用,并在对某型无人机的校飞过程中表现出良好的性能。参考文献:

[1] 李寿安,张恒喜,郭风,等.微型无人机的现状与发展趋势[J].

定义变量:

std::list<myPoint>TrackList;//轨迹点列表structmyPointpt;

CMapXPointsDispTwoPoints;CMapXFeature3Line;

//为TrackList保留,写到动态链表

//用于局部更新的两个点//由两点构成的更新线段

导弹与航天运载技术,2005,(6):56-60.

[2] MapInfoCorporation.MapX用户开发指南[EB/OL].[2006-10

-10]./mapx/html/mapx_docs.html.[3] 杨振起,张永顺,骆永军.双(多)基地雷达系统[M].北京:国

在主场体的构造函数中初始化上述变量并创建动态图层:

TwoPoints.Bind(StringToOleStr("MapX.Points.5"));pt.x=MapX1->CenterX;pt.y=MapX1->CenterY;

TrackList.push_back(pt);TwoPoints->AddXY(pt.x,pt.y);

CMapXLayerDispNewLyr;NewLyr.Bind(StringToOleStr("MapX.Style.5"));NewLyr=MapX1->Layers->CreateLayer(Variant("templyr"));

MapX1->Layers->AnimationLayer=MapX1->ControlInterface->Layers->_Item(Variant(1));

//创建动态图层end

//初始化end

防工业出版社,1998.

[4] 叶媛媛,闵春平,沈林成.基于VORONOI图的无人机空域任务

规划方法研究[J].系统仿真学报,2005,17(6):1353-1356.

[5] 唐强,张翔伦,左玲.无人机航迹规划算法的初步研究[J].航空

计算技术.2003.133(11):125-129.

[6] DIJKSTRAEW.Anoteontwoproblemsinconnexionwithgraphs

[M].NumeriskeMath,1959(1):269-271.

[7] 梁日辉,罗建军.MapX在VC++中集成实现军用标图系统的研

究[J].计算机应用与软件,2005,22(6):43-46.

[8] 刘光.地理信息系统二次开发教程组件篇[M].北京:清华大学

出版社,2003.

[9] 王保健,彭认灿.在MapX下实现特定地图投影的一种新方法

[J].测绘通报,2004,3(6):47-49.

[10]刘昌平,王勇,崔洪刚.基于MapX实时绘制车辆轨迹的研究与

在主窗体中绘制轨迹的核心代码:

pt.x=PT.get_X();

pt.y=PT.get_Y();TrackList.push_back(pt);

//获取当前的坐标位置//将新的位置添加到链表中

实现[J].南昌工程学院学报,2005,3(24):40-42.

本文来源:https://www.bwwdw.com/article/ou34.html

Top