首页| 行业资讯| 企业名录| 周边产品| 数字城市| 增强现实| 工业仿真| 解决方案| 虚拟医疗| 行业仿真| 图形处理| 军事战场
用户登录/注册 ×
资讯首页
行业资讯 >> 专业文献
基于GL Studio的航空虚拟仪表的设计与实现
时间:2015-11-20    评论:0
    来源:第三维度
    作者:樊戎
    单位:宜昌测试技术研究所

    摘要:为了实现航空电子仿真系统中各种仪表的快速建模,从GL Studio平台的技术特点出发,设计开发了一个由外部数据源控制的虚拟仪表。首先,用GL Studio设计虚拟仪表的图形界面;然后用VC++6.0开发一个基于MFC的仪表驱动数据编辑器;最后,编写一个管道通信接口将虚拟仪表与数据源进行连接,从而实现外部数据对虚拟仪表的控制。结果表明,该方法具有很好的实用性。

    虚拟现实(Virtual Reality, VR)是当前的热门技术[1]之一。

    在航空电子领域,虚拟现实技术最初被应用于飞行训练、飞行系统测试等方面。利用虚拟现实技术来实现多功能显示器(MFD)仿真系统已经成为当前热门技术之一。多功能显示器仿真系统高度复杂,利用底层软件平台开发需要耗费大量的时间和精力,这是当前各种仿真软件开发平台茁壮成长的原因之一。

    GL Studio就是一款专业的仪表仿真平台,通过它可以快速实现虚拟仪表的模拟与控制。但是纯粹的GL Studio应用不够真实,还需要让其实时反映外部的飞行数据。在这方面GL Studio提供了多种方法:直接从底层将源代码植入到其它支持OpenGL的程序中、生成DLL动态链接库、利用进程间通信等方法。本文基于管道通信原理,实现外部控制程序与一个虚拟仪表的通信。

    1 GL Studio简介

    GL Studio是目前世界上最先进的仪表面板开发工具,由美国DISTI(Distributed Simulation Technology Inc.)公司开发,它被用来创建实时的、三维的、照片级的交互的图形界面。它适用于开发各种人机接口应用,例如用于飞行训练模拟器驾驶座舱中的虚拟仪表、用于真实飞机驾驶座舱的真实仪表。它开发的人机接口可以应用于整个产品生命周期中,从产品虚拟原型,一直到真实产品和其训练模拟器。

    GL Studio在训练仿真领域占有非常大的份额,2005年12月的IITSEC中,至少有35家参展厂商采用它开发仪表和面板。它具有以下优点:

    (1)能与HLA/DIS仿真应用相连;

    (2)可运行于WindowsNT、IRIX和Linux操作系统上;

    (3)GL Studio代码生成器可把GLStudio设计器创建的文件生成C++和OpenGL源代码,这些源代码可以单独运行,也可以嵌入其它应用中;

    (4)能够满足实时性和交互性的要求,适用于对界面真实感及人机交互友好程度要求较高的需求。

    GL Studio还能仿真各种仪表的指示、按键响应,实现多个虚拟仪表之间的动态互联。特别适合在多功能显示器仿真系统中进行虚拟仿真建模。


图1 软件整体结构

    GL Studio模型的建立分为以下三个步骤:

    (1)整体外观设计

    GL Studio设计面板所见即所得的面向对象图形界面,便于操作。它的工具栏中包含了各种基本图形元素和基本的图形操作方式,用户通过对基本图形元素的操作,组合成所需的复杂模型,从而得到虚拟仪表的整体外观。

    (2)纹理贴图的设计

    纹理贴图是提高虚拟仪表真实性的最直接方法,GL Studio支持照片级纹理的应用,一切多边形对象都可以贴纹理。纹理工具更是支持大多格式的纹理,如JPG、BMP、TIF、PNG等。纹理贴图可以通过在对象上的缩放、平移、旋转等操作,以达到预期的效果。纹理支持透明度,并能与对象颜色混合。通过Photoshop等图形编辑工具可以编辑各种贴图纹理,然后对构建的模型对象进行纹理贴图[2],完成模型的外观设计。

    (3) 输入输出处理

    GL Studio的图形界面中,有输入设备(Input Device),输入设备是能够根据用户输入或程序输入数据来改变状态(state)的一组对象,实现输入设备与用户的交互。开发人员需要为输入设备添加各种处理事件,从而实现各种交互响应。这些处理事件放在对象属性、输入设备(Object Properties/Input Device)标签的回调定义(Callback Definition)域中。回调函数将包含在生成的源文件中,用户在自己编写的应用程序中调用它们以实现各种交互事件的响应。

    通过以上三个步骤,完成了GL Studio的模型设计,然后在代码生成器对话框中生成该模型的源代码。

    2 虚拟仪表模型设计

    本文设计的虚拟仪表模型总体结构如图1所示。各个模块类似VC中的一个类,中心控制模块通过调用各个类来整合各个小模块的功能。

    本文在模型设计的过程中主要解决了以下问题:

    (1)消除刻度带中的指针条移动产生的抖动

    利用GL Studio的API函数GLS_EXPORT void Translate(float x, float y, float z)对指针进行移动会有一定的抖动。通过两次旋转,可以很好的消除这种因为旋转角与移动位置不能完全精确计算而带来的抖动。将该段指针图贴在一个透明的圆柱上,圆柱基于Y轴旋转控制指针的水平移动,圆柱基于Z轴旋转控制指针旋转。通过圆柱体在两个坐标轴上的旋转,从而实现指针平滑的移动过程。

    (2)刻度盘中的刻度值在旋转时保持水平

    刻度盘中的刻度值首先跟着刻度盘一起旋转,在旋转的过程中刻度值会有一定的偏斜。为了让刻度值一直保持水平状态,需要给每个刻度值添加一个反向的旋转偏移量。首先将刻度值的旋转中心点设置为自身的中心点,如图2所示。


