APP下载

基于Matlab Engine和Vega的仿真可视化系统设计

2015-12-31顾云涛潘忆江

现代导航 2015年4期
关键词:系统控制仿真技术引擎

顾云涛,潘忆江

(1海装西安局;2中国电子科技集团公司第二十研究所,西安 710068)

0 引言

随着计算机仿真技术的不断应用,利用计算机仿真技术对研究内容进行仿真和效能评估,是当前技术条件下的一种有效手段。而在完成仿真研究时,利用视景仿真技术,实现仿真流程的可视化,可以对研究内容进行有效的促进[1]。为了能全面直观的展示相关仿真系统的工作状态和工作流程,本文设计了一种仿真可视化系统,为仿真流程的可视化提供了一种解决办法。

1 系统原理

仿真可视化系统以Matlab Engine和Vega为基础,分别实现仿真流程的计算和仿真过程的可视化,再利用Qt实现仿真可视化系统的总体控制和Matlab Engine与Vega之间的数据实时传输。

Matlab Engine是MATLAB与其它编程语言如C语言的应用程序接口[2]。该接口是用于从外部程序调用Matlab来完成计算功能的。在C语言中需要复杂编程实现的矩阵计算和傅立叶变换等功能,在Matlab中则可以轻松实现,因此通过Matlab Engine调用仿真所需的m文件,可以在有效实现仿真流程的同时,为仿真可视化系统实时提供仿真数据,以便其实现仿真流程的可视化。

Vega[3]是一套完整的用于开发交互式、实时可视化仿真应用软件的平台,其基本的功能是驱动、控制、管理、虚拟场景,并支持快速复杂的视觉仿真程序,快速创建各种实时交互的三维环境,从整体上而言,Vega具有易用性、高效性、集成性、可扩展性、跨平台性。

2 系统构成

仿真可视化系统仿真演示系统可以分为四个子模块,分别是Matlab引擎模块、Vega演示模块、系统控制模块以及人际交互界面构成。整个系统的框架如图1所示。

图1 系统框架

2.1 Matlab引擎模块

Matlab引擎模块负责完成流程仿真。该模块以Matlab Engine为核心,通过由系统控制模块配置Matlab Engine完成初始化,并通过系统控制模块将仿真所需的m文件中的内容利用Matlab Engine接口输入至Matlab中完成仿真。

同时Matlab Engine通过接口将仿真流程中的仿真数据实时发送至系统控制模块,为驱动Vega演示模块提供数据源。与此同时,Matlab引擎模块将计算过程中的相关数据保存于本地硬盘,供后续对比与分析使用。

2.2 Vega演示模块

Vega演示模块[4]用于可视化的演示整个系统的工作状态。Vega里所需的模型,均是由Creator软件构筑完成的。为了真实还原仿真系统工作的真实环境,通常需要制作环境模型和实例模型。环境模型是指仿真系统运行时所处的仿真环境,如地面模型、水面模型、各种气象条件模型等。实例模型则是指仿真系统所模拟的实物,如飞机、坦克、导弹等。

在制作环境模型时,由于Vega提供了水面和气象条件模块,因此无需重新制作,而地面模块通常需要重新制作。为了真实还原,演示系统中使用的地面模型由DEM数据、纹理和材质三个部分构成[5-8]。DEM数据选取USGS网站所提供的DEM格式数据,所使用数据的分辨率为3角秒,由于所处经纬度的不同,每个网格宽度大约为90m。纹理数据可以利用卫星照片制作,较为简便的方法是从Google Earth上抓取,选取与DEM数据相对应的地球真实纹理数据。完成相关数据准备之后,通过Creator软件,建立地面模型,并完成地面纹理的制作,得到整个系统演示的场景地形文件。完成制作后,由Vega软件中提供的Texture Material Mapper(TMM)工具,为整个模型附材质信息。

此后,以Creator构筑合适的实例模型,通过Vega软件制作ADF文件,将各类模型在空间中组织在一起,并加入光影、气象条件模块,力求实现趋于真实的演示效果。随后通过系统控制模块与Vega演示模块的接口,由系统控制模块提供数据驱动Vega演示模块运行。

2.3 系统控制模块

系统控制模块旨在将Matlab引擎模块与Vega演示模块联系在一起,协调、统一的完成整个演示过程。系统控制模块由Qt实现[9-10],该模块通过相应的同步控制,使得两个模块同步完成所需展示的信息和画面,完成整个系统工作流程的演示工作。系统控制模块拟采用类似于时钟脉冲的控制模式,以实现Vega演示模块中实例和Matlab引擎模块获取的相关数据的同步演示。系统控制模块是整个仿真可视化系统的核心,整体控制仿真可视化过程。

