基于FPGA的Kalman濾波器的設(shè)計
摘要:針對電路設(shè)計中經(jīng)常碰到數(shù)據(jù)的噪聲干擾現(xiàn)象,提出了一種Kalman濾波的FPGA實現(xiàn)方法。該方法采用了TI公司的高精度模數(shù)轉(zhuǎn)換器ADSl25l以及Altera公司的EPlCl2,首先用卡爾曼濾波算法設(shè)計了一個濾波器,然后將該濾波器分解成簡單的加、減、乘、除運算。通過基于FPGA平臺的硬件與軟件的合理設(shè)計,成功地實現(xiàn)了數(shù)據(jù)噪聲的濾除設(shè)計,并通過實踐仿真計算,驗證了所實現(xiàn)濾波的有效性。
關(guān)鍵詞:卡爾曼;FPGA;最小方差估計
卡爾曼濾波是一個“Optimal Recursive Data Processing Algorithm(最優(yōu)化自回歸數(shù)據(jù)處理算法)”,對于解決很大部分的問題,是最優(yōu)化的,效率最高甚至是最有用的。傳統(tǒng)的卡爾曼濾波是在DSP上實現(xiàn)的。但是DSP成本相對較高,而且指令是串行執(zhí)行的,不能滿足有些要求較高的場合。而FPGA由于其硬件結(jié)構(gòu)決定了它的并行處理方式,無論在速度還是實時性都更勝一籌。文中以基于FPGA器件和A/D轉(zhuǎn)換器的數(shù)據(jù)采集系統(tǒng)為硬件平臺,進行了卡爾曼濾波算法設(shè)計,詳述了基于FPGA的卡爾曼濾波器的設(shè)計實現(xiàn)。
1 卡爾曼濾波算法
工程中,為了了解工程對象(濾波中稱為系統(tǒng))的各個物理量(濾波中稱為狀態(tài))的確切數(shù)值,或為了達到對工程對象進行控制的目的,必須利用測量手段對系統(tǒng)的各個狀態(tài)進行測量。但是,量測值可能僅是系統(tǒng)的部分狀態(tài)或是部分狀態(tài)的線性組合,且量測值中有隨機誤差(常稱為量測噪聲)。最優(yōu)估計就是針對上述問題的一種解決方法。它能將僅與部分狀態(tài)有關(guān)的測量進行處理,得出從統(tǒng)計意義上講誤差最小的更多狀態(tài)的估值。誤差最小的標準常稱為估計準則,根據(jù)不同的估計準則和估計計算方法,有各種不同的最優(yōu)估計,卡爾曼濾波是一種遞推線性最小方差估計的最優(yōu)估計。
系統(tǒng)的狀態(tài)方程可設(shè)定為
式(3)為系統(tǒng)噪聲。設(shè)設(shè)備的量測噪聲為Vk,系統(tǒng)得量測方程為
式中,是利用當前狀態(tài)預測的結(jié)果,是當前狀態(tài)最優(yōu)的結(jié)果,Pk+1/k是*對應的covariance,Rk是對應的covanance,表示A的轉(zhuǎn)置矩陣,Q是系統(tǒng)過程的covariance。式(1),式(2)就是卡爾曼濾波器5個公式中的前兩個,也就是對系統(tǒng)的預測??梢缘玫綄頎顟B(tài)k+l的最優(yōu)化估算值。
式(9)中I為單位矩陣,對于單模型單測量,I=1。當系統(tǒng)進入k+2狀態(tài)時,Pk+1就是式(2)的Pk。這樣,算法就可以自回歸的運算下去。
評論