喬 輝,張玉平,林 靜
(1.西南交通大學(xué) 智能控制與仿真工程中心,成都 610031;2.成都工業(yè)學(xué)院 通信工程系,成都 610031;3.成都運(yùn)達(dá)科技股份有限公司 仿真事業(yè)部,成都 610031)
長(zhǎng)期以來,我國(guó)鐵路救援起重機(jī)駕駛?cè)藛T的培訓(xùn)是通過書本學(xué)習(xí)和在演練線上實(shí)際操作的方式進(jìn)行。由于演練線的地形地貌、起吊對(duì)象通常固定不變,很難根據(jù)不同情況進(jìn)行有針對(duì)性的預(yù)案訓(xùn)練,實(shí)際救援過程中經(jīng)常會(huì)出現(xiàn)駕駛?cè)藛T緊張慌亂、不知所措,甚至引發(fā)救援事故的局面。利用起重機(jī)駕駛模擬器培訓(xùn)駕駛?cè)藛T不會(huì)受到地形、起吊對(duì)象等條件的限制,是國(guó)際公認(rèn)的高效、節(jié)能、安全的培訓(xùn)方式。近年來,國(guó)內(nèi)外在起重機(jī)仿真培訓(xùn)技術(shù)方面做了很多基礎(chǔ)性的研究,并成功開發(fā)了一些起重機(jī)模擬駕駛訓(xùn)練系統(tǒng),但主要集中在較為通用的港口起重機(jī)方面[1]。關(guān)于鐵路救援起重機(jī)駕駛模擬器的研究鮮有報(bào)道。本文采用現(xiàn)代計(jì)算機(jī)仿真技術(shù),根據(jù)實(shí)際項(xiàng)目需求對(duì)鐵路救援起重機(jī)模擬器視景仿真系統(tǒng)的功能需求進(jìn)行分析,采用模塊化的方式設(shè)計(jì)視景仿真系統(tǒng)的結(jié)構(gòu),針對(duì)鐵路救援起重機(jī)渲染模型、碰撞模型、物理模型和三維虛擬場(chǎng)景構(gòu)建及重點(diǎn)功能模塊的設(shè)計(jì)等系統(tǒng)開發(fā)中的一些關(guān)鍵技術(shù)進(jìn)行研究,所開發(fā)的鐵路救援起重機(jī)模擬器系統(tǒng)將提高我國(guó)鐵路作業(yè)人員培訓(xùn)效率,改善培訓(xùn)效果,加快鐵路事故處理速度。
救援起重機(jī)模擬器視景仿真系統(tǒng)的主要作用是提供一個(gè)虛擬救援工作環(huán)境,逼真地再現(xiàn)救援工作過程中起重機(jī)駕駛員和救援指揮人員看到的情況,并通過顯示系統(tǒng)與駕駛員和指揮員實(shí)時(shí)互動(dòng),使他們產(chǎn)生身臨其境的感覺。根據(jù)仿真培訓(xùn)系統(tǒng)的要求,視景系統(tǒng)的具體功能如下:
1)建立一個(gè)逼真的虛擬環(huán)境,包括自然環(huán)境(天空、植被等)、工作環(huán)境(故障列車、鐵軌、障礙物、周圍建筑等)和救援起重機(jī)實(shí)體模型;2)在控制救援起重機(jī)的運(yùn)動(dòng)過程中,能夠達(dá)到人機(jī)互動(dòng),并通過顯示終端實(shí)時(shí)顯示救援起重機(jī)的各種運(yùn)動(dòng)狀態(tài);3)能夠真實(shí)地模擬救援工作過程中起重機(jī)的運(yùn)動(dòng)狀態(tài),實(shí)現(xiàn)起重臂伸縮、吊繩擺動(dòng)、吊索斷裂、負(fù)載碰撞反彈等起重機(jī)工作過程中常見現(xiàn)象的真實(shí)可視化模擬;4)網(wǎng)絡(luò)通訊接口,與其他系統(tǒng)進(jìn)行實(shí)時(shí)數(shù)據(jù)傳輸。
從本質(zhì)上講,視景仿真系統(tǒng)的任務(wù)主要是對(duì)系統(tǒng)資源的管理,是圍繞著各類系統(tǒng)資源進(jìn)行的,因此,視景仿真系統(tǒng)應(yīng)該完成視景仿真系統(tǒng)資源的管理和視景仿真事務(wù)的處理。由于系統(tǒng)開發(fā)平臺(tái)具有強(qiáng)大的多相機(jī)渲染功能,因此,前向視景系統(tǒng)和指揮員視景系統(tǒng)可共用一個(gè)系統(tǒng),只需要通過多相機(jī)技術(shù)分別在不同的終端顯示即可。根據(jù)視景系統(tǒng)的功能需求,筆者將系統(tǒng)分成起重機(jī)控制模塊、指揮員控制模塊、動(dòng)畫模塊、聲音模塊、網(wǎng)絡(luò)通訊模塊和資源管理模塊6部分,如圖1所示。
圖1 視景仿真系統(tǒng)結(jié)構(gòu)圖
圖2 視景仿真系統(tǒng)開發(fā)方案流程圖
根據(jù)救援起重機(jī)模擬器視景仿真系統(tǒng)功能和結(jié)構(gòu),確定了如圖2所示的視景仿真系統(tǒng)開發(fā)方案流程。具體開發(fā)過程為:通過3D MAX建模軟件進(jìn)行實(shí)體建模;根據(jù)鐵路救援起重機(jī)結(jié)構(gòu)和機(jī)構(gòu)分析,構(gòu)建起重機(jī)渲染模型、碰撞模型和物理模型,建立虛擬救援工作環(huán)境;基于VS2010設(shè)計(jì)系統(tǒng)腳本程序,構(gòu)建系統(tǒng)各個(gè)功能模塊,最終完成了視景仿真系統(tǒng)的實(shí)現(xiàn),并配合主控系統(tǒng)、接口系統(tǒng)實(shí)現(xiàn)救援工作過程可視化模擬。
首先,我們根據(jù)鐵路救援起重機(jī)各個(gè)結(jié)構(gòu)部件的實(shí)際尺寸,利用3D MAX建模軟件建立起重機(jī)幾何模型。然后,給模型附上材質(zhì)和紋理,并采取去除冗余面等方法對(duì)模型進(jìn)行優(yōu)化,最終完成了鐵路救援起重機(jī)的實(shí)體模型的構(gòu)建。構(gòu)建好的起重機(jī)實(shí)體模型如圖3所示。
采取同樣的方法,可以構(gòu)建故障列車、鐵軌、電線桿、建筑物等其他物體的實(shí)體模型。
圖3 鐵路救援起重機(jī)實(shí)體模型圖
通過對(duì)救援起重機(jī)結(jié)構(gòu)和機(jī)構(gòu)進(jìn)行分析[2],建立如圖4所示的鐵路救援起重機(jī)的樹狀層次結(jié)構(gòu)來組織救援起重機(jī)的結(jié)構(gòu)和機(jī)構(gòu)要完成的動(dòng)作[3-4]。
1)幾何渲染模型:將3D MAX建好的起重機(jī)實(shí)體模型導(dǎo)入場(chǎng)景編輯器,按照?qǐng)D4所示的起重機(jī)樹狀層次模型結(jié)構(gòu)對(duì)模型進(jìn)行重新組織即可完成渲染模型的構(gòu)建。
2)碰撞模型:根據(jù)起重機(jī)樹狀層次模型結(jié)構(gòu),利用各種簡(jiǎn)單的碰撞幾何體如長(zhǎng)方體、球、圓柱體等拼接組成了起重機(jī)外形輪廓,大大簡(jiǎn)化了模型復(fù)雜度,既實(shí)現(xiàn)了有效的碰撞檢測(cè)功能,又降低了系統(tǒng)碰撞檢測(cè)運(yùn)算負(fù)擔(dān)。構(gòu)建好的起重機(jī)碰撞模型如圖5所示。
3)物理模型:對(duì)于救援起重機(jī)物理模型的構(gòu)建,筆者將整個(gè)救援起重機(jī)的物理模型分為如圖6所示的操作模型和吊裝模型2部分[5]。
圖4 鐵路救援起重機(jī)的樹狀層次模型
圖5 碰撞模型
圖6 物理模型示意圖
其中對(duì)于操作模型的構(gòu)建采用前向閉環(huán)運(yùn)動(dòng)學(xué)的方法,根據(jù)起重機(jī)樹狀層次模型結(jié)構(gòu),將起重機(jī)運(yùn)動(dòng)機(jī)構(gòu)部分設(shè)置成剛體,并將剛體設(shè)置成“運(yùn)動(dòng)的”(Kinematic)即可完成操作模型的構(gòu)建。
而對(duì)于吊裝模型的構(gòu)建,采用基于約束的剛體動(dòng)力學(xué)的方法,利用集中元模型[6]模擬柔性吊索,即將一系列剛體通過約束連接成剛體鏈,并設(shè)置合適的約束限制來模擬吊索的拉伸、彎曲、扭轉(zhuǎn)等物理材質(zhì)特性。
在傳統(tǒng)視景仿真系統(tǒng)中,三維場(chǎng)景模塊都是根據(jù)項(xiàng)目需求編寫代碼實(shí)現(xiàn)的,當(dāng)需求發(fā)生改變時(shí),必須重寫代碼,因而造成視景仿真開發(fā)周期長(zhǎng),工作量大。
本文中救援工作場(chǎng)景的構(gòu)建采用項(xiàng)目開發(fā)平臺(tái)提供的場(chǎng)景編輯器來完成,具體構(gòu)建過程為:在場(chǎng)景編輯器中建立并編輯場(chǎng)景地形和天空,然后導(dǎo)入已建好的各種模型資源,如救援起重機(jī)、故障列車、鐵軌、電線桿、建筑物等,開發(fā)平臺(tái)將這些資源作為物體或?qū)傩晕矬w,根據(jù)不同項(xiàng)目的實(shí)際需要,最終合成所需要的虛擬救援工作場(chǎng)景。
開發(fā)平臺(tái)將模型資源及相關(guān)仿真數(shù)據(jù)等三維虛擬救援工作場(chǎng)景模塊的信息保存成單獨(dú)的外部文件,實(shí)現(xiàn)與軟件仿真平臺(tái)的分離,這樣就能實(shí)現(xiàn)三維場(chǎng)景在不同項(xiàng)目中重用,加快軟件開發(fā)速度。
由于在本文開發(fā)平臺(tái)采用基于腳本的方式對(duì)模型進(jìn)行驅(qū)動(dòng)控制,沒有傳統(tǒng)視景仿真驅(qū)動(dòng)程序中的主程序概念,因此本系統(tǒng)中各種功能模塊的實(shí)現(xiàn)都是通過編寫各種腳本實(shí)現(xiàn)的。下面重點(diǎn)對(duì)網(wǎng)絡(luò)通訊模塊和起重機(jī)控制模塊進(jìn)行介紹。
1)網(wǎng)絡(luò)通訊模塊框架利用MVC設(shè)計(jì)模式[7]進(jìn)行構(gòu)建,采用UDP網(wǎng)絡(luò)通信協(xié)議來實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。首先設(shè)計(jì)一個(gè)腳本(應(yīng)用層)對(duì)MVC三層架構(gòu)進(jìn)行管理并建立網(wǎng)絡(luò)數(shù)據(jù)收發(fā)主循環(huán)。Model層以網(wǎng)絡(luò)引擎服務(wù)器端動(dòng)態(tài)庫(kù)和基于觀察者設(shè)計(jì)模式封裝的網(wǎng)絡(luò)引擎網(wǎng)絡(luò)底層動(dòng)態(tài)庫(kù)為基礎(chǔ)來實(shí)現(xiàn),主要負(fù)責(zé)網(wǎng)絡(luò)底層的管理;View層是與視景仿真系統(tǒng)場(chǎng)景相關(guān)的,主要負(fù)責(zé)視景系統(tǒng)腳本的管理和視景仿真系統(tǒng)界面的一些顯示;Control層是整個(gè)網(wǎng)絡(luò)模塊的中轉(zhuǎn)站,主要負(fù)責(zé)觀察者的注冊(cè)、網(wǎng)絡(luò)底層函數(shù)的封裝、通知View層數(shù)據(jù)進(jìn)行更新。
圖7 救援開始
圖8 正常救援過程
圖9 吊索斷裂故障
圖10 救援結(jié)束
2)視景仿真模塊作為本系統(tǒng)的主要模塊,主要負(fù)責(zé)控制司機(jī)視角的變化和對(duì)起重機(jī)的各種操作,其中包括:司機(jī)視角相機(jī)相對(duì)于起重機(jī)運(yùn)動(dòng)狀態(tài)的跟隨控制;起重機(jī)各種操作控制,如上車部分的360°水平回轉(zhuǎn),限制角度范圍內(nèi)(30°)的擺動(dòng),吊臂的變幅和二節(jié)臂、三節(jié)臂的伸縮,吊索的上升、下降,負(fù)載的綁定、卸載,以及配重的水平伸縮、上下移動(dòng)和支腿的旋轉(zhuǎn)等。
采用同樣的方式,筆者構(gòu)建了系統(tǒng)的指揮員控制模塊、動(dòng)畫模塊、聲音模塊和資源管理模塊,完成了系統(tǒng)的實(shí)現(xiàn)。
利用本文實(shí)現(xiàn)的視景仿真系統(tǒng),同時(shí)結(jié)合主控系統(tǒng)和接口系統(tǒng),筆者完成了鐵路救援起重機(jī)模擬器原型概念機(jī)的研制,并成功實(shí)現(xiàn)了救援起重機(jī)工作過程的模擬。截取了救援工作過程中視景仿真系統(tǒng)部分畫面,如圖 7、8、9、10 所示。
本文根據(jù)鐵路救援起重機(jī)的結(jié)構(gòu)和機(jī)構(gòu)特點(diǎn),建立了救援起重機(jī)的實(shí)體模型、渲染模型、碰撞模型和物理模型,構(gòu)建了虛擬救援工作環(huán)境;基于VS2010編寫了各種系統(tǒng)腳本程序,完成了系統(tǒng)各個(gè)功能模塊的設(shè)計(jì)和實(shí)現(xiàn),成功地開發(fā)了一套鐵路救援起重機(jī)模擬器視景仿真系統(tǒng);結(jié)合主控系統(tǒng)、接口系統(tǒng)完成了鐵路救援起重機(jī)模擬器原型概念機(jī)的研制,并利用該系統(tǒng)實(shí)現(xiàn)了救援工作過程可視化模擬。仿真結(jié)果表明開發(fā)的系統(tǒng)具有較高的逼真度,能夠滿足救援起重機(jī)模擬器視景仿真系統(tǒng)的要求。
[1]劉晉川,張華勤,洪衫.港機(jī)操作模擬器的應(yīng)用與發(fā)展[J].港口裝卸,2005(2):8-11.
[2] HUANG J Y,GAU C Y.Modelling and designing a low-cost high-fidelity mobile crane simulator[J].International Journal of Human-Computer Studies,2003,58(2):151-176.
[3]張靖.虛擬現(xiàn)實(shí)技術(shù)在吊裝仿真與方案制定中的應(yīng)用[D].大連:大連理工大學(xué),2009.
[4]王波興,馮茂盛.基于物理引擎的汽車起重機(jī)實(shí)時(shí)仿真[J].計(jì)算機(jī)工程與設(shè)計(jì),2011(5):32-39.
[5] HUNG L C,KANG S C.A physics-based simulation approach for cooperative erection activities[J].Automation in Construction,2010(19):750-761.
[6] SERVIN M,LACOURSIERE C.Rigid Body Cable for Virtual Environments[J].IEEE Transactions on Visualization and Computer Graphics,2008(14):783-796.
[7]FREEMAN E.Head First設(shè)計(jì)模式[M].北京:中國(guó)電力出版社,2008.