APP下载

基于Flight Gear飞行仿真软件数据的采集与处理

2011-01-27王立波张复春高文琦易龙龙

电子设计工程 2011年24期
关键词:飞行数据配置文件日志

王立波,张复春,高文琦,易龙龙

(中国人民解放军空军航空大学航空理论系,吉林长春130022)

军事模拟飞行训练是当今世界空军提高飞行训练效果的一种必然趋势。所谓军事模拟训练,是在由模拟训练器/系统实现模拟作战环境、作战过程和武器装备的作战效应下,所进行的严格军事训练或军事作战演习或战法研究演练的全过程[1]。FlightGear是一个开源的飞行模拟软件,由Curt Olson开发设计并发布到互联网供大家学习使用[2]。大多数商业用的飞行模拟器收费都很高,Curt Olson开发FlightGear的目的正是为发展价格低廉但功能强大的飞行模拟器,建立一个先进的飞行模拟框架用于学术研究,免费提供给用户使用。FlightGear的源代码对于任何人都是公开和可修改的,在二次开发方面做的非常友好,不需改动代码重新编译就可以满足大部分开发上的需要,大大降低非开发工作的额外开销。所以可以根据自己的需求做进一步开发,这样既能利用FlightGear自身的强大功能,又可以满足个性化需要。FlightGear以其强大的功能和开放式源代码的优势得到越来越多的客户和游戏爱好者的青睐,也逐渐成为科学研究的首选模拟仿真软件。

1 FlightGear飞行模拟软件总体结构

FlightGear是一款大型的功能强大飞行模拟软件,其中集成了许多轻量级开源软件。FlightGear使用的主要组件关系如图1[3]所示。

图1 FlightGear主要组件关系Fig.1 Main component relationship in FlighteGear

FlightGear作为一个通用的飞行模拟系统,结构组织非常复杂,各个系统不是独立基于FlightGear飞行模拟系统研究的,而是相互之间有联系并且互相支持的。FlightGear使用SimGear作为仿真引擎,通过Plib包实现跨平台、网络通信等功能,使用OpenAL提供声音效果,使用OpenGL进行图像处理。FlightGear主要包括动力学系统、飞行器模块、时间系统、视景系统、音效系统、控制系统、坐标系系统、平显分系统、日志分系统等。各模块之间的关系如图2所示。

FlightGear是通过C++语言开发的,具体的运行过程如图3[4]所示。

图2 FlightGear各模块之间的关系Fig.2 Relationship between the various modules in FligterGear

图3 FlightGear的运行流程Fig.3 Operational scheme of FlightGear

FlightGear运行流程里面主要包括2个主循环,主循环1读取配置文件后,通过Idle_state参数的迭代完成各模块的初始化工作。主要包括加载数据、飞行器模型、动力学模型、环境模型、SSG模块、OpenGL参数的初始化。循环1的窗口系统主要完成启动界面的渲染。

主循环2负责运行过程中的系统的更新,是整个运行程序的主体。此时的窗口系统主要完成视景系统的渲染,并加载菜单用于对仿真环境进行配置和调节。

2 XML配置文档

在FlightGear软件系统中大量的使用了XML文档作为配置文件,用于定义系统运行环境、外界数据(包含云层、地形等)以及各类飞行器的载入及配置等等。

XML(Extensible Markup Language可扩展标记语言)[5-7]是W3C(World Wide Web Consortium)组织提出的Web上数据表示和数据交换的标准[8],是万维网联盟(W3C)创建的一组规范,用于在Web上组织、发布各种信息。XML主要有两类作用:第一类作用是作为元标记语言,定义各种实例标记语言的标准;第二类作用是作为标准交换语言,担负其描述交换数据的作用。在信息世界中,XML担任着“国际语言”的重要角色,是互联网上和企业间交换和发布数据的主要互操作标准。它即可以满足迅速增长的网络应用的需求,还能够确保在通过网络进行交互操作时,具有良好的互操作性与可靠性。XML以其数据和表现相分离的特性和强大的数据表达能力,已经成为互联网和数据库的桥梁。XML的特点如下表1所示。

XML的诸多特点和优点,使它适合表现许多复杂的数据关系,有利于不同系统间的信息交流,因而可以充当网际语言,成为数据和文档交换的标准机制。

3 飞行数据的采集和处理

飞行模拟软件的飞行数据有着很重要的作用和价值,可以帮助分析飞行动力学模型设计的是否合理,辅助评估飞行模拟训练的质量和飞行考核,可以帮组飞行训练人员检查自己的飞行轨迹、飞行状态,并通过采集记录的数据驱动视景系统来会回看自己的飞行情况。所以无论真实飞行和模拟飞行,飞行数据的实时采集都是必不可少的。

1)飞行参数的采集和记录

虽然FlightGear在模拟飞行时可以产生大量飞行数据,但是FlightGear本身并没有提供数据的对外输出,一些重要的数据可以在飞机座舱的仪表和平视显示器上可以看到。在系统启动之后也可以通过手动打开日志记录功能记录相关的数据,但是通过手动打开日志记录界面需要重新添加数据的名字和路径,并且系统不会自动记忆,每次重新飞行都需要重新输入,还有一点不足就是系统自带的日志记录系统所能记录的数据的数量有限的,不能满足数据分析的需求。想要随心所欲的获得数据这里有两种方法可以解决,一种是通过重新编译FlightGear在Main函数里加入写文件操作,记录相关信息。另一种方法是通过xml文档配置相关参数。本文选取载入XML配置文档的方法实现,因为通过XML文档加载需要记录的方式很灵活,可以随时添加、删除、修改所需的参数,具有良好的扩展性。

