第四章 系統實現
4.1 建立虛擬實境環境
4.3.1 PHANToM Omni® 的物件抓取方式
PHANToM Omni® 的筆狀握桿上面,共有兩個按鈕,可供開發者作為力回饋 事件的觸發,本研究中,只取其中的 Button1 按鈕的開關作為 PHANToM Omni®
的抓取判斷。
圖4.11 PHANToM Omni® 兩個按鈕 抓取流程
當使用者按下按鈕時,表示使用者有意願抓取物件,此時,系統會根據程式 的邏輯進行抓取判斷,若通過邏輯判斷,則抓取事件被觸發。視覺回饋方面,螢 幕畫面會顯示虛擬物體在虛擬環境中被使用者抓取,此後,虛擬物體便會跟隨 PHANToM Omni® 的操縱筆頭位置一齊移動與轉動,而 PHANToM Omni® 裝置 也會在抓取的過程中,根據虛擬物體預先所設定好的質量值,提供使用者重力力
55
回饋模擬,用以模擬真實世界中,使用者抓取物體後,所感受到的物體重量。
當使用者放開按鈕時,系統會終止抓取。在螢幕畫面上,虛擬物體便不再跟 隨著 PHANToM Omni® 的操縱筆頭一齊移動轉動,且 PHANToM Omni® 提供的 重力力回饋也會終止,模擬真實世界中,使用者放開物體的情形,並且系統會開 始進行組裝接合的判定。
三種抓取模式
在本研究中,PHANToM Omni® 擁有三種不同的操作模式,分別為板手、螺 絲起子和手的模式。這三種模式在握拿的手勢上和抓取虛擬物體時的角度邏輯判 斷上皆不相同。
工具模式(板手、螺絲起子)
本系統為了提供使用者更擬真的操作經驗,將 PHANToM Omni® 的筆狀外 形模擬成兩種常見的組裝工具,分別是板手、螺絲起子,表 4.1。而在握拿 PHANToM Omni® 的操縱筆時,為了能更接近真實工具的操作,使用者須按照在 真實環境中的工具的握拿方式來握拿操縱筆,見表 4.3。
在真實世界中,我們會利用工具來幫助細小結件的組裝,例如用螺絲起子提 取、旋轉螺絲,用板手來夾取螺帽等。在進行這些工具的操作時,工具和結件之 間需要有一定的操作角度,例如利用螺絲起子提取螺絲時,螺絲起子的尖端方向 需要和螺絲的軸向近乎平行; 用板手來夾取螺帽或其他結件時,板手握桿方向須 和結件的軸向垂直。如表 4.2 所示。因此,本系統亦將這些工具操作的角度加入 物件抓取的判斷邏輯之中。
56
扳手 spanner
螺絲起子 screw driver
手 hand
表4.1 PHANToM Omni® 三種操作模式圖
扳手 spanner
螺絲起子 screw driver
需和物體成約 90 度角才可抓取物體 需和物體成約 180 度角才可抓取 物體
表4.2 PHANToM Omni® 二種工具模式抓取邏輯示意圖
Ɵ
Ɵ
57
扳手 spanner
螺絲起子 screw driver
表4.3 PHANToM Omni® 二種工具模式操作示意
程式開啟時,我們使用 unity3D 中的 InverseTransformVector 函式,將虛擬世 界中的 y 坐標方向,轉置至每個虛擬結件上,也就是將世界座標轉置至虛擬結件 上,以進行結件長軸方向的確認。而後,當使用者欲抓取虛擬結件時,再將工具 的長軸方向與虛擬結件的長軸方向用 TransformVector 函式轉置至虛擬世界坐標 中,進行夾角的計算,於是,便能找出工具與結件間的夾角關係。若工具為板手,
依操作經驗,工具與結件的夾角須接近 90 度,因此,θ>75 且θ<115 判定為可抓 取;若工具為螺絲起子,則工具與結件的夾角須接近 180 度。因此,θ>160 判定 為可抓取。如表 4.2 所示。
58
手模式
手模式使用 Rigid proxies 法模擬手部,在本系統的設計上為一參考模式。外 型形似人類的手部,見表 4.1,但大小未按照真實的手部比例,且缺乏手部各個 關節活動的自由度,只有在使用者測試時才會使用到。在握拿方面,不需要使用 特定的握拿方式來握 PHANToM Omni® 的操縱筆;在抓取方面,也不限制抓取角 度,如同真實世界中,人類手部的自由抓取。
程式實作
PHANToM Omni® 的抓取邏輯判斷步驟,圖 4.12 所示。
1. 先確認 PHANToM Omni® 的按鈕處於關閉狀態
2. 由 DLL 的內建函式 PluginImport.GetTouchedObjectName()來判定 PHANToM Omni® 的筆尖是否有碰觸到虛擬物體
3. 判定 PHANToM Omni® 的按鈕是否開啓 4. 判斷物體是否為可抓取物體。
(當虛擬物體成功接合後,此虛擬物體會被程式設定為不可抓取之物體,詳 細內容細述於 4.4.1。)
5. 根據使用者當下所選用的 PHANToM Omni® 操作模式(板手、螺絲起子和 手)進行該模式的抓取邏輯判斷。
6. 若以上四種抓取邏輯判定皆順利通過,則系統便會觸發抓取事件,開始視 覺上及觸覺上的力回饋反應。
59
圖4.12 PHANToM Omni® 的抓取邏輯判斷步驟圖
Start
End If button is on?
Check if previous button state is off?
Check If the object is Grabbable?
If grabbing mode is tool ? If phantom touch an object?
Count the angles of the tool
Scanner Screw driver
If the tool has correct manipulated angle ? Check which tool is it
Change color to blue
Grab
If button state is off NO
60