APP下载

基于Qt/Linux的飞行仿真管理系统的研究与设计

2015-02-24岭,万

直升机技术 2015年1期
关键词:视景实时性模拟器

朱 岭,万 偲

(1.中航工业直升机设计研究所,江西 景德镇 333001;2.西北工业大学,陕西 西安 710072)



基于Qt/Linux的飞行仿真管理系统的研究与设计

朱 岭1,万 偲2

(1.中航工业直升机设计研究所,江西 景德镇 333001;2.西北工业大学,陕西 西安 710072)

飞行仿真管理系统采用Windows系统作为其应用平台,在某种场合下,实时性不理想。为解决上述问题,利用Linux开源操作系统和Qt图形开发工具作为开发环境,设计一种低成本且实时性好的飞行仿真管理系统:首先,对Linux内核实时性进行改进并搭建仿真管理系统的开发平台;然后,提出该系统软件设计方案,包括人机交互界面的设计、分系统数据管理调度和分系统线程的建立;最后,对仿真管理系统进行仿真测试,结果表明,该仿真管理系统具有较好的可靠性和实时性。

飞行仿真管理系统;Linux操作系统;Qt;实时性

0 引言

直升机研制过程中,各种新技术的开发和研究成果的验证均需要先进而有效的研究工具,由此,现代飞行仿真技术应运而生。该仿真技术是以相似原理、控制理论、计算机技术、航空技术、精密机械技术、心理学和生物工程等为基础,以计算机和各种物理效应设备为工具,利用系统模型对实际的或设想的系统进行动态试验研究验证。该技术可大体分为三种:数学仿真、含实物仿真和人在回路仿真。

飞行模拟器属于典型的人在回路仿真系统,用来模仿直升机执行飞行任务或训练时的飞行状态、飞行条件及飞行环境,并为飞行员提供相似的操纵负荷、视觉、听觉、运动感觉的试验和训练装置。飞行模拟器的组成如图1所示,主要由仿真管理系统、航电系统、飞行系统、操纵系统、视景系统和教员台系统5部分构成。仿真管理系统在日常的飞行任务中扮演着十分重要的角色,是飞行模拟器的神经中枢,处理大量的数据信息,因此对其实时性要求很高。但是,目前国内直升机飞行模拟器基本采用Windows操作系统作为其仿真管理系统的应用平台,实时性不理想。

因此本文针对上述直升机仿真管理系统实时性不高的缺陷,利用改进的Linux开源操作系统和Qt图形开发工具作为开发平台,设计并开发了成本低且实时性好的飞行仿真管理系统,同时验证了该设计的可行性。

图1 飞行模拟器组成图

1 Linux内核实时性改进

由于Linux操作系统开放源代码可以免费下载,更可以自行修改内核代码以适应具体要求,因此,本文选择Linux作为仿真管理系统的开发平台。但它采用的中断处理机制、时钟中断机制和任务调度策略不能提供很好的实时支持[3-5],具体原因见表1。

针对表1中的问题,本文参考相关文献设计一个实时的Linux改进版本,简称N-Linux,主要修改了Linux的中断机制、时钟机制和实时多任务调度策略。详细实现方案如下:

1)修改Linux中断机制,实现内核可抢占性,即在内核与硬件之间加入一个中断模拟器接管内核对中断的管理。当内核关中断时,中断模拟器把之后发生的中断挂起并记录下来,待内核调用开中断命令允许中断时,中断模拟器对挂起的中断进行模拟,让Linux内核依次处理。

2)时钟中断机制:改变Linux原有10ms时钟中断的固定频率模式,在任何需要时通过重新设定时钟而产生中断,这是通过时钟控制模块实现的。时钟控制模块采用周期时钟中断模式,即将时钟芯片设置为任意精度的周期性中断方式[6-7]。

3)调度算法的主要任务是保证周期任务满足时间约束。基本思想是:由用户根据紧迫程度为任务分配静态优先级,具有最紧迫时限要求的任务将被分配最高优先级。

上述的实时N-Linux结构可以较好地满足实时性应用的要求。

表1 实现Linux实时性所要解决的关键问题

2 仿真管理系统设计

2.1 仿真管理系统开发平台搭建

