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

圖1 解算姿態角
算法具體的實現步驟為:

(1)

(2)

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

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

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

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

圖4 控制端程序流程圖

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

圖6 手勢控制器

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

表1 4種手勢識別的準確率
本文設計了一種基于卡爾曼濾波的手勢控制系統,以微控制器STM32f103t8u6為核心,利用卡爾曼濾波算法,完成了手勢的檢測與識別,實現無需網絡即對智能設備的無線控制。通過初步的測試表明,該控制系統能準確地控制智能設備,具有功耗低、操作簡單、體積小巧的優點。