王力伯
(中國人民警察大學(xué),河北 廊坊 065000)
分布式三維模擬訓(xùn)練系統(tǒng)也稱為分布式三維虛擬現(xiàn)實系統(tǒng),它的主要特征是通過自然的人機交互界面,建立一種與人的感覺和行為相容的、與客觀世界高度類似的、逼真的綜合虛擬環(huán)境,以達到一種身臨其境的臨場感[1]?;镜娜S模擬訓(xùn)練系統(tǒng),一般包括圖形引擎及其上的顯示系統(tǒng),交互設(shè)備主要為鍵盤、鼠標(biāo),應(yīng)用部分是處理邏輯和網(wǎng)絡(luò)交互。這其中最重要的部分就是計算仿真和三維模型,包括物理模型驅(qū)動、碰撞檢測與反饋的物理學(xué)特性,以及所制定的系統(tǒng)運行和人員操作即反饋規(guī)則[2]。從這個層面來講,一個典型的虛擬仿真模擬系統(tǒng)是一個持續(xù)不斷的循環(huán)類程序,它執(zhí)行邏輯并在屏幕上繪制圖形,因此,每個分布式三維虛擬現(xiàn)實系統(tǒng)除了自身的處理邏輯外,基本上都具有相同的循環(huán)管理程序。本文結(jié)合HLA/RTI模擬訓(xùn)練系統(tǒng)相關(guān)設(shè)計標(biāo)準(zhǔn),對分布式三維虛擬現(xiàn)實系統(tǒng)中通用管理模型問題進行研究。
分布式虛擬現(xiàn)實系統(tǒng)的程序生命周期,可以抽象出一些通用而獨立功能模塊,包括HLA時間管理、程序初始化、與聯(lián)盟成員對象模型和交互對應(yīng)的仿真對象和交互的表示、值與數(shù)據(jù)的互相轉(zhuǎn)換、消息傳遞的事件系統(tǒng)、對象生存周期的心跳支持、多線程支持及異常處理等[3]。按照HLA標(biāo)準(zhǔn)設(shè)計的分布式交互仿真系統(tǒng),可以進一步抽象成運行支撐結(jié)構(gòu)RTI軟件和盟員軟件[4],典型HLA仿真應(yīng)用程序邏輯結(jié)構(gòu)如圖1所示。
圖1 HLA仿真系統(tǒng)邏輯結(jié)構(gòu)
以上這些功能,都由RTI提供的功能來保障,它是實現(xiàn)HLA標(biāo)準(zhǔn)中接口規(guī)范的軟件[5],相當(dāng)于一個分布式操作系統(tǒng),提供了一組通用的服務(wù)功能,包括聯(lián)盟管理FM(Federation Management)、聲明管理DM(Declaration Management)、對象管理OM(Object Management)、所有權(quán)管理OWM(Ownership Management)、時間管理TM(Time Management)、數(shù)據(jù)分發(fā)管理DDM(Data Distribution Management)及支持服務(wù)SS(Support Service)7個方面。由于RTI的功能從實質(zhì)上說就是實現(xiàn)盟員間數(shù)據(jù)的有序及按需傳送,所以RTI的核心功能為時間管理、數(shù)據(jù)分發(fā)管理及對象管理[6]。作為聯(lián)盟執(zhí)行的基礎(chǔ)設(shè)施,RTI類似一個軟總線,運行在其上的聯(lián)盟成員類似于軟插件,通過規(guī)范它們之間的接口實現(xiàn)無縫連接。對應(yīng)于RTI提供的服務(wù),RTI由7個功能模塊及應(yīng)用和通信兩個接口層組成,接口層的目的是將仿真應(yīng)用與RTI及底層支撐系統(tǒng)相分離,以實現(xiàn)RTI的通用性和可移植性。RTI典型的內(nèi)部邏輯結(jié)構(gòu)如圖2所示。
圖2 RTI內(nèi)部邏輯結(jié)構(gòu)
聯(lián)盟管理FM:管理整個聯(lián)盟的運行;創(chuàng)建、動態(tài)控制、修改、刪除、保存和恢復(fù),包括盟員的加入和退出。
聲明管理DM:完成實體對象(Object)和交互(Interaction)的發(fā)布(Publish)和訂閱(Subscribe),以及相關(guān)的一些協(xié)調(diào)控制工作。
對象管理OM:處理對象的實例注冊和發(fā)現(xiàn)(Object Instance Registration and Discovery),屬性值更新和反映(Attribute Values Update and Reflection),發(fā)送和接收交互(Send and Receive Interaction),以及控制實例更新的相關(guān)函數(shù)和其他函數(shù)。
所有權(quán)管理OWM:通過拉或推機制來管理系統(tǒng)仿真運行過程中對象的所有權(quán)。RTI自動為每個對象定義一個“刪除特權(quán)”屬性,其所有者默認為對象的創(chuàng)建者。一個盟員若想獲得此對象的“刪除特權(quán)”,則它必須獲得該對象“刪除特權(quán)”屬性的所有權(quán)。
時間管理TM:主要提供控制各盟員在仿真時間軸上的推進,HLA提供了多種時間管理策略和時間推進策略,目的是保證RTI能在適當(dāng)?shù)臅r間以適當(dāng)?shù)姆绞胶晚樞驅(qū)碜悦藛T的事件轉(zhuǎn)發(fā)給相應(yīng)的盟員。
數(shù)據(jù)分發(fā)管理DDM:通過提出路徑空和區(qū)域的概念,在聲明管理提供了基于對象類和對象屬性數(shù)據(jù)過濾基礎(chǔ)上,提供更加精細的數(shù)據(jù)過濾功能——基于對象實例屬性值的過濾,以減少不相關(guān)數(shù)據(jù)的傳輸。
整個分布式虛擬現(xiàn)實系統(tǒng)(聯(lián)盟)中的各種功能和應(yīng)用(盟員)通過RTI調(diào)用提供的服務(wù)實現(xiàn)他們之間的互操作,同時也要求盟員提供一組回調(diào)服務(wù),在接口規(guī)范中對這些回調(diào)服務(wù)的接口和具體功能也進行了定義。在整個分布式虛擬現(xiàn)實系統(tǒng)的體系結(jié)構(gòu)中,它是執(zhí)行核心,是仿真系統(tǒng)進行分層管理控制、實現(xiàn)分步交互仿真可擴性的基礎(chǔ)。
2.1 可擴展的虛擬現(xiàn)實引擎設(shè)計
在虛擬現(xiàn)實系統(tǒng)的整個循環(huán)體系中,除了處理輸入、輸出及模擬仿真邏輯計算外,還要負責(zé)模擬仿真時間的推進,盟員仿真時間的推進應(yīng)該按照HLA時間管理規(guī)范推進,每種時間推進方式分別使用不同的推進算法,為方便開發(fā)人員根據(jù)需要選擇,本設(shè)計采用策略模式對HLA時間管理規(guī)范中規(guī)定的3組5種時間推進算法進行封裝處理,如圖3所示,DvsSimAdvancer提供仿真引擎選擇接口,負責(zé)為開發(fā)人員配置創(chuàng)建相應(yīng)的仿真引擎,并調(diào)用仿真引擎接口,DvsSimDriver提供仿真引擎接口,系統(tǒng)在設(shè)計中通常預(yù)設(shè)定HLA的默認推進算法,也可以根據(jù)需要定義自己的推進策略算法。
圖3 仿真引擎
2.2 虛擬現(xiàn)實仿真模型
虛擬現(xiàn)實系統(tǒng)由仿真實體組成,三維實體模型狀態(tài)的變化形成了仿真。系統(tǒng)在設(shè)計中要明確出模型的表示、創(chuàng)建和維護。
2.2.1 仿真實體的表示
HLA的FOM文件中定義仿真對象類和仿真交互類的語義表示,開發(fā)中采用面向?qū)ο蟮姆椒?,但語義表示只有開發(fā)者可以理解,編寫仿真程序的高級程序設(shè)計語言只能理解語法,為此需要構(gòu)建一種機制將語法和語義結(jié)合起來。該框架機制實現(xiàn)了HLA中對象和交互到面向?qū)ο笾袑ο蠓椒ǖ挠成?,?dāng)虛擬現(xiàn)實系統(tǒng)狀態(tài)發(fā)生變化時(對象屬性更新,交互動作),存貯在FOM文件中的數(shù)據(jù)相應(yīng)改變,圖4為基于面向?qū)ο箢惖姆抡鎸嶓w模型表示。
圖4 基于面向?qū)ο蟮姆抡鎸嶓w組成模型
圖4中,DvsObject和DvsInteraction用來表示仿真對象類和交互類,它們共同繼承自表示仿真實體的模板類DvsEntity,因為實體是屬性的集合,屬性的值描述了實體的狀態(tài),所以模板類DvsEntity繼承自屬性聚類DvsPropertyAggregate,它是一組屬性的集合,該屬性聚類指向DvsProperty,類DvsProperty描述了單個實體的屬性,DvsValue表示某時刻下屬性或者參數(shù)的值。HLA中的仿真實體類都擁有一個唯一的FOM實體類名和實體類句柄,因此DvsEntity中設(shè)置了靜態(tài)成員ms_ClassName和ms_ClassHandle來與之關(guān)聯(lián),同理DvsObject中的成員m_Name和m_Handle表示了一個具體仿真對象實例的名稱和句柄。HLA中仿真對象類的屬性和仿真交互類的參數(shù)都擁有一個唯一的FOM名稱和句柄,所以DvsProperty中設(shè)置了m_Name和m_Handle與之關(guān)聯(lián)。由此實現(xiàn)FOM中定義的對象類和交互類及其屬性和參數(shù),映射到面向?qū)ο笾械膶ο箢悺?/p>
2.2.2 仿真實體的創(chuàng)建
利用抽象工廠和工廠方法實現(xiàn)具體仿真實體和FOM實體的關(guān)聯(lián),使程序世界中實體狀態(tài)的改變能夠自動映射到仿真世界中相應(yīng)的實體中,從而實現(xiàn)仿真實體創(chuàng)建由開發(fā)者完成,調(diào)用由框架完成。如圖5仿真實體的建立及調(diào)用機制。
圖5 仿真實體的建立及調(diào)用機制
圖5中,DvsFactory、DvsObject和DvsInteraction由分布交互仿真應(yīng)用程序開發(fā)框架創(chuàng)建,是開發(fā)框架用來維持對象間關(guān)系的手段,其中,DvsFactory提供創(chuàng)建對象和交互的接口,但具體對象的創(chuàng)建由開發(fā)人員實現(xiàn),DvsObject和DvsInteraction只是提供仿真對象和仿真交互的通用功能,并提供它們與面向?qū)ο笳Z言中的實體關(guān)聯(lián)的方法。DvsXFactory、DvsXObject和DvsXInteraction是由抽象類派生出來的具體類,根據(jù)仿真的需要由開發(fā)者來定義,DvsXFactory提供創(chuàng)建具體對象的方法,DvsXObject提供具體對象屬性的實現(xiàn),DvsXInteraction實現(xiàn)具體的仿真行為,上述3個具體類共同實現(xiàn)通用框架和特定應(yīng)用的連接。
2.2.3 仿真實體的維護
以聯(lián)盟方式建立的仿真系統(tǒng),是由各加盟的盟員共同維護的,每個盟員都保存整個仿真系統(tǒng)的一部分信息,主要是盟員的本地對象信息和交互行為。除此還應(yīng)包含其他盟員產(chǎn)生的和本盟員有交互關(guān)系的遠程對象,同時采用分布式對象計算技術(shù)的“存根-代理”結(jié)構(gòu),實現(xiàn)對遠程對象在本地的訪問,從而實現(xiàn)本地對象和遠程對象在使用上保持一致。實質(zhì)上就是為由其他盟員創(chuàng)建的遠程對象創(chuàng)建本地的代理對象,實現(xiàn)遠程對象的屬性更新能夠自動映射到代理對象,代理對象的創(chuàng)建方法和本地對象相同,區(qū)別就是遠程對象是只讀屬性,本地對象是讀寫屬性。僅當(dāng)遠程對象某些屬性所有權(quán)轉(zhuǎn)移到本地盟員后,代理對象相應(yīng)的屬性值才能變?yōu)榭蓪懀藭r本地盟員負責(zé)遠程對象相應(yīng)屬性的更新。
2.3 虛擬現(xiàn)實仿真的事件系統(tǒng)通信機制
通用框架定義了應(yīng)用程序各部分之間的依賴關(guān)系、功能分工和流程控制,需要開發(fā)人員加入特定應(yīng)用代碼才能形成具體應(yīng)用程序,因此需要一種機制,實現(xiàn)框架和特定應(yīng)用代碼之間的通信,使得特定邏輯得以執(zhí)行。大部分通信可以通過繼承框架提供的抽象類,建立框架提供的接口,實現(xiàn)框架在其執(zhí)行流程內(nèi)調(diào)用開發(fā)者創(chuàng)建的代碼的通信機制,但對于隨機發(fā)生的特定類型的事件而言需要一種“事件系統(tǒng)”類的通信機制。事件系統(tǒng)通信機制結(jié)構(gòu)如圖6所示。
圖6 事件系統(tǒng)通信機制
事件系統(tǒng)通信機制提供了消息注冊、通知的手段,通過二元模板類DvsEvent提供注冊、注銷和通知的方法,同時提供信息傳遞的機制和方法。當(dāng)系統(tǒng)產(chǎn)生信息時,只需將其作為特定類型的事件觸發(fā)即可,所有注冊此類型事件的處理器都將得到通知。此外事件系統(tǒng)本身具有良好的可擴展性,用戶只需要從指定的事件類型通過二元模板類派生特定類型的事件,就可以支持用戶自定義事件。
分布式交互仿真應(yīng)用系統(tǒng)是一個復(fù)雜的系統(tǒng)工程,建立這樣一個復(fù)雜系統(tǒng)而不考慮重用是不能被設(shè)計者所容忍的。應(yīng)用程序通用管理模型能較好地解決這個問題,它可以看成是一組相互合作程序,它提供應(yīng)用領(lǐng)域所需的大部分通用功能,是整個或部分系統(tǒng)的可重用設(shè)計,開發(fā)者通過重用這些程序來建立某個特定領(lǐng)域的應(yīng)用程序,從而大大縮短開發(fā)周期。本文在對各種分布式交互仿真應(yīng)用程序的深入研究與分析的基礎(chǔ)上,給出了一個系統(tǒng)模型,并在此基礎(chǔ)上,設(shè)計了一個面向分布式交互仿真領(lǐng)域的應(yīng)用程序框架DVS_FM,該框架不僅具備框架程序在普遍意義上的功能,還為分布式虛擬環(huán)境應(yīng)用程序的模塊化裝配提供一種體系結(jié)構(gòu)。