王瑤瑤 周 博 方鵬亞 任淑紅
(1、鄭州航空工業(yè)管理學(xué)院航空工程學(xué)院,河南 鄭州 450046 2、鄭州航空工業(yè)管理學(xué)院民航學(xué)院,河南 鄭州 450046)
隨著計(jì)算機(jī)仿真技術(shù)和虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,虛擬維修技術(shù)已成為當(dāng)前的研究熱點(diǎn),在航空、航天、船舶、兵器等領(lǐng)域應(yīng)用廣泛。但虛擬維修技術(shù)目前存在諸多問題嚴(yán)重制約維修仿真的快速逼真實(shí)現(xiàn)。問題主要表現(xiàn)在:①非沉浸式仿真環(huán)境下,仿真操作過程繁瑣,耗時(shí)費(fèi)力,精度較差,受仿真人員操作水平影響較大[1]。②沉浸式仿真環(huán)境下,雖然可以取得相對(duì)高效、準(zhǔn)確的效果,但對(duì)于維修人員大范圍運(yùn)動(dòng)或者特殊方式操作(如趴在虛擬樣機(jī)上進(jìn)行維修操作、懸空操作等)的運(yùn)動(dòng)仿真操作困難[2]。因此,有必要將非沉浸式仿真與沉浸式仿真有機(jī)結(jié)合,研究快速高效的維修仿真方法,以提高虛擬維修仿真的效率和精度。
1 兩種動(dòng)作數(shù)據(jù)源時(shí)空協(xié)同
由于采用兩種仿真方式獲得的人體維修行為在空間上存在坐標(biāo)位置和方向不一致,在時(shí)間上存在采樣速率不一,采樣周期不同等問題,我們?cè)趯?duì)獲取的兩種動(dòng)作數(shù)據(jù)源進(jìn)行融合處理時(shí),需要考慮數(shù)據(jù)的時(shí)空特性,進(jìn)行相應(yīng)的協(xié)同處理[3]。由于采用的是人體定長骨骼模型進(jìn)行計(jì)算,在協(xié)同處理之前,應(yīng)將兩種數(shù)據(jù)源對(duì)應(yīng)的人體骨骼模型進(jìn)行對(duì)齊處理,否則會(huì)導(dǎo)致合成運(yùn)動(dòng)的數(shù)據(jù)失真或超出約束范圍。
本文選擇將穿戴動(dòng)捕的真實(shí)人體骨骼模型作為模板,讓Delmia 中的3D 人體骨骼模型與模板對(duì)齊[4]。動(dòng)捕設(shè)備采集數(shù)據(jù)是人體各部位標(biāo)志點(diǎn)在世界坐標(biāo)系下的三維坐標(biāo)數(shù)據(jù)[Xi,Yi,Zi],其中i 表示人體骨骼模型的第i 個(gè)關(guān)節(jié)。令子關(guān)節(jié)點(diǎn)為i,則其坐標(biāo)相對(duì)于父節(jié)點(diǎn)F(i)偏移,采用齊次空間規(guī)范表示,將原來坐標(biāo)C(i)=[Xi,Yi,Zi]轉(zhuǎn)化為C(i)=[Xi,Yi,Zi,1]表示,則偏移量表示為:
其中,TX=Xi-XF(i),TY=Yi-YF(i),TZ=Zi-ZF(i)。
在初始狀態(tài)不考慮關(guān)節(jié)旋轉(zhuǎn)情況下,則各關(guān)節(jié)變化矩陣就等于其偏移矩陣,即有:
從動(dòng)捕設(shè)備采集數(shù)據(jù)中,利用公式(1)獲取各關(guān)節(jié)點(diǎn)相對(duì)于其父節(jié)點(diǎn)的偏移矩陣T(i),并按照關(guān)節(jié)鏈模型來修正Delmia 仿真平臺(tái)中的3D 人體骨骼模型,修正后的每個(gè)關(guān)節(jié)點(diǎn)坐標(biāo)值CDEL(i)為
其中,CDEL(1)是骨骼模型根節(jié)點(diǎn)ROOT 在Delmia 平臺(tái)世界坐標(biāo)系下坐標(biāo)位置齊次表達(dá)式,T(F(i))是第i 關(guān)節(jié)父關(guān)節(jié)相對(duì)它的父關(guān)節(jié)偏移矩陣。
采用動(dòng)態(tài)時(shí)間規(guī)整DTW(Dynamic time warping)方法進(jìn)行時(shí)間對(duì)齊處理。DTW 廣泛在語音識(shí)別方面應(yīng)用,由于采集的語音單元時(shí)間長短不一,需要進(jìn)行時(shí)間規(guī)整,以利于與模板庫匹配[5]。在人體運(yùn)動(dòng)數(shù)據(jù)中應(yīng)用時(shí)間對(duì)齊方法,對(duì)運(yùn)動(dòng)數(shù)據(jù)序列采用時(shí)間規(guī)整,按對(duì)齊路徑找到相似姿態(tài),可為后續(xù)運(yùn)動(dòng)序列融合提供支持。假定距離函數(shù)為DTW,存在兩個(gè)運(yùn)動(dòng)特征序列A={A1,A2,…,Am}和B={B1,B2,…,Bn},函數(shù)DTW可定義為:
其中,φ 為空序列,First(A)=A1,Rest(A)={A2,…Am},D為遞歸入口函數(shù):
Delmia 的世界坐標(biāo)系與動(dòng)作捕捉系統(tǒng)定義的坐標(biāo)系統(tǒng)可能存在差異,動(dòng)作捕捉系統(tǒng)的坐標(biāo)系向Delmia 坐標(biāo)系對(duì)齊,可采用4×4 的齊次矩陣S 進(jìn)行修正。
其中,SX(α)表示繞著X 軸旋轉(zhuǎn)α 度角,SY(β)表示繞著Y 軸旋轉(zhuǎn)β 度角,SZ(γ)表示繞著Z 軸旋轉(zhuǎn)γ 度角,表示動(dòng)捕坐標(biāo)系原點(diǎn)在Delmia 世界坐標(biāo)系下的偏移矩陣。
在Delmia 中人體的方位由一個(gè)數(shù)組定義,該數(shù)組有12個(gè)數(shù)據(jù),實(shí)質(zhì)是一個(gè)4×3 的矩陣,上面3×3 表示方向,下面1×3 表示位置,為統(tǒng)一轉(zhuǎn)換矩陣表達(dá)形式,需要將其轉(zhuǎn)換為4×4 的齊次矩陣。轉(zhuǎn)換公式如下:
其中,UX,UY,UZ,VX,VY,VZ,WX,WY,WZ表示人體根節(jié)點(diǎn)局部坐標(biāo)系O'-UVW 三個(gè)軸對(duì)應(yīng)的單位向量分別在世界坐標(biāo)系O-UVW 三個(gè)軸上的投影數(shù)值。ΔX,ΔY,ΔZ 表示局部坐標(biāo)系O'-UVW 的原點(diǎn)O' 在世界坐標(biāo)系O-XYZ 下的坐標(biāo)位置。
同理也需要將動(dòng)捕數(shù)據(jù)的根節(jié)點(diǎn)的方位用4×4 的齊次矩陣表達(dá)。找到兩個(gè)運(yùn)動(dòng)片段銜接處的關(guān)鍵幀RootA(n)和RootB(1),計(jì)算人體根節(jié)點(diǎn)在這兩幀處的坐標(biāo)變化4×4 齊次變換矩陣R。利用R 修正每幀動(dòng)捕數(shù)據(jù)中人體的根節(jié)點(diǎn)方位,最終將修正后的人體根節(jié)點(diǎn)方位數(shù)據(jù)轉(zhuǎn)換為Delmia 人體方位表達(dá)數(shù)組,以便于在Delmia 平臺(tái)下驅(qū)動(dòng)虛擬人[6]。
在利用動(dòng)畫數(shù)據(jù)和動(dòng)作捕捉數(shù)據(jù)兩種數(shù)據(jù)源合成維修行為時(shí),有異步和同步協(xié)同兩種控制方式。由于同步協(xié)同控制方式下涉及問題較多,本文主要針對(duì)異步協(xié)同控制方式研究維修行為合成技術(shù)。
將虛擬人體姿態(tài)定義為t 時(shí)刻各關(guān)節(jié)角度矩陣的集合θ(t)。θ(t)={θ1(t),θ2(t),θ3(t),…θk(t)},其中k 表示關(guān)節(jié)個(gè)數(shù)。定義θα(t)為上肢關(guān)節(jié)集合,θb(t)為下肢關(guān)節(jié)集合。
圖1 中的粉色片段A 表示需要插入的動(dòng)作捕捉數(shù)據(jù)片段,
圖1 異步時(shí)序控制圖
在Tθ1之前和Tθ2之后的時(shí)間段虛擬人的上下肢體動(dòng)作由仿真動(dòng)畫數(shù)據(jù)驅(qū)動(dòng),在Tθ1<t<Tθ2時(shí)間段虛擬人上下肢體動(dòng)作由動(dòng)捕采集數(shù)據(jù)驅(qū)動(dòng)。此種驅(qū)動(dòng)方式下,僅需研究兩種數(shù)據(jù)源如何無縫銜接的問題。
兩種數(shù)據(jù)源異步控制,實(shí)質(zhì)是在時(shí)間上將維修行為進(jìn)行分段控制,某一段時(shí)間內(nèi)只能由一種數(shù)據(jù)源驅(qū)動(dòng)場景中的虛擬維修人員產(chǎn)生相應(yīng)動(dòng)作,最終整體鏈接合成所需要的維修行為。該合成方法的核心是將動(dòng)作捕捉采集的數(shù)據(jù)片段向仿真平臺(tái)Delmia 轉(zhuǎn)化,本文采用姿態(tài)對(duì)齊處理辦法[7]。
其基本思想是假設(shè)qA,qB為分別為動(dòng)畫數(shù)據(jù)片段和動(dòng)捕運(yùn)動(dòng)轉(zhuǎn)換后的數(shù)據(jù)片段,其中qA有m 幀,qB有n 幀。首先,人工將仿真動(dòng)畫數(shù)據(jù)片段分割,獲得分割點(diǎn)姿態(tài)幀的數(shù)據(jù)qA(f),設(shè)定剪切窗口為δ 幀,在窗口范圍內(nèi),參照以下公式對(duì)動(dòng)捕運(yùn)動(dòng)片段qB利用最小歐拉距離尋找最相似的姿態(tài)幀qB(i)。
然后,分別裁去qB序列中i 幀之前的姿態(tài)幀。同理,在將分割后的下一個(gè)動(dòng)畫數(shù)據(jù)片段銜接上動(dòng)捕運(yùn)動(dòng)數(shù)據(jù)時(shí),也采用此種方法,在動(dòng)畫數(shù)據(jù)片段中搜尋與qB(n)最相似的姿態(tài)幀qA(j)。姿態(tài)對(duì)齊示意圖如圖2 所示,圖中的陰影部分代表對(duì)齊后需要截去的片段。最后,分別在(qA(f),qB(i)),(qB(n),qA(j))兩對(duì)姿態(tài)幀間進(jìn)行插值處理。
圖2 姿態(tài)對(duì)齊示意圖
某型導(dǎo)彈后設(shè)備艙的電氣控制裝置拆卸過程中,虛擬維修人員大部分維修行為仿真可采用非沉浸式動(dòng)畫仿真方式完成,但對(duì)于一些操作空間較為狹小的操作仿真,例如圖3中對(duì)高亮標(biāo)記的7 號(hào)電纜插頭的拆卸,為避免與周圍設(shè)備發(fā)生干涉,需要精細(xì)控制虛擬人姿態(tài)進(jìn)行逐幀微調(diào)。此時(shí)采用非沉浸式的動(dòng)畫編輯方式顯得復(fù)雜繁瑣,而采用沉浸式動(dòng)作捕捉驅(qū)動(dòng)虛擬人完成相應(yīng)姿態(tài)調(diào)整的仿真方式顯得便捷高效。我們把虛擬人彎腰伸右手接觸到7 號(hào)插頭這個(gè)姿態(tài)調(diào)整類行為,分為兩個(gè)步驟實(shí)施仿真,即側(cè)身彎腰動(dòng)作采用非沉浸式動(dòng)畫方式仿真,伸出右手不斷調(diào)整右手接近路徑的動(dòng)作采用沉浸式動(dòng)捕方法實(shí)現(xiàn)仿真,并利用本文所提出的動(dòng)捕數(shù)據(jù)和仿真動(dòng)畫數(shù)據(jù)異步協(xié)同控制方法實(shí)現(xiàn)兩種數(shù)據(jù)源融合,達(dá)到快速、逼真合成此姿態(tài)調(diào)整行為的目的。
圖3 拆卸7 號(hào)電纜插頭
分兩步獲取虛擬維修人員的姿態(tài)調(diào)整數(shù)據(jù):首先,利用Delmia 仿真動(dòng)畫平臺(tái),完成暴露明顯、較易拆裝的5 號(hào)、6 電纜插頭拆卸的姿態(tài)調(diào)整行為動(dòng)畫仿真。然后,對(duì)于調(diào)整姿態(tài)接觸到圖3 中的7 號(hào)電纜插頭的仿真過程,采用沉浸式動(dòng)作捕捉方式,利用Phase space 在CAVE 環(huán)境下實(shí)現(xiàn)。沉浸式環(huán)境下動(dòng)作捕捉采集數(shù)據(jù)需要拼接到Delmia 動(dòng)畫仿真數(shù)據(jù)之后,實(shí)現(xiàn)兩種數(shù)據(jù)源的異步驅(qū)動(dòng)虛擬人。通過人工裁剪選取15 幀動(dòng)捕數(shù)據(jù),以動(dòng)畫仿真數(shù)據(jù)中左邊虛擬人最后一幀姿態(tài)QA(14)為模板,在動(dòng)捕數(shù)據(jù)前7 幀姿態(tài)幀中,找到最相似的姿態(tài)幀對(duì)(QA(14),QB(4))。最相似的姿態(tài)幀對(duì)的對(duì)比如圖4 所示。
圖4 姿態(tài)對(duì)齊處理后的最相似兩幀
圖5 中,藍(lán)色的姿態(tài)數(shù)據(jù)是動(dòng)捕采集的數(shù)據(jù),紅色表示的是仿真動(dòng)畫獲取的數(shù)據(jù),兩段數(shù)據(jù)中,人體根節(jié)點(diǎn)的空間方位差別較大。在完成兩種數(shù)據(jù)姿態(tài)對(duì)齊,找到連接入口幀處后,需要進(jìn)行坐標(biāo)對(duì)齊處理。銜接處姿態(tài)幀對(duì)(QA(14),QB(4))對(duì)應(yīng)的根節(jié)點(diǎn)方位變化矩陣為:
圖5 坐標(biāo)整體對(duì)齊變換后
利用RB→A逐幀修正動(dòng)捕數(shù)據(jù)中的第4 幀到15 幀,完成坐標(biāo)整體對(duì)齊變換。變換后的兩段數(shù)據(jù)如圖5 所示。
最后,將數(shù)據(jù)平滑處理后,在Delmia環(huán)境下,兩種數(shù)據(jù)源異步控制下合成的虛擬人維修行為,共33 幀,如圖6 所示。其中,第3 排7 幀動(dòng)作為插值的動(dòng)作幀。
圖6 Delmia 中維修行為合成效果
從實(shí)驗(yàn)結(jié)果看,利用本文動(dòng)捕數(shù)據(jù)和仿真動(dòng)畫數(shù)據(jù)異步協(xié)同控制方法,合成虛擬人的維修行為,整個(gè)過程幾乎沒有耗時(shí)計(jì)算,可滿足實(shí)時(shí)要求。在整個(gè)仿真過程中,通過此方法比單純采用動(dòng)作捕捉驅(qū)動(dòng)虛擬人或單純采用動(dòng)畫仿真,合成效率高,達(dá)到快速仿真目的。
本文考慮沉浸式動(dòng)畫仿真和非沉浸式仿真環(huán)境適用范圍的局限性,提出了動(dòng)捕數(shù)據(jù)和動(dòng)畫數(shù)據(jù)兩種數(shù)據(jù)源協(xié)同控制的維修行為快速合成方法,研究兩種數(shù)據(jù)源的時(shí)空協(xié)同處理及控制方法,能夠?qū)崿F(xiàn)智能、高效的虛擬維修仿真。