陳學(xué)文,姜國華,劉玉慶
(中國航天員科研訓(xùn)練中心人因工程重點(diǎn)實(shí)驗(yàn)室,北京100094)
虛擬手交互操作是虛擬現(xiàn)實(shí)系統(tǒng)的一個(gè)重要方面。虛擬手在虛擬環(huán)境中運(yùn)動(dòng)由交互設(shè)備控制,目前的交互設(shè)備有三維鼠標(biāo)、操作手柄、數(shù)據(jù)手套、力反饋數(shù)據(jù)裝置、手勢(shì)識(shí)別等設(shè)備。無論選用什么交互設(shè)備,在交互操作仿真時(shí),都需要實(shí)現(xiàn)虛擬手對(duì)虛擬物體的抓取操作仿真。蔡嫻娟、李志華、朱書敬等對(duì)穩(wěn)定抓取和虛擬手的逼真表達(dá)進(jìn)行了研究[1?3];胡晨等對(duì)多基本幾何體組成的物體抓持規(guī)則進(jìn)行了研究[4];邸偉等 對(duì)虛擬物體抓持力覺進(jìn)行了研究[5];趙美榮等采用Kinect實(shí)現(xiàn)用戶手部動(dòng)作的獲取并對(duì)虛擬手交互進(jìn)行了研究[6]。這些研究主要集中在虛擬手抓取操作仿真上,對(duì)抓取后虛擬物體的隨動(dòng)沒展開研究,默認(rèn)是虛擬物體隨著手一起運(yùn)動(dòng)。實(shí)際情況是,只有無約束自由移動(dòng)類物體能夠完全隨手一起運(yùn)動(dòng);對(duì)于有約束的物體,如沿固定方向移動(dòng)類物體(抽屜等)、繞軸轉(zhuǎn)動(dòng)類物體(門等)[7],虛擬手抓住虛擬物體后的運(yùn)動(dòng)需要考慮物體的運(yùn)動(dòng)約束,在移動(dòng)過程中保證虛擬手抓取時(shí)的位置不變,把現(xiàn)實(shí)用戶手持虛擬現(xiàn)實(shí)交互設(shè)備無約束的運(yùn)動(dòng)映射到有約束的虛擬手上,同時(shí)實(shí)現(xiàn)虛擬物體按照自身運(yùn)動(dòng)自由度跟隨虛擬手運(yùn)動(dòng)。
為了實(shí)現(xiàn)虛擬手交互操作過程仿真,把計(jì)算和圖形顯示分離,保證交互操作過程視覺連續(xù),陳學(xué)文等提出了虛擬手設(shè)計(jì)兩層模型:“仿真計(jì)算虛擬手”和“圖形顯示虛擬手”[8],如圖1所示。在交互操作過程中當(dāng)虛擬手沒有抓取物體或抓取的是自由移動(dòng)的物體時(shí),“圖形顯示虛擬手”的位置和姿態(tài)與“仿真計(jì)算虛擬手”的位置和姿態(tài)完全一致,兩者重合。當(dāng)操作有約束沿固定方向移動(dòng)類物體或繞固定軸轉(zhuǎn)動(dòng)類物體時(shí),“圖形顯示虛擬手”和“仿真計(jì)算虛擬手”的位置和姿態(tài)可能分離。原因是“仿真計(jì)算虛擬手”由用戶通過交互設(shè)備輸入,而用戶無相應(yīng)實(shí)物運(yùn)動(dòng)約束,其相對(duì)于被抓持物體的運(yùn)動(dòng)關(guān)系很難保持固定不變,在操作仿真系統(tǒng)中如果不考慮這個(gè)因素,虛擬手與虛擬物體的接觸狀態(tài)和相互位置關(guān)系頻繁變化,很難保證操作的連續(xù)性,同時(shí)導(dǎo)致操作難度大。因此需要開發(fā)相應(yīng)的算法,根據(jù)“仿真計(jì)算虛擬手”的位置和姿態(tài),針對(duì)不同約束類型的物體,計(jì)算“圖形顯示虛擬手”、被操作物體的位置和姿態(tài)。自由移動(dòng)的物體和沿固定方向移動(dòng)類物體計(jì)算方法參見文獻(xiàn)[7],本文對(duì)有約束的繞軸轉(zhuǎn)動(dòng)類物體計(jì)算方法補(bǔ)充完善,并提出針對(duì)三類物體的統(tǒng)一交互操作仿真流程。
圖1 虛擬手兩層模型Fig.1 Two level model of virtual hand
虛擬手抓取虛擬物體后,虛擬物體隨著虛擬手的運(yùn)動(dòng)就是隨動(dòng),隨動(dòng)包括“仿真計(jì)算虛擬手”跟隨交互設(shè)備的運(yùn)動(dòng)、“圖形顯示虛擬手”跟隨“仿真計(jì)算虛擬手”運(yùn)動(dòng)及被操作對(duì)象的運(yùn)動(dòng)。仿真計(jì)算虛擬手跟隨交互設(shè)備運(yùn)動(dòng)直接由交互設(shè)備輸入的信息映射即可。圖形顯示虛擬手跟隨仿真計(jì)算虛擬手運(yùn)動(dòng)和被操作對(duì)象運(yùn)動(dòng)需要考慮抓取狀態(tài)、被操作對(duì)象的運(yùn)動(dòng)自由度,設(shè)計(jì)合適的算法。在三類物體中,無約束自由移動(dòng)類物體、有約束沿固定方向移動(dòng)類物體的隨動(dòng)算法在文獻(xiàn)[7]中已描述清楚,本文不再論述;有約束繞軸轉(zhuǎn)動(dòng)類物體隨動(dòng)較為復(fù)雜,下面以空間站艙門的開啟和關(guān)閉為例給出完善的隨動(dòng)算法。交互設(shè)備、仿真計(jì)算虛擬手、圖形顯示虛擬手和被操作設(shè)備的隨動(dòng)關(guān)系,如圖2所示。
圖2 隨動(dòng)關(guān)系Fig.2 Movement drove by interaction device
在虛擬手抓住艙門實(shí)施開艙門的過程中,虛擬手要保持與艙門接觸位置不變,同時(shí)艙門隨著虛擬手繞艙門軸轉(zhuǎn)動(dòng)。但是,在實(shí)際操作過程中,用戶在無實(shí)物運(yùn)動(dòng)約束的情況下,手相對(duì)交互設(shè)備的運(yùn)動(dòng)半徑與艙門把手繞艙門門軸的半徑不一定相同,如果直接以仿真計(jì)算虛擬手的位置來設(shè)置圖形顯示虛擬手的位置,進(jìn)而設(shè)置艙門開啟角度,容易造成艙門、圖形顯示虛擬手相互錯(cuò)位,顯然不合適。本文通過轉(zhuǎn)動(dòng)角度的方法來計(jì)算“圖形顯示虛擬手”位置。實(shí)際操作過程中,無論用戶在開啟艙門過程中手的轉(zhuǎn)動(dòng)半徑如何,用戶手部相對(duì)上一次的轉(zhuǎn)動(dòng)角度是一定的,手部轉(zhuǎn)動(dòng)多少角度,相應(yīng)艙門就轉(zhuǎn)多少角度。在保持虛擬手與艙門把手的抓取狀態(tài)和接觸位置不變的情況下,以該角度計(jì)算“圖形顯示虛擬手”的位置就很容易。
如圖3所示,在計(jì)算“圖形顯示虛擬手”的位置時(shí),記錄首次抓住艙門時(shí)“仿真計(jì)算虛擬手”的位置向量OP0(虛擬手的位置與艙門軸點(diǎn)位置之間的向量差),并計(jì)算該向量OP0相對(duì)艙門關(guān)閉時(shí)的角度α(α角度計(jì)算方法參考文獻(xiàn)[7]),在之后轉(zhuǎn)動(dòng)過程中,根據(jù)仿真計(jì)算虛擬手的位置向量OP計(jì)算該向量OP相對(duì)艙門關(guān)閉時(shí)的角度β(β角度計(jì)算方法參考文獻(xiàn)[7])和本次轉(zhuǎn)動(dòng)的角度γ=β-α,根據(jù)角度γ和首次抓住艙門位置向量OP0計(jì)算當(dāng)前抓取艙門的位置OP1,該位置為圖形顯示虛擬手的位置。
圖3 以轉(zhuǎn)動(dòng)角度計(jì)算虛擬手的位置Fig.3 Calculating position of visual display virtual hand by rotated angle of simulated virtual hand
圖4 圖形顯示虛擬手位置和姿態(tài)計(jì)算流程Fig.4 Position and posture calculation of visual hand
具體過程如圖4所示。在第1)步中把交互設(shè)備輸入的位置數(shù)據(jù)直接映射到“仿真計(jì)算虛擬手”的位置上,即虛擬手的初始位置加上交互設(shè)備輸入的位置;在第7)步中通過把OP0繞軸點(diǎn)旋轉(zhuǎn)γ角度計(jì)算得到“圖形顯示虛擬手”當(dāng)前相對(duì)軸點(diǎn)位置向量OP1,即OP1=OP0×Rot(γ);在第8)步中由艙門軸點(diǎn)的位置vecDPI加上“圖形顯示虛擬手”當(dāng)前相對(duì)軸點(diǎn)位置OP1,計(jì)算得到“圖形顯示虛擬手”的位置;把虛擬手剛抓取艙門時(shí)的姿態(tài)(記為quatHFG)繞軸旋轉(zhuǎn)γ角度計(jì)算得到“圖形顯示虛擬手”的姿態(tài),即:quatHFG × Rot(γ)。
被操作對(duì)象運(yùn)動(dòng)計(jì)算過程與虛擬手的位置、姿態(tài)映射相似,但是在計(jì)算角度α、β時(shí)有區(qū)別。計(jì)算虛擬手時(shí)采用的是虛擬手整體的位置(即根節(jié)點(diǎn)手掌的位置)相對(duì)艙門軸點(diǎn)向量來計(jì)算角度α、β;在計(jì)算艙門轉(zhuǎn)動(dòng)角度時(shí),如果還選擇根節(jié)點(diǎn)手掌的位置相對(duì)艙門軸點(diǎn)向量計(jì)算角度α、β,有可能導(dǎo)致艙門轉(zhuǎn)動(dòng)角度過大或過小,不能貼合虛擬手轉(zhuǎn)動(dòng)。在計(jì)算艙門轉(zhuǎn)動(dòng)角度時(shí),選擇與艙門把手接觸的手指為計(jì)算依據(jù),接觸手指位置與軸點(diǎn)形成的向量(本文選擇大拇指的指尖)來計(jì)算角度α、β。原因是在抓住艙門操作過程中,接觸手指與艙門相對(duì)關(guān)系較固定,而虛擬手的其他部位、如手掌等,在虛擬手抓住艙門把手時(shí)可以相對(duì)艙門做相對(duì)轉(zhuǎn)動(dòng),相互關(guān)系不固定,不能代表艙門實(shí)際轉(zhuǎn)動(dòng)的角度。計(jì)算艙門旋轉(zhuǎn)角度γ=β-α,并把艙門旋轉(zhuǎn)該角度即可。
把操作自由類物體(例如滅火器)、沿固定方向移動(dòng)類物體(如抽屜)和繞固定軸轉(zhuǎn)動(dòng)類物體(艙門)的交互操作仿真流程統(tǒng)一起來,形成虛擬手操作物體仿真流程,如圖5所示。
圖5 虛擬手操作仿真流程Fig.5 Simulation process of virtual hand operation
其中,在第(1)步中,bGraspOld為上一幀抓取標(biāo)志,bGraspCur為當(dāng)前幀抓取標(biāo)志記)。在第(2)大步中,先計(jì)算“仿真計(jì)算虛擬手”整體位置和姿態(tài)、各手指節(jié)段姿態(tài);根據(jù)當(dāng)前的抓取標(biāo)志和物體移動(dòng)自由度類型,由“仿真計(jì)算虛擬手”的位置和姿態(tài)計(jì)算“圖形顯示虛擬手”的位置和姿態(tài);對(duì)于繞固定軸轉(zhuǎn)動(dòng)類物體計(jì)算方法參見本文2.1節(jié)描述,對(duì)于其他兩類物體的計(jì)算方法參見文獻(xiàn)[7]3.4(1)和(2)的描述;對(duì)于其他操作自由度類型的物體,可以開發(fā)相應(yīng)的算法放到該流程相應(yīng)位置處,具有擴(kuò)展性。在第(4)大步中抓取條件和松開條件對(duì)于虛擬手抓取仿真很重要,條件不合適,容易導(dǎo)致誤抓或抓不到,使得操作很費(fèi)勁,本文在文獻(xiàn)[2]和[4]的基礎(chǔ)上通過反復(fù)試驗(yàn),確定如下抓取條件和松開條件:
抓取條件:大拇指的中段或指尖與被操作物體接觸,同時(shí)食指或中指任意一個(gè)節(jié)段與被操作物體接觸,認(rèn)為虛擬手抓取虛擬物體;
松開條件:松開條件比較多,只要滿足其中一條就表示虛擬手不再抓住物體:①大拇指的中段或指尖不與被操作物體接觸;②食指和中指沒有一個(gè)節(jié)段與被操作物體接觸;③手指當(dāng)前接觸角度大于剛接觸物體時(shí)的接觸角度(手指向松開物體的方向張開)。
在第(5)步中,根據(jù)上一幀和本幀的抓取狀態(tài)bGraspOld和bGraspCur不同組合,分別進(jìn)行處理計(jì)算。如果bGraspOld==false和bGraspCur==true時(shí),表示最近首次抓住物體,記錄接觸信息。如果bGraspOld==true和bGraspCur==true,表示持續(xù)抓住物體,根據(jù)物體移動(dòng)自由度類型按照相應(yīng)的算法計(jì)算被操作物體隨著虛擬手運(yùn)動(dòng)到新位置的位置和姿態(tài);對(duì)于繞固定軸轉(zhuǎn)動(dòng)類物體計(jì)算方法見本文2.2節(jié)描述;對(duì)于其他兩類物體計(jì)算方法見參考文獻(xiàn)[7]3.4(1)、(2)的描述;如果有其他操作自由度類型的物體,還可以開發(fā)相應(yīng)的算法放到該流程相應(yīng)位置處,具有擴(kuò)展性。如果bGraspOld==true和bGraspCur==false時(shí),表示松開物體,被操作物體不隨著虛擬手移動(dòng)。如果bGraspOld==false和bGraspCur==false,不做任何處理。
使用中國航天員科研訓(xùn)練中心與東南大學(xué)研制的手臂力覺反饋裝置作為交互設(shè)備[9],如圖6所示。該設(shè)備能夠?qū)崿F(xiàn)用戶手部整體3個(gè)自由度的平動(dòng)、3個(gè)自由度的轉(zhuǎn)動(dòng)、3個(gè)手指的轉(zhuǎn)動(dòng),每個(gè)自由度都有力覺反饋,運(yùn)動(dòng)范圍為0.4 m×0.4 m×0.5 m。在Visual Studio開發(fā)環(huán)境下采用C++語言和OGRE圖形引擎編寫程序?qū)崿F(xiàn)虛擬手的圖形表達(dá)、虛擬手抓取操作仿真和虛擬手交互操作統(tǒng)一流程,并應(yīng)用于空間站艙門(有約束繞軸轉(zhuǎn)動(dòng)類物體)的開啟、關(guān)閉和滅火器(無約束自由移動(dòng)類物體)的交互操作仿真。
圖6 手臂力覺反饋裝置Fig.6 Arm and hand force feedback device
經(jīng)多人次測(cè)試,在抓住或松開艙門或滅火器把手時(shí),抓持判斷準(zhǔn)確,狀態(tài)切換連續(xù)自然,無跳躍感,用戶抓取或松開動(dòng)作與現(xiàn)實(shí)世界操作動(dòng)作相似。抓住滅火器后,滅火器隨著用戶無約束地任意移動(dòng)。抓住艙門把手后,用戶做開啟艙門或關(guān)閉艙門的動(dòng)作,虛擬手和艙門按照隨動(dòng)算法,跟隨用戶動(dòng)作繞艙門轉(zhuǎn)軸轉(zhuǎn)動(dòng),在這過程中,虛擬手與艙門把手直接的接觸位置不變,虛擬手不斷根據(jù)用戶的動(dòng)作調(diào)整姿態(tài)。整個(gè)操作過程,用戶的動(dòng)作輸入和虛擬環(huán)境中的虛擬手和滅火器或艙門的運(yùn)動(dòng)視覺反饋一致,操作實(shí)時(shí)無延遲感,動(dòng)作自然,同時(shí)在操作過程中手指有抓握力反饋。部分操作結(jié)果截圖如圖7和圖8所示。
在虛擬手抓取艙門和滅火器移動(dòng)過程中記錄圖像刷新率,開艙門過程中刷新率范圍為[50,33],操作滅火器過程中刷新率范圍[50,41],從動(dòng)作輸入到圖像刷新輸出無延遲感,達(dá)到實(shí)時(shí)交互操作仿真。
圖7 開艙門操作仿真Fig.7 Simulation of hatch opening operation
圖8 滅火器操作仿真Fig.8 Simulation of fire extinguisher operation
從應(yīng)用實(shí)例可以看出,本文提出的操作仿真流程能處理不同約束類型物體的交互操作仿真;隨動(dòng)算法保證了在交互操作過程中手部動(dòng)作與虛擬手及虛擬物體運(yùn)動(dòng)視覺反饋協(xié)調(diào)一致,操作結(jié)果顯示,本文的隨動(dòng)算法有效;整個(gè)交互操作實(shí)時(shí)無延遲感,交互操作動(dòng)作自然,抓持和隨動(dòng)過程均正常順利完成,處理流程及抓持算法合理。
1)給出了交互操作仿真過程中繞軸轉(zhuǎn)動(dòng)類物體的隨動(dòng)算法,擴(kuò)展了文獻(xiàn)[7]中隨動(dòng)算法。該算法實(shí)現(xiàn)了虛擬手操作繞軸轉(zhuǎn)動(dòng)類物體過程中抓取位置不變,虛擬手和被操作物體能夠跟隨用戶動(dòng)作協(xié)調(diào)運(yùn)動(dòng),保證了交互操作過程中手部動(dòng)作與虛擬手及虛擬物體運(yùn)動(dòng)視覺反饋協(xié)調(diào)一致。
2)給出了支持三類約束類型物體的虛擬手操作仿真統(tǒng)一處理流程,經(jīng)無約束自由移動(dòng)類物體和繞軸轉(zhuǎn)動(dòng)類物體實(shí)際應(yīng)用,該仿真流程合理。
3)通過空間站艙門和滅火器的操作仿真應(yīng)用,證明了本文提出的仿真方法有效,為后續(xù)航天員虛擬現(xiàn)實(shí)訓(xùn)練提供了一種基礎(chǔ)算法和理論基礎(chǔ)。
[1] 蔡嫻娟,程成,Alhazmi Marwah,等.虛擬制造環(huán)境中虛擬手的行為構(gòu)造[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2015, 27(3): 499?507.
Cai X J, Cheng C, Alhazmi M, et al.Research on behavior simulation of virtual hand in virtual manufacturing environ?ment[ J].Journal of Computer?Aided Design &Computer Graphics, 2015, 27(3): 499?507.(in Chinese)
[2] 李志華,鐘毅芳.虛擬手模型及其抓取技術(shù)[J].小型微型計(jì)算機(jī)系統(tǒng), 2003, 24(6):1071?1074.
Li Z H,Zhong Y F.A virtual hand model and its rule for grasping[ J].Mini?Micro Systems, 2003, 24 (6): 1071?1074.(in Chinese)
[3] 朱書敬.具有運(yùn)動(dòng)真實(shí)感與抓取穩(wěn)定性的虛擬手仿真技術(shù)研究[D].杭州:浙江大學(xué),2012.
Zhu S J.Virtual Hand Simulation Research With Realistic Motion and Robust Grasping[D].Hangzhou: Zhejiang Uni?versity, 2012.(in Chinese)
[4] 胡晨,張學(xué)聃,馬慧敏.適應(yīng)物體形狀的虛擬手抓?。跩].中國圖象圖形學(xué)報(bào), 2017,22(5): 663?670.
Hu C, Zhang X D, Ma H M.Shape?adaptive virtual hand?grasping method[J].Journal of Image and Graphics, 2017,22(5): 663?670.(in Chinese)
[5] 邸偉.虛擬手交互抓持力仿真研究[D].杭州:浙江理工大學(xué),2015.
Di W.The Simulation Research of Virtual Hand Grasping Force[D].Hangzhou: Zhejiang Sci?Tech University, 2015.(in Chinese)
[6] 趙美榮.基于虛擬手交互技術(shù)的研究[D].太原:中北大學(xué),2016.
Zhao M R.Study on the Interaction Technology Based on Vir?tual Hand[D].Taiyuan: North University of China,2016.(in Chinese)
[7] Chen X W,Liu Y Q,An M,et al.Astronaut operating simu?lation in space station based on virtual reality[C] //64th In?ternational Astronautical Congress, Beijing, 2013: 4666?4677.
[8] 陳學(xué)文,劉玉慶,朱秀慶,等.基于手指運(yùn)動(dòng)方向的動(dòng)態(tài)碰撞檢測(cè)算法及實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2011, 23(12):2676?2681.
Chen X W,Liu Y Q,Zhu X Q,et al.Dynamic collision de?tection algorithm based on direction of fingers grasping virtual object and implementation[J].Journal of System Simulation,2011, 23(12): 2676?2681.(in Chinese)
[9] Qin H H,Song A G,Liu Y Q,et al.Design and calibration of a new 6 DOF haptic device[J].Sensors, 2015, 15(12):31293?31313.