图2 设置旋转中心点

    然后在刻度盘旋转代码之后对每个刻度值进行方向旋转。代码实现为:

       pan->DynamicRotate(value,Z_AXIS);

       n->DynamicRotate(-value,Z_AXIS);

       n1->DynamicRotate(-value,Z_AXIS);

       n2->DynamicRotate(-value,Z_AXIS);

       ……

    (3)其他模块的设计

    地平移通过类似于刻度盘中的指针条的方式,将地平移图片贴在一个较大的圆柱上,通过圆柱体不同方向的旋转来实现地平移的正常仿真演示。刻度带的设计也是通过将一定长的刻度图片贴在一个圆柱上,将刻度值与角度进行合理的换算,从而通过旋转一定量的角度完成刻度带的上下偏移。文字数据模块可通过GLStudio工具栏中的文本框编辑器实现。

    在处理各种贴图纹理时需要注意Photoshop中完全透明的贴图在GL Studio中反转后会成为纯白色的图片。解决方法为:首先,将图片中的不处理部分的透明度修改成很小的值(如0.01,不能为0),将图加载到GL Studio中后勾上透明度反向变化选项(图3所示),未处理透明度部分会变成透明,而设置了透明度部分会显示出来。(注:只有部分格式支持透明度反转功能,例如PNG格式)。


图3 反转图片透明度

    3 虚拟仪表驱动数据编辑器设计

    当前基于GL Studio开发的虚拟仪表可以通过多种方法与外部驱动数据相连接:

    (1)直接将源代码植入到包含驱动数据的程序中;

    (2)利用GL Studio自带的工具生成DLL动态链接库,然后在MFC、Vega Prime等开发平台中直接调用;

    (3)通过管道通信,将虚拟仪表控制进程与虚拟仪表仿真进程相连接。


图4 外部数据与虚拟仪表通讯方式

    本文采取了命名管道通信的方法,该方法的结构如图4所示,驱动数据编辑器将编辑好的驱动数据以XML格式保存在固定的驱动数据文件中,然后通过命名管道的方式给虚拟仪表发送相应的指令,虚拟仪表根据接收到的指令读取并执行驱动数据。该方法的优点在于:

    (1)它简化了将所有源代码植入驱动数据编辑程序中的复杂度,它在驱动数据源代码与虚拟仪表源代码建立了一条方便的桥梁;

    (2)正是由于它的这条桥梁,令它的运动算法与驱动数据隔离开来,更具灵活性;

    (3)它避免了生成DLL动态链接库对GL Studio的版本限制问题。

    本文采取的管道通信采取命名管道的方式进行,命名管道作为一种通信方法,有其独特的优越性,这主要表现在它不完全依赖于某一种协议,而是适用于任何协议—只要能够实现通信。本平台将管道通信的底层函数封装成DLL动态链接库,不用访问底层复杂的API函数,具有很好的可靠性和通用性。

    编写XML文件的方式可以方便的实现多段运动模式脚本的动态编辑。由于XML文件的实时可读写性,驱动编辑器能够随时编辑驱动数据。首先,驱动编辑器修改并更新XML文件;然后,发送指令通知虚拟仪表,虚拟仪表在接收到指令后读取XML文件以实现实时更新。驱动数据中的每段脚本包含段位号、演示持续时间、演示方式等多种参数。在虚拟仪表读取驱动数据后需要将演示持续时间依次安插在接下来的相应时间段内,代码实现的关键部分如下:

         for (int i=0; i<m_flyNum;i++)// m_flyNum演示总段,m_timestep[m_flyNum] 时间数组

          {

            if (i==0)

             { m_timestep[i] = m_timestep[i]+(int)m_timenow; }//m_timenow 当前时间

             else

              { for (int j=0;j<i;j++)

                { m_time st ep[i] = m_time st ep[i] +m_timestep[j]; }

              }

           }

    在驱动脚本编辑的同时提供一个参数设置的功能,参数设置实时更改当前的高度、速度、俯仰角、偏航角。在设置完参数后,虚拟仪表会以当前的演示模式达到设置的参数值。


