基于Qt的系留多旋翼无人机地面站软件设计与实现

2023-07-20 23:26孙美娟邹天宇马靖
无线互联科技 2023年9期
关键词:飞行数据旋翼指令

孙美娟 邹天宇 马靖

摘要:系留多旋翼无人机在多旋翼无人机的基础上增加了系留线缆,使其可以通过地面电源直接供电,解决了多旋翼无人机续航时间短的问题。对此,文章以Qt5.14.2为开发平台,开发了一套功能完整、操作简洁的系留多旋翼无人机地面站软件系统。该系统实现了对无人机遥测数据实时显示、遥测指令发送、故障报警提示、电子地图显示、搭载不同载荷、数据存储和回放等功能。经过多次实际飞行测试,验证了系统功能的可靠性、完整性及可移植性。

关键词:系留多旋翼;无人机;Qt;地面站软件

中图分类号:TP18

文献标志码:A

0 引言

系留多旋翼无人机在传统无人机技术上增加了系留线缆系统,既可采用自身携带的备用电池进行供电,也可通过地面线缆系统向无人机供电,实现为无人机提供长期、不间断的电力动力,从而实现无人机长时间滞空1-2。与普通多旋翼无人机相比,系留多旋翼无人机解决了其续航时间短、动力不足等缺陷,能够广泛应用于应急救灾、电磁监控等民用领域,同时也在军事领域发挥重要作用3-4

本文是基于Qt5.14.2开发环境进行的无人机地面站软件开发,使用C++语言编程,可实现“一次编写,随处编译”,支持程序在Windows和Linux平台下运行,有利于国产化的推广5

1 软件需求与功能设计

1.1 软件需求

本软件主要适用于某项目系留多旋翼无人机的控制,软件需满足如下设计需求:

(1)能够控制无人机及载荷状态,实时显示无人机飞行状态信息及载荷状态信息;(2)对接收到的异常数据进行报警提示;(3)加载电子地图并在地图上显示定位信息及飞行轨迹信息;(4)支持搭载不同类型载荷;(5)支持对接收的飞行数据及载荷数据进行存储及回放。

1.2 功能设计

根据上述需求,系统功能采用模块化设计,软件主要功能如图1所示。

2 通信模块

通信模块的实现是通过UDP协议下的Socket网络编程实现的。UDP通信是无连接型的,相比于TCP具有更高的传输速率。通常在传输图像信息、信号信息等大数据量或周期性的数据时采用UDP传输,因为传输过程中即使偶尔丢一两包数据,也不影响结果的可靠性。

2.1 发送遥控指令

遥控指令的发送采用UDP组播的形式,每条指令由数据头、有效长度、消息ID、指令数据、校验字组成。遥控指令主要包括控制无人机起飞前的检查指令、起飞指令、飞行中的控制指令、降落指令等。其中,起飞前检查包括电机检测、磁校准、电机转动、参数设置等指令;飞行过程中包括对无人机的高度、航向、飞行时间等的规划指令。

操作人员可以随时单击地面站软件上的指令按钮向无人机发送相应指令,但无人机的安全飞行对指令的发送有其内在的逻辑要求。因此,发送遥控指令最大的难点在于如何实现大量指令的合理发送。这需要根据系留多旋翼无人机的特点,了解其内部操作逻辑,既能满足研制要求,也符合无人机安全飞行原则。比如:发送起飞指令的前提是需先成功发送解锁指令,使飞机达到解锁状态;而发送解锁指令的前提需先成功发送自检指令,完成无人机起飞前的检查。

2.2 接收遥测数据

实现对遥测数据的接收和解析是地面站软件的核心功能之一,无人机通过机载数据链路将采集的飞行信息和载荷状态信息等数据发送到地面的数据链路接收装置,地面链路再将接收的数据传送到地面站软件。软件接收到数据后,不能直接发送到界面显示,需要先按照指定协议校验,校验通过再进行解析、运算以及逻辑处理,将数据显示到界面6。接收遥测数据的代码如下。

(1)使用QUdpSocket,创建组播对象。

QUdpSocket* udpYKGroup;

udpYKGroup = new QUdpSocket(this);

(2)绑定IP和端口。

bool YKret = udpYKGroup->

bind(QHostAddress(localIP),YK_Port, QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint); //读取配置文件中的localIP

