鐘玲玲,呂 騰
(安徽新華學(xué)院 a.電子通信工程學(xué)院; b.信息工程學(xué)院,合肥 230088)
卡爾曼濾波是一種利用線性系統(tǒng)狀態(tài)方程,通過(guò)系統(tǒng)的輸入輸出觀測(cè)數(shù)據(jù),對(duì)系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計(jì)的算法[1]。此算法利用微控制器STM32f103t8u6實(shí)時(shí)檢測(cè)姿態(tài)傳感器,獲取陀螺儀、加速度的原始數(shù)據(jù),然后利用線性系統(tǒng)狀態(tài)方程進(jìn)行最優(yōu)估計(jì),最終得出最優(yōu)數(shù)據(jù)姿態(tài)角。解算過(guò)程如圖1所示。

圖1 解算姿態(tài)角
算法具體的實(shí)現(xiàn)步驟為:

(1)

(2)

(3)
第4步,計(jì)算卡爾曼增益:利用(4)式求出卡爾曼增益Kt,其中HT是H的轉(zhuǎn)置,R是測(cè)量噪聲協(xié)方差矩陣。
(4)

(5)
卡爾曼濾波是一種迭代濾波方法。通過(guò)對(duì)協(xié)方差矩陣進(jìn)行更新,得出最佳估計(jì)值的噪聲分布,為下一輪迭代所用,從而不斷地估算出每一次最優(yōu)的姿態(tài)角[2-3]。
該系統(tǒng)由手勢(shì)控制模塊和手勢(shì)解析模塊兩部分組成。手勢(shì)控制模塊主要由微控制器、姿態(tài)傳感器和無(wú)線通信模塊構(gòu)成,通過(guò)微控制器實(shí)時(shí)檢測(cè)姿態(tài)傳感器的姿態(tài)數(shù)據(jù),利用卡爾曼濾波得出最優(yōu)數(shù)據(jù)歐拉角,再將歐拉角解算得到的標(biāo)志位通過(guò)無(wú)線模塊發(fā)送出去。手勢(shì)解析模塊,以小車為例,主要由微控制器、電機(jī)驅(qū)動(dòng)模塊和無(wú)線通信模塊構(gòu)成。通過(guò)無(wú)線通信單元接收標(biāo)志位,解析出指令,然后和自身設(shè)定的指令比對(duì)識(shí)別,一致則執(zhí)行相應(yīng)動(dòng)作,不一致則不做出任何響應(yīng)。硬件組成框圖如圖2所示。

圖2 硬件組成框圖
微控制器:STM32f103t8u6采用ARM Cortex-M3內(nèi)核,主頻72M,閃存執(zhí)行代碼,STM32功耗36mA,功耗為0.5mA/MHz[4]。其主要功能是實(shí)時(shí)分析姿態(tài)傳感器的加速度和角速度數(shù)據(jù),通過(guò)卡爾曼濾波算法解算出歐拉角,設(shè)定歐拉角的臨界值,產(chǎn)生標(biāo)志位,即指令,再由無(wú)線通信模塊發(fā)送出去,從而達(dá)到手勢(shì)控制智能設(shè)備的目的。微控制器及與其它單元引腳連接原理圖如圖3所示。

圖3 微控制器及與其它單元引腳連接原理圖
無(wú)線通信模塊:NRF24L01 是 NORDIC 公司生產(chǎn)的一款無(wú)線通信芯片,具有價(jià)格低廉、信號(hào)穩(wěn)定的特點(diǎn)[5]。具體的無(wú)線通信過(guò)程為:手勢(shì)控制器端持續(xù)檢測(cè)手勢(shì)動(dòng)作,并不斷發(fā)送對(duì)應(yīng)手勢(shì)的指令;手勢(shì)解析模塊始終處于接收狀態(tài),分析手勢(shì)控制端發(fā)送的指令,從而做出相匹配的動(dòng)作。
姿態(tài)傳感器:MPU6050是InvenSense公司生產(chǎn)的一款六軸傳感器,能同時(shí)檢測(cè)三軸加速度、三軸陀螺儀(三軸角速度)的運(yùn)動(dòng)數(shù)據(jù),具有質(zhì)量輕、功耗低及性價(jià)比高的特點(diǎn)[6]。工作過(guò)程是首先將手勢(shì)分割為若干基本手勢(shì),利用姿態(tài)傳感器采集每個(gè)基本手勢(shì)執(zhí)行過(guò)程中的三軸加速度和三軸角速度信息,將這些加速度與角速度信息經(jīng)過(guò)處理之后,找出手勢(shì)動(dòng)作的特征量,不同的特征量對(duì)應(yīng)不同的基本手勢(shì)動(dòng)作。
上電開(kāi)機(jī),首先進(jìn)行外設(shè)初始化,再進(jìn)行各項(xiàng)flash參數(shù)初始化,最后在2ms一次的定時(shí)器程序中不斷獲取標(biāo)志位,主函數(shù)再持續(xù)不斷地發(fā)送標(biāo)志位即可完成整個(gè)手勢(shì)控制端的發(fā)送。控制端程序流程如圖4所示。
手勢(shì)解析模塊需要對(duì)手勢(shì)控制器發(fā)送的標(biāo)志位進(jìn)行判斷,若與預(yù)設(shè)的指令相一致,則執(zhí)行預(yù)設(shè)動(dòng)作,否則無(wú)行動(dòng)。以智能小車為例,假定預(yù)設(shè)指令手勢(shì)為“水平上”、“水平下”、“水平左”和“水平右”,手勢(shì)解析模塊會(huì)控制電機(jī)驅(qū)動(dòng)模塊完成相應(yīng)的“前進(jìn)”、“后退”、“左轉(zhuǎn)”、“右轉(zhuǎn)”動(dòng)作??刂菩≤嚦绦蚴疽鈭D如圖5所示。

