王瑤瑤 周 博 方鵬亞 任淑紅
(1、鄭州航空工業管理學院航空工程學院,河南 鄭州 450046 2、鄭州航空工業管理學院民航學院,河南 鄭州 450046)
隨著計算機仿真技術和虛擬現實技術的發展,虛擬維修技術已成為當前的研究熱點,在航空、航天、船舶、兵器等領域應用廣泛。但虛擬維修技術目前存在諸多問題嚴重制約維修仿真的快速逼真實現。問題主要表現在:①非沉浸式仿真環境下,仿真操作過程繁瑣,耗時費力,精度較差,受仿真人員操作水平影響較大[1]。②沉浸式仿真環境下,雖然可以取得相對高效、準確的效果,但對于維修人員大范圍運動或者特殊方式操作(如趴在虛擬樣機上進行維修操作、懸空操作等)的運動仿真操作困難[2]。因此,有必要將非沉浸式仿真與沉浸式仿真有機結合,研究快速高效的維修仿真方法,以提高虛擬維修仿真的效率和精度。
1 兩種動作數據源時空協同
由于采用兩種仿真方式獲得的人體維修行為在空間上存在坐標位置和方向不一致,在時間上存在采樣速率不一,采樣周期不同等問題,我們在對獲取的兩種動作數據源進行融合處理時,需要考慮數據的時空特性,進行相應的協同處理[3]。由于采用的是人體定長骨骼模型進行計算,在協同處理之前,應將兩種數據源對應的人體骨骼模型進行對齊處理,否則會導致合成運動的數據失真或超出約束范圍。
本文選擇將穿戴動捕的真實人體骨骼模型作為模板,讓Delmia 中的3D 人體骨骼模型與模板對齊[4]。動捕設備采集數據是人體各部位標志點在世界坐標系下的三維坐標數據[Xi,Yi,Zi],其中i 表示人體骨骼模型的第i 個關節。令子關節點為i,則其坐標相對于父節點F(i)偏移,采用齊次空間規范表示,將原來坐標C(i)=[Xi,Yi,Zi]轉化為C(i)=[Xi,Yi,Zi,1]表示,則偏移量表示為:

其中,TX=Xi-XF(i),TY=Yi-YF(i),TZ=Zi-ZF(i)。
在初始狀態不考慮關節旋轉情況下,則各關節變化矩陣就等于其偏移矩陣,即有:

從動捕設備采集數據中,利用公式(1)獲取各關節點相對于其父節點的偏移矩陣T(i),并按照關節鏈模型來修正Delmia 仿真平臺中的3D 人體骨骼模型,修正后的每個關節點坐標值CDEL(i)為

其中,CDEL(1)是骨骼模型根節點ROOT 在Delmia 平臺世界坐標系下坐標位置齊次表達式,T(F(i))是第i 關節父關節相對它的父關節偏移矩陣。
采用動態時間規整DTW(Dynamic time warping)方法進行時間對齊處理。DTW 廣泛在語音識別方面應用,由于采集的語音單元時間長短不一,需要進行時間規整,以利于與模板庫匹配[5]。在人體運動數據中應用時間對齊方法,對運動數據序列采用時間規整,按對齊路徑找到相似姿態,可為后續運動序列融合提供支持。假定距離函數為DTW,存在兩個運動特征序列A={A1,A2,…,Am}和B={B1,B2,…,Bn},函數DTW可定義為:

其中,φ 為空序列,First(A)=A1,Rest(A)={A2,…Am},D為遞歸入口函數:

Delmia 的世界坐標系與動作捕捉系統定義的坐標系統可能存在差異,動作捕捉系統的坐標系向Delmia 坐標系對齊,可采用4×4 的齊次矩陣S 進行修正。

其中,SX(α)表示繞著X 軸旋轉α 度角,SY(β)表示繞著Y 軸旋轉β 度角,SZ(γ)表示繞著Z 軸旋轉γ 度角,表示動捕坐標系原點在Delmia 世界坐標系下的偏移矩陣。
在Delmia 中人體的方位由一個數組定義,該數組有12個數據,實質是一個4×3 的矩陣,上面3×3 表示方向,下面1×3 表示位置,為統一轉換矩陣表達形式,需要將其轉換為4×4 的齊次矩陣。轉換公式如下:

其中,UX,UY,UZ,VX,VY,VZ,WX,WY,WZ表示人體根節點局部坐標系O'-UVW 三個軸對應的單位向量分別在世界坐標系O-UVW 三個軸上的投影數值。ΔX,ΔY,ΔZ 表示局部坐標系O'-UVW 的原點O' 在世界坐標系O-XYZ 下的坐標位置。
同理也需要將動捕數據的根節點的方位用4×4 的齊次矩陣表達。找到兩個運動片段銜接處的關鍵幀RootA(n)和RootB(1),計算人體根節點在這兩幀處的坐標變化4×4 齊次變換矩陣R。利用R 修正每幀動捕數據中人體的根節點方位,最終將修正后的人體根節點方位數據轉換為Delmia 人體方位表達數組,以便于在Delmia 平臺下驅動虛擬人[6]。
在利用動畫數據和動作捕捉數據兩種數據源合成維修行為時,有異步和同步協同兩種控制方式。由于同步協同控制方式下涉及問題較多,本文主要針對異步協同控制方式研究維修行為合成技術。
將虛擬人體姿態定義為t 時刻各關節角度矩陣的集合θ(t)。θ(t)={θ1(t),θ2(t),θ3(t),…θk(t)},其中k 表示關節個數。定義θα(t)為上肢關節集合,θb(t)為下肢關節集合。
圖1 中的粉色片段A 表示需要插入的動作捕捉數據片段,

