禹 忠, 黃一超, 郭 暢
(西安郵電大學 通信與信息工程學院,陜西 西安 710121)
微機電系統(micro-electro-mechanical system,MEMS)傳感器,是一種可以將多種自然信號收集并轉換為電子系統能夠識別的電信號的工具,憑借其體積小、重量輕,抗干擾能力強,能耗低研究者會利用或提出相關算法來實現對MEMS傳感器精度的提升。
馬群等人[1]建立了自回歸滑動平均模型,再通過卡爾曼濾波器對MEMS的精度進行提升,并通利用Allan方差分析法,觀測出其量化噪聲、角度隨機游走和零偏誤差系數都形成了不同程度的降低。孫玉潔等人[2]曾利用神經網絡進行非線性映射,通過建立傳感器輸出數據與實際姿態(tài)之間的誤差補償模型,預測出三種姿態(tài)角的誤差補償度數,提升了MEMS在姿態(tài)感應輸出上的精度。王法亮等人[3]和郭震等人[4]在神經網絡算法的基礎上分別引入了自適應權重粒子群優(yōu)化(particle swarm optimization,PSO)算法和螢火蟲算法(firefly algorithm,FA)對神經網絡算法進行優(yōu)化,從而針對MEMS加速度計實現效果更加顯著的溫度誤差補償。
本文以陀螺儀陣列[5]為研究對象,針對其建立隨機漂移誤差模型,在原先卡爾曼濾波的基礎上再結合人工神經網絡(artificial neural network,ANN)算法有規(guī)律性地對過程噪聲協方差矩陣Q和測量噪聲協方差矩陣R進行訓練,最后對比此結合算法與原先基礎卡爾曼濾波算法的降噪能力。
實驗中,選用4片型號為ADXRS620的單軸陀螺儀在一塊印刷電路板(printed circuit board,PCB)上2×2進行布線排列從而實現陀螺儀的陣列排布,主控芯片采用STM32151CB,經過初步數據采集之后,經過建立的陀螺儀陣列的隨意漂移誤差模型,如圖1。
圖1 系統整體算法設計流程
每進行3 000次卡爾曼濾波迭代就利用神經網絡算法對矩陣Q和矩陣R進行訓練一輪,直到最后的高精度數據輸出。最后,將經過卡爾曼與神經網絡算法結合的濾波算法輸出的數據和經過單一卡爾曼濾波算法輸出的數據進行比較,突出本文所提出的算法的先進性。
Allan方差分析法通常被用來分析五種類型的誤差:零偏不穩(wěn)定性、角度隨機游走白噪聲、速率斜坡、角速度隨機游走白噪聲和陀螺儀的量化噪聲。本文研究的是陀螺儀陣列的前三種類型誤差。本文利用Allan方差法實現兩個功能:一個是對比經過不同濾波算法的陀螺儀性能;另一個則是獲得相關的噪聲參數(噪聲參數可以用于設置Q陣或是直觀的定量對比分析)。
式中i為陀螺儀陣列中的第i個陀螺儀;bi為第i個陀螺儀的零偏不穩(wěn)定性;nbi則為第i個陀螺儀的角速度隨機游走白噪聲;yi的含義是陀螺儀的實際輸出;ω為陀螺儀的真實角速率,在實際的實驗中,由于存在噪聲的影響,因此ω表現為nω;nai為陀螺儀的角度隨機白噪聲。
構造本文算法中的基于卡爾曼濾波[6~8]的系統的狀態(tài)方程和量測方程。首先將式(1)中兩式改寫成矩陣形式
其中,各向量矩陣展開為
本文將零偏不穩(wěn)定性b和真實角速率ω作為狀態(tài),系統的狀態(tài)矢量X=[bTω]T,由此式在(2)的基礎上建立陀螺儀陣列的狀態(tài)方程和量測方程如下
式中F為系統的狀態(tài)轉移矩陣,為0(N+1)×(N+1);G為噪聲矩陣,為I(N+1)×(N+1);此式中的H為含有噪聲的量測矩陣,為[IN×N… 1N×1];W(t)和V(t)為相互獨立的白噪聲,其方差分別是q和r,E[W(t)WT(t)]=Qδ(t-τ),E[V(t)VT(t)]=Rδ(t-τ)。
式中Qb為角速度隨機游走噪聲矢量nb的協方差矩陣,Qω為真實角速率的噪聲矢量nω的協方差矩陣
R=[Qa]
(5)
式中Qa為角度隨機游走噪聲矢量na的協方差矩陣。
本文實驗是建立在25 ℃的恒溫環(huán)境下的,卡爾曼濾波器的采樣頻率為200 Hz,采樣點總共15 000個。經過Allan方差的隨機漂移誤差識別,令N=4,則Q陣的初值為106diag(1.1,1.2,1.1,1.3,1.0),R陣的初值是3×10-3diag(1,1,1,1),X0=[0 0 0 0 0]T,P0=diag(100,100,100,100,100)。
將式(3)離散化得
當N=4時,式(6)中的F為05×5,G為I5×5,H為[I4×4…I4×1];系統的觀測方程構建如式(7)
(7)
迭代時,將訓練好的Q陣和R陣代入如下的式(8)和式(9)中
Pk|k-1=FPk-1|k-1FT+GQGT
(8)
Kk=Pk|k-1HT[HPk|k-1HT+R]-1
(9)
式(9)則通過更新Kk檢查卡爾曼濾波器內神經網絡模型與實際測量值的權重從而起到濾波的效果;Kk更新后,再通過式(10)求出卡爾曼濾波的最佳值
(10)
最后再通過式(11)實現狀態(tài)協方差矩陣的更新,準備開始下一次迭代
Pk|k=(I-KkH)Pk|k-1
(11)
式中Pk|k為估計誤差協方差陣。
本文選用的是Python編程語言中的TensorFlow框架來搭建人工神經網絡。
采用4層訓練網絡[9,10],防止因輸入輸出數據量級過高使學習函數散射從而導致精度降低的問題出現。每進行3 000次卡爾曼迭代神經網絡系統就對隨機漂移誤差模型中的Q值和R值分別進行訓練一次,總訓練次數為5次。此訓練網絡是一個單一輸入和單一輸出的的神經網絡系統,輸入端為Q值或R值,記為X1,四層的隱藏間層的神經元數量分別為第一層10個、第二層30個、第三層60個以及第四層20個。圖2為神經元的工作模式示意圖。
圖2 神經元工作示意
數據進入輸入層并展開成到第一層的10個神經元,每個神經元通過突觸權值Wk1,Wk2,…,Wkn進行加權整理,當輸入超過閾值T時,系統會激發(fā)神經元形成脈沖,通過非線性的傳遞函數最終輸出Y1。該網絡采用的優(yōu)化算法是梯度下降算法中的隨機梯度下降算法。其參數的更新公式如下
本實驗的對象是2×2的單軸陀螺儀陣列,通過每個陀螺儀之間的相關性進行數據融合可以得到最終的濾波數據。圖3為不同模型的濾波結果對比,圖3可以明顯看出卡爾曼濾波結合神經網絡濾波算法的降噪能力要高于基礎卡爾曼濾波器的降噪能力。
圖3 不同模型濾波結果對比
從圖4的濾波前后Allan方差雙對數曲線圖可以看出,圖中各數據的曲線走勢基本相同,因此,傳感器間誤差差異不大,表明實驗中選用的各個陀螺儀性能基本一致,符合陀螺儀陣列設計??柭鼮V波結合神經網絡濾波算法處理后的數據曲線在所有曲線的最下方,說明算法對陀螺儀的各個誤差參數的抑制更優(yōu)。并且算法曲線走勢與原始數據融曲線走勢基本相同,表明經過算法處理后并未對陀螺儀的誤差特性進行改變。
圖4 濾波前后Allan方差雙對數曲線對比
表1 不同濾波算法隨機漂移誤差系數對比
本文針對4個單軸MEMS陀螺儀形成的2×2陣列構成的虛擬陀螺,提出了一種卡爾曼濾波結合ANN的濾波算法,通過將神經網絡系統嵌套在卡爾曼迭代中,可以對各種噪聲進行有效抑制,從而提高陀螺儀陣列的輸出精度。并且通過實際測量數據進行了驗證,結果證明:本文提出的結合算法將 MEMS陀螺儀陣列的零偏不穩(wěn)定性、角度隨機游走和速率斜坡等重要參數實現了大幅優(yōu)化,同時與基礎卡爾曼濾波算法相比,本文結合算法將上述三個參數分別下降了76.38 %,78.91 %和80.98 %,其優(yōu)化性能具有明顯優(yōu)勢。