吳旭琤
(上海飛機設計研究院四性與產品支援部,中國 上海 201210)
虛擬維修已經成為維修性分析的有效手段,設計人員可以在虛擬環境中,對產品可視、可達、操作空間以及人體舒適度等進行分析,從而在設計階段可以做出前瞻性的決策與優化實施方案[1]。常用的虛擬維修工程仿真軟件有Delmia,Jack 等[2],雖然這些軟件很大程度上已經能幫助研究人員進行維修性分析,但在人體運動方面仍有不少問題有待改進。
本文針對在虛擬人基坐標發生變化時,關鍵幀插值出現失真現象,考慮基坐標在真實運動中的變化情況,引入修正因子進行修正,并通過仿真實例來驗證模型的有效性。
在虛擬維修仿真中,常采用逆運動學算法獲得關鍵幀,再通過關鍵幀插值獲得連續的動作。當基坐標發生變化時,一般的關鍵幀插值算法會分別對關節角和基坐標進行插值,兩者以相同速率變化,而這與實際情況不相符,以下蹲動作為例,會出現穿透障礙的失真現象,如Delmia 動作庫中的下蹲動作,雙腳在下蹲過程中穿過地面。此時,往往需要添加較多的關鍵幀或使用碰撞檢測功能來防止失真現象。但前者需要花費更多的人力時間,影響仿真工作的效率,而后者則會消耗更多的計算機資源,在復雜場景下可能會影響仿真的實時性。發生這一問題的原因是人在實際運動時,基坐標并非勻速運動,因此,在插值時需要對基坐標進行一定的修正。
本文的虛擬人采用多剛體系統的骨骼模型,全身有34 個關節自由度,如圖1 所示。
對于逆運動學問題求解,是已知運動鏈的末端控制點的目標姿態,計算運動鏈各關節的關節角度[3]。利用Jacobian 矩陣可以建立兩者關系,即:
△x=J△q
其中,J 為Jacobian 矩陣,由運動鏈的幾何特征唯一確定。
而逆運動學問題的解通??梢员硎緸椋?/p>
△q=J+△x
其中,J+=JT(JJT)-1為Jacobian 矩陣的Moore-Penrose 廣義逆。
根據逆運動學算法迭代求解得到的虛擬人姿態進行關鍵幀插值,關節角與末端控制點的關系為:
x=T(q)B
中,B 為基坐標,T(q)為基坐標與末端控制點的坐標變換矩陣。
取修正因子h=L-x,L 為環境限制邊界,無限制的自由度分量取Li=xi。以地面限制為例,假設地面坐標為z,則:
L=[x1,x2,x3,x4,x5,x6]T
h=[0,0,z-x3,0,0,0]T
修正后的基坐標B′=B+h。
修正后的末端控制點x′=T(q)B′
通過對基坐標的修正,可以消除與限制邊界的干涉量,達到姿態修正的目的。
以虛擬人下蹲動作為例,使用逆運動學算法求出下蹲后的姿態,使用帶基坐標修正的關鍵幀插值算法獲得完整的下蹲動作,整個運動過程中虛擬人都沒有與地面發生干涉,如圖2 所示。
本文中所使用的仿真實例是在AMD A10-5750M(2.5GHz)CPU,內存4GB 的PC 機上完成,平均姿態計算時間為0.068s,可以流暢地完成仿真,具有較好的實時性。
為了解決仿真中基坐標發生變化時出現的失真現象,本文提出了一種引入修正因子的關鍵幀插值算法,對基坐標進行了修正,所獲得虛擬人仿真動作符合真實情況,同時,具有較好的實時性。
[1]劉佳,劉毅.虛擬維修技術發展綜述[J].計算機輔助設計與圖形學學報,2009,21(11):1519-1534.
[2]郝建平,蔣科藝,王松山,等.虛擬維修仿真理論與技術[M].北京:國防工業出版社,2008.
[3]李石磊,梁加紅,李猛,等.基于姿態庫和PIK 算法的虛擬人全身姿態生成[J].系統仿真學報,2011,23(12):2693-2700.