卓老師,我想問一個關于卡爾曼濾波的問題,希望您能解答一下。之前我用的互補濾波效果也還好,但在用卡爾曼濾波的時候出現了一些問題:就是如何整定卡爾曼濾波的Q、R這兩個參數,這兩個參數分別是角度數據置信度與角速度數據置信度。我看別人用的這兩個參數都非常小,比如別人Q都是零點零零幾,而我用的時候發現Q零點幾跟隨效果很差,我把Q調到1跟隨效果才差不多。但是Q和R不都是協方差嗎,它們可以取到1及以上的值嗎?即Q和R有沒有取值范圍,以及這兩個參數整定方法是什么?還是我理解有問題,希望卓大或者車友可以解答一下。
回復:在智能車競賽中,Kalman濾波算法常常被用來計算直立車模傾角和轉動角速度。算法利用陀螺儀給出的轉速度量和加速度傳感器給出的傾角觀測量完成計算。除了Kalman濾波器算法之外,還可以使用互補濾波器進行幫助計算。
如果不考慮系統狀態的時變性和系統噪聲的時變性,上述兩種方法本質上是相同的。
下圖顯示了對于被測物體位置使用Kalman濾波算法來估計物體實際位置的示意圖。
通常情況下所使用的Kalman濾波器是離散時間系統形式的。我們真正想得到的物理量表示成系統狀態中的某些分量。對于系統狀態的估計(濾波結果)所使用的信息來源于兩個方面,一個是對系統狀態演變模型的了解,包括系統轉移矩陣和輸入控制矩陣,輸入孔質量等,另一方面來自于對系統狀態的觀測量。
但這兩方面的信息都會有某種不確定性。通常使用系統噪聲向量(W)和觀測噪聲向量(V)來表示。兩個噪聲大小分別使用它們各自的協方差矩陣來表示。系統噪聲協方差矩陣使用Q,觀測噪聲的協方差矩陣使用R。
下面是系統方程和觀測方程表達式。雖然在表達式中包括了系統噪聲w和轉測噪聲v,但在計算系統狀態轉移和系統觀測量的時候并不考慮這兩個噪聲的影響。
兩個噪聲的影響只是在卡爾曼濾波器離散迭代算法過程中使用到了兩個噪聲的協方差矩陣Q和R。分別用于計算系統狀態估計誤差的協方差矩陣P和卡爾曼濾波器增益K的大小。
下面是傳統線性卡爾曼濾波器的五個基本迭代公式。
從上面公式來看,真正所要濾波得到的結果來自于公式(4)中的系統狀態估計值x的某些分量,公式(4)的結果是由公式(1)所得到的狀態預測值和來自觀測量y計算得到的。其中卡爾曼濾波器增益K是在狀態預測值和觀測誤差值之間做了一個折中。
如果K很小,比如等于0,則濾波結果更加接近由系統狀態估計值給出的遞歸結果;如果K很大,比如等于1,則濾波結果更加接近于觀測值所反算出來的狀態變量。
K值是由公式(3)計算獲得,其中的P值是通過公式(2)(5)進行計算,反映了Q的大小,因此K值的大小可以由如下形式示意:
因此,K值至于Q,R的比值有關系,而與Q,R的絕對值沒有關系。所以,在不同算法中,R, Q的取值根據反應的不同量綱,可以有很大的變化,但它們的比值會決定了濾波值應該更多來自于系統模型演化的信息,還是來自于觀察信號信息。
在智能車競賽中,使用Kalman濾波器將慣性傳感器所得到的車體陀螺儀所反映的角速度和和加速度傳感器所獲得的傾斜角信息進行融合,獲得直立車模傾角和轉動角速度。
此時,往往將系統狀態x設定為車模需要觀察的角度。系統輸入量u為測量所得到的角速度;系統觀察值設定為有加速度傳感器給出的傾角。
系統模型噪聲w應該反映出陀螺儀測定角速度的隨機誤差和隨著時間漂移的系統誤差兩部分。系統觀測噪聲v應該反映了加速度計輸出量中在計算角度的近似誤差和由于車模運動所產生的干擾噪聲。
如果Q大R小,造成K增加,則濾波結果中就會存在較大的由于車模運動所產生的噪聲,俗稱跟蹤不好;如果Q小R大,造成K減小,則濾波結果會出現兩種問題,第一就是從處置值收斂到正確值的過程較慢,需要等一個比較長的穩定時間。另一方面就是會受到陀螺儀本身零點漂移,產生比較大的輸出零點誤差。
最終這兩個參數的大小可以根據所選擇的器件的實際性能(噪聲,漂移等)通過實驗觀察的方式獲得一個比較好的相對值。
編輯:黃飛
-
濾波器
+關注
關注
160文章
7727瀏覽量
177670 -
慣性傳感器
+關注
關注
2文章
167瀏覽量
27909 -
卡爾曼
+關注
關注
0文章
21瀏覽量
12169 -
加速度傳感器
+關注
關注
12文章
469瀏覽量
55113
原文標題:卡爾曼濾波器中的Q,R
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論