APP下载

GL Studio 在飞行仪表仿真中的应用研究*

2022-08-02俞艺涵

舰船电子工程 2022年6期
关键词:仪表板数据通信指针

吕 游 俞艺涵 穆 杨

(中国人民解放军91475部队 葫芦岛 125001)

1 引言

随着仿真、虚拟现实等技术的快速发展,使得飞行模拟器的模拟效果越来越贴近实装。在飞行学员培养链路中模拟飞行训练越来越受到重视,模拟飞行训练在飞行学员培养初期可以高效迅速地培养学员适应飞机操作习惯,规范动作。

某型初级教练机仪表板用于显示所有飞行参数,如飞机姿态参数、发动机参数等,飞行员通过仪表信息掌握飞机实时飞行状态,做出相应操作,在飞行过程中飞行员须将70%的注意力分配在仪表数据上,是操纵飞机的重要依据。因此飞机飞行模拟训练系统的研制过程中,飞机仪表系统的仿真至关重要。

2 基于GL Studio仿真仪表开发流程

GL Studio 是集成图形界面与代码开发两种功能的仿真仪表开发平台[1]。GL Studio 基于实际拍摄图片的仿真开发过程一般需要两部分,即图形对象组建与行为代码编写。具体开发过程如图1 所示。

GL Studio 基于图形的开发平台具有以下特点。

1)GL Studio 具有强大的函数库[2],能够自动为基于图形界面开发的虚拟仪表创建OpenGL 代码,从而减少开发时间,降低开发过程中的代码工作量[3~5]。

2)GL Studio 能够通过利用高质量的纹理图片素材实现高逼真度的仪表仿真,虚拟仪表仿真效果贴近实装,纹理图片素材可以通过图像处理软件加工处理[6~9]。

图1 GL Studio 开发流程

利用GL Studio 开发的仿真仪表具有很好的重用性,开发的工程可以生成gls 文件格式或dll 插件形式,其中gls 格式可以以插件形式重用在其他工程中,dll 插件可应用在其他C++工程中,大大减少了重复开发的工作量[10~12]。开发过程中值得注意的是,应用代码生成功能时会覆盖所有代码,建议将GL Studio 外编写的代码加到编辑器中,防止生成代码时覆盖。利用GL Studio 的开发过程如图1所示。

3 飞行仪表仿真

为提高仿真仪表的真实度,仪表纹理采用实装仪表图片,首先通过拍照获取实装仪表的图片资源,拍照时要注意光线,好的图片资源可以极大减少后续图片处理的工作量。

利用Photoshop 等图片处理工具对素材进行加工处理,将仪表的静态部分(如表盘)与动态部分(如指针)分离,以便仿真控制过程中分别加载。处理过程中还要注意以下几点。

1)同一个仪表处理后的纹理素材尽量放在一个图片文件里,这样可以保证仿真仪表各部件比例相当;

2)图片文件大小满足2n*2n,经过大量测试,GL Studio在运行2n大小文件时速度最快,仪表板需要仿真很多块仪表,每个仪表都是一个小程序,小程序集中起来时运行效率就显得尤为重要;

3)纹理文件要存储成png格式;

4)纹理背景要透明;

5)纹理文件要固定存储在工程指定目录中,这样可以保证项目在移植时避免发生找不到文件的问题,如图2所示。

图2 经处理后仪表素材

下面以高度表为例介绍仿真仪表开发流程。

首先,在VS2008 中新建GL Studio 4.0 Application Wizard 项目,建立完成后会在目录文件夹自动生成。gls文件及头文件和源代码文件。用GL Studio 4.0 打开.gls 文件,在图形面板上新建一个GL Polygon命名为panel,在panel中插入修改好的纹理素材,通过调整纹理大小及位置将表盘调整至图形中心位置,再分别新建两个GL Polygon 用于仪表指针的构建,命名为needle1、needle2,分别插入纹理并调整位置大小,将指针转动原点调整至表盘中心位置。至此高度表的图形界面制作完毕,如图3 所示。

图3 GL Studio中建立的高度表

为指针添加逻辑代码,在类属性Class Properties 窗口中新建float 类型成员变量heightnum,初始值设置为0.0f。该高度表大圈量程为1000m,每小格10m,长指针(needle_1)指示,小圈量程 为12000m,每小格1000m,短指针(needle_2)指示。右侧为场压显示。添加代码如下:

利用DynamicRotate()函数将高度数值转换成指针旋转角度,进行指示显示。在单个仪表制作过程中,需在GL Studio 面板Generation 选项卡Generation Mode 复选框中选择Component 模式,以便全部仪表开发完成后集成到仪表板中。

4 仪表板的集成及数据通信

建立仪表板集成项目,将独立开发的仿真仪表以Component 形式集成到项目中,按实装仪表板调整各仪表相应位置大小,如图4所示。

图4 仪表板仿真

在集成项目中按各仪表所需接收的参数建立参数传递函数,以高度表为例,在类属性Class Properties 窗口中新建float 类型成员变量Altitude,其中定义语句:

将集成项目中收到的value 传递到高度表中的heightnum()函数中。

飞行模拟器主要由主控、视景及仪表三部分组成,如图5 所示,在工作过程中主控系统通过采集飞行员操纵数据,将数据导入到飞行运动方程进行解算后得到飞机飞行状态数据,再将飞行状态数据实时分发给视景、仪表系统,通过两个系统的显示呈现给飞行员当前飞机飞行状态。因此,仿真仪表制作完成后,在投入使用前还要建立其与主控系统的实时数据通信,该数据通信要符合实时性、可靠性的要求,并具有通信设备少、数据传输量小等特点,综合数据通信的特点和要求,本文采用以太网的方式进行组网,以UDP∕IP 协议作为高层的数据传输协议。

网卡传输速率为100Mbps,按20%利用率计算,主控系统发送给仿真仪表的数据结构中包含32 个浮点数和8 个整形数,其中浮点数占用4 字节,整形数占用2 字节,通过计算可得数据传输速率为

60 是仿真仪表显示器的刷新频率,可以看出UDP协议下传输速率远大于显示刷新率,完全满足实时仿真的需求。仪表数据接收过程,为保证仪表指示数据的实时性和指针动作的连贯性,将UDP接收语句加入到Initialize()方法中,将赋值语句加入到Calculate(double time)方法中,做到了数据接收与仪表绘制频率相一致。仪表系统与主控系统间通过UDP协议进行数据通信流程如图6所示。

图5 飞行模拟器结构图

图6 UDP通信流程

5 结语

经过某型初级教练机仪表系统的开发实践,GL Studio 4.0 搭配Visual Studio 2008 的开发形式具有仿真度高、程序运行速度快、开发简单代码可读性好等特点,满足模拟器仪表仿真开发需求。下一步工作可以以此为基础,进行逻辑关系复杂的HUD、MFD等屏显仪表的开发。

猜你喜欢

仪表板数据通信指针
汽车仪表板总成助力臂设计优化
不同体量的汽车仪表板工程可行性
某量产车型仪表板与门框胶条间隙不合问题研究
基于主断面分析法的轻薄体量仪表板工程可行性研究
郊游
为什么表的指针都按照顺时针方向转动
基于EDA技术的通用异步收发器设计
北斗卫星同步技术在电力行业中的运用简析
优化网络设备维护提高数据通信传输质量
浅谈大连地铁二号线DCS系统