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