李 嘉, 侯 文, 夏文文, 楊艷芳, 陳定方
(1. 海軍潛艇學院動力操縱系,山東 青島 266042;2.武漢理工大學智能制造與控制研究所,湖北 武漢 430063)
通過分析近幾年虛擬現實技術的發展,可明確得出人們對于虛擬現實的要求已經不僅僅是停留在視覺上,人們更希望可以有更好的“沉浸感”,因此對于聽覺、觸覺等的要求就不斷增多。基于力反饋的虛擬拆卸系統的實現主要是將虛擬現實與力反饋器相結合,實現更好的人機交互。人們可以通過更多的感官來更好地實現與虛擬世界的交流。
自20世紀90年代以來,力/觸覺反饋的研究蓬勃發展,目前已經取得了一定的研究成果[1]。國內外絕大多數力反饋研究是基于Phantom(一種具有6自由度輸入,可產生3自由度力反饋的設備),研究主要針對剛體或者柔體的力/觸覺反饋,但該力反饋設備價格昂貴,難于商用和推廣。國內江南大學的張秋菊、童明等人自行研制了基于電磁原理的二維力交互裝置——力感鼠標,并以此為硬件基礎,進行了簡單力覺交互實驗,但力感鼠標的性能有待進一步完善,不能形成量產,無法應用于成熟的虛擬拆裝系統。
基于力反饋的虛擬拆卸系統,為了實現更好的沉浸感和人機交互,在系統實現過程中要解決碰撞檢測問題。碰撞問題牽涉到碰撞檢測和碰撞響應兩部分內容。碰撞響應問題屬于力學的研究領域,碰撞問題的具體應用很廣泛[2]。例如,虛擬環境應用中的飛行員和宇航員的培養與訓練、機器人的路徑規劃和學習、交互式動畫系統、人體軀干的配合等。碰撞檢測問題按運動物體所處的空間可分為二維平面碰撞檢測和三維空間碰撞檢測。由于平面物體的構造都可用多邊形來表示,故其檢測算法相對要簡單一些;而三維物體的構造比較復雜,所以,其碰撞檢測算法也比較困難。
本系統利用 PHANTOM Omni力反饋裝置(如圖 1),結合 VC++與 OSG(open scene graph),實現了虛擬物體的拾取和交互式移動,針對典型機械裝備,開發了基于力反饋的交互式虛擬拆卸系統。該系統目的是通過利用力反饋器設備實現對機械設備的虛擬拆卸,并完成維修和保養等基本操作。

圖1 PHANTOM Omni力反饋器
為了虛擬拆卸系統能實現應有的功能,對于系統總體框架和各部分小系統的集成研究都是至關重要的[3]。
如圖2所示,基于力反饋的虛擬拆卸仿真系統主要由兩大部分組成:計算機生成的虛擬環境和力反饋設備。該系統是一個雙向閉環系統,首先用戶通過操作力反饋器末端的手臂完成 6自由度的輸入,接下來由空間匹配模塊來完成位姿的轉換,位姿是不斷發生變化的,空間匹配將其作為計算機虛擬環境的輸入。力覺/觸覺渲染模塊在整個力反饋過程中發揮了很重要的作用,首先要根據虛擬環境與代理節點以及虛擬信息的交互狀態快速的進行反饋力的計算,完成反饋力的計算之后要及時的將反饋力的結果發送給力反饋器設備,力反饋器設備主要任務就是根據所要輸出的反饋力的大小和方向來驅動電機進行轉動,目的就是把要輸出的反饋力轉化為機械能,這樣用戶才能感受到反饋力的大小。

圖2 力反饋應用系統結構圖
如上述所知,要實現的關鍵技術就是空間匹配模塊和力覺/觸覺渲染模塊。這兩個模塊分別是需要借助空間匹配算法和反饋力計算算法來實現的。
虛擬維修訓練系統中,對于虛擬實體的拾取、操作與控制,依據交互設備的不同有兩種類型交互方法[4]:基于鼠標和鍵盤的交互方法(對應非沉浸式虛擬維修);基于力反饋器、空間球、立體眼鏡、空間定位裝置和數據手套,采用直接操縱技術的交互方法(對沉浸式虛擬維修)。本系統對這兩種交互方法都進行了探索和實現。
鼠標和鍵盤交互方法的實現在本系統中是利用了兩種方法實現的[5]:其一,利用 3D圖形開發庫OSG中Dragger類實現;其二,結合了圖形用戶接口CEGUI和3D圖形開發庫OSG進行了系統實現。
第一種方法,利用OSG中的Dragger類進行拖曳拆卸,拖曳技術可以在X、Y、Z軸3個方向對零件進行平移操作。將拖曳器與零件節點共同添加到父節點中,即可實現對該零件的拖曳。該技術使操作人員手動模擬拆卸各個零件,使操作人員對拆卸過程和順序有更清楚地練習和熟知,實現的效果如圖3所示。

