黃培德,王 琳,蕭 箏,盛步云
(武漢理工大學,機電工程學院,湖北 武漢 430070)
近年來,虛擬現實(Virtual Reality,VR)技術已成為計算機圖形學(Computer Graphics,CG)中研究最為火熱的領域。虛擬現實為操作者提供高度沉浸式人機交互體驗感的特點,使得其廣泛應用于虛擬仿真領域,尤其是技術含量較高、樣機制造成本較高、危險性較高的制造型崗位,為相關操作人員提供虛擬環境下的教學培訓(如大型設備虛擬裝配、高精密焊接等)。在虛擬仿真過程中,主要的研究領域之一是開發虛擬手與虛擬物體的自然交互技術。操作者的手部信息往往被采集,并映射到虛擬環境中所創建的虛擬手,使手部所產生的動作與虛擬物體進行交互。諸如數據手套、Microsoft Kinect或Leap Motion等設備均可以實現對人手位姿數據進行動態采集,并在虛擬環境中實時映射為虛擬手的空間位姿。
目前,對于虛擬環境中虛擬手的交互主要集中在虛擬手抓取技術的研究。在虛擬手抓取交互中,抓取方法可以分為基于啟發式的抓取方法和基于物理的抓取方法兩類。前者是先根據被抓取物體的幾何形狀進行分類,然后根據分類制定相應的抓取策略,文獻[1]中提出了一種在虛擬現實中將手的姿勢與力反饋數據手套進行結合的方法,根據手的不同姿勢以及力反饋手套的響應;文獻[2]針對不同的機械零件類型,對裝配中的抓取手勢進行分類定義,并給出手勢識別算法,文獻[3]利用物體形狀特征和手指抓握的接觸關系制定抓取規則,實現適應物體形狀的啟發式抓取。因為基于啟發式的方法都是預定義一些抓取規則,有一定的局限性,即只能抓取有限的物體,并且虛擬手會和虛擬物體發生干涉;而基于物理的抓取則是根據物理定律對抓取過程進行仿真,其對抓取的物體沒有特定的分類要求。文獻[4]使用彈簧-阻尼模型和觸覺反饋手套。由于數據手套導致每個指尖的自由度降低,這種方法有局限性。此外,抓取力由指尖決定,限制了抓取的可能性。文獻[5]提出另一種基于物理的抓取算法使用第二個動態代理手。然而,由于物理力是通過在接觸發生后被凍結的代理手施加的,因此除了抓取和推動之外,其他交互作用的可能性并不明顯,也相當有限。文獻[6]提出了一種基于庫侖摩擦模型的虛擬手交互方法。該方法模擬許多類型的動作,如推、拉、抓等操作,而不受物體形狀或手姿勢的限制。理論上,完全基于物理的方法可以使我們在虛擬環境中像現實世界一樣來操縱虛擬物體。然而,由于手跟蹤設備的準確性和穩定性,基于物理的交互方法在抓取物體時穩定性很差,即需要緩慢的施加抓取力來防止抓取失敗。并且物理模擬的速度和計算復雜性很高,因此,完全基于物理的手交互系統還沒有得到廣泛的研究。
綜上所述,結合基于啟發式和基于物理的虛擬手交互方法,通過建立物理仿真環境來使虛擬手與虛擬物體之間能夠產生真實的物理交互效果。基于力學相關理論對虛擬手和虛擬物體的接觸點和接觸力進行了顯式建模,防止虛擬手穿透虛擬物體,實現無約束的手和虛擬物體交互,如推、拉、抬等。而對于虛擬手抓取這一方式。改進了穩定抓取物體的判定條件,基于啟發式的思想,類比穩定抓取物體時的受力情況,定義抓取對的概念來確定物體的穩定抓取/釋放狀態,改進了傳統物理式交互需要實時計算并判定物體受力閉合情況的方法,提高抓取過程中對物體操作的穩定性。
虛擬手與虛擬物體的交互行為是連續的,不同的交互行為對應不同的運動狀態,有限狀態機(FSM)是一個很好的描述狀態控制的數學模型,采用FSM描述虛擬手的交互順序及狀態轉換流程,如圖1所示。以五元組M=(S,T,R,f,o)來表示。

