カルマンフィルタは確率統計の観点から状態推定を行う。
ここでは以下のシステムについて考える。
x[k+1]y[k]=Ax[k]+Bu[k]+Gv=Cx[k]+w,
ただし,
x,
y,u は状態量,出力,入力を表し,
A,
B, and
C はシステム行列,入力行列,観測行列とする。また,
v,w はそれぞれプロセス雑音と観測雑音とし,以下を満たすものとする。
E[vvTvwTwvTwwT]=[Q00R].
フィルタ処理は予測ステップと修正ステップの2段階処理によって構成される。
xp[k+1]yp[k]=AmxK[k]+Bmu[k]=Cmxp[k],
ただし,下添字
m はモデルパラメータを示し,
p および
K は予測値と修正値であることを表す。
xK[k]ey[k]=xp[k]+K[k]ey[k]≡y[k]−yp,
ここで,
K はカルマンゲインと呼ばれる。このゲインはシステムの事前情報,主にプロセス雑音や観測雑音の分散値によって一意に求まる。
カルマンゲインは次の評価関数を最小化するように決定される。
J=E[∣ey∣].
このゲインは推定誤差共分散の時間発展を確認することで求めることができる。
予測ステップにおける予測誤差は次のように表される。
x[k+1]−xp[k+1]∴ep[k+1](ep[k]=Ax[k]−AmxK[k]+Bu[k]−Bmu[k]+Gv=A(x[k]−xp[k])+Gv=AeK[k]+Gv.≡x[k]−xp[k], eK[k]≡x[k]−xK[k])
したがって,予測誤差共分散は次のように計算される。
ep[k+1]epT[k+1]∴Pp[k+1](Pp[k]=(AeK[k]+Gv)(AeK[k]+Gv)T=(AeK[k]+Gv)(eKT[k]AT+vTGT)=AeK[k]eKT[k]AT+AeK[k]vTGT+GveKT[k]AT+GvvTGT=APK[k]AT+GQGT.≡cov[ep[k]], PK[k]≡cov[eK[k]])
修正ステップにおける推定誤差は次にように表される。
eK[k]=x[k]−xK[k]=x[k]−(xp[k]+K[k]ey[k])=x[k]−xp[k]−K[k]y[k]+K[k]Cmxp[k]=x[k]−xp[k]−K[k]Cx[k]+K[k]Cmxp[k]+K[k]w=(I−K[k]C)ep[k]+K[k]w
したがって,推定誤差共分散は次のように計算される。
eK[k]eKT[k]===∴PK[k]==((I−K[k]C)ep[k]+K[k]w)((I−K[k]C)ep[k]+K[k]w)T((I−K[k]C)ep[k]+K[k]w)(epT[k](I−K[k]C)T+wTKT[k])(I−K[k]C)ep[k]epT[k](I−K[k]C)T+K[k]wwTKT[k]+K[k]wepT[k](I−K[k]C)T+(I−K[k]C)ep[k]wTKT[k](I−K[k]C)Pp[k](I−K[k]C)T+K[k]RKT[k]Pp[k]−K[k]CPp[k]−Pp[k]CTKT[k]+K[k](CPp[k]CT+R)KT[k].
評価関数を最小化するために,フィルタシステムは以下を満たす必要がある。
∂K[k]∂tr(PK[k])=−2(CPp[k])T+2K[k](CPp[k]CT+R)=0.
これにより,カルマンゲインは次のように決定される。
K[k]=PpT[k]CT(CPp[k]CT+R)−1=Pp[k]CT(CPp[k]CT+R)−1.(∵Pp[k]=PpT[k])
また,カルマンゲインが適切に設定された場合,予測ステップにおける推定誤差共分散
PK は次のように簡略化される。
PK[k]=Pp[k]−K[k]CPp[k]−Pp[k]CTKT[k]+K[k](CPp[k]CT+R)KT[k]=Pp[k]−K[k]CPp[k]−Pp[k]CTKT[k]+Pp[k]CTKT[k]=(I−K[k]C)Pp[k].
線形時不変系に対してカルマンフィルタを設計した場合,定常状態において予測誤差共分散が一定値に収束する。予測誤差共分散
Pp は次のような時間発展をする。
Pp[k+1]=APK[k]AT+GQGT=A(I−K[k]C)Pp[k]AT+GQGT=A(I−Pp[k]CT(CPp[k]CT+R)−1C)Pp[k]AT+GQGT=A(Pp[k]−Pp[k]CT(CPp[k]CT+R)−1CPp[k])AT+GQGT.
定常状態において予測誤差共分散が一定値に収束したものとし,その値を
Pp∗ とすれば以下の等式が成立する。
Pp∗=A(Pp∗−Pp∗CT(CPp∗CT+R)−1CPp∗)AT+GQGT.
このときカルマンゲインも一定値
K∗ に収束する。
K∗=Pp∗[k]CT(CPp∗[k]CT+R)−1.
このカルマンゲインを有するカルマンフィルタを定常カルマンフィルタと呼ぶ。
この値はオフライン計算で導出可能である。
カルマンフィルタの出力は,予測された状態量
AmxK とシステムの応答
Ax の相補信号を使用して構成される。
xK[k]=xp[k]+K[k](y[k]−Cmxp[k])=(I−K[k]Cm)xp[k]+K[k]Cx[k]+K[k]w=(I−K[k]C)xp[k]+K[k](C−Cm)xp+K[k]Cx[k]+K[k]w=(I−F[k])(AmxK[k−1]+Bmu[k−1])+F[k](Ax[k−1]+Bu[k−1]+Gv)+K[k]w+Δ=(I−F[k])AmxK[k−1]+F[k](Ax[k−1]+Gv)+Bmu[k−1]+K[k]w+Δ,
ただし,
F, Δは以下の定義する。
F[k]Δ≡K[k]C=Pp[k]CT(CPp[k]CT+R)−1C≡K[k](C−Cm)xp.
F[k] は相補フィルタの内分点を与え,この値は予測と観測の誤差共分散によって決定される。視認性のため,式を整理して以下を得る。
ey[k]⇔ey[k]eyT[k]⇔Py[k]∴F[k]=y[k]−yp[k]=Cx[k]−Cmxp[k]+w=Cep[k]+w=(Cep[k]+w)(Cep[k]+w)T=(Cep[k]+w)(epT[k]CT+wT)=Cep[k]epT[k]CT+Cep[k]w+wepT[k]CT+wwT=CPp[k]CT+R=K[k]C=Pp[k]CTPy−1[k]C.
カルマンフィルタの予測ステップと修正ステップは以下のように記述される。
xp[k+1]xK[k]=AmxK[k]+Bmu[k]=xp[k]+K[k](y[k]−Cmxp[k])
ここで,予測値
xp と修正値
xK について代数的に整理することで,以下を得る。
xp[k+1]xK[k]=Amxp[k]+Bmu[k]+AmK[k](y[k]−Cmxp[k])=(I−F[k])xp[k]+Fx[k]+K[k](C−Cm)xp+K[k]w.
すなわち,カルマンフィルタは可変ゲイン
K を有するLuenbergerオブザーバと相補フィルタの組み合わせと見ることができる。
これはブロック線図からも確認することができる。予測ステップと修正ステップをブロック線図で示すと以下のようになる。簡潔のため,システムノイズについては省略している。
これを変形すれば以下のようになり,Luenbergerオブザーバと相補フィルタを確認することができる。