表1 XML的特点Tab.1 The character of XML

FlightGear通过命令行启动时可以通过命令--config=path(配置文件的路径和文件名)此条命令载入相关配置,如配置文件log-config.xml保存在cProgram FilesFlightGear下,则用命令:

--config="C:Program FilesFlightGearlog-config.xml"载入。通过此方式保存的数据格式为CSV(逗号分隔值文件),下面将具体的数据读取和保存方法介绍如下:

首先建立一个XML格式的文档,根据需要保存的数据进行添加相关标签,关联相关变量当程序运行时就会将需要的数据保存在指定的文件内。下面以X轴加速度、地速和海拔高度为例进行说明:

以上是保存X轴加速度、地速和高度的XLM配置文件,<enabled>true</enabled>定义模拟飞行时启动数据保存;<filename>data.csv</filename>定义数据保存的名字和格式;<interval-ms>1000</interval-ms>定义采集数据的时间间隔,单位为毫秒;<delimiter>,

</delimiter>定义数据之间的分割符,为逗号;在<entry>标签起始和</entry>结束之间就是定需要保存的数据和具体路径,<title>x-accel</title>定义要读取和保存变量的名称,为X轴方向的加速度;<property>/accelerations/pilot/x-accelfps_sec</property>定义X轴方向加速的的具体路径和单位;路径和单位必须和内部存储器保持一致,否则将会出现错误。以下两个变量定义方式同上,这里就不在赘述。同理要读取和保存其它变量和数据的方法也同上(可以同时保存两个相同的数据)。某段飞行时保存的数据(时间、X轴加速度、俯仰角、地速、滚转角、俯仰角、航向角)如图4所示。

图4 飞行数据日志Fig.4 Flight data log

2)飞行数据的处理

记录和保存的飞行数据可以直接被评价模块调用,评价模块的主界面、数据载入和成绩输出界面如图5所示。评价模块是以VC++6.0为平台开发的,可以通过载入的模拟飞行数据与预定航线数据进行比较,按照一定的规则和权重,计算出模拟飞行的成绩,如图6所示。

通过评价结果中显示不同飞行阶段的飞行成绩和飞行变量的曲线,能够很直观的反映出每个飞行阶段的状况,便于飞行人员对照检查。

图5 流程界面Fig.5 Process interface

图6 成绩和飞行曲线Fig.6 Result and flight curve

评价模块把整个飞行分为起飞滑行、爬升、平飞、降落4个阶段,可以分别计算出这4个阶段的飞行成绩,最后以不同权重求和得出最后的总成绩。评价模块的阶段指标和权重可以自行设置,根据不同机型,不同的飞行任务进行修改调整,如图7所示。

4 结论

1)通过加载数据采集的XML配置文件,实现了对FLightGear飞行模拟软件的数据的采集,解决了FlightGear自带的日志记录系统记录数据个数有限的缺点。此方法可以根据评价模块所需数据,设置配置文件采集和记录所需参数。

2)通过评价模块载入记录的数据,可以对训练人员进行测评得出的成绩,可以作为辅助考核的一项指标。并且可以对评价的指标和不同阶段的权重进行设置,满足了对新增机型和不同任务的匹配,有很好的扩展性。

FlightGear以其开源性和灵活性等特点,已经成为众多学者学术研究的最佳选择。在未来飞行模拟软件的设计和应用中,FlightGear将会得到更多的关注和应用,本文实现的数据采集方式和评价模块的加入将对基于FLightGear设计的飞行模拟软件有一定的实用价值。

图7 评价系统的设置Fig.7 Evaluation system setting

[1] 刘兴堂,万少松,张双选.论军用模拟训练器/系统的发展趋势[J].系统仿真学报,2009,2(4):19-21.LIUXin-tang,WANShao-song,ZHANGShuang-xuan.Concerning military simulator/system development trend[J].Journal of System Simulation,2009,2(4):19-21.

[2] 黄华,徐幼平,邓志武.基于FlightGear模拟器的实时可视化仿真系统[J].系统仿真学报,2007,19(19):72-74.HUANG Hua,XU You-ping,DENG Zhi-wu.Real-time visual flight simulation system based on FlightGear simulator[J].Journal of System Simulation,2007,19(19):72-74.

[3] Burns R S.Development of a Low-Cost simulator for demonstration and engineer[C]//Training,Proceeding of the AIAA,2003:5852-5758.

[4] 王行仁.飞行实时仿真系统及技术[M].北京:北京航空航天大学出版社,1998.

[5] 尹泉,侯力,王玫,等.XML网页开发实例教程[M].机械工业出版社,2002.

[6] 曾春平,王超,张鹏.XML编程从入门到精通[M].北京:希望电子出版社,2002.

[7] 张昌宏,王哗,丁展春.基于XML的企业应用集成方法研究[J].舰船电子工程,2005(6):81-84.ZHANG Chang-hong,WANG Hua,DING Zhan-chun.Based on XML enterprise application integration method[J].Ship Electronic Engineering,2005(6):81-84.

[8] 张银鹤,张秋香,孙膺.XML实践教程[M].北京:清华大学出版社,2007.

猜你喜欢

飞行数据配置文件日志
一名老党员的工作日志
扶贫日志
互不干涉混用Chromium Edge
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
GARMIN1000系统维修平台搭建预研究
为View桌面准备父虚拟机
游学日志
浅谈飞行数据集中处理流程管理
民航空管自动化系统中飞行电报自动化处理