首页 » 99链接平台 » 虚拟座舱显示系统的设计与仿真.pdf(显示座舱系统仿真字符)

虚拟座舱显示系统的设计与仿真.pdf(显示座舱系统仿真字符)

雨夜梧桐 2024-11-19 13:33:53 0

扫一扫用手机浏览

文章目录 [+]

典型的座舱显示系统由平视显示器(HUD)、下视多功能显示器(MFD)、机械仪表和控制系统组成,可以接收飞行员的指令输入并提供各种飞行状态参数。
在传统的座舱仿真系统设计中,通常采用GDI或OpenGL编程,使用这两种方法实现虚拟座舱显示系统工作量大,且不够逼真,不能满足复杂系统的仿真要求。
为此,本文针对先进仿真系统的仿真需求,研究虚拟座舱显示系统开发中的关键技术,结合OpenGL和专业虚拟仪表开发工具GLStudio开发虚拟座舱显示系统。
2.虚拟座舱显示系统的仿真要求为满足先进飞行仿真系统的仿真要求,虚拟座舱多功能显示系统除能实时显示飞行参数、接收飞行员指令输入外,还应具备以下特点: (1)考虑到仿真任务的复杂性、不确定性,系统应具有较强的通用性和可扩展性,以方便后续系统功能的添加和修改。
(2)一套完整的座舱显示系统应包括多种可选的显示模式,以满足不同飞行任务的仿真要求。
(3)为保证虚拟座舱的真实感,应对其显示效果进行多方面处理和优化,以达到更加逼真的仿真效果,解决真实感与实时性的矛盾。
(4)在仿真过程中,显示​​系统需要接收大量的数字和图像信息,这就要求系统能够实时处理接收到的信息并以最佳效果输出到显示界面。

本系统很好地满足了以上要求,与同类系统相比处于领先地位。
3.仿真系统结构及各模块功能本系统参考国外战斗机座舱布局设计,包括平视显示器(HUD)和座舱仪表显示系统。
系统设计采用模块化编程思想,降低模块间耦合度,实现系统的可移植性和可扩展性,方便仿真系统功能的添加和修改。
3.1人机界面模块人机界面模块主要包括各种虚拟按钮,其功能是接收外部输入,改变座舱显示系统的显示内容和状态,以满足不同飞行阶段、不同模拟任务对座舱显示系统的要求。
3.2平视显示模块平视显示器是将准直字符信息投射到驾驶员正前方的显示器。
这种显示方式将飞行控制、武器投放信息与通过座舱玻璃观察到的外部视野叠加在一起,使得许多难以显示的信息可以利用这种信息输出界面有效地显示出来。
该系统的平视显示模块设计有起飞、巡航、空空导弹和进近着陆四种显示模式,显示模式的切换可以通过座舱内虚拟按钮实现,也可以在一定条件下由系统自动完成。
平视显示叠加在基于Vega Prime开发的虚拟视景显示系统上,视景系统由三台投影机组成,实现水平角度135,垂直角度350的三通道大屏幕视景显示,其中平视显示信息显示在中间通道。

3.3座舱显示系统模块该模块包括座舱仪表板、多功能显示器及各种机械仪表。
其中。
座舱仪表板作为主程序创建,多功能显示器及各种机械仪表作为单独的组件装入主程序中。
这样,在不对主程序做任何改动的情况下,可以方便地对各组件进行修改或增加新组件,方便系统的维护和扩展。
各部分功能如下:多功能显示器提供多种显示界面供飞行员切换,主要显示包括态势、导航、空降、攻击、防御等各种飞行信息,是飞行员在飞行过程中最重要的信息来源。
机械仪表用于显示重要数据,包括航向罗盘、电子姿态仪、气压高度表、空速-马赫数计、功率角-过载指示器等,共计15个子仪表模块。
状态指示灯主要用于显示发动机、起落架、副翼、方向舵等部件的工作状态,当该部件工作不正常时,相应信号灯变为红色并闪烁,起到醒目的提醒作用。
下视显示系统提供白天、夜晚两种工作模式,以满足不同仿真任务的要求。
驾驶员不仅可以在初始化仿真任务时选择显示模式,还可以在仿真过程中通过点击模式切换按钮实现两种显示模式的实时动态切换。
座舱显示系统如图1所示。
图1 座舱显示系统示意图 4 抬头显示器设计中的关键问题 抬头显示器采用OpenGL开发,需与基于Vega Prime (VP)平台开发的视景系统进行叠加。

虚拟座舱显示系统的设计与仿真.pdf(显示座舱系统仿真字符) 99链接平台
(图片来自网络侵删)

