張雁鵬,陳世均,高建勇
(蘇州熱工研究院有限公司 設(shè)備管理部,廣東 深圳 518028 )
虛擬現(xiàn)實(VR,virtual reality)設(shè)備是一種頭戴式設(shè)備,允許用戶通過顯示立體視覺圖像與三維虛擬現(xiàn)實環(huán)境進行交互。該設(shè)備可以分析用戶的頭部狀態(tài),并在虛擬現(xiàn)實世界中調(diào)整虛擬攝像機的位置,以增強沉浸感。隨著VR技術(shù)的發(fā)展,基于這項技術(shù)的教育和培訓越來越流行[1-7]。
使用虛擬現(xiàn)實進行教育和培訓可以與使用二維計算機輔助教學模擬相媲美。在每一個層次的教育中,VR都有發(fā)揮作用的潛力,引導學習者獲得新發(fā)現(xiàn),激勵、激發(fā)學習熱情。學習者可以在學習環(huán)境中獲得一種存在感、一種融入環(huán)境的感覺。在教育和培訓中使用VR的優(yōu)勢可以總結(jié)為:
1) 沉浸式虛擬現(xiàn)實提供第一人稱非象征體驗,可以專門設(shè)計適應于幫助某個學生的學習材料;
2) 這些體驗在常規(guī)教育中無法獲得。
3) 這種體驗構(gòu)成了我們與外界日?;拥拇蟛糠?,盡管學校更提倡第三人稱的象征體驗。
4)知識建構(gòu)理論與虛擬現(xiàn)實技術(shù)的融合,使得學習能夠通過虛擬世界中物體相對大小的操縱,通過傳遞其他不易察覺的信息源,以及通過具體化迄今為止無法表達的抽象概念來促進。
采用外部視覺跟蹤設(shè)備對頭部進行姿態(tài)測量和運動感知[8-9],雖然具有很高的精度,但是無形之中增加了教學成本和場地使用的局限性。此外,還需要兩種系統(tǒng)間的通信,難免會存在時間上的延遲。將低成本慣性測量單元(IMU,inertial measurement unit)與VR設(shè)備進行剛性連接,然后對人體頭部姿態(tài)和運動狀態(tài)進行測量的方式[10-11],可以充分利用IMU中嵌入的加速度計、陀螺儀以及磁強計等傳感器對姿態(tài)和運動信息進行感知,保證了可靠的精度,降低了成本,同時降低了設(shè)備使用的局限性,提高了使用的獨立性。
在VR設(shè)備與用戶的交互設(shè)計中,最流行的當屬體感游戲的設(shè)計。在基于VR的體感射擊游戲中,文獻[12]中使用原地踏步走(WIP,walking-in-place)來模擬前進運動,這種方式的優(yōu)點在于可以解放使用者的雙手,正如文章標題中所示的“無手交互”,達到更加逼近真實體驗的效果。大多數(shù)使用WIP方式交互的VR設(shè)備使用硬件(例如跑步機)進行步行運動識別[13-14]。近年來,僅使用移動VR設(shè)備中IMU的研究越來越多[15-18]。因此,可以借鑒VR體感射擊游戲中WIP技術(shù)的應用,輕松實現(xiàn)教育培訓中遇到的動態(tài)人機交互問題。
針對VR設(shè)備與使用者的動態(tài)交互問題,本文提出了將姿態(tài)感知與步態(tài)識別相結(jié)合的交互方法,來實現(xiàn)虛擬的靠近和躲避。首先,設(shè)計了基于間接擴展卡爾曼濾波器的姿態(tài)感知算法用于感知頭部的姿態(tài),該方法采用多傳感器融合的方法,利用比力和地磁信息對姿態(tài)角誤差進行外部觀測,進而通過卡爾曼濾波器得到姿態(tài)誤差角的最優(yōu)估計量,最后對原始姿態(tài)進行補償,實現(xiàn)了高的姿態(tài)測量精度;其次,由于原地踏步走時人體重心會有起伏,通過固定滑窗計算比力的峰值,并根據(jù)峰值大小和相鄰峰值時間間隔進行靜止和行走狀態(tài)的識別;最終,將計算出的航向角和固定步長代入三角函數(shù)公式計算出虛擬運動的軌跡,模擬實現(xiàn)了前進與躲避障礙物。
圖1 測姿算法整體框圖
EKF作為標準卡爾曼濾波器在非線性情況下的推廣,其設(shè)計的關(guān)鍵在于狀態(tài)方程(時間更新)和測量方程(測量更新)的推導。該濾波方法利用泰勒級數(shù)展開對非線性狀態(tài)方程和非線性測量方程進行線性化,所以從本質(zhì)上講它也是一種線性卡爾曼濾波的方法,具體詳見文獻[20]。在本文中,我們使用它的間接形式,即先估計出系統(tǒng)狀態(tài)的最優(yōu)誤差量,然后再對系統(tǒng)狀態(tài)進行補償。
1.1.1 系統(tǒng)誤差狀態(tài)模型
因為需要對姿態(tài)進行計算,所以我們設(shè)定系統(tǒng)狀態(tài)向量xk包含3-D姿態(tài)角φk和陀螺儀零位偏移bω,k,因此有:
(1)
其中:姿態(tài)角φk可以通過四元數(shù)計算得到。那么,姿態(tài)角φ(包含俯仰角θ、滾轉(zhuǎn)角γ、偏航角ψ)可以表示為:
(2)
其中:q0q1q2q3表示四元數(shù)矢量的4個元素。四元數(shù)可以表示為q=q0+q1i+q2j+q3k,其中q0表示四元數(shù)的實部或標量部分,而q1i+q2j+q3k表示虛部或矢量部分。
下一時刻的旋轉(zhuǎn)四元數(shù)可以通過四元數(shù)更新方程[19]求得:
(3)
如果只考慮陀螺儀零偏誤差bω,k,角速度真值ωk可由陀螺儀實際測量信號yk得到:
(4)
(5)
緊接著,利用EKF的間接形式,我們可以引入姿態(tài)測量系統(tǒng)狀態(tài)向量xk的誤差量δxk,最終對系統(tǒng)狀態(tài)xk進行補償。因此,系統(tǒng)的誤差狀態(tài)向量將包含6維元素,即:
δxk=[δφk,δbω,k]T
(6)
其中:δbω,k表示陀螺儀零位偏移誤差,δφk表示姿態(tài)誤差角。
根據(jù)文獻[20]所述,要設(shè)計擴展卡爾曼濾波器的狀態(tài)方程,首先寫出誤差狀態(tài)量的微分方程,然后再將其離散化。那么,連續(xù)誤差狀態(tài)方程可以描述為:
(7)
那么,離散化后的誤差狀態(tài)方程為:
(8)
將離散狀態(tài)轉(zhuǎn)移矩陣Φk進行一階泰勒級數(shù)展開(相當于將非線性模型線性化),保留一階項,那么有:
Φk=exp(Fc,kΔt)≈I6×6+Fc,kΔt
(9)
其中:Δt表示IMU的采樣間隔。
1.1.2 系統(tǒng)誤差測量模型
系統(tǒng)誤差測量模型可以表示為:
zk=Hδxk+nk
(10)
其中:zk為誤差測量向量;H為測量轉(zhuǎn)移矩陣;nk為測量噪聲的協(xié)方差矩陣。
假定人體運動的加速度遠小于重力加速度,通過比力fk可以求得俯仰角和滾轉(zhuǎn)角,那么有:
(11)
(12)
式中,n系下IMU的滾轉(zhuǎn)角γk和俯仰角θk可以通過公式(11)求得。
由于地磁北極與地理北極不完全一致,定義地球表面任意點的地磁場強度矢量所在的垂直平面(地磁子午面)與地理子午面的夾角為地磁偏角(D),不同地區(qū)對應有不同的磁偏角。因此地磁航向角可以表示為:
(13)
濾波器更新方程為:
(14)
我們利用比力模值來進行靜止和行走行為的識別。比力模值的計算公式為:
(15)
其中:f表示比力矢量(比力表示加速度計測量到的包含重力加速度的加速度),fx,fy,fz分別表示3個軸向的比力分量。
對計算所得的比力模值信號進行均值濾波,從而對信號進行平滑,減小運動時振動的影響。選取長度為N的滑窗,計算窗口中的最大值。當該最大值與重力加速度的絕對值小于某個范圍時,則認為當前時間段內(nèi)為靜止狀態(tài);當大于這個范圍且相鄰兩個滿足條件的峰值的時間間隔大于某個時間時,則認為當前時間段內(nèi)為行走狀態(tài),且在當前峰值狀態(tài)時可以用來進行位置的更新。用公式可以表示為:
(16)
圖2 靜止和行走識別結(jié)果
在計算虛擬路徑時,僅在檢測到比力模值峰值時,對位置進行更新。通過文中第二節(jié)提出的方法,可以判斷出不同峰值時人體所處的運動狀態(tài)。針對不同運動狀態(tài)對應不同的位置更新公式,如下:
(17)
其中:P表示2D位置矢量;SL表示給定的步長,在本文中采用固定步長;t表示峰值所在的時間點。該公式可以解釋為:當靜止狀態(tài)(still)時,說明人體沒有移動,保持與上一峰值時相同的位置;當行走狀態(tài)(walk)時,利用步長和航向角,根據(jù)三角函數(shù)關(guān)系計算出該時刻的位置。
為了驗證本文提出算法的有效性,本文設(shè)計了多姿態(tài)運動實驗和模擬交互實驗。多姿態(tài)運動實驗包括蛇形、俯仰、晃動、轉(zhuǎn)圈和倒退5種姿態(tài)進行運動實驗。模擬交互實驗包括模擬直線行走和模擬在直線行走過程中躲避障礙物兩種實驗。使用的IMU是SBG公司生產(chǎn)的IG-500N,包含三軸加速度計、三軸陀螺儀和三軸磁強計。其中,加速度計的量程為±5 g,零偏穩(wěn)定性為±4 mg;陀螺儀的量程為±300°,零偏穩(wěn)定性為±0.1°/s;磁強計量程為±1.2 Gauss,零偏穩(wěn)定性為±0.5 mGauss。
多姿態(tài)運動實驗的測試地點為室內(nèi)直線走廊。該實驗的具體過程為:測試者將IMU佩戴在頭部的額頭位置,依次按照蛇形(原地從左轉(zhuǎn)到右再轉(zhuǎn)到左來模擬蛇形運動)、俯仰(頭部先向前傾,進而向后仰)、晃動(左右晃動頭部)、轉(zhuǎn)圈(原地轉(zhuǎn)圈)和倒退(原地身體邊后傾邊原地踏步來模擬倒退運動)5種姿態(tài)進行原地運動。將IMU內(nèi)部集成的商業(yè)姿態(tài)感知算法實時輸出的姿態(tài)角和本文提出的姿態(tài)感知算法解算出的姿態(tài)角畫在同一坐標系中進行對比,如圖3所示。圖中,深色線表示本文算法解算出的姿態(tài)角;淺色線表示IMU直接輸出的姿態(tài)角??梢钥闯觯瑑蓷l線基本重合。
圖3 多姿態(tài)運動解算結(jié)果對比
為了檢驗提出的交互方法的有效性,模擬交互實驗包含模擬直線行走和模擬在直線行走過程中躲避障礙物兩種實驗。IMU的安裝位置為額頭處。具體的實驗過程為:(1)測試者佩戴IMU面朝一個方向不斷原地踏步來模擬在現(xiàn)實世界中的直線行走,本文提出的系統(tǒng)計算出的路徑如圖4所示;(2)測試者面朝一個方向通過原地踏步走模擬直線行走,同時不同改變朝向來模擬躲避前方障礙物,然后恢復與起始朝向相同的方向向來實現(xiàn)沿原軌跡繼續(xù)直線行走,所提系統(tǒng)的計算結(jié)果如圖5所示。
圖4 模擬直線行走實驗結(jié)果
圖5 模擬避障實驗結(jié)果
如圖3中結(jié)果顯示,在多種運動狀態(tài)下,本文提出姿態(tài)算法可以精確的計算出相應的姿態(tài)信息,同時本文所提算法與IMU自帶的商業(yè)解算程序計算的結(jié)果基本重合,通過計算得出與商用慣性測量單元提供的姿態(tài)角具有1.1×10-2°的平均姿態(tài)偏差,從而最終證明本文提出的姿態(tài)感知算法的有效性,可以精確有效的解算出人體頭部的真實姿態(tài)。
從模擬交互實驗中兩組實驗的結(jié)果(如圖4~5所示)可以看出,本文提出的交互方法能夠很好的模擬實現(xiàn)人體的前進和在前進的過程中躲避前方的障礙物。將本文所提算法部署到VR設(shè)備中,能夠有效的幫助使用者在體驗VR的同時,實現(xiàn)與VR視頻中對象的靠近與躲避,從而實現(xiàn)人與設(shè)備之間的交互,達到身臨其境的沉浸式效果。
但是該算法也有不足的地方,在未來的工作中,期望能夠加入更多的交互動作,比如說后退或者側(cè)行,來進一步豐富體驗者與VR設(shè)備間的交互方式。
針對VR設(shè)備與使用者的動態(tài)交互問題,本文提出了姿態(tài)感知與步態(tài)識別相結(jié)合的交互方法,實現(xiàn)了靠近或躲避VR視頻中的對象。實驗證明,提出的姿態(tài)感知算法可以有效的計算出使用者頭部的姿態(tài),且具有較高的解算精度,與商用慣性測量單元提供的姿態(tài)角基準相比具有1.1×10-2的平均姿態(tài)角偏差;提出的步態(tài)識別算法可以有效的識別出人體的靜止與行走狀態(tài);所提出的兩者結(jié)合的交互方法,可以有效的實現(xiàn)虛擬的靠近與躲避。在未來的工作中,期望能夠加入更多的交互動作,比如說后退或者側(cè)行。