卓老師,我想問一個關于卡爾曼濾波的問題,希望您能解答一下。之前我用的互補濾波效果也還好,但在用卡爾曼濾波的時候出現了一些問題:就是如何整定卡爾曼濾波的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減小,則濾波結果會出現兩種問題,第一就是從處置值收斂到正确值的過程較慢,需要等一個比較長的穩定時間。另一方面就是會受到陀螺儀本身零點漂移,産生比較大的輸出零點誤差。
最終這兩個參數的大小可以根據所選擇的器件的實際性能(噪聲,漂移等)通過實驗觀察的方式獲得一個比較好的相對值。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!