基于Opendds的Modelica平台与UE4的协同仿真方法

文档序号:32400237发布日期:2022-12-02 18:46阅读:357来源:国知局
基于Opendds的Modelica平台与UE4的协同仿真方法
基于opendds的modelica平台与ue4的协同仿真方法
技术领域
1.本发明属于计算机仿真领域,具体涉及一种基于opendds的modelica平台与ue4的协同仿真方法。


背景技术:

2.当前,计算机仿真已经成为复杂大系统分析、研究、测试、评估、研制和技能训练的重要手段,并已广泛应用于国防、制造、能源、交通、农业医疗、教育、经济、天气预报等各个行业的重要领域,随着仿真在各行业各领域的不断应用,工程仿真可视化由于利用计算机图形学对工程空间环境与设计方案进行可视化模拟,直观形象地表达方案,可以梳理设计思路,或向第三方精准快速地传达设计意图,从而在仿真领域得到良好发展。
3.modelica是当前具有较大发展潜力的多领域统一的建模语言,可应用于很多领域的仿真建模。openmodelica是基于modelica语言仿真的一种开源实现,提供了基于modelica语言的建模、编译、仿真和结果显示等功能。基于modelica仿真的方式存在二方面的问题:一是由于modelica平台仿真结果主要通过结果数据一维或二维形式展示,尤其是大型空天仿真领域,对仿真结果的展示不够直观,难以突出仿真结果变化特征。二是工程领域主流仿真软件仿真结果三维展示不突出,物理仿真效果较差,对光照、天气等自然现象的渲染能力更是有所欠缺。
4.现有技术的仿真软件建立的模型普遍没有模型转化接口,模型导入到仿真引擎后会出现模型损坏或缺失情况。对于需要结合数字地球布置特点的仿真场景,这些仿真软件的可视化展示视图无法保障获得工程全局效果和建设表现。


技术实现要素:

