前言
Kalman filter 在非常多需要 estimation 的問題中都會用到,例如自駕車、Video Stabilization(結合 Gyroscope 跟 Camera) 跟許許多多結合多感測器的應用中都會用到。它的第一個應用在 1960 年代,用在美國登月的阿波羅計畫,非常的威猛,今天就從一個挺簡單的學習資源(見延伸閱讀一)來學習,把筆記寫下來。
為何要使用 Kalman Filter?
Kalman filter 主要用在兩種情況:
- 沒有辦法直接測量到自己想量的變數,只能量到間接的變數
- 有一種或多種 sensor,但各種 sensor 都有一些誤差
State Observers
這個影片說明了 Kalman filter 第一種的使用情境:沒有辦法直接測量到自己想量的變數,只能量到間接的變數。
場景
這邊一樣用測量火箭推進噴射口的溫度為例,因為我們不能把 sensor 放在噴射口內(會融化),所以無法量測到噴射口內的溫度 T_in,只能測量噴射口外的溫度 T_ext:
假設我們對這個系統有建立一個數學模型,就可以透過輸入的燃料量 - W_fuel,來計算 T_ext 的估計值 - T_ext_hat,同時也假設這個數學模型可以估計出內部的溫度 T_in_hat。
接下來的目標,就是希望可以減少量測值 T_ext 跟估計值 T_ext_hat 的差別,這樣就能減少 T_in_hat 跟實際的內部溫度 T_in 的差別:
Feedback control 概念
想要 minimize T_in-T_in_hat 的概念,其實就已經接到了 feedback control,我們可以用一個簡單的 gain K,讓 T_ext-T_ext_hat 乘上一個 K,表示 T_in-T_in_hat 的誤差,使得 T_in-T_in_hat 的誤差可以縮小。概念上就是,既然我們只量得到 T_ext-T_ext_hat,那就想辦法用 T_ext-T_ext_hat 來當作縮小 T_in-T_in_hat 的本錢。當然這邊有個重要的假設,就是 K * (T_ext-T_ext_hat) 可以 model
如果把 W_fuel generalize 成 u,然後把數學 model 也寫出來(這邊的符號有個地方容易誤解,x_dot 指的是下一個時刻的 x 值,所以 A 描述現在的 x 怎麼傳遞到下一時刻,然後 B 描述 input u 怎麼影響下一時刻的狀態 x_dot),我們就可以推導出數學式:
而只要 A-KC < 0,就能確保 convergence:
數學推導要注意的點
我個人對上面的數學細節並沒有很深入去探討,不過影面下方有個留言引起我的注意,有興趣的讀者可以深入研究:
Oversimplification may lead to incorrect information. First : the eigenvalues of A-KC should have negative real parts , not that A-KC should be < 0, this is only true for the trivial uninteresting special case of a single state system . Second: K is a must in cases where the original system is unstable, i.e. A has eigenvalues of positive real parts, otherwise the error signal will grow without bound in the absence of K as the error dynamics is now governed by A . It’s important to point out that observers are also needed in the design of unstable systems.
Dr.Omar El-Ghezawi, the University of Jordan, Amman, Jordan
累了嗎?聽首歌休息一下吧
Optimal State Estimator
這個影片說明了 Kalman filter 第二種的使用情境:有一種或多種 sensor,但各種 sensor 都有一些誤差。
場景
假設有個比賽,給你一台有 GPS 的自駕車,要求你在 100 種地形上都跑 1 公里:
輸贏的標準是,100 次綜合起來離 1 公里的目標最近,且 variance 最小的人就贏:
結合 estimation 跟 measurement 的直觀概念
我們先假設輸入 u_k 是要求車要達到的速度,輸出 y_k 是車的位置:
因為 GPS 測量的數據會有誤差,所以需要加上一個 noise v_k。另外汽車移動中也可能遇到輪胎打滑、空氣阻力等影響,所以會有另一個 noise w_k。一般來說,兩者都可以假設是 Gaussian noise。
我們同時也考慮我們對汽車的建模,就可以用我們對汽車的建模得到估計值 x_k_hat,所以目標就是要利用不夠精準的估計值、以及有誤差的測量值,來得到汽車位置的 optimal estimate:
接著讓自駕車開始跑,隨著時間的過去,估計值的可能誤差範圍會漸漸增加(也就是越來越肥的藍色 Gaussian distribution),但幸好我們還有紅色的 measurement。當把兩者的 distribution 相乘,就可以得到灰色的 optimal state estimate。
總結
今天介紹了一個很有用的工具 - Linear Kalman Filter,雖然在現實世界中,大部分的系統都是 Non-linear 的,所以會使用更進階版本的 Kalman Filter,但 Linear Kalman Filter 是非常重要的基礎。
附上另一個簡潔的總結: