簡體   English   中英

有界卡爾曼濾波器

[英]Bounded Kalman Filter

上限和下限約束可以應用於由卡爾曼濾波器更新的估計嗎?

我有一種在現實生活中只能具有非負值的狀態。 當我應用卡爾曼濾波器時,此狀態將更新為具有負值。 如何在卡爾曼濾波器中應用此限制約束?

請回復

謝謝

一種機制是創建人工測量。 在這種情況下,如果估計值降到零以下,則進行“測量”以將其拉入。因此,如果估計值為-x,則對測量值x ^ 2的“ x”進行人工測量。 一個明顯的缺點是狀態變量的協方差估計值失真。

第二種方法是將狀態向量和協方差矩陣轉換為不存在約束的空間。 例如,濾波器可以在對數空間中運行。 過濾器可以產生正值或負值,但是當通過變換x'= e ^ x轉換回正常空間時,所有值都是正值。 這排除了生成負估計的可能性,但是協方差矩陣現在當然是對數空間中二階統計量的描述,這可能不是真實統計量的准確表示。 要移到另一個空間進行過濾,必須對所有模型矩陣,轉換矩陣,測量雅可比矩陣以及過程和測量噪聲矩陣進行轉換。

在UKF(無味卡爾曼濾波器)中,通過簡單地限制sigma點(這些點是您生成的,這些點近似於您的狀態的高斯分布,並考慮了誤差),很容易做到這一點。

對於EKF,您可以找到有關如何將狀態空間投影回約束邊界的論文。 復雜性來自兩個因素:

  • 如果您具有多變量約束(例如2D距離),那么您想以有意義的方式移動相關變量。
  • 更新一個狀態變量時,您希望通過協方差矩陣在與之相關的其他狀態變量中反映該更改。 例如,如果您的狀態包括速度和位置,則測量可能會導致對速度的少許校正和對位置的少許校正。 如果約束在更新后限制了速度,則需要對位置進行相關更改。

綁定EKF中的狀態變量的一些常見方法(對不起,沒有KF)如下:

如果x是狀態,我們將其增加到有界狀態x'

  1. 為了強制執行x > a這樣的邊界,我們定義了一個新狀態x' = exp(x) + a 這永遠不會小於a as exp(x) -> 0 as x -> -inf 對於x < -a => x' = - exp(x) - a x < -a負約束也是如此

  2. 如果要在狀態a < x < b上設置上下限:可以使用Sigmoid函數來實現,最流行(根據我的經驗)是x' = tanh(x) ,它將綁定x至(-1,1)。 現在,將其推廣為a < x < b是一個簡單的步驟,因為我們需要將其縮放到適當的大小並將其偏移為x' = tanh(x)*(ba)/2 + (a+b)/2 因此,當tanh(x) = -1我們得到a ;當tanh(x) = 1我們得到b ,成功實現了所需的界限。

並且這通常涵蓋了大多數范圍,並且它們各自的導數是可以接受的。 希望能幫助到你!

實際上,這可以在每個線性或非線性卡爾曼濾波器公式中非常簡單地實現:只需在每個時間步長執行min(xmax, max(xmin, x_plus)) ,其中x_plus是更新步驟后的狀態估計。 雖然這聽起來像是一個非常糟糕的技巧,但卻失去了所有卡爾曼過濾器的良好屬性等,但實際上,從理論上講,這是很合理的。 有關詳細信息,請參閱IET的D. Simon(2010),“具有狀態約束的卡爾曼濾波:線性和非線性算法的概論”。 Simon討論了更復雜的一般線性不等式約束的情況,但是在簡單邊界框的情況下,“狀態投影方法”簡化為上述操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM