張德剛,王達(dá)達(dá),李澤河,黃繼杰
(1.云南電網(wǎng)有限責(zé)任公司教育培訓(xùn)評(píng)價(jià)中心,云南 昆明 510650;2.北京科東電力控制系統(tǒng)有限責(zé)任公司,北京 100192)
基于HLA/RTI的分布交互仿真技術(shù)在聯(lián)合訓(xùn)練中得到了廣泛應(yīng)用,并且正在朝智能化[1]、服務(wù)化[2]和虛擬現(xiàn)實(shí)化[3]方向發(fā)展。在虛擬現(xiàn)實(shí)化方面,追求聯(lián)合訓(xùn)練場景的逼真度和學(xué)員的沉浸體驗(yàn)度是當(dāng)前的研究熱點(diǎn)。以往針對(duì)分布交互仿真對(duì)象的運(yùn)動(dòng)所采用的插值技術(shù)難以滿足這種逼真度的要求,需要實(shí)時(shí)地獲得分布交互仿真對(duì)象的運(yùn)動(dòng)和位置數(shù)據(jù),這就需要開發(fā)實(shí)時(shí)的RTI。
實(shí)時(shí)RTI的開發(fā)技術(shù)在高性能仿真領(lǐng)域作了許多研究,文獻(xiàn)[4-5]通過共享內(nèi)存技術(shù)來提高RTI的實(shí)時(shí)通信性能,在多核服務(wù)器上取得了很好的效果。文獻(xiàn)[6-7]通過在服務(wù)器間構(gòu)建Infiniband網(wǎng)絡(luò),并采用直接內(nèi)存訪問(remote direct memory access,RDMA)通信機(jī)制對(duì)RTI進(jìn)行優(yōu)化,在Infiniband網(wǎng)絡(luò)環(huán)境下取得了很好的實(shí)時(shí)性,并且針對(duì)大數(shù)據(jù)包傳輸?shù)膶?shí)時(shí)性更顯突出。這些研究都將RTI的底層通信代碼進(jìn)行了替換,將基于TCP/IP的網(wǎng)絡(luò)通信換成了共享內(nèi)存或內(nèi)存映射等,但聯(lián)合訓(xùn)練仿真多在基于TCP/IP的局域網(wǎng)環(huán)境下進(jìn)行,這就需要擴(kuò)展RTI的底層通信代碼,而不是替換了。
以基于虛擬現(xiàn)實(shí)技術(shù)的變電設(shè)備運(yùn)維多人協(xié)同培訓(xùn)[8]為應(yīng)用背景,結(jié)合應(yīng)用中所用的高速局域網(wǎng)環(huán)境,探討計(jì)算機(jī)支持的協(xié)同工作技術(shù)(computer supported cooperative work,CSCW)及其所采用的終端組播技術(shù)的實(shí)時(shí)性,并研究將CSCW和HLA/RTI這兩種技術(shù)進(jìn)行融合,以提高三維虛擬場景下多人協(xié)同培訓(xùn)仿真的逼真度。
基于虛擬現(xiàn)實(shí)的變電設(shè)備運(yùn)維仿真培訓(xùn)系統(tǒng)應(yīng)用架構(gòu)如圖1所示,包括N臺(tái)變電設(shè)備、M個(gè)虛擬現(xiàn)實(shí)(VR)頭盔和電網(wǎng)計(jì)算服務(wù)器。每個(gè)變電站設(shè)備和電網(wǎng)計(jì)算程序各自構(gòu)成HLA的聯(lián)邦成員[9],同時(shí)每個(gè)帶VR頭盔的培訓(xùn)人員和教師各自構(gòu)成聯(lián)邦成員。變電站中電氣設(shè)備的可視化模型組件數(shù)目很多,且要達(dá)到虛擬現(xiàn)實(shí)的沉浸式實(shí)時(shí)渲染,至少要保證圖形的刷新頻率不低于60幀/秒,故為了達(dá)到三維場景的實(shí)時(shí)顯示效果需要采用實(shí)時(shí)通訊技術(shù)。
圖1 基于VR的變電設(shè)備運(yùn)維培訓(xùn)架構(gòu)
當(dāng)前高速以太網(wǎng)可達(dá)1GbE甚至10GbE,需要從減少延遲的指標(biāo)來選擇,和延遲有關(guān)的兩個(gè)問題是傳輸和序列化,但在延遲時(shí)間中序列化時(shí)間只占很小的一部分。連接層的巨大延遲主要是由連接的每一端的接口和系統(tǒng)引入的。對(duì)于一個(gè)特定的包來說,它通過一個(gè)1GbE的連接的往返時(shí)間是135 μs,而通過一個(gè)10GbE的連接的往返時(shí)間只能下降到75 μs,大多數(shù)其他的開銷都是來自于設(shè)備的兩端,而不是來自于連接本身。
由此,在基于增強(qiáng)現(xiàn)實(shí)技術(shù)的變電設(shè)備運(yùn)維多人協(xié)同培訓(xùn)中采用了1GbE的網(wǎng)卡和網(wǎng)線來構(gòu)建高速以太網(wǎng),其兩個(gè)節(jié)點(diǎn)間單向傳輸512字節(jié)包速度是75 μs,高于文獻(xiàn)[6]中所測得的各種用高速RTI來更新對(duì)象屬性的速度。故可采用CSCW組播技術(shù)來進(jìn)行實(shí)時(shí)通信。
CSCW的三要素是合作、協(xié)調(diào)和通信。CSCW的合作模式從時(shí)間和空間上可分為同步模式、分布式同步模式、異步模式和分布式異步模式[10-11]。其中,同步模式系統(tǒng)用于本地組(局域網(wǎng))之間面對(duì)面的實(shí)時(shí)協(xié)同工作系統(tǒng),這種模式的協(xié)同工作系統(tǒng)要達(dá)到“你見即我見”[12-13]。CSCW在協(xié)同操作過程中難免會(huì)碰到多個(gè)用戶對(duì)同一個(gè)對(duì)象進(jìn)行操作,這樣就使得如何保證這些操作井然有序地執(zhí)行是必須的,目前國內(nèi)外針對(duì)協(xié)同編輯、協(xié)同設(shè)計(jì)、網(wǎng)絡(luò)會(huì)議等協(xié)同工作系統(tǒng)上的并發(fā)控制進(jìn)行了相關(guān)的研究。按照是否允許操作沖突的發(fā)生,共享對(duì)象的并發(fā)控制方法分為以下幾種典型[14-15]:令牌控制方法、加鎖方法、操作信息序列化、基于操作轉(zhuǎn)換的并發(fā)控制。
CSCW的通信方式多采用終端系統(tǒng)組播方式,終端系統(tǒng)組播是由美國卡內(nèi)基梅隆大學(xué)(Carnegie Mellon University,CMU)研究開發(fā)的實(shí)用組播系統(tǒng),包括成員管理和數(shù)據(jù)包復(fù)制等。這種把由路由器支持的組播轉(zhuǎn)變到由終端系統(tǒng)支持的組播,能夠解決IP組播的大部分問題(傳輸?shù)牟豢煽啃?。組播樹是終端系統(tǒng)組播的核心結(jié)構(gòu),它的創(chuàng)建分為兩個(gè)步驟:首先初始化一個(gè)連通圖(Mesh),使得Mesh中的每個(gè)節(jié)點(diǎn)是連通的;然后在Mesh上創(chuàng)建生成樹,每個(gè)生成樹以在Mesh上對(duì)應(yīng)的源節(jié)點(diǎn)為根節(jié)點(diǎn)。
HLA通過采用LBTS算法來實(shí)現(xiàn)聯(lián)邦成員的時(shí)空一致性,保證了仿真邏輯的正確性,但犧牲了仿真的實(shí)時(shí)性。因?yàn)樵趯?shí)現(xiàn)LBTS算法時(shí),只能采用集中式的星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),由服務(wù)端來管理各成員間仿真時(shí)間的傳輸及HLA其他服務(wù)的訂閱和發(fā)布處理,同時(shí)由各聯(lián)邦成員端的RTI庫組件來管理本地的時(shí)間推進(jìn)以及對(duì)帶時(shí)戳事件的處理。顯然,這種RTI庫組件間彼此不通信的星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)增加了通信量,同時(shí)降低了成員間的信息交換速度。為此引入了CSCW的終端組播方式,而CSCW所面對(duì)的上述協(xié)調(diào)問題可由HLA的時(shí)間管理來解決,培訓(xùn)仿真中所用的CSCW組播通信僅完成HLA的非受控受限的消息收發(fā),擴(kuò)展的RTI的通信方式如圖2所示。
其中方框代表RTI的服務(wù)進(jìn)程,圓圈代表被聯(lián)邦成員所調(diào)用的libRTI線程。圖中左側(cè)星型拓?fù)浔A鬑LA/RTI所有六大類服務(wù)的功能,而右圖中新增的四個(gè)聯(lián)邦成員間的網(wǎng)狀通信拓?fù)?Mesh)實(shí)現(xiàn)了CSCW的終端組播功能,用于聯(lián)邦成員間交互彼此的三維繪圖信息,這些繪圖數(shù)據(jù)不影響仿真事件的時(shí)空一致性,只是達(dá)到協(xié)同仿真系統(tǒng)視覺上的“你見即我見”,用來提高虛擬現(xiàn)實(shí)環(huán)境下的沉浸式逼真度。
圖2 終端組播擴(kuò)展RTI的通信架構(gòu)
與文獻(xiàn)[3-4]一樣,對(duì)開源CERTI作修改,需要利用RTI所支持的HLA服務(wù)來擴(kuò)展libRTI線程,使其增添CSCW的終端組播功能。在CERTI的libRTI庫中包含RTI成員大使和RTI回調(diào)大使兩類接口,應(yīng)用程序主動(dòng)調(diào)用RTI成員大使接口,同時(shí)在RTI回調(diào)大使接口中定義自己的函數(shù)功能。這些RTI回調(diào)大使接口或是通過應(yīng)用程序主動(dòng)調(diào)用RTI成員大使接口tick來查詢并執(zhí)行,或是通過響應(yīng)libRTI線程發(fā)來的消息執(zhí)行。當(dāng)然,在tick接口實(shí)現(xiàn)中包含了時(shí)間管理的實(shí)現(xiàn),即通過LBTS算法來獲取滿足時(shí)空一致性的回調(diào)事件并執(zhí)行相應(yīng)的回調(diào)接口。對(duì)于文中關(guān)注的實(shí)時(shí)數(shù)據(jù)的傳輸,則通過響應(yīng)libRTI線程發(fā)來的消息來執(zhí)行。
首先是建立動(dòng)態(tài)的終端組播網(wǎng),包括成員組播鏈路的建立和刪除,可通過RTI的聲明管理和對(duì)象管理的訂閱和發(fā)布功能來實(shí)現(xiàn)。當(dāng)聯(lián)邦成員加入聯(lián)邦運(yùn)行后,聲明訂閱和發(fā)布cosimNetCard對(duì)象類,它包含cardIP和cardPort兩個(gè)屬性,即在FOM中添加(Class cosimNetCard(Attribute cardIP reliable timestamp) (Attribute cardPort reliable timestamp))。之后每個(gè)聯(lián)邦成員調(diào)用registerObjectInstance接口,其參數(shù)除了cosimNetCard對(duì)象類句柄外,第二個(gè)對(duì)象名參數(shù)采用“FedName:cardIP:cardPort”這一字符串,串中的FedName是該成員名字,cardIP是該成員所在機(jī)器的網(wǎng)絡(luò)IP地址,cardPort是該成員libRTI線程監(jiān)測實(shí)時(shí)數(shù)據(jù)通信所用的網(wǎng)絡(luò)端口。
每個(gè)聯(lián)邦成員在RTI的發(fā)現(xiàn)對(duì)象回調(diào)接口中判斷該對(duì)象的對(duì)象類是否是cosimNetHandle,若是則解析回調(diào)參數(shù)中的“FedName:cardIP:cardPort”這一字符串,從而獲得某聯(lián)邦成員監(jiān)測實(shí)時(shí)數(shù)據(jù)通信所用的網(wǎng)絡(luò)地址和端口,并用此網(wǎng)絡(luò)地址和端口向該成員發(fā)起連接,在獲得linkID后將[FedName,cardIP,cardPort,linkID]四元組加入本地的隊(duì)列中(逐步形成Mesh連通圖),并以linkID作為關(guān)鍵字來查找對(duì)應(yīng)的四元組,也可以用聯(lián)邦成員名來查找對(duì)應(yīng)的linkID。當(dāng)成員FedName調(diào)用DeleteObjectInstance時(shí),其第一個(gè)參數(shù)采用上述的“FedName:cardIP:cardPort”字符串,各聯(lián)邦成員在回調(diào)接口中通過FedName可消除隊(duì)列中對(duì)應(yīng)的四元組。
每個(gè)聯(lián)邦成員要發(fā)送實(shí)時(shí)數(shù)據(jù)時(shí),先將數(shù)據(jù)打包后依次發(fā)給四元組隊(duì)列中的各linkID(也可根據(jù)應(yīng)用需要來過濾出實(shí)際的接收者,形成一棵Mesh生成樹)。將libRTI線程的網(wǎng)絡(luò)監(jiān)聽進(jìn)行擴(kuò)展,除了監(jiān)聽來自RTI服務(wù)端的網(wǎng)絡(luò)事件和來自本地RTI聯(lián)邦大使端的接口調(diào)用事件外,還監(jiān)聽實(shí)時(shí)數(shù)據(jù)通信所用的網(wǎng)絡(luò)端口,如圖3所示。當(dāng)監(jiān)聽到實(shí)時(shí)通信數(shù)據(jù)后,libRTI線程向顯示窗口發(fā)Windows消息,通知顯示窗口接收消息并更新顯示畫面。
圖3 終端組播擴(kuò)展RTI組件的通信通道
聯(lián)邦成員間建立了網(wǎng)狀的通訊鏈路,但每個(gè)聯(lián)邦成員要發(fā)送實(shí)時(shí)數(shù)據(jù)時(shí),會(huì)根據(jù)應(yīng)用的要求來構(gòu)建實(shí)時(shí)的終端組播隊(duì)列,將與滿足條件的成員的連接加入到自身實(shí)時(shí)的終端組播隊(duì)列中(Mesh生成樹),從而對(duì)發(fā)送數(shù)據(jù)過濾,減少了通訊量并提高了執(zhí)行效率。
基于虛擬現(xiàn)實(shí)技術(shù)的交互培訓(xùn)包括立體投影、立體弧幕、圖像虛擬現(xiàn)實(shí)頭盔、動(dòng)作捕捉器、仿真工作站和網(wǎng)絡(luò)交換機(jī),采用虛擬現(xiàn)實(shí)頭盔和立體弧幕投影兩種沉浸式立體顯示技術(shù),具體的硬件結(jié)構(gòu)如圖4所示。
仿真工作站用來供教員進(jìn)行虛擬操作,并將視頻信號(hào)傳送到融合機(jī)并通過6臺(tái)投影輸出到大型弧幕上。主工作站通過數(shù)據(jù)線連接動(dòng)作捕捉器,實(shí)時(shí)獲取人體的動(dòng)作捕捉數(shù)據(jù)并驅(qū)動(dòng)虛擬人與虛擬場景的設(shè)備實(shí)現(xiàn)交互操作。學(xué)員工作站可以通過佩戴3D眼鏡的方式,沉浸式地體驗(yàn)變電站一二次設(shè)備的正常、異常、事故狀態(tài)及其動(dòng)作過程,進(jìn)行變電站設(shè)備虛擬巡視、檢查、漫游、操作及事故案例處理過程。其中,動(dòng)作捕捉器(Kinect)實(shí)時(shí)獲取用戶運(yùn)動(dòng)關(guān)鍵位置的空間坐標(biāo)和運(yùn)動(dòng)姿態(tài)數(shù)據(jù),并實(shí)時(shí)將數(shù)據(jù)傳送給網(wǎng)絡(luò)中的工作站,以更新虛擬人物角色相應(yīng)的關(guān)節(jié)旋轉(zhuǎn)角度,從而實(shí)現(xiàn)虛擬人物的控制和場景交互操作;虛擬頭盔(VR)配套了位置跟蹤器,通過實(shí)時(shí)追蹤頭盔上的位置感應(yīng)點(diǎn),實(shí)時(shí)獲取頭盔的空間位置和方位并傳送給網(wǎng)絡(luò)中的工作站,來實(shí)時(shí)更新頭盔內(nèi)顯示的三維影像和大型弧幕上的仿真場景。
圖4 實(shí)驗(yàn)的硬件系統(tǒng)結(jié)構(gòu)
該實(shí)驗(yàn)支持多人分別以監(jiān)護(hù)員、操作員、負(fù)責(zé)人的角色交互,完全按照變電站實(shí)際運(yùn)行的工作流程,協(xié)同完成一個(gè)任務(wù)。多個(gè)受訓(xùn)人員可分別以不同角色登錄進(jìn)入培訓(xùn)場景,以團(tuán)隊(duì)協(xié)作的方式共同完成一個(gè)多人參與的作業(yè)任務(wù)。在協(xié)同作業(yè)過程中,學(xué)員按照各自的角色、任務(wù)分工在仿真系統(tǒng)上進(jìn)行仿真實(shí)操,用戶之間采用文字、語音等通信方式進(jìn)行溝通交流。各學(xué)員都在四核CPU的工作站上培訓(xùn),以下三組學(xué)員在同時(shí)完成不同的任務(wù),得到如圖5所示的多人協(xié)同仿真顯示效果。
在學(xué)員操作時(shí),包括大電網(wǎng)仿真程序在內(nèi)的所有聯(lián)邦成員依舊按固定的仿真步長協(xié)同推進(jìn),采用的推進(jìn)策略是既受限又受控;同時(shí)學(xué)員聯(lián)邦成員和教員聯(lián)邦成員在時(shí)刻監(jiān)聽libRTI線程利用Windows消息機(jī)制發(fā)來的運(yùn)動(dòng)和操作消息,并負(fù)責(zé)在顯示線程中更新畫面的顯示。
在基于HLA/RTI的分布交互仿真應(yīng)用中引入虛擬現(xiàn)實(shí)技術(shù)可增加仿真的可視化效果,但隨著用戶體驗(yàn)的逼真度要求越來越高,對(duì)RTI網(wǎng)絡(luò)傳輸?shù)膶?shí)時(shí)性提出了更高要求。故須將傳輸數(shù)據(jù)分為支持虛擬場景
圖5 基于擴(kuò)展RTI的變電設(shè)備運(yùn)維仿真培訓(xùn)
構(gòu)建的場景交互數(shù)據(jù)和支持仿真時(shí)空一致性的數(shù)據(jù),對(duì)于后者采用原有RTI的六大類服務(wù)來支撐;而交換場景數(shù)據(jù)的最佳方案是在聯(lián)邦成員間直接傳輸。文中通過在開源CERTI的聯(lián)邦成員組件libRTI中引入CSCW的終端組播機(jī)制,實(shí)現(xiàn)了變電站培訓(xùn)員間運(yùn)動(dòng)和操作數(shù)據(jù)的直接傳輸,達(dá)到了場景數(shù)據(jù)交互的實(shí)時(shí)要求。從最近兩年針對(duì)大電網(wǎng)運(yùn)行的仿真培訓(xùn)應(yīng)用來看,該技術(shù)使仿真培訓(xùn)中的每個(gè)學(xué)員獲得了滿意的沉浸感。
參考文獻(xiàn):
[1] 梁彥剛,高曉升,張 翼,等.基于HLA的分布式仿真框架自動(dòng)生成技術(shù)[J].計(jì)算機(jī)工程與科學(xué),2014,36(1):34-38.
[2] 張 濤,史璐莎,張 斌,等.一種快速擴(kuò)展HLA/RTI Web服務(wù)的方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(12):49-52.
[3] 王傳魁,董云峰,鄧武東,等.衛(wèi)星編隊(duì)構(gòu)型設(shè)計(jì)可視化系統(tǒng)[J].系統(tǒng)仿真學(xué)報(bào),2012,24(7):1428-1433.
[4] 張智慧,李伯虎,柴旭東,等.一種面向共享內(nèi)存環(huán)境的高性能HLA/RTI原型系統(tǒng)[J].系統(tǒng)仿真學(xué)報(bào),2014,26(2):315-322.
[5] 朱衛(wèi)國,梁洪波,姚益平.面向裝備體系對(duì)抗仿真的RTI關(guān)鍵技術(shù)研究[J].計(jì)算機(jī)仿真,2014,31(2):18-21.
[6] 邢 馳,李伯虎.Infiniband網(wǎng)絡(luò)架構(gòu)下RTI通信機(jī)制研究[J].電子學(xué)報(bào),2016,44(2):327-333.
[7] 嚴(yán) 琳.基于HLA分布式實(shí)時(shí)仿真系統(tǒng)中軟總線設(shè)計(jì)[J].電子科技,2015,28(6):91-94.
[8] 李蔚清,吳慧中,林昌年.變電站仿真培訓(xùn)系統(tǒng)虛擬環(huán)境的研究與實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2006,18:123-126.
[9] 楊選懷,林昌年,王國平,等.基于高層體系結(jié)構(gòu)的電力系統(tǒng)綜合仿真平臺(tái)[J].電網(wǎng)技術(shù),2009,33(11):98-103.
[10] PENICHET V M R,MARIN I,GALLUD J A,et al.A classification method for CSCW systems[J].Electronic Notes in Theoretical Computer Science,2007,168:237-247.
[11] ZHAO Jianmin, LONG Xiaochun. A modified model for flexible workflow access control[C]//4th international symposium on computational intelligence and design.Hangzhou,China:IEEE,2011:279-281.
[12] ELMARZOUQI N,GARCIA E.ACCM:a new architecture model for CSCW[C]//Proceedings of the 2007 11th international conference on computer supported cooperative work in design.[s.l.]:[s.n.],2007:84-91.
[13] CONVERTINO G, BILLMAN D, PIROLLIP, et al.The CACHE study:group effects in computer-supported collaborative analysis[J].Computer Supported Cooperative Work,2008,17(4):353-393.
[14] 毛彩輝,于忠黨.CSCW系統(tǒng)中的并發(fā)控制策略研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007,16(3):122-125.
[15] KHAN S M,SULAIMAN M,TAHIR A M.Domain-based classification of CSCW systems[J].Research Journal of Applied Sciences,Engineering and Technology,2011,3(11):1315-1319.