考虑到仿真管理系统主要是为直升机飞行模拟器提供人机交互、数据和任务管理调度等功能,通过对其功能的分析,本文仿真管理系统开发环境采用多台X86结构的高性能计算机,开发平台为实时改进的N-Linux操作系统(Centos 6.0)和QT图形开发工具,QT是一种跨平台的开源界面库,性能较好,逻辑简单,易于开发,可有效地、实时地完成各个分系统之间的任务调度,开发语言为C/C++。另外,航电系统、飞行系统、操纵系统、视景系统和教员台系统(以下简称分系统)与仿真管理系统采用高速以太网进行通信,其示意图如图2所示。 高速以太网通信协议采用用户数据报协议(UDP),选取依据如下:从软件可维护性的角度出发,应选择当前流行的编程接口和通信协议,又考虑到管理软件开发基于多种平台,所选择的协议必须对所有这些操作系统都是兼容的。因此,选择了当前流行的TCP/IP协议:传输控制协议TCP和UDP。TCP提供面向连接的服务,由于TCP要提供可靠的传输服务,因此,TCP就不可避免地增加了许多开销,如应答、流量控制、定时器以及连接管理等,这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源;UDP提供无连接、不可靠的服务,在传送数据之前,不需要先建立连接,远程主机在收到数据报后,不需要做出任何应答。由此,为提高网络通信的速度,本文选用用户数据报的方式,即UDP协议[8-9]。

图2 仿真管理系统通信示意图

2.2 仿真管理系统软件设计

仿真管理系统对各分系统的应用程序进行统一调度和管理,其与各分系统的通信按任务划分,且每个任务都用一个线程来实现,包含飞行系统任务、航电系统任务、教员台系统任务、操纵系统任务和视景系统任务。软件设计流程如图3所示。

图3 软件设计流程图

1)系统初始化

系统初始化包含系统相关变量的初始化(如计数器变量)及分配各分系统的UDP端口号和IP地址。以下详细说明系统人机界面设计、分系统任务创建和分系统的数据处理。

2)人机界面设计

Qt采用面向对象的框架,拥有直观、强大的API(应用程序编程接口),因此系统人机界面的设计采用Qt图形开发工具。从Qt的官网下载最新的基于Linux的qt-sdk安装包,进入Linux根目录下,在终端里更改用户权限,解压安装包进行安装。进入QtCreator,开发仿真管理系统的人机界面。

人机界面的主要功能:显示仿真管理系统从各分系统接收的数据,向分系统发送经解算后的数据及显示分系统的连接状态。因此在界面的设计中选用QTableWidget控件显示分系统数据,详细界面设计参看仿真管理系统测试一节。

3)分系统任务创建

为保证飞行模拟器的正常运行,仿真管理系统与各分系统必须协调地工作。仿真管理软件系统由多任务(进程和线程的统称)组成,每项任务(由线程实现)负责处理与各分系统的信息交互。

分系统线程利用N-Linux的实时线程来实现,图4是基于N-Linux的仿真管理系统任务调度实例。操纵系统任务T1、飞行系统任务T2、教员台系统任务T3、视景系统任务T4、航电系统任务T5的静态优先级分别为100、90、80、70、60,数值越大表示优先级越高。在飞行员使用飞行模拟器训练时,若在视景系统任务T4运行中,教练员通过教员台系统任务T3更改飞行跑道(初始位置),T3将抢占T4任务而投入运行,但飞行系统任务需结合T3的初始位置信息解算直升机位置,故T2任务被激活,T3任务被抢占,待T2完成时,依次转入T3和T4任务。

图4 基于N-Linux的仿真管理系统任务调度实例

同时设定N-Linux时钟中断为50μm激活一次,保证仿真管理系统与各分系统实时通信。任务在创建线程的入口函数中采用Qt的信号与槽机制实现UDP数据通信,并显示在Qt界面中。

4)分系统数据处理

飞行仿真管理系统的主要任务是管理、解算和调度分系统飞行数据。以飞行系统为例,图5为仿真管理系统处理飞行数据流程。

图5 仿真管理系统处理飞行数据流程图

在图5中,由于各系统使用的坐标位置不同,因此仿真管理系统需将接收的数据经解算处理再分发给分系统:教员台系统(如直升机经纬度)、视景系统(直升机经纬度)、航电系统(如直升机经纬度)、操纵系统(侧滑角/操纵配平位置/攻角)。解算公式为:

Lat1=Lat×cosφ+Lng×sinφ+Lat0

(1)

Lng1=Lng×cosφ-Lat×sinφ+Lng0

(2)

hp1=hp+hp0

(3)

psi1=psi+psi0

(4)

其中,φ=π×(-psi0)/180.0,Lat1,Lng1,hp1,psi1分别表示经解算得到的经纬度/气压高度/真航向;Lat,Lng,hp,psi分别表示接收飞行的经纬度/气压高度/真航向;Lat0,Lng0,hp0,psi0分别表示接收教员台的初始经纬度/气压高度/真航向。

3 仿真管理系统测试

购买saitek公司生产的模拟真实飞行操纵设备的游戏柄(脚蹬、总距操纵杆、周期操纵杆),搭建模拟的飞行操纵系统,选择某型飞行模拟器的飞行系统、视景系统、教员台系统和航电系统用于测试本文开发的仿真管理软件。实验环境为一台x86计算机(windows操作系统),首先安装游戏杆的驱动程序,使用自带的软件完成游戏杆的测试。系统的测试环境如图6所示。

