CN1212568C - 基于面向对象的分布式交互仿真的方法 - Google Patents
基于面向对象的分布式交互仿真的方法 Download PDFInfo
- Publication number
- CN1212568C CN1212568C CN 02130735 CN02130735A CN1212568C CN 1212568 C CN1212568 C CN 1212568C CN 02130735 CN02130735 CN 02130735 CN 02130735 A CN02130735 A CN 02130735A CN 1212568 C CN1212568 C CN 1212568C
- Authority
- CN
- China
- Prior art keywords
- entity
- protocol data
- application program
- data unit
- interactive simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于面向对象的分布式虚拟现实交互仿真的方法。主要解决目前开发交互方仿真应用程序困难等问题。本发明包括以面向对象的方法封装所有协议数据单元为分布仿真应用程序提供基于对象的处理方法,实现与计算机系统平台无关的分布交互仿真通讯功能,并以回调函数的形式向应用程序提供以协议数据单元对象为交互数据的通讯服务,为应用程序自动管理所有实体的状态信息,设计并实现一个应用程序开发者简单易用的框架结构的步骤。本发明具有面向对象设计、与系统平台无关、方便的回调函数机制和良好的框架结构的优点,其构造简洁、编写灵活、扩展性好、移植方便、代码效率高。
Description
技术领域
本发明涉及一种基于面向对象的分布式虚拟现实交互仿真的方法,属于计算机虚拟现实和计算机图形学技术领域。
背景技术
分布交互仿真应用程序是一种分布式虚拟现实系统,它能使许多独立的仿真器通过计算机网络相互连接而在一个计算机生成的环境中进行交互。这个环境是一个模拟了客观世界的虚拟环境,允许不同地域的多个用户加入到同一个环境中协同作业。由于各种仿真实体如坦克或飞机等的状态不断变化,所以各结点的仿真应用程序必须向网络上的其它仿真应用程序通知这些变化,这样所有参与到作业中的仿真器才能够正确地显示出各个仿真实体的状态。
1983年,美国国防部高级项目研究计划局和美国陆军共同制定了一项合作研究计划仿真网络,形成了世界上第一个分布式虚拟战场环境,用于进行复杂战场任务的训练。在该仿真网络的基础上美国发展了DIS(分布交互仿真协议),并成为IEEE的标准“IEEE 1278”。该协议的核心是PDU(协议数据单元)和DR(静态推算算法)。协议数据单元是它定义的标准消息格式,用来描述某个仿真实体的状态或某种类型事件的发生等。各个主机通过接收和发送各种协议数据单元进行交互,并由接收方决定对其它实体和事件的处理。静态推算算法是按照一定的运动学方程根据实体先前的状态信息来估算实体当前的位置和方向的方法。使用静态推算法是为了限制实体状态协议数据单元的发送频率,以降低网络负载。
分布式交互仿真应用系统涉及图形显示、网络通讯、仿真处理、人机交互等多方面的技术,规模庞大,结构复杂,因此这类系统的开发是相当困难的。另外在我国,分布式交互仿真的研究起步时间只有短短的5年左右,但是应用要求却比较迫切。因此,如何快速开发分布交互仿真应用系统成为一个急需解决的问题。
发明内容
本发明的目的在于克服上述不足,提供一种基于面向对象的分布式交互仿真的方法,可以方便、快速地构造分布式交互仿真系统。
为完成发明目的,本发明采取的技术方案是:
基于面向对象的分布式交互仿真的方法,它包括以下步骤:
以面向对象的方法封装所有的协议数据单元的步骤,即:首先,定义基础协议数据单元类,它只包含分布交互仿真标准中协议数据单元头部信息,然后以基础协议数据单元类为基类,定义各种协议数据单元对象类,
实现与计算机系统平台无关的分布交互仿真通讯功能并以回调函数的形式向应用程序提供以协议数据单元对象为交互数据的通讯服务的步骤,即:建立统一网络接口、统一网络数据格式以及回调函数的数据传递机制,
实现实体管理步骤,即:以上次状态更新时的状态数据和上次状态数据更新时刻到当前时刻的时间段为前提,采用静态推算算法计算出当前的实体状态,
设计并实现一个应用程序开发者简单易用的框架结构的步骤,即:接收仿真控制器的输入,根据仿真实体的仿真行为计算当前的实体状态;更新本地实体管理中的实体状态仓库数据;使用静态推算器计算误差,当误差超过一定的值时,发送实体状态协议数据单元;接收网络中的协议数据单元,根据它们更新相应的远程实体状态;使用静态推算器计算所有远程实体的状态数据;通过图形系统显示环境和所有实体。
所说的协议数据单元还包括用户自定义协议数据单元,用户自定义协议数据单元是基础协议数据单元类的子类,以用户自定义协议数据单元为基类,用户可以自己方便地定义各种协议数据单元格式。
所说的通讯步骤进一步包括将协议数据单元对象类到网络数据的相互转换功能封装在一个单独的对象中的步骤。
所说的实体管理部分包括实体状态仓库、本地实体管理和远程实体管理。
所说的远程实体管理进一步包括:当接收到实体状态协议数据单元,先检查对应的实体是否已经存在,如果没有就创建一个新的远程实体,并添加到远程实体列表中;如果已经存在就检查是不是实体退出时发送的一个终结协议数据单元,若是就删除这个实体,否则更新该实体的实体状态仓库数据。
从计算机技术上来说,本发明具有以下几个优点:1、面向对象的设计方法。这种程序设计方法比较适合分布交互仿真应用程序的开发,而且C++代码编写的程序具有很高的运行效率。2、与系统平台无关。既方便应用程序的编写,又使应用程序具有良好的可移植性。3、方便的回调函数机制。不仅使应用程序的结构更加清晰,而且同一类型的协议数据单元允许多个回调函数的方法使应用程序具有良好的可扩展性。4、良好的框架结构。为分布仿真应用程序提供了一个合理的框架结构,用户可以比较容易地进行分布仿真应用程序的开发。使用本发明编写应用程序能够具有构造简洁、编写灵活、扩展性好、移植方便、代码效率高等特点,因此本发明成为一个快速开发分布交互仿真应用程序的良好工具。
附图说明
图1是本发明方法演习实施例的一次协议数据单元通讯流程图;
图2是本发明方法演习实施例的本地实体管理流程图;
图3是本发明方法演习实施例的远程实体管理流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细的描述。
本发明的实施例是一个军事演习的分布式交互仿真的方法。
第一步骤是采用面向对象的方法封装所有的协议数据单元。
首先,定义一个基础协议数据单元类,它只包含分布交互仿真标准中协议数据单元头部信息:协议版本、演习编号、协议家族编号、时间戳、长度等。这也是所有协议数据单元共同的信息。
然后以基础协议数据单元类为基类定义各种协议数据单元对象类,这些对象包括实体状态协议数据单元、碰撞协议数据单元、开火协议数据单元、爆炸协议数据单元、服务请求协议数据单元、提供供给协议数据单元、接收供给协议数据单元、完成修理协议数据单元、取消供给协议数据单元、响应修理协议数据单元、数据协议数据单元、数据查询协议数据单元、设置数据协议数据单元、创建实体协议数据单元、撤离实体协议数据单元、电磁发射协议数据单元等。这些协议数据单元对象都具有友好简洁的数据存取接口,可以方便地访问。
以上协议数据单元对象都在分布交互仿真协议定义范围之内,但是分布式交互仿真标准并不能涵盖所有的分布交互仿真的交互要求。实际开发分布交互仿真应用系统时,可能希望根据具体要求,在交互过程中数据格式使用自己定义的数据内容。为了解决这种问题,本发明专门定义了一种特殊协议书据单元——用户自定义协议数据单元。用户自定义协议数据单元也是基础协议数据单元类的子类。以用户自定义协议数据单元为基类,用户可以自己方便地定义各种协议数据单元格式,同时还能保持其它使用方式不变。
本发明第二个步骤是实现与计算机系统平台无关的分布交互仿真通讯功能,并以回调函数的形式向应用程序提供以协议数据单元对象为交互数据的通讯服务。
这个步骤又分为三个子步骤:建立演习的统一网络接口,统一网络数据格式以及回调函数的数据传递机制。
首先是建立演习的网络接口。IEEE 1278标准规定所有数据在网络使用用户数据报协议广播的通讯方式,同时只有具备相同演习编号的系统才能进行交互。所以本发明根据用户指定的用户数据报协议端口建立一个标准架构,这个架构负责接收与本地演习编号相同的数据,同时发送数据时填写本地的演习编号。本发明也采用面向对象的方法将这个功能封装在一个对象——分布交互仿真演习接口对象中。
其次是统一网络数据格式。不同的计算机系统内部对数据的存储格式是不一致的,比如32位的整数在个人电脑上的存储顺序与大型计算机完全相反。因此,运行在不同系统平台上的分布交互仿真应用程序需要正确交互的话,就必须有所有系统都能读懂的顺序“格式”。然后把所有传输到网络中的数据都转换成这种格式的话,问题就可以迎刃而解了。因此本发明把所有的协议数据单元都定义了一种统一的网络数据格式,并完成了由这种网络数据到协议数据单元对象类的相互转换功能。本发明将协议数据单元对象类到网络数据的相互转换功能封装在一个单独的对象——协议数据单元工厂中。
通讯服务的最后一个步骤是将数据合理地传送给应用程序。对应用程序来说,发送数据是一种主动行为,容易控制,但是接收数据却是一种被动行为,不容易控制。所以,当接收到数据如何传递给应用程序进行处理,是决定分布交互仿真系统运行效率以及结构复杂度的一个重要因素。本发明采用了回调函数机制来向应用程序传递数据。
这个机制是这样的,先构造一个回调函数管理器。这个回调函数管理器对象可以根据协议数据单元对象类型添加、删除、查找对应的函数,这些函数可以是应用程序开发人员定义的协议数据单元对象的处理方法。因此,对于接收到的各种协议数据单元,只要应用程序定义好相应的处理方法,并把它们作为协议数据单元回调函数添加到回调函数管理器中,本发明在分布交互仿真演习接口对象接收到数据时就可以根据协议数据单元类型直接回调相应的协议数据单元回调函数来处理这些数据。这样的结果等于应用程序处理了这些数据。由于回调函数管理器可以方便的添加删除回调函数,同时一种类型协议数据单元可以对应多个回调函数,因此应用程序在功能扩展性方面变得十分方便。总的来说,这种机制不仅使应用程序对接收数据的响应十分及时,而且增加应用程序的扩展性。
图1本发明的实施例的一次协议数据单元通讯流程图。应用程序A要发送一个PDU P,先通过本发明的协议数据单元工厂转换成网络格式的协议数据单元,然后使用分布交互仿真演习接口发送到物理网络中。同一演习的其它应用程序如B,其分布交互仿真演习接口会接收到这个协议数据单元,然后通过协议数据单元工厂生成协议数据单元对象,然后调用对应的回调函数处理这个协议数据单元以达到向应用程序传递数据的目的。
本发明第三个步骤是实现实体管理。参阅图2,图2是本地实体管理流程图。在分布交互仿真中实体分为两种:由本地应用程序控制的本地实体和由其它应用程序控制的远程实体。为了达到分布环境的一致性,本地的实体状态变化需要及时通知统一演习中其它的应用程序,同时要根据其它应用程序发送的实体状态协议数据单元来实时维护所有的远程实体状态。本发明的实体管理部分包括实体状态仓库、本地实体管理和远程实体管理等部分。
实体状态仓库是实体在计算机系统中的模块表示对象。应用系统可以根据仿真情况使用这个实体状态仓库来仿真一个实体。
仿真系统一般都是模拟某个特定实体对象如坦克、飞机等。这些实体受本地系统控制,其计算机中的模拟状态需要自己进行维护并及时向分布环境中的其它应用系统发布。本发明使用本地实体管理类来完成这些功能,其中使用一个实体状态仓库来管理这个实体的模型状态。
另外为了减少网络负载,分布交互仿真系统要采用静态推算算法来计算实体当前状态,本发明采用一个独立的静态推算器类完成这个功能。静态推算器类的基本思想是这样的:以上次状态更新时的状态数据和上次状态数据更时刻到当前时刻的时间段为前提,根据给定的DR算法,选用对应的计算公式计算出当前的实体状态。
所以本地实体管理不仅要实时更新自己实体状态仓库中的数据,还要使用一个静态推算器类推算模拟状态与实际状态的误差,当误差超过一个阀值时,就向分布环境中前提应用系统发布自己的当前状态。这样就不必过于经常地发送数据,减少了网络中通讯负载,而且能保证一定的仿真精度。远程实体的管理与本地实体的管理相对应。每一个远程实体管理类也都拥有一个实体状态仓库和一个静态推算器,当接收到控制该实体的应用程序发送过来的实体状态协议数据单元后,更新实体状态仓库中的数据。没有的时候就使用静态推算器来计算这个实体的当前状态。
参阅图3,图3是远程实体管理流程图,由于远程实体一般都会有很多,所以使用一张动态远程实体表来管理所有的远程实体。当接收到实体状态协议数据单元,先检查对应的实体是否已经存在本发明的远程实体列表中,如果没有就需要创建一个新的远程实体,并添加到远程实体列表中;如果已经存在就检查是不是实体退出时发送的一个终结协议数据单元,若是就删除这个实体,否则更新该实体的实体状态仓库数据。应用程序可以根据实体状态仓库的数据来计算给操作者的逼真感受。
本发明第四个步骤是设计并实现一个合理的框架结构:
在使用本发明的以上三个部分的基础上,一个分布交互仿真应用系统的主仿真循环流程是:1、接收仿真控制器如键盘、鼠标、传感器等的输入,根据具体仿真实体的仿真行为方程计算当前的实体状态;2、更新本地实体管理中的实体状态仓库数据;3、使用静态推算器计算误差,当误差超过一定的值时,发送实体状态协议数据单元;4、接收网络中的PDU,根据它们更新相应的远程实体状态;5、使用静态推算器计算所有远程实体的状态数据;6、通过图形系统显示环境和所有实体;7、回到1,循环。
使用本发明的框架,应用程序开发人员只需要集中精力解决仿真行为和三维图形等逼真显示的问题,就可以实现一个分布交互仿真应用系统。
从以上的过程中可以看出,本发明已经为分布式仿真应用程序提供了一个框架结构,并解决了分布交互的关键问题。分布交互仿真应用系统开发人的主要工作是处理传感器的数据接收与处理、碰撞检测、视景处理等具体的仿真行为。本发明对于许多已经完成了这些仿真行为的现有仿真器尤其有利,因为它们使用本发明通过少量的改进就可以变成一个分布式仿真应用程序通过网络参与协同或对抗演习。
Claims (5)
1、一种基于面向对象的分布式交互仿真的方法,其特征在于它包括以下步骤:
(1)以面向对象的方法封装所有的协议数据单元的步骤,即:
首先,定义基础协议数据单元类,它只包含分布交互仿真标准中协议数据单元头部信息,然后以基础协议数据单元类为基类,定义各种协议数据单元对象类,
(2)实现与计算机系统平台无关的分布交互仿真通讯功能,并以回调函数的形式向应用程序提供以协议数据单元对象为交互数据的通讯服务的步骤,即:
建立统一网络接口、统一网络数据格式以及回调函数的数据传递机制,
(3)实现实体管理,为应用程序自动管理包括本地实体和远程实体的所有实体的状态信息的步骤,即:
以上次状态更新时的状态数据和上次状态数据更新时刻到当前时刻的时间段为前提,采用静态推算算法计算出当前的实体状态。
(4)设计并实现一个应用程序开发者简单易用的框架结构的步骤,即:
接收仿真控制器的输入,根据仿真实体的仿真行为计算当前的实体状态;
更新本地实体管理中的实体状态仓库数据;
使用静态推算器计算误差,当误差超过一定的值时,发送实体状态协议数据单元;
接收网络中的协议数据单元,根据它们更新相应的远程实体状态;
使用静态推算器计算所有远程实体的状态数据;
通过图形系统显示环境和所有实体。
2、根据权利要求1所说的基于面向对象的分布式交互仿真的方法,其特征在于:步骤(1)所说的协议数据单元还包括用户自定义协议数据单元,用户自定义协议数据单元是基础协议数据单元类的子类,以用户自定义协议数据单元为基类,用户可以自己方便地定义各种协议数据单元格式。
3、根据权利要求1所说的基于面向对象的分布式交互仿真的方法,其特征在于:步骤(2)进一步包括将协议数据单元对象类到网络数据的相互转换功能封装在一个单独的对象中。
4、根据权利要求1所说的基于面向对象的分布式交互仿真的方法,其特征在于:步骤(3)所说的实体管理部分包括实体状态仓库、本地实体管理和远程实体管理。
5、根据权利要求1所说的基于面向对象的分布式交互仿真的方法,其特征在于:步骤(3)所说的远程实体管理进一步包括:
(1)当接收到实体状态协议数据单元,先检查对应的实体是否已经存在,如果没有就创建一个新的远程实体,并添加到远程实体列表中;
(2)如果已经存在就检查是不是实体退出时发送的一个终结协议数据单元,若是就删除这个实体,否则更新该实体的实体状态仓库数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02130735 CN1212568C (zh) | 2002-09-18 | 2002-09-18 | 基于面向对象的分布式交互仿真的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02130735 CN1212568C (zh) | 2002-09-18 | 2002-09-18 | 基于面向对象的分布式交互仿真的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1409217A CN1409217A (zh) | 2003-04-09 |
CN1212568C true CN1212568C (zh) | 2005-07-27 |
Family
ID=4746449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02130735 Expired - Fee Related CN1212568C (zh) | 2002-09-18 | 2002-09-18 | 基于面向对象的分布式交互仿真的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1212568C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100388205C (zh) * | 2005-11-23 | 2008-05-14 | 中国航天科技集团公司第一研究院 | 基于hla的分布交互仿真平台及其实现方法 |
CN100428722C (zh) * | 2006-08-02 | 2008-10-22 | 华为技术有限公司 | 多生成树协议的分布式处理系统及处理方法 |
CN109726026B (zh) * | 2018-12-29 | 2021-03-19 | 北京字节跳动网络技术有限公司 | 一种交互数据处理方法、装置、设备及存储介质 |
-
2002
- 2002-09-18 CN CN 02130735 patent/CN1212568C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1409217A (zh) | 2003-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100337238C (zh) | 基于网格的喷气发动机分布仿真系统 | |
CN110855482A (zh) | 三维动态通信网络模拟仿真方法、系统及存储介质 | |
Villa et al. | Design of multi-paradigm integrating modelling tools for ecological research | |
CN103593516A (zh) | 一种作战体系建模与仿真系统 | |
CN103019903A (zh) | 嵌入式设备能耗仿真评测系统 | |
CN111460621B (zh) | 一种组件化仿真建模方法及系统 | |
Han et al. | Building design services in a distributed architecture | |
CN102609985A (zh) | 三维电站图形平台 | |
CN113703772A (zh) | 基于ice的异构平台高效智能计算应用架构及其构建方法 | |
CN103077068B (zh) | 一种基于共享内存的高性能仿真系统实现方法 | |
Marir et al. | OSCONCAD: A model-based CAD system integrated with computer applications | |
CN101482828A (zh) | 一种基于hla的通用分布式视景仿真系统及实现方法 | |
CN106096145A (zh) | 一种基于状态空间的复杂系统图形化建模与分析环境 | |
CN1212568C (zh) | 基于面向对象的分布式交互仿真的方法 | |
Kraetzschmar et al. | Miro—middleware for cooperative robotics | |
Funka-Lea et al. | Interactive visual modeling for performance | |
CN116244905A (zh) | 机器人生产过程中状态实时监控方法、系统、终端及介质 | |
Design et al. | MIT Architecture | |
Buck et al. | Ptolemy: A mixed-paradigm simulation/prototyping platform in C++ | |
CN111090430B (zh) | 一种嵌入式系统下的应用软件开发系统 | |
Brasse et al. | A component architecture for federate development | |
Wallace et al. | Intelligent System Development and Integration for Cloud Computing | |
Hamri et al. | On using design patterns for DEVS modeling and simulation tools | |
KR102558871B1 (ko) | Devs를 적용한 3d 물리엔진 계층구조 프레임워크 시스템 | |
Sermeno et al. | CORBA-Based Class Scheduling Framework Using Decorator and Facade Design Patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050727 Termination date: 20110918 |