黃培德,王 琳,蕭 箏,盛步云
(武漢理工大學(xué),機(jī)電工程學(xué)院,湖北 武漢 430070)
近年來,虛擬現(xiàn)實(shí)(Virtual Reality,VR)技術(shù)已成為計(jì)算機(jī)圖形學(xué)(Computer Graphics,CG)中研究最為火熱的領(lǐng)域。虛擬現(xiàn)實(shí)為操作者提供高度沉浸式人機(jī)交互體驗(yàn)感的特點(diǎn),使得其廣泛應(yīng)用于虛擬仿真領(lǐng)域,尤其是技術(shù)含量較高、樣機(jī)制造成本較高、危險(xiǎn)性較高的制造型崗位,為相關(guān)操作人員提供虛擬環(huán)境下的教學(xué)培訓(xùn)(如大型設(shè)備虛擬裝配、高精密焊接等)。在虛擬仿真過程中,主要的研究領(lǐng)域之一是開發(fā)虛擬手與虛擬物體的自然交互技術(shù)。操作者的手部信息往往被采集,并映射到虛擬環(huán)境中所創(chuàng)建的虛擬手,使手部所產(chǎn)生的動(dòng)作與虛擬物體進(jìn)行交互。諸如數(shù)據(jù)手套、Microsoft Kinect或Leap Motion等設(shè)備均可以實(shí)現(xiàn)對人手位姿數(shù)據(jù)進(jìn)行動(dòng)態(tài)采集,并在虛擬環(huán)境中實(shí)時(shí)映射為虛擬手的空間位姿。
目前,對于虛擬環(huán)境中虛擬手的交互主要集中在虛擬手抓取技術(shù)的研究。在虛擬手抓取交互中,抓取方法可以分為基于啟發(fā)式的抓取方法和基于物理的抓取方法兩類。前者是先根據(jù)被抓取物體的幾何形狀進(jìn)行分類,然后根據(jù)分類制定相應(yīng)的抓取策略,文獻(xiàn)[1]中提出了一種在虛擬現(xiàn)實(shí)中將手的姿勢與力反饋數(shù)據(jù)手套進(jìn)行結(jié)合的方法,根據(jù)手的不同姿勢以及力反饋手套的響應(yīng);文獻(xiàn)[2]針對不同的機(jī)械零件類型,對裝配中的抓取手勢進(jìn)行分類定義,并給出手勢識別算法,文獻(xiàn)[3]利用物體形狀特征和手指抓握的接觸關(guān)系制定抓取規(guī)則,實(shí)現(xiàn)適應(yīng)物體形狀的啟發(fā)式抓取。因?yàn)榛趩l(fā)式的方法都是預(yù)定義一些抓取規(guī)則,有一定的局限性,即只能抓取有限的物體,并且虛擬手會和虛擬物體發(fā)生干涉;而基于物理的抓取則是根據(jù)物理定律對抓取過程進(jìn)行仿真,其對抓取的物體沒有特定的分類要求。文獻(xiàn)[4]使用彈簧-阻尼模型和觸覺反饋手套。由于數(shù)據(jù)手套導(dǎo)致每個(gè)指尖的自由度降低,這種方法有局限性。此外,抓取力由指尖決定,限制了抓取的可能性。文獻(xiàn)[5]提出另一種基于物理的抓取算法使用第二個(gè)動(dòng)態(tài)代理手。然而,由于物理力是通過在接觸發(fā)生后被凍結(jié)的代理手施加的,因此除了抓取和推動(dòng)之外,其他交互作用的可能性并不明顯,也相當(dāng)有限。文獻(xiàn)[6]提出了一種基于庫侖摩擦模型的虛擬手交互方法。該方法模擬許多類型的動(dòng)作,如推、拉、抓等操作,而不受物體形狀或手姿勢的限制。理論上,完全基于物理的方法可以使我們在虛擬環(huán)境中像現(xiàn)實(shí)世界一樣來操縱虛擬物體。然而,由于手跟蹤設(shè)備的準(zhǔn)確性和穩(wěn)定性,基于物理的交互方法在抓取物體時(shí)穩(wěn)定性很差,即需要緩慢的施加抓取力來防止抓取失敗。并且物理模擬的速度和計(jì)算復(fù)雜性很高,因此,完全基于物理的手交互系統(tǒng)還沒有得到廣泛的研究。
綜上所述,結(jié)合基于啟發(fā)式和基于物理的虛擬手交互方法,通過建立物理仿真環(huán)境來使虛擬手與虛擬物體之間能夠產(chǎn)生真實(shí)的物理交互效果。基于力學(xué)相關(guān)理論對虛擬手和虛擬物體的接觸點(diǎn)和接觸力進(jìn)行了顯式建模,防止虛擬手穿透虛擬物體,實(shí)現(xiàn)無約束的手和虛擬物體交互,如推、拉、抬等。而對于虛擬手抓取這一方式。改進(jìn)了穩(wěn)定抓取物體的判定條件,基于啟發(fā)式的思想,類比穩(wěn)定抓取物體時(shí)的受力情況,定義抓取對的概念來確定物體的穩(wěn)定抓取/釋放狀態(tài),改進(jìn)了傳統(tǒng)物理式交互需要實(shí)時(shí)計(jì)算并判定物體受力閉合情況的方法,提高抓取過程中對物體操作的穩(wěn)定性。
虛擬手與虛擬物體的交互行為是連續(xù)的,不同的交互行為對應(yīng)不同的運(yùn)動(dòng)狀態(tài),有限狀態(tài)機(jī)(FSM)是一個(gè)很好的描述狀態(tài)控制的數(shù)學(xué)模型,采用FSM描述虛擬手的交互順序及狀態(tài)轉(zhuǎn)換流程,如圖1所示。以五元組M=(S,T,R,f,o)來表示。
圖1 虛擬手交互的FSM狀態(tài)轉(zhuǎn)換圖Fig.1 FSM State Transition Diagram of Virtual Hand Interaction
S:表示虛擬手的有限狀態(tài)集合,有四種狀態(tài),自由狀態(tài),懸停狀態(tài),接觸狀態(tài),抓取狀態(tài),每個(gè)狀態(tài)對應(yīng)著一種虛擬手和虛擬物體的交互狀態(tài)。
T:表示狀態(tài)轉(zhuǎn)換條件集合。具體,如圖1所示。
R:表示呈現(xiàn)給操作者的渲染結(jié)果。
f:表示從當(dāng)前狀態(tài)轉(zhuǎn)換到下一狀態(tài)的映射關(guān)系。式(1)表示轉(zhuǎn)換函數(shù)f與狀態(tài)和時(shí)間的關(guān)系。其中,T(t)∈T,S(t)∈S。
o:表示當(dāng)前狀態(tài)和渲染結(jié)果的映射關(guān)系。如式(2)所示,其中R(t)∈R。
自由狀態(tài)(S0):虛擬手沒有接觸任何物體,在這個(gè)條件下,虛擬手可以自由移動(dòng)和手指可以自由彎曲。
懸停狀態(tài)(S1):虛擬手靠近物體,此時(shí)虛擬手沒有接觸物體。
接觸狀態(tài)(S2):虛擬手接觸物體,但沒有滿足抓取條件,此狀態(tài)下虛擬手通過對物體施加接觸力,與物體進(jìn)行非抓取狀態(tài)的交互,如推、抬、戳、擊等操作。
抓取狀態(tài)(S3):虛擬手接觸物體,滿足基于啟發(fā)式的抓取條件,此狀態(tài)下虛擬手可以穩(wěn)定抓取并操作變換物體。
以上各狀態(tài),如圖2所示。
圖2 虛擬手交互狀態(tài)圖Fig.2 Virtual Hand Interaction State Diagram
為了計(jì)算虛擬手與虛擬物體的作用力,同時(shí)為避免手與物體相互滲透,保證接觸與抓取的視覺真實(shí)感,建立虛擬手疊加重合模型,如圖3(a)所示。包括實(shí)體手模型和剛體手模型,實(shí)體手模型由精度高的人手網(wǎng)格模型構(gòu)成,不檢測實(shí)體手與三維模型之間的碰撞。剛體手是簡化的虛擬手模型,由簡單的形狀組成:三個(gè)膠囊體組成的每根手指和一個(gè)長方體的手掌。它是用來檢測虛擬手與虛擬物體之間的碰撞。在自由狀態(tài)下,實(shí)體手與剛體手重合,由體感設(shè)備捕獲的現(xiàn)實(shí)手位姿數(shù)據(jù)驅(qū)動(dòng)自由運(yùn)動(dòng)。在接觸狀態(tài)或抓取狀態(tài)下,實(shí)體手模型將被凍結(jié),停止在虛擬物體表面并且實(shí)體手的顏色由半透明變成不透明,不再接受現(xiàn)實(shí)手的控制,而剛體手則繼續(xù)跟隨真實(shí)手運(yùn)動(dòng),可以浸入虛擬物體,如圖3(b)所示。在圖3(b)的狀態(tài)下,實(shí)體手的手指是被單獨(dú)凍結(jié)的,當(dāng)剛體手的手指離開物體時(shí),實(shí)體手的手指也會隨著離開物體,如圖3(c)所示。這與現(xiàn)實(shí)中手指與物體可以獨(dú)立接觸類似,體現(xiàn)自然的交互。
圖3 虛擬手疊加重合模型Fig.3 Virtual Hand Overlay Composite Mode
在虛擬現(xiàn)實(shí)環(huán)境中,虛擬手與虛擬物體之間的碰撞檢測通過包圍盒實(shí)現(xiàn),通過剛體手與虛擬物體包圍盒的碰撞來估計(jì)它們之間的接觸點(diǎn)。碰撞檢測目前已有成熟的算法支持,對于三維模型的包圍盒采用unity3D 內(nèi)置的適應(yīng)虛擬物體輪廓外觀的mesh Collider碰撞器,定義了一個(gè)非常小的默認(rèn)接觸偏移量λ,作為在剛體手實(shí)際接觸虛擬物體之前觸發(fā)碰撞事件的閾值。默認(rèn)的接觸偏移量充當(dāng)虛擬物體實(shí)際包圍盒的偏移邊界,一旦檢測到剛體手和該包圍盒的偏移邊界發(fā)生碰撞,可得到碰撞點(diǎn)pi,此時(shí)以pi為起點(diǎn),pi法線的相反方向投擲射線Rayi,Rayi與虛擬物體實(shí)際包圍盒的接觸點(diǎn)ci即為虛擬手與虛擬物體表面的精確接觸點(diǎn),如圖4(a)所示。虛線框?yàn)殚撝档倪吔?。虛擬手與虛擬物體的實(shí)際接觸點(diǎn),綠色線段為接觸點(diǎn)的法向方向,如圖4(b)所示。
圖4 虛擬手接觸點(diǎn)估計(jì)Fig.4 Virtual Hand Contact Point Estimsation
確定手與物體表面的精確接觸點(diǎn)之后,以延遲時(shí)間t來凍結(jié)實(shí)體手與物體表面接觸對應(yīng)的手指或手掌,使之在視覺解決虛擬手與虛擬物體的穿透現(xiàn)象:
式中:vh—?jiǎng)傮w手上點(diǎn)p1的瞬時(shí)速度;spc—點(diǎn)pi與ci的距離。
接觸力即虛擬手對虛擬物體施加的外力,其在接觸狀態(tài)中虛擬手與虛擬物體的交互起到了關(guān)鍵的作用。定義接觸力的大小由剛體手與虛擬物體的干涉深度決定,如圖5所示。
圖5 接觸力計(jì)算示意圖Fig.5 Schematic Diagram of Contact Force Calculation
在真實(shí)世界抓取物體時(shí),接觸力會隨著皮膚和肌肉的形變逐漸趨于定值。即接觸力不會無限制增加,會逐漸趨于一個(gè)常數(shù),而且力的增加并不完全是線性的,當(dāng)超過一定的閾值后,會呈現(xiàn)逐漸緩慢的趨勢,因此,采用非線性彈簧模型來計(jì)算接觸力[7]:
式中:k1,k2—彈性系數(shù),與虛擬物體的質(zhì)量有關(guān);b1、b2—阻尼系數(shù);vr—?jiǎng)傮w手的位置;vg—實(shí)體手位置;△d—pi與ci的距離。d1—非線性彈簧模型中拉伸力由線性階段到指數(shù)緩慢變換階段過渡的閾值;d2—由指數(shù)緩慢變換階段到常數(shù)階段過渡的閾值;B—接觸力最大值。
對與接觸力的施加,計(jì)算每根手指接觸力的大小和方向后,在虛擬手與虛擬物體的接觸點(diǎn)施加接觸力。所提的方法充當(dāng)虛擬手與物理引擎的中間件,而物體間的重力加速度和碰撞力等外力由物理引擎內(nèi)部處理。通過施加接觸力的作用,推、舉等物理相互作用完全可以通過物理模擬來實(shí)現(xiàn)。
2.4.1 穩(wěn)定抓取的條件
在實(shí)際抓取中,對于一個(gè)穩(wěn)定的抓取,則需要接觸力與摩擦力的共同作用,由于摩擦力是在接觸虛擬物體表面的切線方向上施加的,在任意六自由度手部運(yùn)動(dòng)下,摩擦力可能不足以穩(wěn)定的抓住三維模型。它導(dǎo)致抓取時(shí)無法始終保持虛擬物體的運(yùn)動(dòng),或者使用者應(yīng)該很慢地移動(dòng)他/她的手來持續(xù)地施加足夠的摩擦力,這造成抓取時(shí)的不穩(wěn)定性,因此,采用啟發(fā)式準(zhǔn)則來判定三維模型是否處于穩(wěn)定的“被抓取”狀態(tài)?,F(xiàn)實(shí)生活中若想穩(wěn)定抓取一個(gè)物體,則手指與物體之間至少有兩個(gè)接觸點(diǎn),且穩(wěn)定抓取物體的充分條件為手在接觸點(diǎn)處的接觸力應(yīng)該在此點(diǎn)的摩擦錐之內(nèi)。類似這個(gè)現(xiàn)實(shí)手的抓取現(xiàn)象,定義抓取副來作為三維模型是否被穩(wěn)定抓取的判定條件。抓取副:對于剛體手與虛擬物體的任意兩個(gè)接觸點(diǎn)ci、cj來說,兩個(gè)接觸點(diǎn)的連線與各自接觸點(diǎn)法線之間的角度不超過一個(gè)特定值。即這個(gè)角度在摩擦錐內(nèi),則這兩個(gè)接觸點(diǎn)將構(gòu)成一個(gè)穩(wěn)定的抓取副g(ci,cj),其應(yīng)滿足式(5):
式中:Vji—接觸點(diǎn)ci到cj的向量;ni—接觸點(diǎn)ci處的法向量;∠(ni,Vji)—向量ni與向量Vji之間的夾角。
三個(gè)接觸點(diǎn)c1,c2,c3形成兩個(gè)穩(wěn)定抓取副g(c1,c2)與g(c1,c3)的情況,如圖6所示。
圖6 抓取副情況Fig.6 Grab Pair Case
當(dāng)至少存在一對抓取副時(shí),則判斷虛擬物體抓取成功。
2.4.2 虛擬物體位姿變換
當(dāng)抓取條件判定成功后,根據(jù)組成抓取副的接觸點(diǎn)ci對應(yīng)的剛體手上的pi組成的點(diǎn)集計(jì)算虛擬物體的位姿變換。此時(shí)有兩種情況,一種是剛體手停留在虛擬物體表面,與虛擬物體表面接觸;另一種是剛體手穿透到虛擬物體內(nèi)(由于真實(shí)手與虛擬手的映射是單向耦合關(guān)系,在抓取移動(dòng)過程中,真實(shí)手可能會無意識的變動(dòng))。用手指指尖區(qū)分這兩種情況:當(dāng)拇指指尖與其他任一手指指尖與虛擬物體表面接觸,則判定剛體手停留在虛擬物體表面,即穿透深度小于剛體手指的寬度,否則剛體手穿透到虛擬物體內(nèi),如圖7所示。
圖7 虛擬物體的位姿變換的點(diǎn)集Fig.7 Point Set of Pose Transformation for Virtual Objects
對于前者,設(shè)n是抓取副的對數(shù),當(dāng)n=1時(shí),操作是直接的,物體的位姿跟點(diǎn)pi,pj組成的線段Lij的位姿而變化。點(diǎn)pi,pj的位置變化由體感設(shè)備捕獲手的數(shù)據(jù)決定,如式(6)所示。
式中:qLij—線段Lij旋轉(zhuǎn)變換的四元數(shù);mij—線段Lij的中心。
此外,當(dāng)線段Lij圍繞自身旋轉(zhuǎn)時(shí),上式中的qLij將不會產(chǎn)生變化,導(dǎo)致物體不會旋轉(zhuǎn)。此時(shí)應(yīng)當(dāng)在式子左乘線段Lij繞自身旋轉(zhuǎn)的四元數(shù),如式(7)所示。
當(dāng)n>1時(shí),物體的位姿變換由所有抓取副的接觸點(diǎn)ci對應(yīng)的剛體手上的pi共同決定,每個(gè)抓取副對物體位姿變換的貢獻(xiàn)是不一樣的。為此,給每個(gè)抓取副定義一個(gè)權(quán)重系數(shù)wi,wj的計(jì)算由式(8)確定:
式中:m—所有抓取副所組成線段的中心。
物體的旋轉(zhuǎn)變換則是由所有抓取副G={g1,g2,…,gn}組成線段Lij旋轉(zhuǎn)變換的四元數(shù)Q={q1,q2,…,qn}確定,定義qmean為集合Q的平均旋轉(zhuǎn)四元數(shù),qmean的由式(10)計(jì)算[8]。
其中,M根據(jù)四元數(shù)qi和其對應(yīng)的權(quán)值wi構(gòu)造4*4的矩陣,M最大特征值對應(yīng)的單位特征向量就是所求的加權(quán)平均值qmean。
對于剛體手穿透到虛擬物體內(nèi)的情況。虛擬物體的位姿變換由Kabsch算法來計(jì)算虛擬物體的最佳位姿變換矩陣。設(shè)P是第k幀剛體手與虛擬物體的碰撞點(diǎn)pi組成的點(diǎn)集,Q是第k+1幀碰撞點(diǎn)pi組成的點(diǎn)集。則最佳位姿變換矩陣R,如式(11)所示。
式中:H—互協(xié)方差矩陣。
為驗(yàn)證所提出方法的有效性,基于unity3d游戲引擎構(gòu)建虛擬環(huán)境。采用leap motion體感控制器來捕捉手的位姿數(shù)據(jù)和使用HTC VIVE顯示三維場景,如圖8所示。使用所提出方法與不同零件的交互效果示意圖,如圖9所示。從左到右分別為:三指抓取螺絲刀,抬起軸承,抓取減速器下箱體。另外,為驗(yàn)證所提方法操作零件位姿的精確性,根據(jù)文獻(xiàn)[9]所提的零件虛擬裝配的方法。使用雙手進(jìn)行一級減速器齒輪軸與軸承的裝配。如圖10所示。
圖8 實(shí)驗(yàn)場景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
從左到右分別為,雙手分別抓取齒輪軸和軸承,并互相靠近;識別齒輪軸與軸承的同軸約束,軸承在同軸約束下向齒輪軸靠近識別共面約束;裝配完成,軸承與齒輪軸形成子裝配體。經(jīng)過多次實(shí)驗(yàn),上述同軸約束與共面約束識別的閾值為d=8mm,θ=5°。證明所提方法能夠比較精確的調(diào)整零件的位姿,完成虛擬裝配任務(wù)。
針對虛擬仿真系統(tǒng)虛擬手交互方式單一,沉浸感不強(qiáng)。提出了一種在VR環(huán)境下簡單、穩(wěn)定、計(jì)算效率高的手-零件交互方法。實(shí)現(xiàn)對機(jī)械零件的抓取、推、抬等交互操作的精確模擬。并通過常用的機(jī)械裝配實(shí)例驗(yàn)證表明。通過虛擬手直接操作機(jī)械零部件,與以往基于手勢的交互方法相比,所提方法能夠提升交互過程中的沉浸感,為精確的裝配提供可能。所提的虛擬手交互方法適用于機(jī)械零件的裝配過程仿真、裝配操作培訓(xùn)及虛擬產(chǎn)品維修。