第四章 系統實現
4.1 建立虛擬實境環境
4.2.1 PHANToM Omni® 力回饋
Sensable Technologies 公司所生產的 OpenHaptics Toolkit Version3.0 為力回饋 開發應用的軟體,可用來操縱 PHANTOM 系列的力回饋裝置。而在 Unity3D 中,
本系統使用由 The Digital Design Studio (DDS), Glasgow School of Art 免費提供的 O
C
A Y
height
A’
C’
49
應 用 程 式 庫 來 達 成 PHANToM Omni® 的 力 回 饋 , 此 應 用 程 式 庫 便 是 將 OpenHaptics Toolkit 中較為高階的應用程式界面 HLAPI 包裹,使其可以在 Unity3D 中使用。
圖4.7 OpenHaptics Toolkit 函式庫 HLAPI
HLAPI 為 使 用 高 階 C 語 言 開 發 而 成 的 應 用 程 式 界 面 (Application Programming Interface),它可根據常見的電腦繪圖程式界面 OpenGL 所生成之圖 形產生相對應之力回饋。使用者可使用 OpenGL 內的基本圖形
(geometric primitives)像三角形、點、線等,輔以觸覺材質的設定, 如硬度、摩 擦力等,來建構力回饋環境。
力回饋生成引擎即是綜合以上的資訊設定並收集力回饋裝置 (PHANToM Device)所讀入的位置訊息,進行計算分析,最後生成相對應之力回饋,來達到擬
PHANTOM DEVICE DRIVERS (PDD)
HAPTIC DEVICE API (HDAPI) HAPTIC LIBRARY API
(HLAPI) QUICK HAPTICS
50
真力回饋的效果。
如同 OpenGL,HLAPI 背後的邏輯為狀態機制(state machine),大部份的 HLAPI 指令會修改當下的力回饋生成狀態(rendering state),而當下的力回饋生成 狀態也可使用 HLAPI 求得。力回饋狀態包含觸覺材質設定、物體的位置、旋轉 量和力回饋模式等人為操作模式,亦包含經由力回饋裝置所獲得的操縱桿之坐標 和旋轉量。HLAPI 也提供事件呼叫模式(event callback functions)的使用,當事件 如觸碰物體或按壓按鈕後,事件呼叫模式便會傳送訊息給力回饋生成機,產生相 對應之力回饋反應。
HLAPI 有三種生成力回饋的模式分別為形狀力回饋生成(Shape rendering)、
效果力回饋生成(Effect rendering)和替身力回饋生成(Direct proxy rendering)。
當使用形狀力回饋生成模式時,HLAPI 允許使用者使用 OpenGL 的函式來
51
會增大,阻止力回饋點繼續往下穿刺進入虛擬物體,給使用者觸碰到物體的擬真 力回饋感受。如圖 4.8 所示。
圖4.8 替身力回饋的生成原理 本研究之肢覺回饋生成
本研究選用 DDS 所提供的應用程式庫,其函式的呼叫步驟和力回饋生成方 式都和 HLAPI 一樣。而在 3D 圖形的生成方面,藉由 Unity3D 的幫助,3D 圖形 可由外部檔案匯入,不需要直接使用 OpenGL 的函式來生成圖形,因此,3D 圖 形的生成變得更為簡單自由。在本研究中,大部份的零組件皆非基礎 3D 圖形,
因此,多是使用替身力回饋生成法生成肢覺回饋。
在虛擬組裝系統中的每個虛擬物件,都擁有一個可供調整量值的力回饋面
板,圖 4.9 所示。而力回饋面板上的相關力回饋量值可由設計者依照物體在真實 世界中的屬性來進行調整。當系統運作時,系統會讀取這些量值並將之轉換為使 用者所獲得的肢覺回饋。在本研究中,PHANToM Omni® 的肢覺回饋包含物體被 使用者抓起時,系統所提供的重力回饋和 PHANToM Omni® 的操縱筆頭觸碰到 物體時所產生的接觸力,如靜摩擦力、動摩擦力。另外,物體本身的機械性質像 硬度也都可以藉由調整力回饋面板上的量值來完成設定。
Object Surface
Previous Haptic Device Position
Proxy Position
New Haptic Device Position spring
damper
52
圖4.9 PHANToM Omni® 力回饋量值面板 程式實作
PHANToM Omni® 的力回饋環境建置及生成步驟,如圖 4.10 所示。
起始步驟
1. 輸入在虛擬實境中所需的力回饋工作環境大小。
2. 設定力回饋生成面,本研究選用的是物體的外表面 (front)。
3. 由相機視角來決定力回饋環境的面向。
4. 互動模式設定。本研究選用的模式能提供物體表面接觸力回饋以及基礎環 境力的生成,更能在物體被抓取時提供重力回饋。
5. 將 3D 幾何環境轉換成 OpenGL 的形式。
6. 設定環境的空氣黏滯力和物體的重力、硬度、摩擦力等相關機械力。
7. 開始偵測力回饋事件,如 PHANToM Omni® 操縱筆上的按鈕的按壓狀態。
力回饋迴圈
1. 根據相機的視角更新力回饋工作環境之面向 2. 生成力回饋
3. 更新 PHANToM Omni® 操縱筆的筆頭位置,以及其替身點的位置 4. 檢查 PHANToM Omni® 的力回饋點是否碰觸物體以及更新 PHANToM
Omni® 操縱筆上的按鈕按壓狀態 5. 更新虛擬物體的位置和方向
53 1. setup the haptic workspace 2. set touchable faces
3. workspace orientation 4. set the interaction mode 5. set the haptic geometry
6. define the environmental & mechanical properties 7. launch check-up for haptic events
8. update the haptic workspace 9. render the haptic frame
10. get haptic device proxy or physical tip values 11. get contact information & button events 12. update matrix transform of manipulated object
13. haptic context clean up 14. OpenGL context clean up