圖1 虛擬手交互的FSM狀態轉換圖Fig.1 FSM State Transition Diagram of Virtual Hand Interaction
S:表示虛擬手的有限狀態集合,有四種狀態,自由狀態,懸停狀態,接觸狀態,抓取狀態,每個狀態對應著一種虛擬手和虛擬物體的交互狀態。
T:表示狀態轉換條件集合。具體,如圖1所示。
R:表示呈現給操作者的渲染結果。
f:表示從當前狀態轉換到下一狀態的映射關系。式(1)表示轉換函數f與狀態和時間的關系。其中,T(t)∈T,S(t)∈S。

o:表示當前狀態和渲染結果的映射關系。如式(2)所示,其中R(t)∈R。

自由狀態(S0):虛擬手沒有接觸任何物體,在這個條件下,虛擬手可以自由移動和手指可以自由彎曲。
懸停狀態(S1):虛擬手靠近物體,此時虛擬手沒有接觸物體。
接觸狀態(S2):虛擬手接觸物體,但沒有滿足抓取條件,此狀態下虛擬手通過對物體施加接觸力,與物體進行非抓取狀態的交互,如推、抬、戳、擊等操作。
抓取狀態(S3):虛擬手接觸物體,滿足基于啟發式的抓取條件,此狀態下虛擬手可以穩定抓取并操作變換物體。
以上各狀態,如圖2所示。

圖2 虛擬手交互狀態圖Fig.2 Virtual Hand Interaction State Diagram
為了計算虛擬手與虛擬物體的作用力,同時為避免手與物體相互滲透,保證接觸與抓取的視覺真實感,建立虛擬手疊加重合模型,如圖3(a)所示。包括實體手模型和剛體手模型,實體手模型由精度高的人手網格模型構成,不檢測實體手與三維模型之間的碰撞。剛體手是簡化的虛擬手模型,由簡單的形狀組成:三個膠囊體組成的每根手指和一個長方體的手掌。它是用來檢測虛擬手與虛擬物體之間的碰撞。在自由狀態下,實體手與剛體手重合,由體感設備捕獲的現實手位姿數據驅動自由運動。在接觸狀態或抓取狀態下,實體手模型將被凍結,停止在虛擬物體表面并且實體手的顏色由半透明變成不透明,不再接受現實手的控制,而剛體手則繼續跟隨真實手運動,可以浸入虛擬物體,如圖3(b)所示。在圖3(b)的狀態下,實體手的手指是被單獨凍結的,當剛體手的手指離開物體時,實體手的手指也會隨著離開物體,如圖3(c)所示。這與現實中手指與物體可以獨立接觸類似,體現自然的交互。

圖3 虛擬手疊加重合模型Fig.3 Virtual Hand Overlay Composite Mode
在虛擬現實環境中,虛擬手與虛擬物體之間的碰撞檢測通過包圍盒實現,通過剛體手與虛擬物體包圍盒的碰撞來估計它們之間的接觸點。碰撞檢測目前已有成熟的算法支持,對于三維模型的包圍盒采用unity3D 內置的適應虛擬物體輪廓外觀的mesh Collider碰撞器,定義了一個非常小的默認接觸偏移量λ,作為在剛體手實際接觸虛擬物體之前觸發碰撞事件的閾值。默認的接觸偏移量充當虛擬物體實際包圍盒的偏移邊界,一旦檢測到剛體手和該包圍盒的偏移邊界發生碰撞,可得到碰撞點pi,此時以pi為起點,pi法線的相反方向投擲射線Rayi,Rayi與虛擬物體實際包圍盒的接觸點ci即為虛擬手與虛擬物體表面的精確接觸點,如圖4(a)所示。虛線框為閾值的邊界。虛擬手與虛擬物體的實際接觸點,綠色線段為接觸點的法向方向,如圖4(b)所示。