圖3 利用拖拽技術實現拆卸圖
第二種方法是將圖形用戶接口CEGUI和3D圖形開發庫 OSG相結合進行實現,用戶可直接通過選取某一零件,零件的名稱會在圖形界面上高亮顯示。用戶也可以按順序選擇操作的零件,選中后,與該零件匹配的拖曳器會顯現供用戶操作。其圖形界面如圖4所示。

圖4 結合CEGUI和OSG的虛擬拆卸圖
在本系統中,研究基于力反饋器的交互方法是基于osgHaptics中HapticsDevice類的拾取法。力反饋虛擬拆卸流程如圖5所示。

圖5 虛擬拆卸流程圖
基于力反饋裝置的虛擬拆卸系統的實現的關鍵技術主要包括力反饋器與模型的關聯技術、利用力反饋器實現模型的拾取及碰撞檢測技術等[6]。
在設備初始化完成之后,需要為力反饋器在三維虛擬場景中找到一個“代理”,將力反饋器的運動狀態實時地反應到圖形渲染中。
這里的關聯僅僅是將力反饋器與其在三維場景中的“代理”發生聯系。真正有意義的部分在于如何通過力反饋器來控制其“代理”。力反饋器與proxy_sphere節點進行關聯,proxy_shpere又是矩陣位移節點 proxy_transform節點的子節點,也是該分支上的葉子節點。其層次關系如圖6所示。

圖6 “代理”節點分支層次圖
從圖6可以看出,力反饋器的最終的“代理”節點是proxy_sphere節點,力反饋器的運動能在該節點上實時地顯示出來。將力反饋器的運動軌跡在三維場景中能實時地反應是利用的“代理”節點的父節點,即proxy_trans節點。
osgHaptics是一款由 C++編寫的,基于Windows平臺的工具包,由瑞典Umea University VRLab實驗室開發[7]。osgHaptics將力覺渲染融入OSG渲染庫。它采用SensAble公司的OpenHaptics設備。同時,它還支持多觸覺設備。
用Visual Studio 2005打開osgHaptics.sln文件,為 osgHaptics和 osgSensor兩個項目配置OpenHaptics工具包中的include、lib兩個文件夾以及相應的 DLL文件,還需在本地計算機安裝PHANTOM 的驅動,整個環境的配置與 osgAL的編譯過程類似。編譯成功后會生成osgHaptics.dll、osgHaptics.lib、osgSensor.dll、osgSensor.lib 4個鏈接庫。利用這4個庫以及工具包中的文件即可結合PHANTOM Omni力反饋器進行虛擬拆卸系統的開發。
力反饋器控制在虛擬場景中的“代理結點”,圖 7中黃色區域中的結點。該結點是通過讀取pen.ac這個模型實現的。在操作力反饋器時,虛擬場景中的“代理結點”也會隨之發生位移、旋轉等。在“代理結點”接觸到場景中的模型中的零件時,零件的顏色被標記為紅色。當“代理結點”與零件模型有重疊部分,在移動力反饋器時會明顯地感覺到一定的阻力;當“代理結點”與零件模型剛好接觸時,此時,操作員可感覺到一股巨大的阻力,相比“代理結點”與零件模型有重疊時的情景要大的多。在“代理結點”與方塊模型發生碰撞后,按下力反饋器手臂上的白色按鈕,零件模型會依附在“代理結點”上,操作人員操作力反饋器可將零件模型放置到合適的位置。
該類繼承于 osgSensor::Sensor。從該類的頭文件描述可以獲知,該類實現了讀取設備數據、關閉設備、返回力反饋器的位置與角度、獲取設備的線性速度、力度等數據。其內部還包含兩個內部類—RenderForce和 WorkspaceStruct。HapticsDevice類的層次結構簡圖如圖7所示。具體的實現代碼如下。