圖1 異步時序控制圖

在Tθ1之前和Tθ2之后的時間段虛擬人的上下肢體動作由仿真動畫數據驅動,在Tθ1<t<Tθ2時間段虛擬人上下肢體動作由動捕采集數據驅動。此種驅動方式下,僅需研究兩種數據源如何無縫銜接的問題。
兩種數據源異步控制,實質是在時間上將維修行為進行分段控制,某一段時間內只能由一種數據源驅動場景中的虛擬維修人員產生相應動作,最終整體鏈接合成所需要的維修行為。該合成方法的核心是將動作捕捉采集的數據片段向仿真平臺Delmia 轉化,本文采用姿態對齊處理辦法[7]。
其基本思想是假設qA,qB為分別為動畫數據片段和動捕運動轉換后的數據片段,其中qA有m 幀,qB有n 幀。首先,人工將仿真動畫數據片段分割,獲得分割點姿態幀的數據qA(f),設定剪切窗口為δ 幀,在窗口范圍內,參照以下公式對動捕運動片段qB利用最小歐拉距離尋找最相似的姿態幀qB(i)。

然后,分別裁去qB序列中i 幀之前的姿態幀。同理,在將分割后的下一個動畫數據片段銜接上動捕運動數據時,也采用此種方法,在動畫數據片段中搜尋與qB(n)最相似的姿態幀qA(j)。姿態對齊示意圖如圖2 所示,圖中的陰影部分代表對齊后需要截去的片段。最后,分別在(qA(f),qB(i)),(qB(n),qA(j))兩對姿態幀間進行插值處理。

圖2 姿態對齊示意圖
某型導彈后設備艙的電氣控制裝置拆卸過程中,虛擬維修人員大部分維修行為仿真可采用非沉浸式動畫仿真方式完成,但對于一些操作空間較為狹小的操作仿真,例如圖3中對高亮標記的7 號電纜插頭的拆卸,為避免與周圍設備發生干涉,需要精細控制虛擬人姿態進行逐幀微調。此時采用非沉浸式的動畫編輯方式顯得復雜繁瑣,而采用沉浸式動作捕捉驅動虛擬人完成相應姿態調整的仿真方式顯得便捷高效。我們把虛擬人彎腰伸右手接觸到7 號插頭這個姿態調整類行為,分為兩個步驟實施仿真,即側身彎腰動作采用非沉浸式動畫方式仿真,伸出右手不斷調整右手接近路徑的動作采用沉浸式動捕方法實現仿真,并利用本文所提出的動捕數據和仿真動畫數據異步協同控制方法實現兩種數據源融合,達到快速、逼真合成此姿態調整行為的目的。

圖3 拆卸7 號電纜插頭
分兩步獲取虛擬維修人員的姿態調整數據:首先,利用Delmia 仿真動畫平臺,完成暴露明顯、較易拆裝的5 號、6 電纜插頭拆卸的姿態調整行為動畫仿真。然后,對于調整姿態接觸到圖3 中的7 號電纜插頭的仿真過程,采用沉浸式動作捕捉方式,利用Phase space 在CAVE 環境下實現。沉浸式環境下動作捕捉采集數據需要拼接到Delmia 動畫仿真數據之后,實現兩種數據源的異步驅動虛擬人。通過人工裁剪選取15 幀動捕數據,以動畫仿真數據中左邊虛擬人最后一幀姿態QA(14)為模板,在動捕數據前7 幀姿態幀中,找到最相似的姿態幀對(QA(14),QB(4))。最相似的姿態幀對的對比如圖4 所示。

圖4 姿態對齊處理后的最相似兩幀
圖5 中,藍色的姿態數據是動捕采集的數據,紅色表示的是仿真動畫獲取的數據,兩段數據中,人體根節點的空間方位差別較大。在完成兩種數據姿態對齊,找到連接入口幀處后,需要進行坐標對齊處理。銜接處姿態幀對(QA(14),QB(4))對應的根節點方位變化矩陣為:

圖5 坐標整體對齊變換后

利用RB→A逐幀修正動捕數據中的第4 幀到15 幀,完成坐標整體對齊變換。變換后的兩段數據如圖5 所示。
最后,將數據平滑處理后,在Delmia環境下,兩種數據源異步控制下合成的虛擬人維修行為,共33 幀,如圖6 所示。其中,第3 排7 幀動作為插值的動作幀。

圖6 Delmia 中維修行為合成效果
從實驗結果看,利用本文動捕數據和仿真動畫數據異步協同控制方法,合成虛擬人的維修行為,整個過程幾乎沒有耗時計算,可滿足實時要求。在整個仿真過程中,通過此方法比單純采用動作捕捉驅動虛擬人或單純采用動畫仿真,合成效率高,達到快速仿真目的。
本文考慮沉浸式動畫仿真和非沉浸式仿真環境適用范圍的局限性,提出了動捕數據和動畫數據兩種數據源協同控制的維修行為快速合成方法,研究兩種數據源的時空協同處理及控制方法,能夠實現智能、高效的虛擬維修仿真。