圖4 虛擬手接觸點估計Fig.4 Virtual Hand Contact Point Estimsation
確定手與物體表面的精確接觸點之后,以延遲時間t來凍結實體手與物體表面接觸對應的手指或手掌,使之在視覺解決虛擬手與虛擬物體的穿透現象:

式中:vh—剛體手上點p1的瞬時速度;spc—點pi與ci的距離。
接觸力即虛擬手對虛擬物體施加的外力,其在接觸狀態中虛擬手與虛擬物體的交互起到了關鍵的作用。定義接觸力的大小由剛體手與虛擬物體的干涉深度決定,如圖5所示。

圖5 接觸力計算示意圖Fig.5 Schematic Diagram of Contact Force Calculation
在真實世界抓取物體時,接觸力會隨著皮膚和肌肉的形變逐漸趨于定值。即接觸力不會無限制增加,會逐漸趨于一個常數,而且力的增加并不完全是線性的,當超過一定的閾值后,會呈現逐漸緩慢的趨勢,因此,采用非線性彈簧模型來計算接觸力[7]:

式中:k1,k2—彈性系數,與虛擬物體的質量有關;b1、b2—阻尼系數;vr—剛體手的位置;vg—實體手位置;△d—pi與ci的距離。d1—非線性彈簧模型中拉伸力由線性階段到指數緩慢變換階段過渡的閾值;d2—由指數緩慢變換階段到常數階段過渡的閾值;B—接觸力最大值。
對與接觸力的施加,計算每根手指接觸力的大小和方向后,在虛擬手與虛擬物體的接觸點施加接觸力。所提的方法充當虛擬手與物理引擎的中間件,而物體間的重力加速度和碰撞力等外力由物理引擎內部處理。通過施加接觸力的作用,推、舉等物理相互作用完全可以通過物理模擬來實現。
2.4.1 穩定抓取的條件
在實際抓取中,對于一個穩定的抓取,則需要接觸力與摩擦力的共同作用,由于摩擦力是在接觸虛擬物體表面的切線方向上施加的,在任意六自由度手部運動下,摩擦力可能不足以穩定的抓住三維模型。它導致抓取時無法始終保持虛擬物體的運動,或者使用者應該很慢地移動他/她的手來持續地施加足夠的摩擦力,這造成抓取時的不穩定性,因此,采用啟發式準則來判定三維模型是否處于穩定的“被抓取”狀態。現實生活中若想穩定抓取一個物體,則手指與物體之間至少有兩個接觸點,且穩定抓取物體的充分條件為手在接觸點處的接觸力應該在此點的摩擦錐之內。類似這個現實手的抓取現象,定義抓取副來作為三維模型是否被穩定抓取的判定條件。抓取副:對于剛體手與虛擬物體的任意兩個接觸點ci、cj來說,兩個接觸點的連線與各自接觸點法線之間的角度不超過一個特定值。即這個角度在摩擦錐內,則這兩個接觸點將構成一個穩定的抓取副g(ci,cj),其應滿足式(5):

式中:Vji—接觸點ci到cj的向量;ni—接觸點ci處的法向量;∠(ni,Vji)—向量ni與向量Vji之間的夾角。
三個接觸點c1,c2,c3形成兩個穩定抓取副g(c1,c2)與g(c1,c3)的情況,如圖6所示。

圖6 抓取副情況Fig.6 Grab Pair Case
當至少存在一對抓取副時,則判斷虛擬物體抓取成功。
2.4.2 虛擬物體位姿變換
當抓取條件判定成功后,根據組成抓取副的接觸點ci對應的剛體手上的pi組成的點集計算虛擬物體的位姿變換。此時有兩種情況,一種是剛體手停留在虛擬物體表面,與虛擬物體表面接觸;另一種是剛體手穿透到虛擬物體內(由于真實手與虛擬手的映射是單向耦合關系,在抓取移動過程中,真實手可能會無意識的變動)。用手指指尖區分這兩種情況:當拇指指尖與其他任一手指指尖與虛擬物體表面接觸,則判定剛體手停留在虛擬物體表面,即穿透深度小于剛體手指的寬度,否則剛體手穿透到虛擬物體內,如圖7所示。

