丁 盛,姜 華
(1.無(wú)錫職業(yè)技術(shù)學(xué)院,江蘇無(wú)錫 214000;2.中物云信息科技(無(wú)錫)有限公司,江蘇無(wú)錫 214000)
近年來(lái),人工智能發(fā)展迅猛,生活中的智能設(shè)備越來(lái)越多,手勢(shì)識(shí)別應(yīng)用于人機(jī)交互領(lǐng)域受到越來(lái)越多的研究,已廣泛應(yīng)用于電腦、手機(jī)等電子設(shè)備[1-3]。手勢(shì)識(shí)別是屬于計(jì)算機(jī)科學(xué)與語(yǔ)言學(xué)的一個(gè)將人類手勢(shì)通過(guò)數(shù)學(xué)算法針對(duì)人們所要表達(dá)的意思進(jìn)行分析、判斷并整合的交互技術(shù)[4-5]。在手勢(shì)識(shí)別中,往往需要從復(fù)雜背景中提取手勢(shì),需要處理的數(shù)據(jù)也十分繁雜,導(dǎo)致傳統(tǒng)的識(shí)別系統(tǒng)必須基于計(jì)算機(jī)才能解決。在手勢(shì)識(shí)別及外部控制的過(guò)程中,特征識(shí)別情況具有多樣性。手勢(shì)檢測(cè)與控制在實(shí)時(shí)條件下對(duì)于識(shí)別速度與控制精度有較高的要求。本文設(shè)計(jì)了一種基于FDC2214 電容傳感器[6]的手勢(shì)識(shí)別裝置,并搭建了硬件樣機(jī),采集手勢(shì)變化引起的電容變化值,采用IIR濾波、中值濾波、Knn 算法和聚類算法,對(duì)該系統(tǒng)進(jìn)行有效的手勢(shì)識(shí)別并實(shí)時(shí)進(jìn)行模擬測(cè)試,效果達(dá)到預(yù)期指標(biāo)。
本系統(tǒng)主要由Arduino Mega2560 單片機(jī)、FDC2214 傳感器、OLED 顯示屏和3×4 按鍵等部分組成。系統(tǒng)通過(guò)按鍵程序設(shè)置實(shí)現(xiàn)對(duì)猜拳和劃拳游戲的判決和訓(xùn)練模式。單片機(jī)實(shí)時(shí)采樣經(jīng)9 位A/D 變換后在OLED 顯示屏上顯示出相應(yīng)的手勢(shì)。經(jīng)濾波運(yùn)算后,采用LC 諧振器作為傳感器,能進(jìn)行正確的猜拳游戲和劃拳游戲的手勢(shì)判決。系統(tǒng)總體框架如圖1 所示。
圖1 手勢(shì)識(shí)別裝置總體框圖
1.2.1 主控單元
Arduino Mega2560[7]是采用USB接口的核心電路板,具有多達(dá)54路數(shù)字輸入輸出,適合需要大量IO接口的設(shè)計(jì),支持IIC接口,有3種供電方式,能自動(dòng)選擇供電方式。
1.2.2 電容式傳感器
FDC2214 電容傳感器在芯片每個(gè)檢測(cè)通道輸入端連接一個(gè)電感和電容,組成LC 電路,被測(cè)電容傳感端與LC 電路相連接,當(dāng)人手接近傳感平面時(shí),傳感端的電容發(fā)生變化,導(dǎo)致LC 電路振蕩,從而根據(jù)電容測(cè)試實(shí)現(xiàn)手勢(shì)判決。
1.2.3 OLED 顯示屏
顯示模塊采用OLED 液晶顯示屏,由非常薄的有機(jī)材料涂層和玻璃基板構(gòu)成。當(dāng)有電荷通過(guò)時(shí)這些有機(jī)材料就會(huì)發(fā)光。有源陣列OLED 顯示屏具有內(nèi)置的電子電路系統(tǒng),因此每個(gè)像素都由一個(gè)電路獨(dú)立驅(qū)動(dòng)。
1.2.4 矩陣鍵盤
按鍵設(shè)置在行列線交點(diǎn)上,行列線分別連接到按鍵開關(guān)的兩端。行線通過(guò)上拉電阻接到+5 V 電源上。矩陣鍵盤中設(shè)置了功能鍵8 個(gè),分別為數(shù)字1、數(shù)字2、數(shù)字3、數(shù)字4、數(shù)字5、剪刀、石頭和布;檢測(cè)功能鍵2個(gè),分別為檢測(cè)數(shù)字1—5、檢測(cè)石頭、剪刀、布;學(xué)習(xí)功能鍵2 個(gè),分別為學(xué)習(xí)劃拳游戲、學(xué)習(xí)猜拳游戲。
1.3.1 系統(tǒng)總體工作流程
系統(tǒng)上電后或復(fù)位鍵按下后開始運(yùn)行程序,OLED屏幕、FDC2214 傳感器、Mega2560 單片機(jī)開始初始化并配置,主控芯片通過(guò)readChannel 函數(shù)讀取FDC2214傳感器IIC 接口輸出的16 進(jìn)制數(shù)據(jù),readValue 函數(shù)將其轉(zhuǎn)換成10 進(jìn)制數(shù)據(jù),通過(guò)IIR 濾波函數(shù)去除掉干擾信號(hào),再通過(guò)平滑濾波處理掉噪聲信號(hào),隔去直流成分使得變化趨勢(shì)更明顯,然后循環(huán)進(jìn)行數(shù)據(jù)接收。此時(shí)判斷鍵盤的數(shù)值,進(jìn)入判定或訓(xùn)練模式,控制OLED 屏顯示對(duì)應(yīng)的信息。如果訓(xùn)練模式,輸入訓(xùn)練數(shù)據(jù),進(jìn)行聚類分析[8],確定判斷的閾值數(shù)組,接著等待;如果判定模式,進(jìn)行Knn 比較[9],判斷歐式距離最近的類別為測(cè)試的手勢(shì),在OLED 屏幕上顯示出對(duì)應(yīng)的信息。系統(tǒng)的總體流程如圖2 所示。
圖2 系統(tǒng)軟件流程圖
1.3.2 主要模塊程序
初始化模塊:初始化OLED 顯示,鍵盤初始化采用3×4 矩陣鍵盤,對(duì)矩陣鍵盤進(jìn)行行列掃描,獲得鍵值;初始化Mega2560 單片機(jī),設(shè)置引腳及端口,初始化序列及寫函數(shù)。
功能模塊:數(shù)據(jù)采集分析模塊,采集數(shù)據(jù),分析數(shù)據(jù),對(duì)串口數(shù)據(jù)整理,寫出猜拳、劃拳函數(shù)。
鍵盤模塊:鍵盤功能鍵程序,使其功能鍵對(duì)應(yīng)任務(wù)要求功能。
顯示模塊:程序初始化時(shí)要對(duì)OLED 顯示進(jìn)行初始化,設(shè)置其字體大小、顏色,顯示經(jīng)過(guò)程序分析過(guò)的數(shù)據(jù)。程序的主要結(jié)構(gòu)見表1。
表1 關(guān)鍵模塊程序清單
1.4.1 濾波算法
傳感器得到的數(shù)據(jù)通常有較大的干擾和噪聲,因此需要采用濾波算法進(jìn)行濾除。文中濾波算法如圖3所示,其中,IIR 濾波功能是過(guò)濾掉FDC2214 采集到的波動(dòng)較大的數(shù)據(jù)。
圖3 濾波算法流程圖
為過(guò)濾噪聲,采用平滑濾波算法。均值濾波與中值濾波算法的效果比較如圖4 所示??梢?,相比均值濾波,中值濾波算法保留中位值,能保留有用的原始信息,同時(shí)濾除不必要的干擾。
圖4 濾波算法比較
1.4.2 手勢(shì)判定算法
利用防抖的原理,采用累計(jì)超過(guò)閾值的次數(shù)連續(xù)大于10 次,方才判定處于這個(gè)狀態(tài)中,避免了噪聲和外界干擾引入的短暫越界所引起的誤判。如圖5 所示。
圖5 手勢(shì)判定算法圖
1.4.3 手勢(shì)訓(xùn)練算法
不同手勢(shì)狀態(tài)靜止時(shí)采集連續(xù)50 個(gè)數(shù)值,進(jìn)行平均值求解得到一組數(shù)值,避免數(shù)據(jù)波動(dòng),采用插值法[10]得到后續(xù)手勢(shì)判定時(shí)的閾值數(shù)據(jù)。如圖6 所示。
圖6 手勢(shì)訓(xùn)練算法圖
首先運(yùn)行串口讀取程序進(jìn)行初值測(cè)量,實(shí)測(cè)不同人做出不同手勢(shì),用電腦的串口繪圖儀記錄分析,得出合理的初值。其次把初值寫入程序,再加入濾波程序和顯示程序,做出相應(yīng)手勢(shì)時(shí)觀察在顯示屏上是否得出相應(yīng)的數(shù)值。再把鍵盤的程序加入,并對(duì)鍵盤個(gè)別鍵位進(jìn)行特殊功能賦值(學(xué)習(xí)、猜拳、劃拳和切換)。最后對(duì)各個(gè)子程序進(jìn)行聯(lián)合測(cè)試,包括不同手勢(shì)能否在顯示器上顯示和判別,并且打開串口監(jiān)視器查看是否需要修改賦值。經(jīng)過(guò)多次測(cè)試,得到了各種模式判決的數(shù)據(jù)段,見表2。
根據(jù)以上測(cè)試的數(shù)據(jù)段,在去除外界環(huán)境干擾的條件下,通過(guò)FDC2214 設(shè)計(jì)相應(yīng)的規(guī)定動(dòng)作,經(jīng)反復(fù)調(diào)整和程序優(yōu)化后,最終狀態(tài)測(cè)試數(shù)據(jù)滿足了下列要求。
1)裝置工作在判決模式,進(jìn)行猜拳/劃拳判決,每次判決時(shí)間小于1 s。
2)裝置工作在訓(xùn)練模式,進(jìn)行猜拳/劃拳手勢(shì)訓(xùn)練,手勢(shì)動(dòng)作訓(xùn)練次數(shù)小于3 次,訓(xùn)練時(shí)長(zhǎng)小于2 min;裝置工作在判決模式,進(jìn)行猜拳/劃拳判決,每次判決時(shí)間小于1 s。
本文設(shè)計(jì)的裝置在不接觸的情況下可以正確識(shí)別不同人不同的手勢(shì),給未來(lái)的人工智能、機(jī)器交互提供了一種很好的人機(jī)交互低成本方案。在方案論證中從成本、實(shí)現(xiàn)難易程度出發(fā),分析選擇了適合的技術(shù)方案,設(shè)計(jì)合理的系統(tǒng)架構(gòu),使裝置性能優(yōu)良。日后還將完善裝置的電源部分,提供更加穩(wěn)定的電流電壓供給,使其工作更加穩(wěn)定,功耗更低,在移動(dòng)場(chǎng)景下得到更多的應(yīng)用。