カルマンフィルターとは、制御システムや信号処理において、観測されるシステムの状態を推定するためのアルゴリズムである。具体的には、システムの状態に対する観測値がノイズで汚染されている場合に、真の状態を推定することが目的となる。
カルマンフィルターは、状態方程式と観測方程式が線形である場合に適用される。状態方程式は、システムの状態を時間的に変化させる数式である。観測方程式は、システムの状態を観測するための数式である。このような状況下で、カルマンフィルターは現在の観測値と過去の推定値を用いて、現在の状態を推定する。
カルマンフィルターは、以下の2つのステップに分けられる。
- 予測ステップ
推定される状態 x^k の予測値を、システムの状態方程式を用いて次のように算出する。
x^k∣k−1=Fkx^k−1∣k−1+Bkuk
ここで、Fkは状態遷移行列、Bkは入力行列、ukは入力値である。
同様に、推定される誤差共分散行列 Pk の予測値を、以下のように算出する。
Pk∣k−1=FkPk−1∣k−1FkT+Qk
ここで、Qkは状態遷移に伴う誤差共分散行列である。
- 更新ステップ
実際の観測値 yk を用いて、予測値を修正し、推定値 x^k を算出する。
y~k=yk−Hkx^k∣k−1
ここで、Hkは観測行列である。
Kk=Pk∣k−1HkT(HkPk∣k−1HkT+Rk)−1
ここで、Rkは観測に伴う誤差共分散行列である。
x^k∣kPk∣k=x^k∣k−1+Kky~k=(I−KkHk)Pk∣k−1
このようにして算出された x^k が、カルマンフィルターによる推定値である。
カルマンフィルターは、状態方程式や観測方程式が線形である場合に限られるが、非線形な場合でも拡張カカルマンフィルターや粒子フィルタなどの手法が存在する。また、カルマンフィルターは、制御システムや信号処理に限らず、様々な分野で利用されている。