林 瑾,劉 輝,陳 華
(1.廣東東軟學(xué)院,廣東 佛山 528225;2.廣東技術(shù)師范大學(xué),廣東 廣州 510665)
隨著計算機科學(xué)的快速發(fā)展,計算機人由以機器為中心的模式逐漸轉(zhuǎn)化為以機器人為中心的模式,即以人為本。其核心目標(biāo)是實現(xiàn)機體對人類活動的認識與了解[1],促使物理世界與信息世界的融合,實現(xiàn)人機交互,因此人機交互技術(shù)至關(guān)重要。實際上,過去幾十年以來,人們一直在不斷創(chuàng)造新的技術(shù)來實現(xiàn)更有效的人機交互,如手勢識別[2]、動作分類等技術(shù)手段,已經(jīng)逐漸運用在人們?nèi)粘I钪?。目前,人類行為感知與分析技術(shù)主要利用的是環(huán)境中的無線定位技術(shù)信號,具有良好的通用性和可擴展性。
近年來基于WIFI 信號的人體行為分析技術(shù)引起了學(xué)者們的廣泛關(guān)注。早在2000年時,Bahl等就提出了Radar,一個基于WIFI 信號強度信息(Received Signal Strength,RSS)進行室內(nèi)定位的系統(tǒng),這是WIFI 信號首次被用來進行感知[3]。隨后基于WIFI 的室內(nèi)定位技術(shù)獲得了很大的發(fā)展。2016 年,周戈基于WIFI 信號的手勢識別技術(shù)研究,構(gòu)建了初步的手勢識別模型,但其平均識別率不高,為94.8%。
因此,該文研究一種基于WIFI 信號的手勢識別控制系統(tǒng),可以有效地識別八種不同動作的手勢,并區(qū)分控制多種設(shè)備運行,將識別率提高到98%。
該文選取內(nèi)置有加速度傳感器的智能手勢設(shè)備作為數(shù)據(jù)采集設(shè)備,系統(tǒng)框圖如圖1 所示,處理過程如下:
圖1 系統(tǒng)框圖
1)選取多個帶WIFI 模塊的被控制設(shè)備作為手勢控制對象。
2)基于WIFI 信號,根據(jù)三邊測量定位算法定位并確定被控制設(shè)備。
3)選取內(nèi)置有加速度傳感器的手勢設(shè)備作為數(shù)據(jù)采集設(shè)備,初始化手勢設(shè)備,用戶佩戴手勢設(shè)備擺出手勢動作;mpu6050 模塊讀取x,y,z軸上手勢設(shè)備的位置變化,得到加速度信息,采集信息并傳送到控制端進行處理;PC 端將收到的數(shù)據(jù)進行均值濾波預(yù)處理數(shù)據(jù)、動態(tài)時間規(guī)整算法及特征提取,將匹配的手勢動作轉(zhuǎn)化為簡單指令;將指令通過WIFI 模塊傳送給被控設(shè)備,并驅(qū)動被控設(shè)備開啟指定動作。
系統(tǒng)結(jié)合WIFI 定位算法及手勢識別算法實現(xiàn)了八種不同手勢動作的識別并區(qū)分控制設(shè)備。
系統(tǒng)對接收的WIFI 設(shè)備進行采樣,考慮到室內(nèi)外環(huán)境的差異、測量精度和能耗等因素,基于距離的RSSI(Received Signal Strength Indication,接收信號強度指示)定位方法更適用于物聯(lián)網(wǎng)環(huán)境。采用RSSI算法檢測信號的優(yōu)點是實現(xiàn)簡單、硬件成本較低、可以多次測量。定位精度取決于所選設(shè)備的傳播損耗模型,而室內(nèi)障礙也會使信號衰減從而影響定位精度。大多數(shù)室內(nèi)定位系統(tǒng)采用上述方法,或結(jié)合多種方法來估算定位目標(biāo)。RSSI 由于非接觸和非可視優(yōu)勢,已成為室內(nèi)定位技術(shù)的首選[4]。
該系統(tǒng)是基于RSSI 三邊測量定位算法實現(xiàn)的,分為測距和定位,在測距階段,未知位置接收來自三個不同節(jié)點設(shè)備的信號強度[5],并根據(jù)無線信號的傳輸損耗模型將其轉(zhuǎn)換為從目標(biāo)到相應(yīng)設(shè)備的距離。無線信號的傳輸通常受到路徑損耗和陰影衰落的影響,接收信號功率隨距離的變化與信號傳輸對數(shù)距離路徑損耗模型有關(guān),模型公式如式(1)所示:
式中,d是計算所得距離(單位為m),A是發(fā)射端和接收端相隔1 m 時的信號強度,n為信號路徑傳播耗散系數(shù),受信號傳輸環(huán)境影響;RSSI 為接收到的信號強度。A和n的值確定后,根據(jù)式(1)可得到節(jié)點間距離d的計算公式為:
由式(2)可以算出節(jié)點之間的距離d。該系統(tǒng)根據(jù)節(jié)點設(shè)備的距離值可鎖定受控設(shè)備。
鎖定設(shè)備后,從接收設(shè)備上獲取手勢設(shè)備的手勢信號,首先對手勢設(shè)備進行定位,從測距階段得到已知節(jié)點和信號源的距離值,三個節(jié)點的坐標(biāo)是已知的,未知節(jié)點位于三個圓的交叉處,測量點的位置坐標(biāo)可以通過節(jié)點間的距離計算出來,三邊測量法如圖2 所示,根據(jù)WIFI 模塊的信號強度(RSSI),通過三邊測量法得到被控設(shè)備與手勢設(shè)備的距離。假設(shè)三個已知的坐標(biāo)節(jié)點為FM1(X1,Y1),F(xiàn)M2(X2,Y2)和FM3(X3,Y3),它們與未知節(jié)點之間的距離分別為d1,d2和d3,未知節(jié)點坐標(biāo)為(X,Y),則可以得到式(3)。為了方便計算,該文假定各節(jié)點均位于同一平面上,即只計算X,Y方向上的平面距離。
圖2 三邊測量法
對式(2)進行相應(yīng)的數(shù)學(xué)轉(zhuǎn)換后,可以得到未知節(jié)點坐標(biāo)。
當(dāng)已知節(jié)點連接到未知節(jié)點網(wǎng)絡(luò)時,可以得到三個已知節(jié)點與未知節(jié)點之間的距離,通過三邊測量的定位算法,獲取未知節(jié)點的坐標(biāo),未知節(jié)點的坐標(biāo)可以被多次計算,然后取其平均值,得到較準(zhǔn)確的目標(biāo)位置。由于外物或人體的遮擋后信號會損耗,導(dǎo)致RSSI值降低,計算所得的距離也有誤差,在所有的測試次數(shù)中得到整體定位的誤差均值為1.13 m,這個定位誤差滿足該項目具體環(huán)境中的實時定位要求。
系統(tǒng)分別連接三個ESP8266 模塊設(shè)備且分別設(shè)置WIFI 名為“FM1”“FM2”“FM3”,根據(jù)公式可得出未知節(jié)點到三個設(shè)備的距離,從而選定合適的接收設(shè)備,確定手勢設(shè)備的位置后,從接收設(shè)備上獲取手勢設(shè)備信號。
該系統(tǒng)的手勢動作采用手勢設(shè)備中的加速度計MPU6050 采集數(shù)據(jù),MPU6050 傳感器可通過內(nèi)部IIC接口總線向主控芯片直接發(fā)送三軸加速度及三軸角加速度,然后通過串口輸出。當(dāng)重力對陀螺儀系統(tǒng)產(chǎn)生一個大小為F的合外力時,結(jié)合牛頓第二定律,得到X、Y、Z軸向上的分力,可根據(jù)重力加速度計算出對陀螺儀系統(tǒng)各個方向產(chǎn)生的加速度,一旦手勢設(shè)備開啟,采集單個手勢信號數(shù)據(jù)段,傳感器就會持續(xù)輸出各個軸上的加速度數(shù)據(jù),其中,包括無動作數(shù)據(jù)和手勢數(shù)據(jù)[6],圖3-5 所示是手勢動作和靜止時采集到的三個方向軸上的數(shù)據(jù)加速度信號。當(dāng)手有動作時,采集到的加速度信號在各個坐標(biāo)上會產(chǎn)生劇烈的波動,靜止時波動較小。
圖3 X軸采集的數(shù)據(jù)圖
圖4 Y軸采集的數(shù)據(jù)圖
圖5 Z軸采集的數(shù)據(jù)圖
手勢數(shù)據(jù)在采集過程中會受到手抖動及環(huán)境等因素的影響,從而產(chǎn)生一些干擾數(shù)據(jù),如高頻噪聲,這些數(shù)據(jù)會降低手勢識別率,也會增加數(shù)據(jù)提取的難度,因此在數(shù)據(jù)提取之前,先對數(shù)據(jù)進行濾波處理[7]。為了提高識別率,可采用滑動均值濾波算法濾除高頻分量,將每一次采樣的數(shù)據(jù)與之前采樣的數(shù)據(jù)不斷地取平均值,將計算出來的結(jié)果作為當(dāng)前的有效采樣值[8],如式(4)所示:
式中,ar為采集的原始加速度數(shù)據(jù),a為濾波后的手勢加速度,該文取k=5,即滑動窗口濾波器的點數(shù)設(shè)為11。經(jīng)預(yù)處理的加速度偏移已被移除,并且曲線更加平滑[9]。
用戶在做手勢動作時,不同使用者手勢動作持續(xù)時間不同,這會導(dǎo)致信道狀態(tài)信息波形長度也相應(yīng)的有不同長度,最終手勢動作提取出的特征也會有差異,從而影響手勢識別率,系統(tǒng)采用動態(tài)時間規(guī)整DTW 算法[10-11]解決這一問題.設(shè)手勢庫的手勢信號Y為(Y1,Y2,…,Ym),其中,m為手勢庫手勢數(shù)據(jù)點的總數(shù),待識別手勢信號X為(X1,X2,…,Xn),其中,n為待識別手勢數(shù)據(jù)點的總數(shù),m≠n,DTW 算法要先計算X和Y中每個數(shù)據(jù)點的距離[10],得到一個大小為m×n的矩陣D(i,j),D(i,j)的求解公式如下:
其中,1≤i≤m,1≤j≤n,D(i,j)必須從D(1,1)開始,到D(m,n)結(jié)束,以保證X和Y每個數(shù)據(jù)點都在D(i,j)中出現(xiàn),此外D(i,j)中的i和j必須是單調(diào)增加的,以保證對應(yīng)數(shù)據(jù)點之間沒有交叉,匹配距離D(m,n)可根據(jù)如下公式求得:
最后,將待識別的手勢數(shù)據(jù)與手勢庫中的每個手勢信號進行匹配,由手勢庫表示的與最小匹配距離相對應(yīng)的手勢就是待識別的手勢。
WIFI 識別是基于環(huán)境中已有信號,分析信號的特征來感知交互設(shè)備或者人體行為信息,該系統(tǒng)將WIFI 定位識別算法和手勢識別算法相結(jié)合,主要包括3 個步驟,首先是手勢設(shè)備感知環(huán)境中已有的WIFI 設(shè)備信號,根據(jù)已有的WIFI 信號強弱得出設(shè)備距離,鎖定被控設(shè)備;其次,獲取手勢設(shè)備上的人體手勢信息,并進行采集、濾波等預(yù)處理,再利用DTW算法提取包含手勢動作的有效特征,通過手勢庫的信息匹配對提取的特征進行分析識別;最后將手勢信號轉(zhuǎn)化成指令,并通過WIFI 傳輸給受控設(shè)備,受控設(shè)備根據(jù)手勢設(shè)備的位置和手勢信息判斷是否啟動控制。該系統(tǒng)通過WIFI 識別來感知設(shè)備和人的行為,利用環(huán)境中廣泛存在的WIFI 信號,具有良好的通用性和可擴展性,并將WIFI 和手勢識別相結(jié)合,與傳統(tǒng)的識別方法如計算機視覺和紅外傳感相比,基于WIFI 的手勢識別技術(shù)具有不可視、成本低、不受光照限制等優(yōu)點。該系統(tǒng)的WIFI 識別行為不僅可以準(zhǔn)確定位識別的控制環(huán)境設(shè)備,也可以識別人體行為動作,實現(xiàn)在無接觸的情況下對指定位置的設(shè)備做特定的控制,達到人機交互的效果。
采用HT32F165664LQFP 作為主控芯片,結(jié)合各種傳感器以及MPU6050、nRF24101、ESP8266 組成一個基于RSSI 技術(shù)的WIFI 室內(nèi)定位手勢識別控制系統(tǒng)。
測試環(huán)境是在室內(nèi)進行的,在AP 模式下分別放置設(shè)備1“FM1”、設(shè)備2“FM2”和設(shè)備3“FM3”三個WIFI 信號,形成大面積的三角形,經(jīng)過三邊測量定位算法計算測試鎖定的被控設(shè)備的位置。在測試過程中,使用單片機連接無線WIFI模塊,在STA 模式下搜到“FM1”,“FM2”和“FM3”的信息,根據(jù)WIFI 定位算法得到信號WIFI 強度及設(shè)備離手勢設(shè)備的距離。
測試環(huán)境是在室內(nèi)進行的,在10 m 的范圍內(nèi),首先訓(xùn)練每個手勢動作,測試的手勢有向前、向后、向左、向右、向上、向下、從中間向左滑動、從中間向右滑動共8 種,在測試數(shù)據(jù)之前,收集了每一種手勢的標(biāo)準(zhǔn)數(shù)據(jù)作為手勢庫,然后每種手勢重復(fù)測試20 次實驗,最終獲取到200 個數(shù)據(jù)[11-15],手勢波形圖如圖6-9 所示。
圖6 向前、向后的手勢
為了驗證算法的有效性,設(shè)計了一個手勢硬件設(shè)備,以HT32F165664LQFP 為主控芯片,將采集的數(shù)據(jù)通過無線WIFI 發(fā)送給設(shè)備端進行識別處理,設(shè)備與STA 模式的ESP8266 模塊連接。用手機不斷掃描更新WIFI 的信息記錄,得到附近的設(shè)備名稱及設(shè)備的信號強度,該文使用3 種設(shè)備重復(fù)掃描50 次,經(jīng)測試得出,信號強弱與設(shè)備的距離有關(guān)。
圖7 向左、向右的手勢
圖8 向上、向下的手勢
圖9 從中間向左、右滑動的手勢
PC 端得到用戶所需的有用的三個設(shè)備信號數(shù)據(jù),經(jīng)過5 次移動主控設(shè)備可以得到不同的信號強度,根據(jù)信號強度鎖定被控設(shè)備。
經(jīng)過實際測試數(shù)據(jù)后,根據(jù)測得的RSSI 值進行分析,找出誤差。在某些情況下(室內(nèi)空曠),數(shù)據(jù)基本準(zhǔn)確,誤差在可接受范圍內(nèi)。
實驗者對每種手勢進行模型訓(xùn)練,從而構(gòu)建基于實驗者的手勢庫,該文共定義8 種手勢來驗證識別方法的有效性,如圖10 所示。
圖10 手勢的具體動作
實心圓圈為手勢起點,實心箭頭為手勢終點。在數(shù)據(jù)的采集過程種,采樣頻率為64 Hz,兩個手勢之間至少間隔1。選擇5 位同學(xué),在滿足手勢定義和采集要求的前提下,以各自的力度和方式重復(fù)各個手勢40 次,并經(jīng)過5 位同學(xué)不同方向手勢動作各做40 次實驗,采集數(shù)據(jù)進行預(yù)處理,把待測手勢數(shù)據(jù)經(jīng)過DTW 動態(tài)時間規(guī)整算法跟對應(yīng)實驗者的手勢庫進行手勢庫特征值匹配,在200 個樣本中大概有4 個會出錯,最終的手勢識別率均達到98%左右。
如表1 所示,經(jīng)過實驗發(fā)現(xiàn),向上和向右識別速率最高,其次是向前和中間向左右滑動,而向下識別率相對較低,平均識別率為98.125%。
表1 各種手勢的測試識別率
表2 比較了該文及其他文獻中提出的不同手勢識別算法的性能??梢钥闯?,該文提出的動態(tài)時間規(guī)整算法的性能略高于其他算法。
表2 不同手勢識別算法的識別率比較
通過RSSI 定位算法和基于加速度傳感器手勢識別算法相結(jié)合的方法進行檢測識別,所采集到的數(shù)據(jù)能有效解決多個設(shè)備的識別問題及手勢的識別問題。該系統(tǒng)通過串口將采集到的數(shù)據(jù)實時傳送到PC,然后進行采集、預(yù)處理、特征提取等操作,最后實現(xiàn)選中設(shè)備并能手勢控制設(shè)備的目的。實驗結(jié)果表明,向上和向右手勢識別率最高,其次是向前和滑動,而向下識別率相對較低。手勢識別率基本能達到98%,通過這種控制方法,可以快速地識別被控設(shè)備并通過簡單的手勢完成設(shè)備的控制,但該方法對于復(fù)雜手勢動作和WIFI 設(shè)備太靠近的情況下識別率不高,今后將研究更復(fù)雜的手勢動作,提高識別精度。