杨 帆,沈宝国
(江苏航空职业技术学院,江苏 镇江212134)
当下无人机已发展成融合勘察、监控、追踪、攻击等多功能为一体的智能化小型飞行器,它以成本低、体积小、使用便捷、隐蔽性高、适应性强等优势,能够适应各种极端环境,并发挥着不可替代的作用[1-2]。随着无人机应用的不断深入,与之相配套的地面控制系统也由支持单一任务模式逐步发展成搭载多任务模式,由接收极少量信息的系统发展成集飞行监控、航路规划、任务分配与执行、数字地图导航、卫星通信等多功能一体的智能化控制系统[3]。开展对地面控制系统的研究,既有利于加深对导航定位原理的理解,又有利于进一步地分析各个功能模块的具体实现以及彼此之间的协同作用。
本文基于某型号靶机研制的实际工程背景,设计了一款集飞行监测与控制、串口通讯、路径规划与优化、数据记录、转换与重播、数据绘制与载入等多功能于一体的无人机地面检测软件。
本软件主要适用于某型号靶机研制阶段和发射前测试阶段的飞行规划和控制。设计需求:
(1)支持多任务加载,在线修改、添加、删除数据,完成信息装订。
(2)设计基于智能算法的航路规划方案,生成任务航线并进行优化。
(3)能够实时监测和管理飞行数据,并实现有效控制。
(4)具备数据记录、重播和回放功能,便于后期分析。
(5)通信系统稳定可靠、满足大数据传输要求。(6)具有良好的人机交互能力。
基于上述需求,本文遵循分层模块化设计思想,建立包含航路规划与优化、串口通信、飞行监控、数据处理、数据加载这五个功能模块的框架图,如图1所示。
图1 软件功能模块框架图
图1 中,数据库需要向软件输入任务加载文件、重播文件,相反,软件将生成的航路规划文件、飞行数据记录、数据处理结果存放于数据库;飞行监控模块包含发送控制和检测指令、数据监测三个子功能,是软件的基本功能模块;航路规划与优化分为两个步骤,第一步设计基于改进蚁群算法的无人机航路规划方案,并通过Matlab 三维仿真验证,第二步结合无人机自身特性和任务要求,用几何优化算法对航路进行平滑处理;通信模块关乎地空数据处理的效率和准确度,本文设计串口通信函数,实现串口大容量地处理字节数据。此外,数据加载模块主要实现任务区和航路区的数据装订,数据处理模块主要包括对飞行数据的记录、重播、转换和后期数据绘图。
2.1.1 基于改进蚁群算法的航路规划算法设计与仿真
针对蚁群算法收敛效率低和易早熟收敛的缺陷[4-5],本文首先引入蚁群系统,改进算法结构,并自适应优化挥发因子和启发函数并限定阈值,增强算法的种群多样性和收敛速度。其次制定基于分级警戒区的信息素初值不均匀分配方案,有效地解决初期因盲目搜索导致的交叉路径、效率低下等问题。再次设计包含混沌算子的最优-最差信息素更新和变尺度混沌局部搜索,增加算法随机性能,避免其陷入局部最优,最后通过仿真验证了改进算法的有效性。
为了验证改进算法在三维规划环境中的有效性,本文选取典型的山峰地形环境数据,生成仿真环境。同时设定无人机满足以下约束条件:
(1)无人机最大转弯角为60°。
(2)最大爬升/俯冲角为30°。
(3)无人机尽可能选择山体中较为凹地形或平缓的飞行区域,同时注意防止撞击山体。
(4)起点为(10,3,0),终点为(8,5,0),单位为km。图2 为航路规划结果图,图3 为对应的适应度(航迹代价)收敛图。
图2 航路规划结果图
图3 适应度(航机代价)收敛图
由图2 可知,无人机规划的航路既降低高度,选择相对平缓的区域飞行,利用山体遮掩作用,有效跟踪地面状态和躲避敌方雷达的探测,增强隐蔽性,又设置安全飞行高度,避免与山体碰撞。
由图3 可知,该航路随着迭代次数的增加,其适度度(航迹代价)值不断减少,并且通过算法中相应的改进措施,一方面在前期收敛加速,另一方面有效提高全局寻优能力,避免早熟收敛。本文算法的设计流程图如图4 所示。
图4 算法流程图
上述算法已验证,故不作详细推导,如何将改进算法应用到实际工程应用是本文重点。
2.1.2 基于Visual Studio 平台的航路规划算法应用
具体应用流程:
(1)基于Visual Studio 设计航路规划任务界面,如图5 所示。
(2)实现混合Visual Studio 和Matlab 的混合编程
图5 基于Visual Studio 设计航路规划任务界面
2.1.3 航路平滑与优化
无人机在实际飞行过程中存在不可飞航点、无法直线转弯、特殊任务区域航路段等问题,以不可飞航点为例,本文采用几何算法进行航路平滑与优化。
图6 中,原有航路段由航点Si-1、Si、Si+1组成,其中在Si处转弯,且夹角记作ξ,且ξ <90°。因无人机最小转弯角和最大转弯半径限制,一般不采用锐角转弯方式,故这里要通过几何算法添加航点进行优化。几何算法设计流程如下:
(1)过Si作直线垂直于线段Si-1Si,且取=2(),由此得出航点。
(2)连接Si+1和,与线段形成新的夹角,记作ξ′。
(3)判断ξ′>90°,如果成立,继续(4),反之重复操作(1)。
(4)上图中存在两处转弯,分别在Si和,通过圆弧转弯几何原理,形成新的航路路径为:Si-1- Si-- Si+1,且在转弯处进行圆弧转弯。
图6 处理不可飞航点示意图
2.1.4 航路信息一体化管理
为了便于处理大量的航点信息,本文采用一体化管理模式。统一采用类Route 统一管理航路的相关信息,类RoutePoint 存储航点的相关属性值,且Route包含RoutePoint 的对象,其余类与Route 有直接或间接的联系。以下为类RoutePoint 中变量和函数。
Class RoutePoint
{
private:
double longitue;//经度
double latitude;//纬度
double altitude;//高度
unsigned char stateChar;//状态字
unsigned char staskChar;//任务字
CString RoutePointType;//航点类型
……
public:
RoutePoint();//构造函数
~RoutePoint();//析构函数
RoutePoint(const RoutePoint &a);//拷贝构造函数
POINTYH II2xy(double initial_longitude,double initial_latitude))//坐标转换
void set_longitude();//以获取经度信息为例})
本文对航路规划的算法设计封装在规划RoutePlan 类中,其中包含的函数变量名如下:
Class RoutePlan
{
private:
bool plan_the_rudeway();//粗略规划
bool smooth_the_rudeway();//航路平滑规划
public:
void add_frontpoint(double distance);//添加前伸航点
void add_behindpoint(double distance);//添加后延航点
heightCheck();//高度判断
qiFeiGuiHua();//起飞点规划
void delete_the_point();//删除非固定航点
……
})
本文基于实际应用背景,设定如下参数要求:
(1)接口方式采用异步RS-422A;波特率为11520bps。
(2)1 位起始位+8 位数据位+1 位停止位+校验位。
(3)上行采用定帧长,即帧头+指令编码+数据+校验位。
(4)下行采用不定帧长,针对不同类型的数据,采用不同长度的帧长,极大增强软件的运行性能。
2.2.1 通信模块的软件架构设计
该模块的设计思路如下:
(1)判断串口事件属性是否为数据接收状态(comEvReceive),否则,等待处理。
(2)分别计算缓冲区剩余空间大小值(lenbuf)和接收到的数据长度(lentmp)。
(3)判断lenbuf>lentmp,如果成立,表明缓冲区足够能容纳接收数据量,反之,因缓冲区为环形缓冲区,可存储在其内,并设置数据有效标志位(RmtEnd)。
(4)将接收到的数据存储到数组(RmtData-Buffer)。
图7 通信模块设计流程图
本文设计的飞行控制模块包括控制指令和检测指令,分别如图8 和9 所示。
图8 控制指令子模块
图9 检测指令子模块
为了便于跟踪指令的运行情况,本文采用不同颜色表征指令运行状态。当点击按钮时,颜色首先是绿色,即指令发送成功;随之变成黄色,即指令被飞控接收,最后指令变成红色,表示已成功执行。效果如图8 所示。此外,为了提高界面人性化、避免用户误操作,设置了输入案例和限幅操作。
图10 为监测数据显示界面,包括飞行器基本信息、舵面、大气机、导航、加速度计、磁罗盘、无线电高度等信息。数据显示形式包括十进制和二进制数字、LED 灯、文字。
图10 监测界面显示图
2.4.1 加载任务文件
在实际作战中,需要加载任务数据,包括航路区和安控区数据,其中安控区按照警戒程度由低到高分为预警区和警戒区。图11 和12 分别为加载航路数据和加载安控区数据。
图11 加载航路
图12 加载安控区
2.4.2 数据重播和绘图功能
当点击“开始”按钮时,将飞行数据保存成“*.bin”或txt 格式存放在数据库中,点击“停止”按钮标志停止记录。当进行数据重播时,软件可以自定义重播速率,可以任意拖动进度条,可以中途暂停、继续或停止数据重播。点击“转换”按钮可以将“*.bin”格式保存的文件通过数据解算后转换成excel 格式的文件,以便后期研究人员分析评估。
数据绘图模块通过绘制时轴图,直观地显示变量随时间的变化趋势,绘图变量包括俯仰角给定值、滚转角(倾斜角)给定值、实时俯仰角、滚转角、三个角速率、三个舵面输出值以及高度值。
本文设计的无人机地面检测软件,经过工程试验,界面友好,操作便捷,运行效率高,具备一定的工程应用价值,但在航路规划方面未实现面对突发情况的自动调整功能,有待后期补充和加强,同时,后期将添加更多功能以丰富软件内容,提高性能。