圖7 HapticsDevice類的層次結構圖
在力反饋虛擬拆卸系統中,為了實現更好的沉浸感和達到更好的交互效果,在拆卸過程中加入了碰撞檢測技術。
ODE(open dynamics engine)有一個內嵌的碰撞檢測系統[8]。ODE的碰撞檢測系統通過“空間”的概念可以快速的確定潛在相交的物體。ODE基本對象[9]:
仿真世界:存儲物體對象的容器。
剛體:仿真系統中主要操作的對象。具有物理屬性。
幾何體:碰撞系統中的基本對象。只具有幾何屬性。
碰撞空間:用來簡化和加快碰撞檢測的一個對象。
本系統利用ODE與OSG結合實現的碰撞檢測。圖8所示為ODE與OSG相結合的模擬流程,主要的結合過程如下:
創建一個ODE動力學世界;
(1)創建動力學世界中的各種剛體;
(2)設定各個剛體的狀態(位姿、質量、密度等)信息;
(3)創建動力學世界中的關節;
(4)聯結關節到剛體上;
(5)設定所有關節的參數;
(6)創建碰撞空間和碰撞幾何對象;
(7)創建關節組并納入所有的接觸關節;
(8)循環:①根據具體情況,給剛體施加力;②根據具體情況,調整關節參數;③調用碰撞檢測函數;④為每個碰撞點創建一個接觸關節,并將其加入接觸關節組中;⑤開始仿真步(更新場景);⑥移除接觸關節組里的所有關節;
(9)銷毀動力學世界和碰撞世界。

圖8 ODE與OSG結合的碰撞檢測流程
建立ODE中對應幾何體:將場景模型和設備模型轉化為OSG可識別模型,并將其三角化。構建ODE幾何體對象:將ODE的模擬結果傳遞給OSG,以實現場景的數據交互與實時更新。
在項目研發的初期階段,結合OSG三維圖形引擎與PHANTOM Omni力反饋器,實現通過力反饋拾取場景中的物體。項目效果如圖9所示。
力反饋技術是虛擬拆卸系統中實現更好的人機交互訓練的一個核心技術。本文簡要敘述了PHANTOM力反饋器的使用方式及相關技術,并對osgHaptics這一開源項目進行敘述,提出了基于osgHaptics中HapticsDevice類的拾取方法,基于力反饋器與虛擬實體運動的關聯的拆卸方法,開發出一套實用的基于力反饋的虛擬拆卸系統,有效的提供了一種擁有更好“沉浸感”的虛擬拆卸境,使裝配維修人員更好的完成裝配、拆卸、維修等工作,同時還有效的推進機械模擬訓練的現代化發展[10]。

圖9 基于力反饋器的虛擬拆卸系統
[1] 馬文濤. 基于力反饋裝置的虛擬裝配人機交互研究[D].大連: 大連海事大學,2011.
[2] 鄭太雄,何玉林. 基于觸覺反饋和運動約束的虛擬裝配操作[J]. 計算機工程與應用,2004,40(5): 84-86,90.
[3] 陳定方,羅亞波. 虛擬設計[M]. 2版. 北京: 機械工業出版社,2007: 28-40.
[4] 閆鋒欣,侯增選,張定華,祁小苑,寧志鵬. 支持觸覺力反饋的虛擬油泥造型系統[J]. 中國機械工程,2009,20(19): 2372-2377.
[5] 肖 鵬,劉更代,徐明亮. OpenSceneGraph三維渲染引擎編程指南[M]. 北京: 清華大學出版社,2010,3:197-219,320.
[6] 夏平均,姚英學. 虛擬裝配的研究綜述與分析(I)[J].哈爾濱工業大學學報,2008,40(5): 740-744.
[7] 范玉青. 波音 787飛機總裝配線及其特點[J]. 航空制造技術,2011,23(Z2): 38-42.
[8] 侯 鵬,張麗新,楊碧琦,楊國云. 某型號衛星虛擬裝配技術研究及應用[J]. 航空制造技術,2011,(22):70-73,93.
[9] 彭 濤,李世其,王峻峰,徐 遲. 基于增強人機交互技術的虛擬裝配[J]. 計算機輔助設計與圖形學學報,2009,21(3): 354-361,368.
[10] 李勛祥,饒 成,陳定方. 基于 Virtools的視景系統優化技術研究[J]. 武漢理工大學學報(交通科學與工程版),2008,32(1): 100-103.