图5 飞行模式控制演示

    4 仿真实现

    仿真过程中的管道通信在后台完成,管道服务在虚拟仪表启动时自动建立,驱动数据编辑器打开后便会与该管道服务建立连接。通过添加与删除按钮就可以方便的管理演示计划,每添加或删除一条演示计划就会自动更新整个驱动数据文件。最后点击飞行控制按钮给虚拟仪表发送读取驱动数据指令,虚拟仪表便开始执行这些演示模式。每种演示模式都会执行各自的运动算法来达到预设的一组参数值,这组参数值也可以在演示期间通过手动修改。图5就是在偏航模式下达到设定值的一次演示。

    5 结语

    通过借鉴通用的GL Studio虚拟仪表开发技术,针对多功能显示器仿真系统的需要,实现了一个简单虚拟仪表的设计与控制。该虚拟仪表能够实时响应各种飞行参数并动态演示多种飞行模式,具有很好的逼真性。以后研究主要侧重于以下两个方面:

    (1)搭建虚拟仪表的通用框架,便于批量设计虚拟仪表;

    (2)建立一个完善的仿真数据库,虚拟仪表通过读取预设的参数值来仿真各种演示模式,以提高仿真效果。

    作者简介:

    樊戎(1985-)男,湖北宜昌人,助理工程师,硕士,毕业于哈尔滨工程大学水声工程系,现就职于宜昌测试技术研究所,主要从事于视频仿真研究。

    参考文献:

    [1]李云花.虚拟现实技术综述[J].重型机械科技,2004,4:49-52

    [2]高颖,邵亚楠,郑涛.GL Studio 在飞行座舱模拟器中的仿真研究[J].弹箭与制导学报,2008,1:257-260.

    [3]GL Studio Version 2.1 API Documentation[Z]. U.S.A:  Simulation  Technology Inc, 2003.2

标签:仪表航空
上一篇:游离虚拟与现实 美军如何培养无人机飞行员下一篇:美军蓝鲨实验室 VR技术构建的未来作战室
网友评论:基于GL Studio的航空虚拟仪表的设计与实现
留名: 验证码:
最新评论
查看全部评论0
暂无评论
您可能还需要关注一下内容:
·第十九届中国虚拟现实大会深圳举行
·国内外飞行模拟设备行业的现状分析
·虚拟仪表在无人机飞控测试系统中的应用
·近距离接触 FDS--B787飞行模拟器
·加拿大CAE在广东成立飞行模拟器合资公司
·空客A320飞行驾驶模拟器单人桌面版
·GL STUDIO虚拟仪表在OSG中的集成和应用
·基于 World Wind 的模拟飞行控制视景系统设计
·飞行模拟器虚拟环境下飞行员视觉特征
·空战虚拟训练系统鼻祖—美国立方体公司
☏ 推荐产品

小宅 Z5 2018青春版
商家:小宅

杰瑞特运动平台
商家:杰瑞特智能

Dikalis眼动追踪
商家:赢富仪器

魔神 Hawk
商家:魔神运动分析

5DT Binoculars
商家:四维宇宙

Christie DS+750
商家:四维宇宙

Zalman M220W
商家:四维宇宙

全息360°
商家:四维宇宙

PD F10 AS3D
商家:四维宇宙

PHANTOM系列
商家:四维宇宙
☞ 外设导航
☏ 企业名录
【深圳】深圳市观度科技有限公司
【沈阳】沈阳中申高新科技有限公司
【北京】北京未尔锐创科技有限公司
【南昌】南昌虚拟现实检测技术有限公司
【上海】上海桥媒信息科技有限公司
【宁波】宁波维真显示科技股份有限公司
【潍坊】歌尔股份有限公司
【上海】霍尼韦尔(中国)有限公司
【北京】科视Christie-中国
【北京】北京华如科技股份有限公司
关于本站联系我们融资计划免责声明网站建设广告服务咨询策划行业推广
北京第三维度科技有限公司 版权所有 京ICP备15051154号-3
2008-2020 Beijing The third dimension Inc. All Rights Reserved.
Email:d3dweb@163.com  QQ:496466882
Mob:13371637112(24小时)
关注虚拟现实
关注第三维度