基于Qt的无人机地面站软件系统的设计
2017-03-12李帅范项媛
李帅, 范项媛
(1.中国电子科技集团公司第三十八研究所, 安徽合肥 230088;2.孔径阵列与空间探测安徽省重点实验室, 安徽合肥 230088;3.智能情报处理重点实验室, 安徽合肥 230088)
0 引言
无人驾驶飞机是一种有动力,可控制,能携带多种任务设备,执行多种任务,由无线电遥控操纵或自主程序控制,并能重复使用的无人驾驶航空器,简称无人机(Unmanned Aerial Vehicle, UAV)[1]。由于其独有的零伤亡、低损耗、可重复使用和高机动等优势,受到越来越多的重视,使用范围包括军事、民用和科学研究三大领域。
无人机地面站(UAV Ground Control Station)作为其中非常重要的一部分,实现了对无人机飞行状态和设备状态的实时检测,控制无人机飞行轨迹,并对一些故障及时给与警报或采取相应处理措施。
本文重点讨论无人机地面站中软件系统的设计,由于目前对国产化操作系统的推广,要求软件可同时支持Windows平台和Linux平台。Qt采用C++软件开发框架,可实现“一次编写,随处编译”[2],使程序在不同平台下完美运行,选择Qt进行地面站软件的设计已经是当务之急。
以下从系统组成、软件系统设计和设计实例三个方面展开阐述,给出基于Qt开发平台的软件设计方案。
1 系统组成
1.1 无人机系统组成
无人机系统主要包括两部分:飞行器(Air Vehicle)和无人机地面站,如图1所示。
图1 无人机系统组成图
在飞行器执行飞行任务之前,首先进行飞行器的航迹规划和航迹注入,由地面站通过无线通信装备向飞行器发送航迹规划遥测命令。确认航迹注入成功无误,进入飞行器飞行控制,由地面站通过无线通信装备向飞行器发送飞行遥测命令。飞行任务执行过程中,飞行器通过无线通信设备与地面站进行链接,飞行器按照20 Hz的速率实时向地面站发送遥测信息,其中包括飞行器的经度、纬度、高度、横滚角、俯仰角、转速、水温等。操纵员可实时在地面站显控席位观察飞行器的各种状态,并对异常状态进行适当的人工干预,保证飞行器的安全和飞行任务的有效完成。无人机系统的数据流如图2所示。
图2 无人机系统数据流
1.2 地面站系统组成
地面站系统[3-4]包括硬件和软件两个部分,硬件主要包括地面站的机房、路由器、电脑机柜、显控席位台等,本文重点讨论地面站软件系统的设计。
地面站软件系统主要是对无人机的位置以及状态信息进行实时显示,同时可以对无人机的工作模式及参数进行控制,对飞行轨迹进行规划,保证无人机的安全飞行和飞行任务的有效完成。
为了提高地面站软件系统的鲁棒性,软件系统由3个独立进程组成,包括飞行器状态监视进程、飞行器控制进程和航迹规划进程。每个进程包括各个独立功能模块,如图3所示。每个进程独立进行通信,支持遥测和遥控即上行和下行数据,其中通信模块属于重用模块。每个进程之间的通信采用共享内存的方式进行。
图3 地面站软件系统组成
1) 通信模块:实现UDP通信参数的设置,支持单播和组播发送和接收;
2) 虚拟仪表模块:按照行业标准,基于QPainter实现横滚俯仰姿态图、指南针、通用仪表盘等设计;
3) 曲线绘制模块:基于Qcustomplot实现各种曲线图显示,支持单条曲线及多条曲线的绘制;
4) 数据重演模块:实现网络报文的记录和数据回放功能;
5) 控制参数配置模块:实现飞行模式的控制,支持XML配置文件实现动态配置;
6) 地图显示模块:基于osg库实现19级瓦片地图(精度可达到0.5 m)的显示及操作,包括地图的放大、缩小、漫游等功能;
7) 航点注入模块:实现航点的设置和上传注入,同时支持对话框手工输入及删除、地图鼠标标绘设置及删除。
2 关键技术
2.1 通信报文
地面站与飞行器之间以无线方式传输遥测信息和遥控指令,为了保证数据不受外界的干扰而发生错误,对通信报文进行校验设计,确保接收端能正确接收数据。
地面站软件系统的遥测信息和遥控指令的通信报文是定长报文,每帧共64 B,格式如表1所示。
表1 通信报文格式
头信息:2 B,在无线通信中,噪声是以随机字节出现的,使用头信息能起到稳定接收和发射通信的作用。地面站软件系统的通信报文以0XEB9A作为头信息,接收端只将以0XEB9A开头的通信报文作为有效报文。
数据部分:61 B,其中第一个字节是信息类型,用来区分遥测信息还是遥控指令,剩下的60个字节用于表示具体的数据信息。若是遥测信息,其中包括空速、地速、高度、滚转角、俯仰角、经度、纬度、主电源电压、主电源电流等参数信息;若是遥控信息,其中包括起飞、平飞、左倾斜5°、滑行等命令。
校验和:1 B,数据部分所有数据项之和取低8位,确保接收端数据不会由于外界干扰而出现错误,若出现不对应关系,则认为报文无效,丢弃处理。
尾信息:1 B,作为信息报文的结束标志。
2.2 虚拟仪表
可用于Qt平台的虚拟仪表库相对较少,其中Qwt[4]是一个基于LGPL协议的开源库,虽然拥有封装好的表盘类,但并不是为飞行器类产品专业设计,不满足行业类的使用需求。故地面站软件系统的虚拟仪表采用Qt的2D绘图类QPainter[5]绘制。设计绘制了包括姿态仪表、指南针、竖型数值显示图、通用表盘四种。
1) 姿态仪表
姿态仪表包括背景、俯仰刻度线、横滚刻度线、横滚刻度指针四个部分,它分成两个纬度,横滚变化是左右旋转,俯仰变化是上下平移,采用QImage的方式绘制在QWidget上,对QImage旋转和指针位置的重绘实现横滚和俯仰的变化。
设计流程图如图4所示。
图4 姿态仪表设计流程
设计效果如图5所示。
图5 姿态仪表效果图
2) 指南针
指南针由背景、360°刻度线以及中间的飞机型指针组成。根据飞行器的航向实时更新指针旋转方向。
设计效果如图6所示。
图6 指南针效果图
3) 数值显示图
数值显示图由背景、刻度线以及数值显示框组成。可根据显示数值的范围动态重绘刻度,数值显示框可实时更新数值并给出必要文字说明。
设计效果如图7所示。
图7 数值显示效果图
4) 通用表盘
通用仪表盘由背景、刻度线、指针、警示颜色条以及数值显示框组成。可根据显示数据的范围动态重绘刻度线,分段警示颜色条,数值显示框可实时更新数值并给出必要文字说明。
设计效果如图8所示。
图8 通用表盘效果图
2.3 航迹规划
航迹规划模块包括地图显示及操作、航点注入两个部分。
1) 地图显示及操作
采用osg(open scene graph)[6]开源库进行二次开发,osg拥有强大的地图显示功能,可加载高精度瓦片地图,可实现地图的基本操作,如放大、缩小、平移等。
使用osg开源库首先需要编译针对当前软件开发Qt版本的osg库文件,并将库文件、头文件的路径加载到软件开发环境中;然后,准备好需要加载的瓦片地图文件;最后,编写osg库读取地图文件的配置文件,按照需要的格式,设置参数,加载地图文件路径,即可进行地图显示。
2) 航点注入
航点注入分为航点设置、航点对比及航点启用三个步骤。
航点设置包括3种方式,第一种是地图标绘,即通过鼠标进行选择指定航点的位置,第二种是对话框手动输入,第三种是手动编辑航点文件,通过读取文件进行设置。这3种方式可以互相配合使用。航点设置可在地图上按照其地理位置进行叠加显示,会按照编号顺序用直线段将各个航点连接起来形成规划航迹。
航点对比就是比较本地航点设置与飞行器上的航点设置情况是否一致,作为飞行器飞行前的确认工作。飞行器上的回送航点支持在地图上按照规划航迹的方式显示,并可查看其具体数值。
航点启用属于航迹规划的结束标志,当航点对比确认成功,即完成航线规划任务。飞行器会按照机上航迹规划的路径执行任务。
航迹规划如图9所示。
图9 航迹规划对话框
3 应用实例
在某项目中采用Qt 5.3进行地面站软件系统的开发设计,显示效果如图10、图11所示。
图10为无人机地面站系统的状态监控和控制软件,其中集成了姿态仪表、指南针、通用仪表盘、曲线图、各类BIT的回馈显示以及飞行控制的指令按钮。
图11为无人机地面站的航迹规划软件,其中包括了二维精细地图显示,可支持放大、缩小、漫游,地图上设置了6个航点,按照顺序连成预设航线,确定的预设航线在界面上显示的同时会上传至无人机机上系统用于实际飞行控制。
图10 无人机地面控制软件界面
图11 航迹规划软件界面
4 结束语
本文提出的无人机地面站软件系统设计是基于Qt平台的,并可以同时满足在Windows平台和Linux平台上的完美显示。文中给出了地面站软件的架构组成和工作原理,并对设计关键技术进行了详细描述,可以有效地解决软件设计中遇到的问题,具有很强的可操作性。该设计可以满足大多数无人机地面站软件设计的要求,可广泛用于无人机地面站软件或相关的类似软件中去。
[1]周焱. 无人机地面站发展综述[J]. 航空电子技术, 2010, 41(1):1-6.
[2]李继进. 基于Qt的通用态势显示系统的构架及关键技术研究[D]. 南京:南京理工大学, 2012:6.
[3]魏明哲. 无人机航迹规划与状态追踪系统[J]. 唐山学院学报, 2016, 29(3):31-32.
[4]刘洋,韩泉泉,赵娜. 无人机地面综合监控系统设计与实现[J]. 2016, 24(14):110-111.
[5]卢华伟,秦品健,郑锐. 基于Qt/Qwt的操作监控系统的设计与实现[J]. 微计算机信息, 2010, 26(1):72-74.
[6]陆文周. Qt5开发及实例[M]. 北京:电子工业出版社, 2014:206-238.
[7]肖鹏,刘更代,徐明亮. OpenSceneGraph三维渲染引擎编程指南[M]. 北京:清华大学出版社, 2010:41-71.