摘 要:數據手套因為其逼真的人機交互方式,在虛擬現實中越來越廣泛地得到應用,尤其在工業裝配、仿真手術、控制及手勢識別等多個領域。通過分析數據手套的數據特征,運用道格拉斯普客算法,解決了大數據量下的數據手套交互時間延遲問題。通過改進優化數據方法,實現了數據在輸入設備采集時大量數據的優化,將數據手套的數據進行優化在數據平滑上進行了處理,得到逼真的虛擬空間虛擬手或者機械手的交互效果,改善了虛擬手在仿真時的顫抖錯誤,實現了穩定的虛擬手交互效果。
關鍵詞:虛擬現實;數據手套;道格拉斯-普客
1 數據手套的工作方式
數據手套在虛擬現實系統中占據重要位置,是一種非常昂貴的人機接口設備,其功能可以實時在虛擬系統中獲取人手的各個關節空間坐標,以便在虛擬環境中再現人手動作,達到仿真的人機交互目的。數據手套有很多種類,以cyber數據手套為例,可以對手部主要骨骼部位的關節運動進行實時測量。系統可根據反向運動學原理測算出手指關節的位置,并將數據施加到相應的骨骼上。由于慣性傳感器主要依賴無處不在的地球重力和磁場,所以捕捉服在任何地點都可以正常使用,無需事先作任何準備工作。每個傳感器將即時數據通過發射盒以藍牙或紅外方式發射,執行標準為802.15.4 915兆赫。在計算機中,利用藍牙驅動即可直接讀取藍牙傳輸的數據。采用慣性傳感器無需鋪設特殊裝置,無需進行長時間校準。相對其它光學動作捕捉系統,不會出現由標記物閉塞而造成的數據損失。
數據手套實現的關鍵在于各個生物器官如手指各關節的各個有效部位的彎曲、外展等測量。并形成在此基礎上的手勢的表現。完成表現不取決于人體手部姿態的建模,而是取決于確定傳感器測量數據和手指各關節運動姿態的對應關系。對一個具體的數據手套應用過程,可設由手部各彎角組成的向量f=(f1,f2,…,fn)與對應傳感器示數組成的向量d=(d1,d2,…,dn)。顯然f和d之間存在著映射關系。數據手套的實現即是根據向量d,找出原映射關系的逆映射,從而表現出手部各部位的姿態[2]。手部軟組織的存在,是人手和機械手區別的主要差異,使得人手無法和普通的剛性桿鉸鏈相比,這就加大了問題求解的復雜性。手部某一關節的運動,不僅會作用于對應的傳感器的示數發生變化,而且通過軟組織的相互作用,使其他的傳感器示數也發生變化。如果要求保證一定的精度,必須對求得的逆映射進行解耦計算。由于數據手套的傳感器數目較多,而且響應的標定和解耦計算十分復雜,進行實時處理時困難較大,因此,目前數據手套的發展與應用只是處于初級階段,還不十分成熟。
2 數據手套的數據
對于人手來說,最低要求也必須滿足每個關節有三個方向的自由度位移和三個方向自由度的旋轉。一般最少采用14個慣性傳感器,每個傳感器分別采集每塊骨骼的三個方向的自由度位移和三個方向自由度的旋轉相關數據,如果虛擬現實的效果達到逼真的效果,就必須和PAL電視制式相同,最少達到25f/s。所以1秒鐘產生的數據量為:14*9*25=3150個。傳感器的數據更新頻率是100赫茲,實際產生的數據量遠遠大于3150個。由于反饋的效果需要實時,系統需要處理將大量的運動數據,對于虛擬現實平臺來說不可能把所有的CPU資源都用來計算虛擬手,所以數據量過大一直是虛擬手亟待解決的問題。從信息傳輸單元(負責把從信息捕捉單元捕捉的手部的運動位置數據快速準確地傳輸到計算機進行處理)得到的每一個關節的數據在導入計算機中時,以關節為基數建立一個數組,將位移、旋轉、放縮的X、Y、Z的值作為一個三行三列的數組來存儲,如圖1所示。
圖1 單個手部關節的反饋數據格式
圖中,tx,ty,tz為位移X、Y、Z的值;rx,ry,rz為旋轉的X、Y、Z值; sx,sy,sz為放縮的X、Y、Z值。另外,數據手套在人手上不能完美的附著手部,在快速運動時,指關節等處有明顯的側滑和位移。此時的數據會導致虛擬現實中的人手出現關節的“滑抖”現象。而這些數據量中間經常會有關節“滑抖”出現,在虛擬現實仿真中成為最后顯示效果的主要問題。
3 道格拉斯-普客算法優化數據
道格拉斯-普客(Douglas-Peucker)算法是矢量曲線壓縮的經典算法,它從整體角度考慮一條完整的線或某一確定的線段。首先選取線段的兩個端點,然后計算線段內其余各點到連接兩端點的直線距離。如果這些點到直線的垂直距離中最大值仍小于設定閾值,則所有這些點都被舍去;若最大距離大于設定閾值,則此點保留,并以此點將線段分為兩段,對這兩段重復計算垂距,分別檢查最大垂距是否大于設定閾值。重復此過程直到沒有多余的點需要被舍去為止。
根據上述算法的核心思想,通過對比來決定哪個數據點是合理的。首先分別計算出Joint三個方向上(x,y,z)相鄰點的平均值,由于手部動作的連貫性,無論是位移還是旋轉都是應該平滑的運動曲線,當相鄰點的平均值有較大變化時,一般都是因為捕捉模塊在手部上的滑動造成的。在動做捕捉的起始時間,計算相鄰的數據的差,利用公式△tx(k)=△tx(k)-△tx(k-1),k為自然數。比如△tx1=tx1-tx0, △tx2=tx2-tx1。
其次根據經驗,當(△tx2-△tx1)∈{-T,T},其中T就是閥值[5],通過調整閥值來控制運動曲線的的優化量。當超出閥值規定范圍時,直接將導致此偏差的臨近值中最大的刪除。最大值Maxo和最小值Mixo與閥值的數據上限Zs和下限Zx進行對比,如果超過專家數據的上限,即Maxo>Zs,就直接刪除;反之,負數的值也一樣,即-Mix +1)=(tx(J+2)+tx(J+3))/2, △tx(J+2)=(tx(J+4)+tx(J+5))/2,…在控制虛擬手的時候時直接應用△tx序列,而不是原來的tx,這樣就在得到的位移結果總量上少了一半,并且防止了滑抖現象。 4 結束語 本文分析了基于磁性感應器的數據手套工作原理,并根據原理獲得了數據的采集格式和方法。對各個手關節的數據總量進行估算,并指出大量指關節數據采集中所遇到的問題和困難。通過分析指關節數據,在矢量中定義了閥值,利用道格拉斯算法的精髓,將大量冗余數據進行中值濾波,使得數據量大量減少并減少了錯誤偏移,通過實驗證明在人手的虛擬仿真中效果大為改善。 參考文獻 [1]高國陽,徐超,周東翔.虛擬手的遠程控制實現[J].計算機工程與應用,2011,47(23):79-83. [2]孫靜靜,焦學健,柴山.基于數據手套的虛擬手的實現[J].農業裝備與車輛工程,2012(2):54-57. 作者簡介:孫浩鵬(1975-),男,漢,吉林長春人,碩士,講師,研究方向:虛擬現實。