(3)指定接收数据的网卡。

QListlist=QNetworkInterface::allInterfaces(); //获取系统所有的网络接口

QNetworkInterface intf;

foreach(QNetworkInterface intf, list)

{

foreach(QNetworkAddressEntry entry, intf.addressEntries()){

if(entry.ip()==QHostAddress(localIP)){

udpYCGroup->setMulticastInterface(intf);

……

}}

(4)接收遙测数据。

while(udpYCGroup->hasPendingDatagrams())

{

QByteArray *datagram;

datagram = new QByteArray();

datagram->resize(udpYCGroup->pendingDatagramSize());

udpYCGroup->readDatagram(datagram->data(), datagram->size());

}

(5)数据校验、解析。

3 数据显示模块

为保证操作便捷、界面整洁,地面站软件将接收到的数据分为几个界面进行显示,分别为主界面、飞行数据信息界面以及载荷数据信息界面。其中,主界面主要显示载荷图像信息、报警信息和重要飞行数据信息。飞行数据界面显示无人机下传的所有飞行数据信息;载荷信息界面显示载荷设备下传的所有载荷状态信息。

3.1 飞行数据信息显示

飞行数据信息采用图表、图形与文字的组合方式进行显示。其中,与无人机飞行状态有关的横滚角、俯仰角、航向角等关键数据使用实时曲线图形式显示在软件的主界面,以便操作人员通过界面曲线变化情况,直观地观察无人机整体飞行状态,及时调整飞行姿态。无人机的信号强弱、电压值和电池电量,参考手机的信号和电池电量的显示形式,以图形的方式在主界面的右上方显示,操作人员可以实时观察无人机通信和电压情况。无人机下传的所有飞行数据信息在飞行信息界面显示。当有需要时,操作人员可以点击飞行信息按钮调出该界面,从而更全面、准确地观察无人机的飞行状态。

3.2 载荷数据信息显示

载荷数据的显示内容由无人机搭载的载荷类型决定,不同载荷类型显示界面不同。载荷数据主要分为两部分,一部分为载荷自身的设备状态信息,操作人员可以通过点击主界面的载荷状态按钮调出该界面;另一部分为载荷设备探测到的图像信息、信号频谱信息等,该信息在软件主界面显示。

3.3 报警信息显示

故障报警信息提示是无人机地面站软件极其重要的功能之一,它可以提醒地面操作人员根据报警内容实施相应的控制策略,以便及时排除故障、保证飞行安全6。该软件主要通过文字、图形及声音3种方式传递故障信息,并且划分故障等级。故障等级不同,采用的报警方式不同。

(1)当出现飞行数据超出协议规定的范围的情况时,飞行数据信息界面中相应的数据显示为:“--”,且文字颜色由正常的绿色变为红色,以便操作人员查看。

(2)当机载电压值、地面电压值或电池电量值低于设定的报警阈值,则对应图标变为红色。

(3)当出现链路丢失、解算失败、无IMU数据、低电压返航、气压计异常等报警提示时,软件主界面顶端位置弹出报警提示框,并在报警框中显示故障信息,为使报警信息更加醒目,报警框中文字颜色为红色。

(3)当涉及飞行安全的重要指标出现故障或载荷设备链接异常时,软件同时会通过声音报警的方式提示操作人员。当报警解除后,声音报警自动停止,操作人员也可以手动关闭声音报警。

4 电子地图模块

该系统使用第三方地图库,采用动态显示加载外部库的方式调用地图库。地面站软件使用Qt自带的QLibrary进行加载,通过调用协议中指定的接口函数加载电子地图,并将无人机下传的经度、纬度、高度等信息传送给地图库。地图库可以对无人机当前飞行位置进行标注,绘制无人机运行轨迹,并支持地图的基本操作功能,包括:放大、缩小、清除轨迹、打开漫游、取消漫游、进入量算、退出量算等。

加載地图库的步骤如下:

(1)把调用的地图库放在与地面站软件.exe同一路径中。

(2)在地面站软件显示地图的UI界面上拖拽一个QWidget控件,用于显示加载的地图。

(3)加载地图库。

5 数据存储与回放

5.1 数据存储

数据存储的主要功能是按照指定的路径和存储格式存储无人机下传的飞行数据及载荷设备下传的图像数据等信息,并且能够在必要时将存储的数据进行回放。

本软件采用文本的形式存储数据,数据存储在一个单独的线程中进行,使用QTextStream类进行存储,该类能将二进制文件以数据流的形式进行存储7。当网口从指定端口和IP地址接收到无人机下传的飞行数据后,在指定文件夹下,建立以当前时间命名的文本文档,通过QTextStream的out函数将接收的数据写入文本文档中。

5.2 数据回放

数据回放功能主要是根据选择的数据文件将存储的数据以与接收时完全相同的方式显示,复现飞行状况,以便更准确地对飞行数据进行分析8

数据回放的前提需断开无人机与地面站软件的连接。否则,界面既显示无人机下传的数据又显示回放数据,会造成界面数据跳动、图像错乱等现象。

数据回放多用于观察无人机整体飞行状况或故障排查,很多情况下并不需要对每一帧数据都仔细观察,而在排查故障时,又需要对故障数据详细排查。因此,本研究设计了6种回放速度,分别为0.5倍、0.75倍、正常速度、1.5倍、2倍、3倍。操作人员可以通过点击回放速度按钮,选择合适的回放速度。

6 测试结果分析及结论

开发完成的地面站软件经过3种测试方式验证其性能。(1)专门开发了一套针对此地面站软件的测试程序,对软件的功能进行逐一测试;(2)邀请具有测评资质的第三方测评机构对软件测评,测评机构分别对软件的功能、外部接口、内部接口、适应性、安全性等方面进行了两轮测试,软件最终通过测评;(3)在各种环境下,经多轮实际飞行实验,对软件功能进行测试。经多种测试结果分析,该套软件具有界面简洁、操作方便等特点,较好地实现了各部分功能,具有较强的实用性。整个系统是基于Qt平台开发的,具有良好的可移植性和扩展性。

参考文献

[1]付松源.系留多旋翼无人机及其在战术通信中的应用[J].电子技术应用,2018(4):14-17,22.

[2]龙文彪.系留多旋翼无人机及其应用[J].科技创新导报,2020(2):57,59.

[3]吴侹.系留多旋翼无人机通信系统在应急救灾通信中的应用[J].移动通信,2016(15):68-71.

[4]李帅,范项媛.基于Qt的无人机地面站软件系统的设计[J].雷达科学与技术,2017(4):410-414,420.

[5]吴许梦华,庞振岳.基于Qt的多旋翼电动无人机地面站软件设计与实现[J].飞机设计,2020(3):9-13,17.

[6]宁金星,卢京潮,闫建国.基于VC++的无人机飞控地面站软件的开发[J].计算机測量与控制,2009(3):596-598.

[7]SUMMERFIELD M.Advanced Qt programming:creating great software with C++ and Qt 4[M].London:Prentice Hall,2011.

[8]严赫.无人机地面站软件的设计实现及其数据库应用[D].长春:吉林大学,2019.

(编辑 王永超)

Design and implementation of ground station software for tethered multi-rotor unmanned aerial vehicle based on QtSun Meijuan, Zou Tianyu, Ma Jing

(Spaceflight Shenzhou Craft Co., Ltd., Tianjin 300301, China)

Abstract: The tethered multi-rotor UAV adds tethered cables on the basis of the multi rotor UAV, so that it can be directly powered by the ground power supply. Therefore,the problem of short endurance of multi rotor UAV is solved. In this regard, a ground station software system of tethered multirotor UAV with complete functions and simple operation is developed based on Qt5.14.2. The system realizes the functions of real-time display of UAV telemetry data,telemetry command sending,fault alarm prompt, electronic map display, carrying different loads, data storage and playback. After several actual flight tests, the reliability, integrity and portability of the system functions are verified.

Key words: tethered multi-rotor; unmanned aerial vehicle; Qt; ground station software

猜你喜欢
飞行数据旋翼指令
改进型自抗扰四旋翼无人机控制系统设计与实现
大载重长航时油动多旋翼无人机
基于STM32的四旋翼飞行器的设计
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
GARMIN1000系统维修平台搭建预研究
浅谈飞行数据集中处理流程管理
四旋翼无人机动态面控制
基于广域信息管理的飞行数据服务设计与实现
坐标系旋转指令数控编程应用