[英]Bounded Kalman Filter
上限和下限約束可以應用於由卡爾曼濾波器更新的估計嗎?
我有一種在現實生活中只能具有非負值的狀態。 當我應用卡爾曼濾波器時,此狀態將更新為具有負值。 如何在卡爾曼濾波器中應用此限制約束?
請回復
謝謝
一種機制是創建人工測量。 在這種情況下,如果估計值降到零以下,則進行“測量”以將其拉入。因此,如果估計值為-x,則對測量值x ^ 2的“ x”進行人工測量。 一個明顯的缺點是狀態變量的協方差估計值失真。
第二種方法是將狀態向量和協方差矩陣轉換為不存在約束的空間。 例如,濾波器可以在對數空間中運行。 過濾器可以產生正值或負值,但是當通過變換x'= e ^ x轉換回正常空間時,所有值都是正值。 這排除了生成負估計的可能性,但是協方差矩陣現在當然是對數空間中二階統計量的描述,這可能不是真實統計量的准確表示。 要移到另一個空間進行過濾,必須對所有模型矩陣,轉換矩陣,測量雅可比矩陣以及過程和測量噪聲矩陣進行轉換。
在UKF(無味卡爾曼濾波器)中,通過簡單地限制sigma點(這些點是您生成的,這些點近似於您的狀態的高斯分布,並考慮了誤差),很容易做到這一點。
對於EKF,您可以找到有關如何將狀態空間投影回約束邊界的論文。 復雜性來自兩個因素:
綁定EKF中的狀態變量的一些常見方法(對不起,沒有KF)如下:
如果x
是狀態,我們將其增加到有界狀態x'
。
為了強制執行x > a
這樣的邊界,我們定義了一個新狀態x' = exp(x) + a
。 這永遠不會小於a as exp(x) -> 0
as x -> -inf
。 對於x < -a
=> x' = - exp(x) - a
x < -a
負約束也是如此
如果要在狀態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.