图6 系统的测试环境

仿真管理系统的测试界面见图7。

图7 系统测试界面

其测试步骤如下:

第1步:使用joyGetNumDevs()函数获取当前系统支持的游戏设备数量。

第2步:使用joyGetPos()函数/ joyGetPosEx()函数获取游戏杆设备的坐标位置。

第3步:采用QT for windows开发平台,并利用第1、2步中的函数完成操纵系统测试软件的开发,如图7(a)所示,操纵系统界面中包含脚蹬、俯仰、横滚和总距4个操纵量。

第4步:编写操纵系统网络通信代码,即利用UDP的writeDatagram()函数并启动定时器定时向仿真管理系统发送操纵杆量。

第5步:仿真管理系统界面如图7(b)所示,从图中可以看出,接收的操纵数据与游戏杆的变化量一致;同时,分系统状态栏中显示操纵系统处于连接状态,正在通过UDP协议实时接收操纵系统的操纵杆量。

第6步:最后,结合某型飞行模拟器的其他分系统测试此仿真管理系统。

问题:在飞行的过程中,出现卡屏现象。

分析:使用QTableWidget控件显示飞行数据时,涉及到QString变量与Double量的转化,然而在转化时直升机的经纬度精度降低,导致视景系统接收的直升机位置不连续。

解决:采用QString::Number(latitude/longitude ,"g", n)强制提升精度。其中latitude/longitude为直升机经纬度;n表示精度位数,这里n=11即可。

因此,通过测试验证了本文设计的飞行仿真管理系统在实时性、稳定性方面都满足要求。

4 结论

本文利用Linux开源操纵系统、Qt图形开发工具开发出成本低且实时性好的飞行仿真管理系统。由于飞行模拟器采用Windows操纵系统作为其飞行仿真管理系统的应用平台,其实时性不是很理想,针对实现Linux实时性所要解决的关键问题,提出改进Linux内核的方案N-Linux,以满足系统对实时性的要求。然后提出飞行仿真管理系统软件设计方案,包括人机交互界面的设计、分系统线程的建立和分系统数据管理、解算和调度,搭建模拟的操纵系统。选用某型飞行模拟器分系统测试仿真管理系统,验证了飞行仿真管理系统的实时性和稳定性都满足要求,现已应用在多种型号模拟器上。

[1] 李 林,等.飞行模拟器[M].北京:北京理工大学出版社,2012:1-4.

[2] 阎锋欣,等.C++ GUI Qt4编程[M].北京:电子工业出版社,2008.

[3] 曾 炜,沈为群. 基于RTAI Linux的飞行仿真实时管理系统[J]. 计算机工程,2008(10):261-263 .

[4] NISLEY E. Real-TIME Linux[J]. Dr. Dobbs Journal,2003,28(4):78-81.

[5] 肖和龙,唐文胜. 基于RTAI改进的Linux实时调度算法[J].计算机工程与应用,2012,(48):81-83.

[6] BARABANOV M, YODAIKEN V. Introducing real-time Linux [J]. Linux Journal, 1997 (34):19-23.

[7] 宋颖慧,等.增强Linux内核实时性能的研究与实现[J].哈尔滨工业大学学报,2005.

[8] Drude P. Theory of Optics[M]. New York:Dover,1959.

[9] 刘 畅,彭楚武. Linux下UDP编程实例[J].仪表技术.2005(4):62-64.

Flight Simulation Management System Research and Design Based on Qt/Linux

ZHU Ling1,WAN Cai2

(1.China Helicopter Research and Development Institute, Jingdezhen 333001, China;2.Northwestern Polytechnical University, Xi’an 710072,China)

Windows system was used as the application platform of flight simulation management system, in some case, the real-time performance was not ideal. In order to solve the above problem, the Linux open source operating system and Qt graphical development tool were used as a development platform, a low cost and good real-time flight simulation management system was designed: first, the real-time performance of Linux kernel was set up; then, the software design of this system was proposed including the man-machine interface design, subsystem data management scheduling and subsystem thread creation; finally, the simulation management system was tested, the simulation results show that the simulation management system had good reliability and real-time.

flight simulation management system; Linux operating system; Qt; the real-time performance

2014-09-17

朱 岭(1986-),女,吉林省前郭人,硕士,设计员,主要研究方向:飞行模拟器仿真管理系统。

1673-1220(2015)01-034-05

文献标识码: A

猜你喜欢

视景实时性模拟器
驾驶模拟器转向系统的设计与研究
飞行模拟器多通道视景校正融合方法研究
了不起的安检模拟器
盲盒模拟器
虚拟现实技术在游戏设计中的应用及研究
划船模拟器
某炮模拟训练系统中三维视景的设计与实现
基于预测和双缓冲区的直升机视景仿真
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略