5.本发明的目的是针对上述问题,提供一种基于opendds的modelica平台与ue4的协同仿真方法,将ue4优秀的动画场景渲染能力应用到对象仿真领域,基于opendds中间件建立modelica平台和ue4软件的数据传输通道,实现modelica平台与ue4协同的对象仿真。
6.本发明的技术方案是基于opendds的modelica平台与ue4的协同仿真方法,具体包括以下步骤:步骤1:利用modelica平台进行仿真建模,得到modelica语言的模型文件;解析模型文件,转换得到对应的c语言源文件;步骤2:利用opendds中间件的发布/订阅机制,以modelica平台为发布端,ue4软件为订阅端,分别生成发布端、订阅端的c/c++语言代码,将代码分别与modelica平台、ue4软件集成,建立modelica平台和ue4软件的数据传输通道;步骤3:建立ue4仿真场景,在仿真场景中加载opendds订阅端插件,并将opendds订阅端插件内接口函数封装为蓝图节点,ue4仿真场景中调用订阅端,接收仿真对象数据,在仿真场景中加载仿真对象;加载本地资源,设置仿真对象的摄像机视角,启动仿真对象的多视角可视化仿真。
7.进一步地,步骤1具体包括:利用modelica平台建立modelica 模型,在指定路径下生成 modelica 模型文件;将modelica 模型文件转换生成c/c++语言仿真代码,将opendds生成的发布端代码与上述转换生成的c/c++仿真代码进行编译链接,生成可执行仿真模型;对可执行仿真模型进行实时仿真或离线仿真,输出仿真结果数据。
8.优选地,步骤2采用opendds中间件的dynamictype标准,使发布端订阅端支持动态数据类型扩展,modelica平台传输的数据类型发生改变时,ue4的订阅端代码无需重新编译,即可接收到发布端的动态扩展数据。
9.进一步地,步骤2具体包括:步骤2.1:将发布端、订阅端配置为同一域值;对仿真过程中传输的数据类型进行注册,配置发布端订阅端通信约定的数据类型;配置注册数据类型对应的主题,对域中每一个主题自定义特定名称,并与发布端发布的具体数据类型对应;步骤2.2:配置数据写者与发布者,发布端通过数据写者将数据传递给opendds中间件,每个数据写者对应一个特定主题,发布端使用数据写者指定类型接口,在绑定主题上发布数据样本;数据写者对仿真传输数据编码后,传递给发布者准备进行传输,发布者获取需发布数据后传递至所在域中所有订阅者处;步骤2.3:在订阅端配置注册数据类型对应主题,对域中的每一个主题都自定义特定名称,并与发布端发布的具体数据类型对应;订阅端通过识别发布端发布的主题名获取数据;配置数据读者与订阅者,订阅者从发布者接收数据,将获取数据传输给所有与之关联的数据读者;在订阅端配置监听代码,将监听到的数据类型传输给订阅者;数据读者从订阅者获取数据,并将其解码成对应主题数据类型,最后将数据传输给ue4场景集成的中间件订阅端节点;步骤2.4:针对需要传输数据的类型,根据接口描述语言进行数据传输服务的定义与表示,得到数据定义与表示的idl文件,对idl文件进行编译,映射到c++类型支持文件;步骤2.5:编写mpc文件,进行mpc文件的工程化处理,生成发布端、订阅端源码分别与modelica平台、ue4集成编译成可执行文件;运行可执行文件,即可进行数据传输。
10.进一步地,步骤3具体包括:3.1)对ue4外部动态插件编写opendds订阅端插件模块,将opendds订阅端代码写入插件并编译使用;3.2)在ue4场景的关卡蓝图中调用opendds订阅端插件模块节点,在蓝图编辑器中链接各节点,编译蓝图,用于输出订阅端接收数据实例;3.3)采用3ds max、catia、ug、world machine软件,生成仿真对象模型,将仿真对象模型加载至仿真场景;3.4)在ue4软件中加载cesium for unreal插件,为ue4仿真场景加载数字地球;3.5)配置摄像机视角,为用户提供多视角、全方位的仿真态势展示。
11.相比现有技术,本发明的有益效果包括:1)本发明实现了modelica平台与ue4软件协同的对象仿真,解决了modelica软件的仿真结果的展示不够直观的问题,相比现有的工程领域主流仿真软件,本发明的协同仿
真方法的物理仿真效果更好,对自然现象的渲染能力更强,仿真场景的全局效果更佳,尤其是在大型空天仿真领域的仿真结果的可视效果好。
12.2)本发明针对仿真领域数据来源多、多源数据体量大、结构复杂、传递频繁的数据传输特点,采用opendds作为传输中间件,可满足协同仿真系统数据传输需求。
13.3)鉴于dds自身技术特点,此技术主要应用于需要实时高效数据传输的复制分布式系统中,且开发者可将opendds应用到单独计算机或分布式部署再不同计算机设备上,无需关注其底层物理通信协议,提供多场景仿真方法。
14.4)最新opendds支持dynamictype,动态数据类型,可在发布端修改数据结构体类型,或者增加数据传输主题情况下,订阅端采用recorder方式,无需修改代码、编译代码,即可接收新数据类型,针对仿真软件结果数据变化情况,订阅端可以最小成本的接收数据。
15.5)ue4独有的蓝图系统为开发者提供直观明了的编辑界面,这种图形化的编程方式与完全使用代码相比,在开发效率上具有比较大的优势,本协同仿真系统的功能就主要采用蓝图方式实现。
16.6)本发明利用ue4引擎优良的渲染能力,将全球地形无缝仿真场景结合modelica平台,在仿真视觉效果上,相比仿真软件自带三维场景,ue4场景更加真实,更符合仿真需求。
附图说明
17.下面结合附图和实施例对本发明作进一步说明。
18.图1为本发明实施例的modelica平台与ue4协同仿真的示意图。
19.图2为openmodelica二次开发软件仿真的流程示意图。
20.图3为opendds中间件搭建的流程示意图。
21.图4为本发明实施例的mpc项目文件的示意图。
22.图5为动态数据扩展订阅端代码的示意图。
23.图6为本发明实施例的ue4仿真场景搭建的流程示意图图。
24.图7为本发明实施例的ue4场景端opendds中间件订阅端插件调用方法的示意图。
25.图8为本发明实施例的仿真项目主界面效果图。
26.图9为本发明实施例的仿真项目多视角仿真实例效果图。
具体实施方式
27.实施例的仿真对象为飞行器。
28.实施例的modelica平台选用基于openmodelica二次开发的软件平台,利用该平台进行仿真建模,得到modelica语言的模型文件;解析模型文件,对模型文件进行语言转换,并编译生成可执行文件。
29.opendds中间件:opendds采用发布/订阅体系架构,强调以数据为中心,提供丰富的qos服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求,通过配置opendds中间件发布端订阅端,传输数据。同时opendds可支持动态数据扩展,当传输数据类型发生改变时候,项目订阅端代码无需重新编译,即可成功接收发布端动态扩展数据。
30.ue4仿真场景:综合采用3ds max、world machine等软件,生成与仿真地形场景对应的地形模型,导入仿真对象飞行器模型、地面检查设备、发射设备等模型,构建与真实仿真场景对应的超大三维仿真空间,为仿真科研人员提供多视角、全方位的仿真态势展示,为仿真数据结果提供更直观逼真的判断依据,通过中间件接收仿真结果数据,将结果数据加载到可视化场景仿真模型,协同仿真。
31.基于opendds的modelica平台与ue4的协同仿真方法,包括以下步骤:步骤1:openmodelica二次开发软件仿真流程如图2所示,modelica物理仿真软件,建模完成后,保存 modelica模型,在指定路径下生成 modelica模型文件(.mo的文件);对仿真参数进行设置,然后调用仿真功能对 modelica模型文件进行编译生成可执行文件(.exe的文件),通过执行模块运行可执行文件,输出显示仿真结果,并将仿真数据传输至中间件发布端节点。
32.步骤2:基于opendds中间件的数据传输通道的创建过程如图2所示,opendds在分布式部署程序中为参与者为有效传输数据定义了一个服务,该服务分为两个接口层:第一层是dcps层(data centric publish subsribe,以数据为中心地发布/订阅),第二层是dlrl层(data local reconstruction layer,数据本地重构层)。dcps层通过对发布端/订阅端主题及qos协议地匹配,将数据从发布者传输至订阅者,数据写着将仿真结果数据传输至发布者(publisher),数据读者从订阅者(subsribe)读取数据;步骤2.1:发布端订阅端配置同一域值,在不同的域,同一组主机上或同一主机上的不同程序将处于彼此通信隔离,无法传输数据。api接口creat_participant用于配置发布端订阅端位于逻辑上同一通信网络,采用统一域值使dcps得以进行数据交换。注册仿真传输数据类型,api接口demotopic1typesupportimpl通过idl接口文件中自定义数据类型获得,调用demotopic1typesupportimpl从而配置发布端订阅端相互通信约定数据类型demotopic1。配置注册数据类型对应主题,api接口createtopic用于创建主题,在函数createtopic中写入动态扩展数据结构体名,域中的每一个主题都要自定义特定名称,并与发布端发布的具体数据类型对应。发布进程在发布数据时指定主题,订阅端通过请求对应主题得到数据;步骤2.2:配置数据写者(data writer)与发布者(publisher),调用api接口creat_publisher与creat_datawriter分别用于创建数据写者与发布者。仿真软件继承的中间件发布端通过数据写者(data writer)将数据传递给opendds,每个数据写者只能对应一个特定主题,发布端使用数据写者指定类型接口,在绑定主题上发布数据样本。数据写者首先对仿真传输数据进行编码,然后传递给发布者准备进行传输,发布者获取需发布数据后传递至所在域中所有订阅者处;步骤2.3:与步骤2.1、步骤2.2类似地,对订阅端域、数据类型进行注册。配置注册数据类型对应主题,api接口create_typeless_topic用于创建无类型主题,在函数create_typeless_topic中写入动态扩展数据结构体名,域中的每一个主题都要自定义特定名称,并与发布端发布的具体数据类型对应。发布进程在发布数据时指定主题,订阅端通过请求对应主题得到数据;配置数据读者(data reader)与订阅者(subsriber),调用api接口creat_subsriber与creat_datareader分别用于创建数据读者与订阅者。订阅者(subsriber)从发
布者接收数据,将获取数据传输给所有与之关联的数据读者(data reader)。订阅端通过函数create_recorder配置recorder监听代码,用于监听动态扩展数据类型,并将监听到的数据类型传输给订阅者;数据读者从订阅者获取数据,并将其解码成对应主题数据类型,最后将数据传输给ue4场景集成的中间件订阅端节点;步骤2.4:针对需要传输数据的类型,根据接口描述语言进行数据传输服务的定义与表示,得到数据定义与表示的idl文件,idl文件中使用“@”注释指定数据分发服务(data distribution service, dds)所需传输和处理数据类型,为了生成传输数据类型时所必要的类型支持的c++代码,idl编写完后,经过tao idl编译器和opendds idl 编译器的处理和编译,最终映射到c++类型支持文件;步骤2.5:编写mpc文件,进行mpc工程化处理生成vc项目文件,mpc文件内容如图4所示。启动运行发布端订阅端可执行文件,开始动态数据扩展类型传输。配置动态数据扩展订阅端代码如图5所示。
33.步骤3:在ue4场景中加载opendds订阅端插件,将opendds订阅端插件内接口函数封装为蓝图节点,ue4场景通过调用订阅端节点,接收数据,对物理模型进行仿真,ue4超大地形图搭建搭建流程如图6所示;步骤3.1:在ue4外部动态插件模块,插件模块代码为步骤2.3、2.4、2.5所述订阅端代码,编译订阅端代码,得到中间件订阅端插件模块 ,此模块被ue4自动封装为可视化蓝图节点;步骤3.2:在ue4场景关卡蓝图调用中间件订阅端插件模块节点,即可以完成ue4与opendds的链接,ue4调用蓝图节点如图7所示。其中event beginplay为蓝图调用主函数,openddsplugin init节点封装opendds订阅端代码,并对opendds初始化,节点参数p topic、s topic分别对发布订阅主题定义,rtps是传输方式定义,set time by event为打点计时器,对订阅数据设定输出数据间隔时间,getmsg content为自定义事件,用于从订阅端获取订阅数据,将数据传输给结构体分割节点break ddsmessage,对结构体切分用于场景调用所需数据类型,print string为打印接收数据;步骤3.3:综合采用3ds max、catia、ug、world machine等软件,生成仿真对象模型,ue4场景模型格式为fbx,非fbx格式模型可通过cad exchange软件转换得到fbx格式模型;步骤3.4:在ue4加载cesium for unreal插件,为ue4场景加载数字地球,生成与真实仿真场景对应的超大型三维虚拟空间;步骤3.5:对仿真对象模型配置摄像机视角,为仿真科研人员提供多视角、全方位的仿真态势展示,为仿真数据结果提供更直观逼真的判断依据。在ue4场景端完成订阅端插件加载、cesium for unreal插件,模型仿真视角摄像机挂在后,既可编译整个仿真场景,启动ue4场景,开始可视化仿真。
34.实施例的仿真项目中,首先加载数字地球,ue4场景通过ue4关卡蓝图节点open ddsplugin init调用opendds订阅端口插件,订阅端recorder接收数据样本函数封装在此节点中,调用此节点,即可在场景使用中间件传输数据,进一步再导入飞行器模型,为提高场景仿真演示效果,在模型上挂在多摄像机,通过对仿真画面分屏显示,设置多相机多视角实时监控导弹飞行状态,图8所示为实施例的飞行器仿真项目的主界面,图9所示为飞行器
仿真过程的不同视角的仿真效果。 项目仿真场景采用cesium数字地球,在数字地球加载10级瓦片图,可针对飞行器全球场景飞行进行仿真分析。本发明方法的实施结果表明,仿真过程中可完全接收到每一组飞行器的仿真结果数据,且数据传输时延可满足场景展示需求。在飞行器的发射起飞、加速飞行整个仿真过中,飞行坐标与数字地球地理坐标匹配,航向角与飞行姿态匹配可做到0误差展示在模型飞行状态上,准确无误的从飞行起点抵达飞行终点。
35.综上所述,将opendds中间件与ue4仿真场景链接,opendds技术简化了各种复杂数据传输协议的配置过程,通过以数据为中心的发布/订阅方式大大提高了数据传输的灵活性,使得多个不同软件链接过程更加便利,鉴于此项技术自身特点,opendds尤其适用于仿真领域数据来源多、多源数据体量大、结构复杂、传递频繁的数据传续需求。同时opendds支持发布端订阅端动态数据扩展,在面对仿真结果参数变量类型变化时,无论发布端如何改变传输数据类型,或者增加数据传输主题数量及内容,订阅端均无需二次修改代码、编译代码,订阅端可成功接收发布端动态扩展的数据类型。
36.在ue4场景端,ue4提供的自定义插件模块使得加载opendds订阅端更加灵活,无需对ue4底层源码学习修改,即可完成项目需求。ue4强大的场景渲染能力在仿真场景搭建上有着无可比拟的优势, ue4对仿真对象模型、超大无缝地形加载、天空大气光照等自然场景效果渲染,相比于传统仿真场景效果而言,ue4场景都更加真实,更加贴近真实试验场景效果。因此,利用opendds中间件的分布式桥接各软件能力,实现了modelica平台与ue4协同仿真需求,同时该协同仿真系统利用ue4能够有效地适应当前可视化仿真平台对仿真结果展示需求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1