可以說,卡爾曼濾波器是非常神奇的,因為它是一個在不確定性的情況下組合信息的通用且強大的工具。有時它提取準確信息的能力幾乎是驚人的。
視頻演示了一個卡爾曼濾波器通過測量一個自由浮動物體的速度計算出它的方向。
1.卡爾曼濾波器是什麼?
可以在任何有關某些動態系統的不確定信息的地方使用卡爾曼濾波器,並且可以對有關系統下一步做什麼進行有根據的預測。即使出現凌亂的動作並幹擾了所預測到的乾淨的動作,卡爾曼過濾器也會常常很好地計算出實際發生的動作。這可能得益於它可以利用一些不可思議的現象之間的相關性!
卡爾曼濾波器是連續變化系統的理想選擇。卡爾曼濾波器具有佔用存儲小(不需要保留除先前狀態之外的任何歷史記錄),運算速度快,適合實時處理和嵌入式系統的優點。
利用谷歌搜索到的對實現卡爾曼濾波器的數學描述普遍非常模糊。這其實很糟心,因為如果你以正確的方式看待它,卡爾曼濾波器實際上是超簡單易懂的。因此,它是一個非常好的文章主題,這裡嘗試利用清晰,漂亮的圖片以及顏色來闡述卡爾曼濾波器。讀懂這篇文章的條件很簡單,所需要的只是對概率和矩陣的基本了解。下面我們從一個卡爾曼濾波器可以解決的簡單的例子開始。
2.卡爾曼濾波器究竟可以做什麼?
舉一個有趣的例子:假如你有一個可以在樹林裡漫步的小機器人,那麼這個機器人一定需要準確知道它在哪裡以便它可以導航。
這裡假設機器人有一個狀態,記為,其只與位置和速度有關。注意,狀態只是系統的底層配置的參數,當然狀態還可以表示其他任何事項。本例中,特指位置和速度,但它可以表示諸如,罐中的流體量,汽車發動機的溫度,用戶的手指在觸摸板上的位置的數據,或者你需要跟蹤的任何具有數值的東西。
機器人頭頂還有一個GPS傳感器,精確到約10米,但它需要知道它的位置信息並且比10米更精確。實際中,樹林裡有很多的溝渠和懸崖,如果機器人定位超過幾英尺,它可能會掉下懸崖。所以僅僅擁有GPS本身還不足夠。
我們可能會知道機器人如何移動:知道發送到車輪電機的命令,知道如果機器人朝向一個方向,在沒有任何幹擾條件下會在下一個時刻可能會沿著同樣的方向進一步。然而,我們不知道有關動作的一切:風可能會受到影響,車輪可能會滑落一點,或者滾過顛簸的地形。所以輪子轉動的量可能並不能完全代表機器人實際走過的距離,而且預測也不完美。GPS傳感器告訴我們一些關於狀態,但只是間接地,有一些不確定性或不準確。我們的預測告訴我們關於機器人如何移動,但只是間接地,有一定的不確定性或不準確性。
但是,如果我們利用所有可用的信息,會得到比任何估計本身給出的更好答案嗎?當然答案是肯定的,這就是卡爾曼濾波器。
3.卡爾曼濾波器如何看待要解決的問題
繼續上述描繪的情形。一個只有位置和速度的簡單狀態向量。我們不知道實際的位置和速度是什麼。位置和速度的可能組合有可能是真實的,而有些可能組合只是比其他更有可能:
卡爾曼濾波器假設兩個變量(位置和速度)是隨機的並服從高斯分布的。每個變量具有平均值,它表示隨機分布(及其最可能的狀態)的中心,方差
表示不確定性:
在上面的圖片中,位置和速度是不相關的。這意味著其中一個變量的狀態與其他變量的狀態不相關。下面的例子顯示了一些更有趣的內容:位置和速度是相關的。所觀察位置的可能性取決於其具有的速度:
例如,基於舊的位置估計一個新的位置,這種相關情況就有可能會出現。如果舊的速度很大,那麼很可能會移動得很遠,因而相應新位置很可能很遠。相反,如果舊的速度很小,那麼新的位置很可能很近。這種關係對於跟蹤是非常重要的,因為它提供了更多的信息:一個觀測與其他觀測有關。這就是卡爾曼濾波器的目標,而我們希望的正是從不確定性觀測中擠出儘可能多的信息!
通常,這種相關性表示為一個協方差矩陣。簡而言之,協方差矩陣的每個元素表示第i 個狀態變量和第 j個狀態變量之間的相關度。(協方差矩陣可能是對稱的,那麼交換i 和 j並不重要)。
4.利用矩陣描述要解決的問題
將狀態信息建模為高斯斑,在時間 需要兩條信息:最佳估計(亦為均值)及其協方差矩陣。
(當然,這裡只使用位置和速度,但狀態可以包含其他任意數值變量,並可以表示任何有用信息)。接下來,需要某種方法來觀測當前狀態(在時間 k-1)並預測在時間 的下一個狀態。注意,我們不知道哪個狀態是「真實的」,但預測功能並不在意這一點,它只是對所有信息起作用,並提供一個新的分布:
用矩陣表示這個預測步驟:
將原始估計值中的每一點都轉移到新的預測位置,如果原始估計是正確的,系統將會移動。
應用這一點。我們如何使用矩陣來預測下一時刻的位置和速度呢?我們將使用一個實際上非常基本的運動公式:
這裡雖有一個預測矩陣可以用於表示下一個狀態,但是仍然不知道如何更新協方差矩陣。於是我們需要利用另一個公式。如果我們將一個分布中的每個點乘以矩陣,那麼它的協方差矩陣會發生什麼變化?很簡單,可以得到下面的等式:
5.外部影響
然而,我們無法捕獲一切。可能存在一些與狀態本身無關的變化,即外界因素可能會影響系統。例如,當狀態模擬火車的運動時,列車駕員可能會按下油門,導致火車加速。類似地,在上述機器人的示例中,導航軟體可能會發出命令來轉動車輪或停止。如果我們知道有關外界發生了什麼的信息,那麼我們可以將其引入至一個名為的向量中,然後使用它作為一種校正引入至預測過程。假設已知由於油門設置或控制命令而導致的預期加速度a 。從基本運動學得到:
6.外部不確定性
如果狀態基於自身的特性發展,一切都很好。如果狀態外部因素髮展,只要我們知道這些外部因素是什麼,一切仍然很好。
但是我們不知道的外部因素怎麼辦?例如,跟蹤一個四翼直升機,很可能會受到風的影響。如果跟蹤一個輪式機器人,車輪可能會打滑,或者地面碰撞可能會減慢。如果發生這些情況中的任何一個,都不能實現目標跟蹤和預測,因為我們沒有考慮到這些額外的因素。我們可以通過在每個預測步驟之後增加某種新的不確定性來模擬與外界因素相關的不確定性。
過程中產生一個新的高斯斑點,具有不同的協方差(但是相同的平均值):
未完,待續。。。。
感謝溫博士提供的材料!
歡迎您的關注!轉載請標明出處!