圖4 控制端程序流程圖

圖5 控制小車程序示意圖
手勢(shì)控制器采用PCB打樣,貼片元器件焊接,從而縮小控制器體積,使電路連接性能穩(wěn)定。手勢(shì)控制器尺寸長(zhǎng)40mm,寬15mm,高5mm,可嵌入到硅膠手環(huán)中,增加用戶交互體驗(yàn)。手勢(shì)控制器實(shí)物如圖6所示。

圖6 手勢(shì)控制器

圖7 手勢(shì)控制小車示意圖
下面以小車為例,介紹解析模塊。小車采用金屬車模底盤,保證了小車在運(yùn)行時(shí)候的結(jié)構(gòu)堅(jiān)固性。車模上采用12V的直流電機(jī),保證了小車具有強(qiáng)勁的動(dòng)力系統(tǒng)[7]。將小車放在地面,將電源打開(kāi),再將手勢(shì)控制器打開(kāi),將兩端無(wú)線通信模塊進(jìn)行配對(duì)連接,若配對(duì)成功即可交互數(shù)據(jù)。這時(shí),將可佩帶手勢(shì)控制器系于手腕。在做手勢(shì)動(dòng)作時(shí),手腕產(chǎn)生加速度與角速度,微控制器處理得到歐拉角,即可產(chǎn)生標(biāo)志位。
手勢(shì)識(shí)別系統(tǒng)準(zhǔn)確率測(cè)試:首先,隨機(jī)選擇年齡不同的30位測(cè)試者,在一個(gè)地面光滑平整的自然環(huán)境中,輕松隨意地操作戴在手腕上的手勢(shì)控制器。然后,將小車放在地面上,給小車一定加速度使其處于平衡狀態(tài),在不施加外力的情況下,小車將一直保持相對(duì)靜止?fàn)顟B(tài)。最后,要求測(cè)試者分別做水平上、水平下、水平左、水平右4種手勢(shì),每一種手勢(shì)20次。手勢(shì)控制小車示意圖如圖7所示。
經(jīng)過(guò)計(jì)算,水平上的手勢(shì)識(shí)別率為99%,水平下的手勢(shì)識(shí)別率為96%,水平左的手勢(shì)識(shí)別率為93%,水平右的手勢(shì)識(shí)別率為95%,4種手勢(shì)的平均識(shí)別率為95.5%。對(duì)于手勢(shì)識(shí)別不正確各種手勢(shì)識(shí)別的準(zhǔn)確率不同的情況,主要是因?yàn)闇y(cè)試者在操作的時(shí)候動(dòng)作變形、動(dòng)作幅度太小及突然改變動(dòng)作等。 手勢(shì)識(shí)別測(cè)試結(jié)果如表1所示。

表1 4種手勢(shì)識(shí)別的準(zhǔn)確率
本文設(shè)計(jì)了一種基于卡爾曼濾波的手勢(shì)控制系統(tǒng),以微控制器STM32f103t8u6為核心,利用卡爾曼濾波算法,完成了手勢(shì)的檢測(cè)與識(shí)別,實(shí)現(xiàn)無(wú)需網(wǎng)絡(luò)即對(duì)智能設(shè)備的無(wú)線控制。通過(guò)初步的測(cè)試表明,該控制系統(tǒng)能準(zhǔn)確地控制智能設(shè)備,具有功耗低、操作簡(jiǎn)單、體積小巧的優(yōu)點(diǎn)。