3 接口设计

接口设计是仿真可视化系统的重要模块,通过接口可以将运行于不同软件、不同类型的数据进行转换,以复合不同模块对数据类型和格式的需求。

3.1 系统控制模块与Matlab引擎模块的接口设计

系统控制模块与Matlab引擎模块的接口可实现两个模块间的数据传递,主要包括Matlab引擎运行的仿真程序和用于演示所需的仿真数据。

根据系统总体设计,Matlab引擎模块所运行的仿真程序以m文件的形式保存于硬盘中,由系统控制模块读取,由Matlab引擎模块运行完成流程仿真,因此为实现仿真的正常运行,需利用engEvalString函数实现,将m文件中仿真程序传递至Matlab引擎模块。

同时在仿真中,Matlab引擎模块计算出的仿真数据传递给系统控制模块,可通过mxGetPr和mxGetPr函数现实,其分别实现从相关矩阵中获取实部数据和虚部数据,经处理后供Vega演示系统使用。

3.2 系统控制模块与Vega演示模块的接口设计

系统控制模块与Vega演示模块的接口主要实现仿真过程中所需演示数据的传递,主要为驱动Vega演示模块的数据,即各类实例的实时运动状态。在Vega中,任何实例都具有六个维度的参数,分别是在空间中的三维坐标和其本身的姿态信息。因此通过该接口,将系统控制模块接收到的仿真数据转换为实例所需的六个维度的参数,可通过vgPos和vgPosVec实现,为Vega中的实例提供流程仿真中的各个节拍的仿真结果,用以驱动实例的运动。但在仿真中,由于节拍设定的问题,有时需要在两个节拍计算结果中进行插值运算,以满足Vega演示时对数据速率的需求。

4 运行结果

本文以机载高度表为例,利用仿真可视化系统,实现了机载高度表仿真流程的可视化。如图2至图4所示,分别为不同预定航迹下,仿真可视化系统运行中的截图。

图2 两种高度计性能对比仿真演示截图

图3 机动轨迹仿真演示截图

图2至图4分别为不同航迹下,仿真可视化系统的演示截图,为了充分演示不同姿态对高度表的影响,在Vega中加入了蓝色的波束实例,与右上角的窗口一同演示不同姿态下波束的所能覆盖的地面范围。同时为了充分对比不同高度表的运行状态,以图2为例,在Matlab中使用plot函数,实时绘制出了不同高度表的对比数据,验证了仿真可视化系统的可行性。

图4 爬升轨迹仿真演示截图

[1]王乘,李利军,周均清等.Vega实时三维视景仿真技术[M].北京:电子工业出版社,2005.

[2]苏金明,黄国明,刘波.Matlab与外部程序接口[M].北京:电子工业出版社,2004.

[3]王乘,李利军,周均清等.Vega实时三维视景仿真技术[M].北京:电子工业出版社,2005.

[4]MultiGen-Paradigm.VegaOptionsGuide[S].Version 3.7,2001

[5]陈敬周.数字高程模型的生成与应用[D].太原:太原理工大学,2007

[6]桂芳茹.数字高程模型的建立及其在土方量计算方面的应用[D].重庆:重庆大学,2008.

[7]杜金莲.大规模三维地形实时绘制关键技术的研究与实现[D].大连:大连理工大学,2003

[8]廖巍.大规模地形的建模与动态绘制技术研究[D].长沙:国防科学技术大学,2002

[9]李师贤,蒋爱军,梅晓勇等.C++Primer[M].北京:人民邮电出版社,2010.

[10]闫锋欣,曾泉人,张志强等.C++GUI Qt4编程(第2版)[M].北京:电子工业出版社,2013.

猜你喜欢

系统控制仿真技术引擎
新海珠,新引擎,新活力!
朗仁H6 Pro智能诊断宝马便捷进入及启动系统控制单元复位
电子系统控制自动化的发展方向探析
模拟仿真技术在电子电工实验中的应用研究
虚拟仿真技术支持情景构建
基于仿真技术的信号平面布置验证
三生 三大引擎齐发力
蓝谷: “涉蓝”新引擎
北京国能日新系统控制技术有限公司
AMESim仿真技术在汽车空调制冷系统中的应用