圖7 虛擬物體的位姿變換的點集Fig.7 Point Set of Pose Transformation for Virtual Objects
對于前者,設n是抓取副的對數,當n=1時,操作是直接的,物體的位姿跟點pi,pj組成的線段Lij的位姿而變化。點pi,pj的位置變化由體感設備捕獲手的數據決定,如式(6)所示。

式中:qLij—線段Lij旋轉變換的四元數;mij—線段Lij的中心。
此外,當線段Lij圍繞自身旋轉時,上式中的qLij將不會產生變化,導致物體不會旋轉。此時應當在式子左乘線段Lij繞自身旋轉的四元數,如式(7)所示。

當n>1時,物體的位姿變換由所有抓取副的接觸點ci對應的剛體手上的pi共同決定,每個抓取副對物體位姿變換的貢獻是不一樣的。為此,給每個抓取副定義一個權重系數wi,wj的計算由式(8)確定:

式中:m—所有抓取副所組成線段的中心。
物體的旋轉變換則是由所有抓取副G={g1,g2,…,gn}組成線段Lij旋轉變換的四元數Q={q1,q2,…,qn}確定,定義qmean為集合Q的平均旋轉四元數,qmean的由式(10)計算[8]。

其中,M根據四元數qi和其對應的權值wi構造4*4的矩陣,M最大特征值對應的單位特征向量就是所求的加權平均值qmean。
對于剛體手穿透到虛擬物體內的情況。虛擬物體的位姿變換由Kabsch算法來計算虛擬物體的最佳位姿變換矩陣。設P是第k幀剛體手與虛擬物體的碰撞點pi組成的點集,Q是第k+1幀碰撞點pi組成的點集。則最佳位姿變換矩陣R,如式(11)所示。

式中:H—互協方差矩陣。
為驗證所提出方法的有效性,基于unity3d游戲引擎構建虛擬環境。采用leap motion體感控制器來捕捉手的位姿數據和使用HTC VIVE顯示三維場景,如圖8所示。使用所提出方法與不同零件的交互效果示意圖,如圖9所示。從左到右分別為:三指抓取螺絲刀,抬起軸承,抓取減速器下箱體。另外,為驗證所提方法操作零件位姿的精確性,根據文獻[9]所提的零件虛擬裝配的方法。使用雙手進行一級減速器齒輪軸與軸承的裝配。如圖10所示。

圖8 實驗場景Fig.8 Experimental Scenario

圖9 虛擬手與不同零件的交互Fig.9 Interaction of Virtual Hand with Different Three-Dimensional Models

圖10 齒輪軸與軸承的裝配過程Fig.10 Assembly Process of Gear Shaft and Bearing
從左到右分別為,雙手分別抓取齒輪軸和軸承,并互相靠近;識別齒輪軸與軸承的同軸約束,軸承在同軸約束下向齒輪軸靠近識別共面約束;裝配完成,軸承與齒輪軸形成子裝配體。經過多次實驗,上述同軸約束與共面約束識別的閾值為d=8mm,θ=5°。證明所提方法能夠比較精確的調整零件的位姿,完成虛擬裝配任務。
針對虛擬仿真系統虛擬手交互方式單一,沉浸感不強。提出了一種在VR環境下簡單、穩定、計算效率高的手-零件交互方法。實現對機械零件的抓取、推、抬等交互操作的精確模擬。并通過常用的機械裝配實例驗證表明。通過虛擬手直接操作機械零部件,與以往基于手勢的交互方法相比,所提方法能夠提升交互過程中的沉浸感,為精確的裝配提供可能。所提的虛擬手交互方法適用于機械零件的裝配過程仿真、裝配操作培訓及虛擬產品維修。