抬头显示设计中遇到的关键问题有:OpenGL与VP的协同开发、不定长字符的显示、界面闪烁、各种特效的实现等。
4.OpenGL与VP的协同开发VP作为一款优秀的视景仿真软件,得到了广泛的应用,但在一些专业的视景仿真系统开发中还存在一些困难,如一些特效的实现、字符显示的支持不够完善等,因此需要将OpenGL直接引入到VP中。
为此,需要了解VP的图像通道渲染机制。
在渲染每一帧场景的同时,还会进行绘制。
在VP中,每一帧的渲染过程包括两个阶段:Culling和Drawing。
在Culling阶段,将可能在屏幕区域内显示的部分添加到显示列表中,将不在区域内的部分从内存中清除;在Drawing阶段,将显示列表的内容写入帧缓冲区,绘制当前帧,并显示该帧画面。
以上两个阶段中,调用OpenGL绘制场景中的HUD都必须在Draw阶段进行。
VP中针对通道绘制的vsChannel类及事件通知机制提供了实现该功能扩展的可能。
在vsChannel类的定义中,嵌套了订阅者Subscriber类。
同时针对通道绘制阶段定义了两个事件:EVENT_PRE_DRAW和EVENT_POST_DRAW。

前者是指在通道绘制前通知事件,后者是指在通道绘制完成后通知事件并激活事件处理,事件处理方式通过重写虚函数notify实现。
在实现可视化叠加HUD的过程中,从vsChannel的订阅者类vsChannel::Subscriber派生出自定义的订阅类,并重新定义从vsChannel::Subscriber类继承的虚函数notify的实现,其形式为:virtualvoidnotify(vsChannel::Eventevent, constvsChannel+channel, vrDrawContext4context)该函数作为通道绘制阶段事件通知的接口,在每帧渲染通道时,在该函数中调用绘制HUD的JOPENGL代码,实现HUD在可视化屏幕上的叠加。
最后,根据VSG事件通知机制,通过在主程序循环前使用addSubscriber函数将EvENLPOST-DRAW事件添加到系统中,使系统在每帧通道渲染完成后绘制抬头显示,从而实现抬头显示图像在Vega Prime视角的叠加。
由于本系统中抬头显示只需要在中间通道显示,因此应先定义一个vpChannel类型的变量m_chhan来表示中间通道,然后调用函数m_chhan>addSubscriber(enumvsChannel::E, ENT event.vsChannel::Subsc quer subscriber)安装回调函数。

图2 叠加场景后的平面显示 4.2 不定尺寸字符的显示 4.2.1 在VP中显示OpenGL字符 OpenGL中字符的显示是通过调用字符显示列表来实现的。
要建立字体显示列表,首先要获得指向当前设备上下文的句柄hDC,在VP中获取hDC的方法是先定义一个类型为vpwindow的指针变量win,然后调用win>getWindow0函数,其返回值是指向当前显示窗口的句柄hWnd,再调用GetDC(hWnd)返回所需的hDC,从而在VP中建立字符显示列表。
4.2.2 显示不定尺寸字符 OpenGL支持两种类型字符的显示:位图字符和轮廓字符。
显示字符的方法是先设置字体属性并建立字符显示列表,然后通过调用显示列表来显示字符。
在平视显示器中,所要显示的各种数字、字符的大小都不是固定的。
为了显示不同大小的字体,原来采用的方法是建立一个位图字符显示列表,然后在每次绘制之前调用一个函数设置字体大小。
这种方法虽然可以显示不同大小的字符,但是会造成系统运行一段时间后屏幕上的字符会自动消失。
为了避免字符自动消失的问题,要求只能在程序初始化时设置字体属性,而不能在绘制过程中动态调整字体属性。

这种情况下必须使用轮廓字,因为OpenGL支持轮廓字的缩放,但不支持位图字。
方法是在调用显示列表绘制字体时传递一个size参数设置字体大小,在绘制函数内部通过glScalef()函数接收size参数对字体进行缩放。
4.3 界面闪烁问题解决办法OpenGL的双缓冲技术主要是为了实现变化屏幕的连贯显示,其功能是通过调用SwapBuffers()来实现的。
该系统原本期望通过在VP回调函数中调用SwapBuffers来提高屏幕显示效果,但结果却导致图像闪烁甚至无法正常显示。
造成该问题的原因是VP在其底层自动支持双缓冲技术,如果在回调函数中再次开启双缓冲,就会导致二者的缓存交换时间不同步,从而导致界面闪烁。
因此,应避免在回调函数中使用双缓冲。
4.4 符号的闪烁显示 下视多功能显示屏上有大量图形、文字需要闪烁显示,实现方法是在绘制过程中不断改变颜色的Alpha值,即通过调整glColor4f()中的Alpha参数来控制其透明度,从而达到闪烁显示效果。
5 下视仪表显示系统设计中关键问题解决 下视仪表显示系统的开发工具为GLStudio(GLS),GLS是美国DISTI公司开发的一款可视化仿真软件,利用OpenGL图形库构建实时交互三维图形,GLs使用户能够以“所见即所得”的方式构建实时交互系统,比直接用Visual Studio进行图形界面开发更为便捷

标签:

相关文章