商 蕾, 王 冰, 楊志勇, 何業(yè)蘭
(1. 武漢理工大學(xué) a. 能源與動力工程學(xué)院; b. 武漢理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 武漢 430063;2. 國家水運安全工程技術(shù)研究中心, 武漢 430063)
船舶輔機是船舶輪機系統(tǒng)的重要組成部分,船舶輔機復(fù)雜多樣,不僅理論知識的學(xué)習(xí)具有一定的難度,拆裝更是需要花費較多的時間和精力。目前,“船舶輔機拆裝”課程是航海類院校的必修課,也是海事局規(guī)定的船員適任證書的評估科目。在傳統(tǒng)的教學(xué)過程中,對于輔機設(shè)備的實操訓(xùn)練集中在拆裝實驗室。在學(xué)生基數(shù)大及實驗設(shè)備少的現(xiàn)狀下,學(xué)生很難獲得足夠的訓(xùn)練時間,實際動手能力亟待提高。
本文運用增強現(xiàn)實技術(shù),開發(fā)一套基于HoloLens的船舶輔機拆裝系統(tǒng),除了為學(xué)生提供不限時長、高沉浸感及輕便的交互式虛擬拆裝訓(xùn)練場景外,還為他們創(chuàng)建一個虛實結(jié)合和多人協(xié)同的操作訓(xùn)練環(huán)境。本文從系統(tǒng)框架功能設(shè)計、模型搭建優(yōu)化、人機交互和多人協(xié)同等方面詳細闡述。
基于HoloLens增強現(xiàn)實技術(shù),船舶輔機拆裝系統(tǒng)在使用過程中,不需要電腦、冗雜的數(shù)據(jù)線、手柄和鼠標(biāo)等外圍設(shè)備,用戶只需佩戴HoloLens眼鏡結(jié)合手勢就可實現(xiàn)所有的操作。用戶進入系統(tǒng)后,先選擇輔機設(shè)備,再選擇學(xué)習(xí)模式和訓(xùn)練模式進行試驗學(xué)習(xí)[1]。
1) 學(xué)習(xí)模式利用三維仿真等手段,展示各個船舶輔機設(shè)備的工作原理及拆裝結(jié)構(gòu)。
2) 訓(xùn)練模式則會模擬真實的拆裝環(huán)境,根據(jù)用戶選擇的輔機設(shè)備加載對應(yīng)的虛擬模型和工具,用戶可進行拆裝練習(xí)。系統(tǒng)會自動檢測用戶的每一步操作,判斷操作的正確性,當(dāng)出現(xiàn)操作錯誤時,系統(tǒng)會根據(jù)要求提示正確操作的流程,系統(tǒng)功能見圖1。
基于HoloLens增強現(xiàn)實技術(shù)的船舶輔機拆裝系統(tǒng)技術(shù)框架見圖2,其中增強現(xiàn)實平臺是系統(tǒng)的核心。系統(tǒng)通過HoloLens采集真實環(huán)境中的信息和多個用戶交互信息后,進行同步空間掃描定位,將交互信息與數(shù)據(jù)庫信息進行匹配,然后通過多人協(xié)同在多個HoloLens設(shè)備上進行增強現(xiàn)實顯示[2]。
模型搭建是系統(tǒng)開發(fā)的必要環(huán)節(jié),是組成數(shù)據(jù)庫的重要內(nèi)容,也是實現(xiàn)虛擬拆裝的基石,采用3ds Max三維建模軟件進行模型搭建。由于本系統(tǒng)虛擬拆裝是在HoloLens增強現(xiàn)實環(huán)境下進行的,考慮到實際虛擬拆裝過程中要進行模型移動和旋轉(zhuǎn)等操作,所以搭建的三維模型不僅要在外形上追求真實,還要盡可能地減少其內(nèi)部面數(shù)和優(yōu)化其結(jié)構(gòu)。這樣才不會使HoloLens的內(nèi)存和GPU由于模型太復(fù)雜而過度消耗,影響人機交互的實時性和系統(tǒng)運行的穩(wěn)定性。
本系統(tǒng)在模型搭建方面主要研究并解決模型表面紋理及材質(zhì)的優(yōu)化和拆裝過程建模2個主要問題。
系統(tǒng)中船舶輔機虛擬模型是按照真實環(huán)境下的輔機設(shè)備尺寸及比例搭建的。由于船舶輔機設(shè)備的數(shù)量和種類繁多,設(shè)備表面也復(fù)雜多樣,為使輔機模型表面材質(zhì)和紋理都要盡可能地還原真實船舶輔機設(shè)備。本系統(tǒng)在給模型添加材質(zhì)時采用UV展開操作的方式,將虛擬模型表面展開成一個完整平面,根據(jù)虛擬模型表面的形狀紋理對平面進行繪制。采用這種方法可通過一張帶有紋理的UV貼圖就能呈現(xiàn)出整個船舶輔機虛擬模型表面的紋理效果;同時,有些設(shè)備表面有一些標(biāo)志性的結(jié)構(gòu)或不參與交互部件,可在其表面添加帶有法向通道的凹凸貼圖來呈現(xiàn),這樣便可減少虛擬模型面數(shù),降低GPU的消耗,提高系統(tǒng)運行的實時性和穩(wěn)定性。一船用泵模型的UV展開圖見圖3,結(jié)果證明采用此方法優(yōu)化的模型,很大程度減少了系統(tǒng)內(nèi)存占有量。
場景的光影效果需要多組燈光組件進行光照計算和實時渲染,實時計算和渲染將耗費大量HoloLens GPU性能。所以,在模型布光后,進行光照烘焙,將生成的光照烘焙貼圖直接應(yīng)用于船舶輔機靜態(tài)設(shè)備模型上,這樣在使用系統(tǒng)時就不必進行實時光照計算,大大節(jié)省GPU性能。
船舶輔機設(shè)備復(fù)雜多樣,為確保拆裝系統(tǒng)與真實環(huán)境中保持一致,除了要搭建虛擬船舶輔機整體模型,還需對拆裝過程進行過程建模。如果拆裝過程沒有優(yōu)化,或者過程繁瑣、復(fù)雜,就會導(dǎo)致在實際虛擬拆裝過程中出現(xiàn)層次混亂,拆裝邏輯不符合要求的問題。因此,過程建模是本系統(tǒng)研究的核心之一,是實現(xiàn)拆裝操作可視化、拆裝邏輯合理的重要依據(jù)。
為滿足真實船舶輔機拆裝邏輯要求,拆裝過程建模采用層次型模型與關(guān)系型模型相結(jié)合的方式,該方式既能保證船舶輔機虛擬設(shè)備零部件層次結(jié)構(gòu)清晰,又能以節(jié)點方式連接各個部件之間父子等級關(guān)系,便于管理和調(diào)用[3]。
根據(jù)交通運輸部海事局規(guī)定的船舶輔機拆裝評估的考試特點,拆裝過程包含:
1) 工具選擇。拆裝過程中使用的工具必須符合規(guī)范要求。
2) 拆裝順序。拆裝過程應(yīng)嚴格按照設(shè)備說明書中的要求進行拆裝,父子等級關(guān)系明確,各部分的拆裝邏輯符合要求。
3) 拆裝動作。比如拆裝船舶油馬達的時候,配流軸、端蓋和內(nèi)部活塞都有各自嚴格的拆裝軌跡。
以拆裝多作用內(nèi)曲線柱塞油馬達為例,對拆裝層次/關(guān)系模型方法的樹狀結(jié)構(gòu)進行說明見圖4。樹狀結(jié)構(gòu)的根節(jié)點為進行拆裝的船舶輔機設(shè)備。
葉子節(jié)點上下父子等級關(guān)系的細化程度要根據(jù)交通運輸部海事局對船舶輔機拆裝評估的要求來劃分,其遵循的規(guī)則有
1) 為每一個節(jié)點的零部件匹配到專用拆裝工具。
2) 為每一個節(jié)點的零部件進行順序編號,如多個節(jié)點的拆裝不分先后順序,則統(tǒng)一編號。
3) 為父子等級關(guān)系制定好邏輯腳本,確定好拆裝先后及順序。
4) 為每個節(jié)點部件的拆裝軌跡設(shè)定好關(guān)鍵幀動畫,使每一個部件的拆裝路徑都符合要求。
人機交互是系統(tǒng)增強現(xiàn)實應(yīng)用的核心技術(shù)。本系統(tǒng)的人機交互的研究與實現(xiàn)主要分為虛擬模型的選取和交互手勢的實現(xiàn)兩個部分。
本系統(tǒng)采用射線碰撞檢測的方式實現(xiàn)虛擬模型的選取。射線碰撞原理見圖5。系統(tǒng)通過HoloLens向用戶眼睛凝視方向發(fā)射一條射線與虛擬三維模型零部件之間進行碰撞檢測。射線與泵的某個虛擬部件交點為P。射線與前后剪切面相交于P1(X1,Y1,Z1)和P2(X2,Y2,Z2)點,通過P1點與P2點的坐標(biāo)及連線可確定P點的信息。
已知射線上每一個點的坐標(biāo)都可用該射線單位向量E與模M表示,則P點坐標(biāo)為
P=P1+E×M
或
P=P2-E×M
(1)
已知碰撞體部件所在模型上的3個基準(zhǔn)點A(XA,YA,ZA)、B(XB,YB,ZB)、C(XC,YC,ZC),則這3個基點所構(gòu)成三角形內(nèi)的任何一點的坐標(biāo)都可以由變量κ、ν以及A、B、C三點坐標(biāo)為
P=A+κ×B-A+ν×(C-A)
(2)
(0<κ、ν<1,κ+ν<1)
則有
P1+E×M=(1-κ-ν)×A+κ×B+ν×C
(3)
從而得出方程組
(4)
由式(4)可計算出κ、ν和模M的值,然后代入式(3)中可得出P點的坐標(biāo),對比HoloLens中運用同步定位與建圖SLAM(Simultaneous Localization and Mapping)技術(shù)自動生成的深度圖中虛擬零部件的空間坐標(biāo)[4-5],即可確定發(fā)生碰撞的部件,實現(xiàn)虛擬模型的選取。
交互手勢的實現(xiàn)是本系統(tǒng)另一大亮點,選中目標(biāo)后通過交互手勢進行拆裝,徹底擺脫了對鼠標(biāo)及鍵盤等輸入設(shè)備的依賴。通常在增強現(xiàn)實交互手勢的研究中,根據(jù)應(yīng)用目的和手勢狀態(tài)將交互手勢分為靜態(tài)手勢和動態(tài)手勢兩種方式分別進行檢測識別[6]。本系統(tǒng)主要采用動態(tài)手勢檢測,將手放置于用戶眼前120°×120°的視角里:通過采集人體手部骨骼節(jié)點的深度圖,得出骨架節(jié)點的運動軌跡作為主要的手勢識別特征;通過對比骨架節(jié)點的起點、終點和移動距離,然后處理計算分類,最終得出手勢識別結(jié)果[7-8]。兩個重要手勢分別為
1) Bloom 手勢,用于執(zhí)行返回及退出命令。
2) Air tap 手勢,主要是執(zhí)行點擊與確認命令。
為滿足復(fù)雜設(shè)備多人虛擬拆裝操作,本文設(shè)計并實現(xiàn)基于HoloLens的多人協(xié)同。所謂多人協(xié)同操作就是系統(tǒng)可滿足多個用戶同時進行一臺虛擬輔機設(shè)備的拆裝,在拆裝過程中,所有用戶都可以對虛擬輔機設(shè)備進行拆裝操作,且所有拆裝過程都同步進行。這樣既能使虛擬拆裝更貼近真實環(huán)境下的拆裝訓(xùn)練,也能夠提升學(xué)員之間的互動性。多人協(xié)同的數(shù)據(jù)傳遞是通過Socket協(xié)議實現(xiàn)的,通過Server/Client服務(wù)器的接口來搭建服務(wù)器端和傳遞客戶端數(shù)據(jù)[9]。多人協(xié)同主要研究并解決了兩個主要問題:
1) 多人協(xié)同中訪問沖突的解決策略。
2) 多人協(xié)同中場景虛實結(jié)合的一致性。
在進行船舶輔機拆裝系統(tǒng)多人協(xié)同的操作時,多個學(xué)員可能會在同一時刻拆裝并控制同一零部件,如果系統(tǒng)不能處理好多個對象訪問同一輔機零部件的情況,就有可能導(dǎo)致系統(tǒng)的異?;蛘弑罎?,因此設(shè)計一個健全的多人協(xié)同訪問沖突的解決策略尤為重要。服務(wù)器要利用參加協(xié)同操作的用戶的數(shù)據(jù)信息進行仿真計算,判斷沖突并能有效解決沖突。
在船舶輔機多人協(xié)同拆裝仿真時,每一個用戶的操作對于服務(wù)器模擬計算來說權(quán)重都是一樣的,每次計算都要根據(jù)用戶最新一幀完整的操作數(shù)據(jù)進行,仿真計算完成并進行實時可視化呈現(xiàn),才能不影響各個用戶的操作體驗。多個用戶協(xié)同操作時,用戶之間會有意識地進行沖突避讓,按先后順序進行操作。服務(wù)器模擬仿真計算會在設(shè)定的周期內(nèi)完成運算,一般不會出現(xiàn)訪問同一零部件的沖突;但不能避免的訪問沖突也會出現(xiàn),比如當(dāng)兩個用戶之間合作進行某一船舶輔機大部件的拆裝時,會進行部件的傳遞,此時部件不可避免地被兩個用戶同時接觸,服務(wù)器仿真計算這時會出現(xiàn)數(shù)據(jù)沖突。因此,要運用一定策略讓部件屬于被傳遞的用戶,并順利完成傳遞操作[10]。
針對用戶在船舶輔機拆裝實驗中的操作特點,研究并設(shè)計一種多人協(xié)同中訪問沖突的解決策略見圖6。當(dāng)服務(wù)器根據(jù)各個用戶的最新一幀完整的操作數(shù)據(jù)進行仿真計算時,如果過程中出現(xiàn)訪問數(shù)據(jù)沖突,服務(wù)器會按照具體的應(yīng)用特點根據(jù)先來后到的規(guī)則選擇正確的客戶端操作為優(yōu)選操作,服務(wù)器篩選數(shù)據(jù)進行仿真計算,結(jié)果再進行訪問數(shù)據(jù)沖突判斷,直到?jīng)_突消失,最后將仿真計算結(jié)果輸出,并進行可視化呈現(xiàn)。
本系統(tǒng)多人協(xié)同方案是通過多臺HoloLens 眼鏡協(xié)同實現(xiàn)的,在協(xié)同操作時,各個參與拆裝操作的用戶通過手勢、語言與眼鏡凝視與虛擬輔機模型進行交互,只有用戶在自己的HoloLens 眼鏡中看到的虛擬模型跟其他用戶看到的虛擬模型一致,才是真正的協(xié)同操作。因此,系統(tǒng)必須保證虛擬模型在現(xiàn)實場景中的位置和結(jié)構(gòu)的實時一致性和各個零部件約束一致性。比如:用戶1進行操作時,協(xié)同拆裝用戶2也可看到整個操作過程,而且用戶2看到的虛擬模型狀態(tài)與用戶1看到的狀態(tài)一樣時,繼續(xù)進行自己的拆裝操作;參與協(xié)同的其他用戶也可實時看到用戶2的操作結(jié)果[11]。
本系統(tǒng)運用如下的方法實現(xiàn)虛實結(jié)合場景的一致性:
1) 建立一個船舶輔機虛擬模型數(shù)據(jù)庫,各個協(xié)同用戶的HoloLens 設(shè)備都有一份本地的虛擬模型狀態(tài)數(shù)據(jù),每當(dāng)用戶拆裝虛擬輔機模型的某個零部件時,只要修改各個用戶設(shè)備的虛擬模型狀態(tài)數(shù)據(jù)即可,這些操作都是在操作之前離線進行的。
2) 在操作進行時,網(wǎng)絡(luò)框架不會傳遞整個虛擬模型的狀態(tài)數(shù)據(jù),只要傳遞虛擬模型中被操作的零部件的位置、姿態(tài)和約束關(guān)系的數(shù)據(jù),各個協(xié)同拆裝用戶接受數(shù)據(jù)并在本地進行數(shù)據(jù)更新。這樣既實現(xiàn)了虛實結(jié)合場景的一致性,同時又在很大程度上減少數(shù)據(jù)網(wǎng)絡(luò)傳輸帶寬壓力,保證模型拆裝交互過程的實時同步。
特選取較為復(fù)雜的HoloLens 多人協(xié)同虛擬拆裝進行所搭建系統(tǒng)的功能展示。
將3臺HoloLens通過WiFi連接到同一個局域網(wǎng)中(多臺設(shè)備原理相同)。任意選擇其中一臺作為主機即服務(wù)器端,其他兩臺則為客戶端。主機先進入系統(tǒng),根據(jù)訓(xùn)練科目選擇不同的輔機設(shè)備,把選中的三維虛擬模型擺放在合適的空間位置,并開始測試。系統(tǒng)運行展示見圖7,圖7a)所示為主機第一視角拍攝圖。接著,另外2臺HoloLens進入系統(tǒng),與主機建立連接,進行多人協(xié)同實操訓(xùn)練,效果見圖7b)。
圖7 船舶輔機拆裝系統(tǒng)運行展示
每個用戶都可以通過手勢選取不同的虛擬拆裝工具,如:十字螺絲刀、10 mm內(nèi)六角扳手、6.5 mm內(nèi)六角扳手等工具對相應(yīng)部件進行拆裝。拆裝訓(xùn)練過程中,用戶相互之間可同步看到整個拆裝過程,不存在訪問沖突。
從實際效果來看,多人協(xié)同操作人機交互良好,系統(tǒng)運行流暢。
本文研究并實現(xiàn)了一套基于HoloLens增強現(xiàn)實技術(shù)的船舶輔機拆裝系統(tǒng),將AR技術(shù)應(yīng)用于實際的輪機專業(yè)教學(xué)中。所搭建的系統(tǒng)開發(fā)的功能和技術(shù)構(gòu)架,解決了輔機虛擬模型優(yōu)化、人機交互及基于AR的多人協(xié)同操作等技術(shù)難點?;贑編程環(huán)境和Unity3D三維驅(qū)動引擎,完成了系統(tǒng)的研發(fā)及測試。用戶可通過本系統(tǒng)在現(xiàn)實環(huán)境中添加船舶輔機設(shè)備三維模型,不用借助任何輸入設(shè)備,用手勢即可完成拆裝操作。該系統(tǒng)在輪機專業(yè)培養(yǎng)及海事系統(tǒng)大證考試評估等方面有著廣闊的發(fā)展前景,節(jié)省成本且提高效率。另外,所探討的基于HoloLens的虛實結(jié)合技術(shù)同樣適用于絕大多數(shù)機械行業(yè)的維修檢測工作,將會對機械制造等行業(yè)未來的發(fā)展產(chǎn)生積極影響。