李兆基,王海鵬,2,阮偉華,黃書豪
(1.三江學院 電子信息工程學院,江蘇 南京 210012;2.東南大學 射頻與光電集成電路研究所,江蘇 南京 210096)
手勢姿態(tài)識別是虛擬現實(Virtual Reality,VR)領域中非常關鍵的一種交互方式。不同的實現方式和設備都會使用戶得到不同的體驗。近年來,隨著VR設備受歡迎度的提高和人機交互(Human-Computer Interaction,HCI)[1]科學的不斷發(fā)展,手勢交互成為最符合人們習慣的交互方式。但手勢交互研究相較聽覺、視覺的交互方式還有較大的差距[2],這主要是由人手的靈巧性、復雜的皮膚形狀和傳感器的復雜性造成的。
目前手勢姿態(tài)識別的方式還分為基于視覺和非視覺兩種[3-4]。基于視覺的數據采集方式主要是采用攝像頭對手部動作進行捕捉,目前比較常見的動作捕捉設備主要有微軟公司的Kinect[5]、索尼公司的PS move以及Leap公司的Leap motion[6]和上海理工大學黃東方的基于改進ND-DTW算法的動態(tài)手勢識別[7],這些均為基于圖像處理的方式,對肢體動作的識別較為準確。但上述方法對檢測細小位置的手指運動有一定難度,當識別物體的運動速度過快時會出現圖像丟幀的問題。另外,國內的手勢交互方式主要集中在如何實現手指姿態(tài)的判別上,尚未出現功能性電刺激手勢交互設備。秦歡歡等人設計了采用雙手力觸覺反饋的人機交互系統[8]。該系統中,雙手的位置跟蹤精度達到0.8 mm并可以給手提供20 N和0.4 N·m的力觸覺反饋。但該設備尺寸較大不利于個人用戶使用,且存在不便移動的缺點。在力觸覺反饋方面,國外有CyberGlove公司使用磁流變液智能材料構建的力反饋數據手套[9],該系統在設計尺寸上比東南大學的小很多,但是在設備重量上依舊沒有得到很好地改善。
相比基于視覺識別的方式,本文設計使用基于非視覺的數據手套采集方式不會出現上述識別精度有偏差的現象,同時也不會出現識別物體脫離識別范圍的情況。在進行力觸覺的輔助反饋上,前期已經實現通過調節(jié)功能性電刺激(Functional Electrical Stimulation,FES)產生的刺激脈沖信號強度來控制不同的手部力量[10-13]。本文中使用該設備來解決力觸覺反饋的問題,不僅可以使VR設備完成手勢識別,還能通過功能性電刺激腕帶完成虛擬現實中的力觸覺增強反饋。
針對VR使用者開發(fā)的手勢交互識別系統,一套輔助虛擬現實數據手套及電刺激力觸覺增強反饋系統需要解決以下問題:(1)使用者雙手位置和姿態(tài)的精確獲取跟蹤。系統需要判斷跟蹤使用者的三維空間位置和手部姿態(tài),使用無線連接的方式增大系統使用空間的自由度,同時不降低使用者在使用過程中的束縛;(2)雙手力反饋的實現。當使用者在VR體驗中手部觸碰到虛擬物體時,能通過功能性電刺激的方式控制手部力量來實現力觸覺反饋,讓使用者感知到物體。同時該裝置可以為使用者提供不同強度的刺激來達到不同力度的反饋。
系統的整體設計結構框圖如圖1所示,包括一個數據手套、一個FES腕帶和數據收發(fā)與顯示設備。其中手套具有手部運動及姿態(tài)數據采集功能,腕帶使用FES作為VR的力觸覺信息反饋。數據手套主要由彎曲度傳感器、九軸運動姿態(tài)傳感器、STM32主控模塊和藍牙模塊組成。數據收發(fā)與顯示設備主要用于三維圖像的處理以及對接收到的數據進行識別,該部分可以判斷人手對物體觸摸狀態(tài)信息并將反饋數據通過無線連接(Wireless Fidelity,WiFi)傳輸至電刺激腕帶,產生不同強度的FES刺激脈沖,從而實現虛擬現實中的力觸覺增強反饋。
圖1 系統整體設計結構框圖
手勢姿態(tài)數據采集部分由STM32主控制器、5路彎曲度傳感器、藍牙模塊和九軸運動姿態(tài)傳感器組成。其中STM32主控制器主要負責彎曲度傳感器數據、九軸運動姿態(tài)傳感器數據的采集處理以及對藍牙模塊的控制。如圖2(a)所示,利用5路的彎曲度傳感,同時將傳感器采用嵌入的方式包裹在手套的每根手指上,該種設計可以使傳感器更貼合手指減少測量誤差。采用的彎曲度傳感器尺寸為每根長115 mm,寬5 mm,如圖2(c)所示。最終把這些傳感器嵌入在棉質的手套上固定如圖2(b)所示。彎曲度傳感器是由涂在柔性塑料基板上的大量電阻碳元素組成,制作成本較低,具有較長的機械性耐久性能(>1 000 000次),無移動或機械磨損的部件。當基板彎曲時,彎曲傳感器根據彎曲程度按一定比例產生電阻輸出,筆直狀態(tài)下的電阻約為10 kΩ,最大彎曲的電阻可到達125 kΩ。
圖2 手套設計與實物圖
由于彎曲度傳感采集手指曲度的信息是模擬信號,因此需要利用STM32內置模擬-數字轉換器(Analog to Digital Converter,ADC)將采集的彎曲度模擬信號轉換成數字信號(Digital Signal)進行處理。同時,為了使傳感器輸出電阻變化和輸出電壓變化之間成線性關系[14],本文采用如圖3的電路設計[15]。
主控微處理器采用STM32F103RBT6作為核心處理器芯片,它主要負責對系統外部模塊的控制和數據獲取。為了減少系統硬件占用空間的資源并最大化減輕硬件重量,該部分只保留有用部分,去除無用的外設電路,最終主控設備重量控制在250 g以內。該硬件系統主要包含STM32F103的微處理器主控芯片、復位電路、晶振電路、串行調試(Serial Wire Debug,SWD)程序下載接口以及所有用到的通用輸入/輸出口(General Purpose Input Output,GPIO),以方便接入藍牙模塊來完成數據的上傳和九軸運動傳感器采集手部空間數據,進而實現特征提取和手勢識別。
圖3 彎曲度傳感器電路圖
功能性電刺激腕帶包含一個主控制器STM32F103(ST Microelectronics Inc.)、WiFi轉通用異步收發(fā)傳輸器(Universal Asynchronous Receiver Transmitter,USRT)模塊、刺激電路驅動級、恒流H型橋和多路復用開關電路。其中微控制單元(Microcontroller Unit,MCU)通過WiFi轉UART模塊USRC322(濟南有人物聯網技術有限公司)讀取控制終端發(fā)送的刺激參數數據;然后利用內置數字-模擬轉換器產生刺激參數對應的脈沖信號并送至刺激電路驅動級;然后經過MCU控制的多路復用開關電路,將刺激脈沖分別送至對應的輸出通道,生成與虛擬場景中對應的力觸覺控制信號。刺激腕帶實物如圖4所示,設備的重量約320 g(含電池)。
刺激驅動電路包括電壓-電流轉換器和一個互補電流源,電壓-電流轉換器由兩個耦合跨導放大器、一個串聯電阻和一個放大器組成,可以為互補電流源提供精確的參考電流。刺激驅動級電路如圖5所示。
圖4 刺激腕帶實物圖
在功能性電刺激腕帶的MCU中利用波形生成算法生成具有更新參數的波形信號。如圖6(a)所示為雙相非對稱刺激波形,其中包括一個負向的脈沖和一個正向的脈沖。負脈沖幅度AN和正脈沖寬度TP的比值等于正脈沖幅度AP和負脈沖寬度TN的比值,即TP/AN=AP/TN,其中AN和AP的比值為N。為了使刺激電極在人手皮膚上不易造成肌肉疲勞[16],故設置N=4。MCU輸出的DAC信號波形如圖6(b)所示。
圖5 刺激驅動級電路原理圖
(a)
本文軟件使用基于C++程序的設計,運行在電腦主機上,目的是為了完成虛幻4引擎(Unreal Engine 4,UE4)軟件與個人計算機USB(Universal Serial Bus,USB)接口的數據通信。該程序主要分為兩部分:手套數據接收識別部分和腕帶刺激信號發(fā)射部分。程序的具體流程如圖7所示。程序在開始運行時會判斷手套的藍牙以及腕帶WiFi是否連接成功,在確定穩(wěn)定連接的情況下手套的數據接收程序會進入九軸運動傳感器校準,腕帶則進入復位,完成刺激參數的校對。程序在接收到手套數據后,通過計算九軸運動傳感器的歐拉角可以判斷出手勢的姿態(tài),計算彎曲度傳感器的數值可以判斷手指的彎曲程度,最后將數據送到UE4軟件中完成虛擬場景中的識別。UE4軟件會根據手部抓握的物體給出一個碰撞信息,通過該程序可以發(fā)送刺激信號到手腕的硬件中。
手套在進行空間數據采集時,由于人手的輕微抖動和元器件的物理特性會導致采集數據出現一定的數據漂移現象,使用過程中會也出現一些不必要的隨機噪聲。這些因素都會給識別算法帶來一定的難度導致結果不準確,因此采取一定的濾波降噪處理顯得尤為重要。目前常用的傳感器濾波算法有:非線性平滑濾波、小波變換、線性平滑濾波、卡爾曼濾波算法以及傅里葉變換[17]。
卡爾曼濾波是一種最優(yōu)數據評估的算法,與控制原理中的狀態(tài)觀測器相似,需要預估測量值,并把預測值與實際測量值進行比較,然后乘以一個增益后返回,為下一時刻的計算提供估計值,更新的方程如下
X(f/f-1)=Ax(f-1/f-1)
(1)
(f/f-1)=P(f-1/f-1)+Q
(2)
式中,X(f/f-1)是上一時刻f-1最后輸出的狀態(tài);Q為噪聲的協方差。測量方程利用時間方程輸出結果,當獲取到觀測值時進行濾波。通過測量更新算法得出最終結果,但是在實際運動中仍然還會出現位置誤差。為了更加準確地讓識別手勢姿態(tài)數據判斷手部的實時姿態(tài),將誤差控制在一個較好的范圍,需要進行歐拉角的計算。在PC端利用卡爾曼濾波[18]原始數據融合加速度計和陀螺儀數據可以計算出歐拉角,分別用原始數據、加速度計數據、陀螺儀數據構建出3個姿態(tài)矩陣,矩陣通過乘積的計算得到
(3)
通過隨姿態(tài)矩陣T的求解得到歐拉角
θ主=tan-1(-T12/T22)
(4)
(5)
γ主=tan-1(-T31/T33)
(6)
最后使用歐拉角微分方程進行姿態(tài)的求解,就能得出一個較好的歐拉角結果。
圖7 軟件總體流程設計
實驗共招募5名健康志愿者(男性3人,女性2人,平均年齡為25.5±2歲)。所有志愿者簽署知情同意書,配合參與原型系統手部姿態(tài)動作數據測試實驗和實際功能測試實驗。所有志愿者在受測試上肢部位均無任何神經肌肉或關節(jié)損傷。實驗設備采用一套自主設計的原型系統(包含1個用于手勢姿態(tài)識別的數據手套和1個FES刺激腕帶),一套HTC VIVE定位設備,并設計了一個基于UE4的虛擬場景實例。
先從參與實驗的人員中隨機挑選出一名志愿者,按照實驗要求佩戴姿態(tài)識別手套,完成姿態(tài)動作數據的測試。測試的動作內容為:手臂水平放置(手勢參考動作)、手臂向上抬舉90°、手掌水平向外翻轉90°、手掌水平向內翻轉90°、手臂向外90°展開手掌保持水平。記錄每組實驗的連續(xù)動作波形圖,運動波形圖主要記錄加速度值和角度偏轉值,每張波形圖都包含手部X、Y、Z共3個坐標軸上的變化曲線。通過曲線變化和實際動作的狀態(tài)可以直觀地看出姿態(tài)數據手套的有效性。
姿態(tài)識別手套除了能識別手臂動作的姿態(tài),還能識別手指運動姿態(tài)。手勢模型共有3種不同的動作姿態(tài),每位志愿者需要佩戴手套后把手貼合放置在設計好的手勢模型上,通過觀測虛擬場景實例中虛擬手掌的姿態(tài)動作與模型動作的匹配度即完成一組實驗。實驗過程中記錄每位志愿者每根手指與對應虛擬手掌手指的匹配程度,最終通過統計學公式計算出各個手指的識別率。
為了進一步驗證系統人機交互的有效性,在實例中設計了一個虛擬的機械手掌模型,虛擬機械手模型關節(jié)數以及手指長度均按照普通人手1∶1的比例進行設計,效果如圖8所示。該虛擬機械手可用于檢測手套交互的有效性并檢測手套數據傳輸的延時,實驗過程中志愿者可以隨意完成不同的手指彎曲動作。同時實例中的機械手也會同步進行動作復現,通過顯示器的動作變化可以直觀地了解設備是否能夠準確完成應有的動作。
腕帶的功能主要用于輔助虛擬現實力觸覺增強,該手腕的CH1~CH4通道都能輸出5~30 V步進電壓為5 V的刺激電壓。通過虛擬現實場景中判斷手部的碰撞數據,軟件會根據物體的不同和人手運動情況通過WiFi模塊發(fā)送不同的刺激參數設置包,包括系統開啟/關閉狀態(tài)、脈沖頻率、刺激通道打開時間、刺激通道關閉時間、脈沖振幅參數、刺激波形和脈沖寬度。為了更好地評定這部分功能,實驗采用單獨給腕帶發(fā)送刺激控制信號的方式進行。為了保證測試的安全性,該測試在專業(yè)人員的指導下完成。測試實物連接如圖9所示。
圖9 測試實物連接圖
實驗過程中要求志愿者通過虛擬手套來進行虛擬場景中的物體抓握以觸發(fā)場景中虛擬手的碰撞信息,動作完成后碰撞信息將通過WiFi傳輸到手部的刺激腕帶。腕帶的輸出端采用水凝膠將刺激電極貼附于手臂皮膚表面。由于采用的是四通道刺激方式,刺激手部不同位置都會產生不同的刺激反應。在實際使用中,參照醫(yī)學上的“骨度折量寸”作為參考坐標貼附于手部的不同位置,完成抓握、腕屈、腕伸和五指伸4種不同動作[19]。電極貼附的位置以及刺激的功能點位如圖10所示。
圖10 抓握、腕屈、腕伸和五指伸對應電極位置
在此基礎上,通過一個定制的扭矩測試裝置來完成手腕關節(jié)扭矩的數據測試。定制裝置采用1 kHz采樣頻率進行數據采集,通過PC對數據處理后可以提供一個直觀的扭矩波形圖。實驗過程中提供了6種不同等級力度刺激脈沖,脈沖幅度從0~30 V遞增,步進幅值為5 V,每種等級刺激脈沖間隔2 s進行一次觸發(fā),每次脈沖持續(xù)時間設計為1 s。
志愿者在進行上述測試項目時都會進行簡單的使用培訓。實驗測試結束后,每位志愿者需要填寫一份用戶體驗報告調查表。調查表用于收集志愿者在實驗完成后對該項目評價。調查報告內容包括使用過程中出現的問題、實際動作與虛擬動作同步程度、穿戴舒適性、力觸覺腕帶效果、最后提出修改的意見和建議。
根據手部測試的流程,志愿者根據測試的動作按要求完成測試,實驗記錄的數據包括加速度和角度,最終結果如圖11所示。其中,手勢圖中1-1作為其他手勢的參考動作,手勢1-1在Z軸上的加速度為1,X、Y軸的加速度為0;X、Y、Z軸對應的角度為0,當動作由1-1中的手勢變化到其他動作時,X、Y、Z軸的加速度和角度發(fā)生了明顯變化。在實際測量中,由于九軸傳感在手部運動中不能完全貼合手掌的位置,實際位置變化與實際數據上會存在一定的誤差。
由表1可知手套對每根手指識別的情況,在5組測試結果中最高的識別率達到了99%,在均值的結果中顯示識別率能穩(wěn)定在93.2%~96.6%,最終的結果顯示手勢識別的成功率為94.7±1.3%。
表1 各手指以及部分動作識別率
1-1 手臂水平放置 1-2 角度 變化曲線 1-3 加速度變化曲線
用戶通過不同的手指動作彎曲能實現對虛擬假手進行同步控制,圖12為手指彎曲動作測試情況。由圖12可知,原型系統中的手勢識別手套能完成對各個手指以及手部空間位置的識別。
圖12 手指彎曲動作測試情況
如圖13所示,原型系統能較好地控制刺激脈沖強度的輸出,輸出共有6種不同等級的力度刺激脈沖,最大的脈沖幅度能達到30 V左右。在不同等級的脈沖刺激下對應有不同的手部力矩輸出。在刺激幅度為5 V時,腕部的扭矩為0.2 N·m;在刺激幅度為30 V時,輸出的扭矩為1.8 N·m (圖13(a))。上述數據表明系統能實現預期功能,達到合適的扭矩輸出,具有較好的人機交互功能。在實際使用過程中,該部分的設備功率控制在1.9 W(98 mA,20 V)左右可以達到低功耗的目的。
圖13 志愿者刺激響應腕關節(jié)力矩與刺激脈沖波形
在使用者的體驗反饋中可以反映出設計的虛擬現實數據手套在功能和實用性上是否能滿足設計要求。由表2所示的志愿者體驗報告描述可知,設計的虛擬現實數據手套在使用過程中有較好的效果,能夠在使用過程中很好地控制延時,沒有出現由于手部移動速度太快而導致的虛擬場景實例中手部數據丟失現象;在力觸覺交互方面也做到了較好的控制;穿戴設備沒有因長時間的佩戴而引起穿戴者的不適。
表2 志愿者體驗報告
通過上述結果可知,該系統的總體效果達到了設計要求,但在手部姿態(tài)動作數據測試結果中還需要對傳感器固定的位置進行進一步的修改。在手指準確率測試中,志愿者的手掌大小出現了個別識別錯誤的情況。造成該結果的原因還在于手套的材質上,手套采用的是棉質原料,在佩戴的過程中不能很好地貼合不同手型志愿者。因此,在后期將采用具有彈力的手套。在原型系統功能測試結果中,由于數據在傳輸過程中會受到其他信號的干擾,虛擬假手空間會出現位置漂移的現象。其原因是由于數據傳輸模塊的選擇和數據傳輸速度存在不同。在用戶體驗調查結果中出現腕帶刺激導致的刺痛感,原因是由于每個使用者在對電刺激的承受度不同導致的,通過降低刺激的強度也能降低刺痛的感覺。
本文設計了輔助虛擬現實數據手套及電刺激力觸覺增強反饋電路系統,功能均達到設計的要求,能夠有效完成手勢姿態(tài)識別與力觸覺反饋增強功能。該設計在設備體積與重量上比其他設計方法有較大的優(yōu)勢,其中力觸覺刺激腕帶是目前還未在人機交互設備上使用過的新型交互設備。
本文的研究結論為實現虛擬現實的人機交互提供了一種行之有效的解決方案。該系統的設計除了可用于虛擬現實人機交互,還可以用于醫(yī)療行業(yè)中以針對癱瘓病人進行的肢體康復訓練,是一種應用前景廣闊的設計方案。