最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

kalman

カルマン フィルター設計、カルマン推定器

構文

[kest,L,P] = kalman(sys,Qn,Rn,Nn)
[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known)
[kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type)

説明

kalman は、与えられたプラントの状態空間モデルとプロセス ノイズ、および測定ノイズの共分散データからカルマン フィルターまたはカルマン状態推定器を設計します。カルマン推定器は、次の連続、または離散の推定問題に最適な解を提供します。

連続時間の推定

次の連続プラントを考えます。

x˙=Ax+Bu+Gw(stateequation)y=Cx+Du+Hw+v(measurementequation)

ここで、u は既知入力、w はプロセス ノイズ、v は観測ノイズで、次を満たします。

E(w)=E(v)=0,E(wwT)=Q,E(vvT)=R,E(wvT)=N

は、定常偏差の以下の共分散を最小化する状態推定 x^(t) を作成します。
    P=limtE({xx^}{xx^}T)

最適な解は、次の方程式をもつカルマン フィルターです。

x^˙=Ax^+Bu+L(yCx^Du)[y^x^]=[CI]x^+[D0]u

フィルター ゲイン L は、次のようになる代数リカッチ方程式を解くことで決定されます。

L=(PCT+N¯)R¯1

ここで、

R¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

であり、P は対応する代数リカッチ方程式を解きます。

推定器は既知の入力 u と測定値 y を使用して、出力 y^ と状態推定 x^ を生成します。y^ は真のプラント出力を推定することに注意してください。

y=Cx+Du+Hw+v

離散時間の推定

次の離散プラントを考えます。

x[n+1]=Ax[n]+Bu[n]+Gw[n]y[n]=Cx[n]+Du[n]+Hw[n]+v[n]

ノイズの共分散データは次のとおりです。

E(w[n]w[n]T)=Q,E(v[n]v[n]T)=R,E(w[n]v[n]T)=N

推定器には、次の状態方程式があります。

x^[n+1|n]=Ax^[n|n1]+Bu[n]+L(y[n]Cx^[n|n1]Du[n])

ゲイン行列 L は、

L=(APCT+N¯)(CPCT+R¯)1

となる離散リカッチ (Ricatti) 方程式を解くことで導出されます。ここで、

R¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

離散時間カルマン推定器には 2 つの場合があります。

  • 現在の推定器は、y[n] までの使用可能なすべての測定値を使用して、出力推定 y^[n|n] および状態推定 x^[n|n] を生成します。この推定器には、次の出力方程式があります。

    [y^[n|n]x^[n|n]]=[(IMy)CIMxC]x^[n|n1]+[(IMy)DMyMxDMx][u[n]y[n]],

    ここで、イノベーション ゲイン Mx および My は次のように定義されます。

    Mx=PCT(CPCT+R¯)1,My=(CPCT+HQHT+HN)(CPCT+R¯)1.

    Mx は新しい測定値 y[n] を使用して予測 x^[n|n1] を更新します。

    x^[n|n]=x^[n|n1]+Mx(y[n]Cx^[n|n1]Du[n])innovation.

    H = 0 の場合、My=CMx および y[n|n]=Cx[n|n]+Du[n] となります。

  • 遅延推定器は、yv[n–1] までの測定値のみを使用して、出力推定 y^[n|n1] と状態推定 x^[n|n1] を生成します。この推定器は制御ループ内で実装する方が簡単であり、次の出力方程式をもっています。

    [y^[n|n1]x^[n|n1]]=[CI]x^[n|n1]+[D000][u[n]y[n]]

[kest,L,P] = kalman(sys,Qn,Rn,Nn) は、プラント モデル sys およびノイズ共分散データ QnRnNn (説明に記載の行列 Q、R、N) に対して、カルマン推定器の状態空間モデル kest を作成します。sys は行列が A,[BG],C,[DH] の状態空間モデルでなければなりません。

結果として得られる推定器 kest には、入力 [u;y] および出力 [y^;x^] (または離散時間の等価物) があります。N = 0 の場合は、最後の入力引数 Nn を省略できます。

関数 kalman は連続、離散の両方の問題を処理し、sys が連続の場合は連続推定器を、それ以外の場合は離散推定器を生成します。連続時間の場合、kalman はカルマン ゲイン L と定常偏差の共分散行列 P も返します。P は関連したリカッチ (Riccati) 方程式を解きます。

[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known) は、次のようなより一般的な状況を処理します。

  • sys のすべての出力が観測されない

  • 外乱入力 w が sys の最後の入力ではない

インデックス ベクトルの sensorsknown は、sys のどの出力を測定し (y)、どの入力を既知 (u) (確定的) にするかを指定します。sys のその他すべての入力は、確率的であるものと仮定されます。

[kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type) は、離散時間プラント sys に対する推定器のタイプを指定します。type 引数は、'current' (既定値) または 'delayed' のいずれかです。離散時間プラントの場合、kalman は推定器ゲインおよびイノベーション ゲイン L と M のほか、定常偏差の以下の共分散を返します。

P=limnE(e[n|n1]e[n|n1]T),e[n|n1]=x[n]x[n|n1]Z=limnE(e[n|n]e[n|n]T),e[n|n]=x[n]x[n|n]

関数 kalman の使用例については、X 軸に対する LQG 設計およびカルマン フィルター処理を参照してください。

制限

プラントとノイズ データは以下の条件を満たさなければなりません。

  • (C、A) 検出可能

  • R¯>0 かつ Q¯N¯R¯1N¯T0

  • (AN¯R¯1C,Q¯N¯R¯1N¯T) は、次の表記の場合、虚軸 (離散時間の場合は単位円) に非可制御モードがない。

    Q¯=GQGTR¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

参考文献

[1] Franklin, G.F., J.D. Powell, and M.L. Workman, Digital Control of Dynamic Systems, Second Edition, Addison-Wesley, 1990.

[2] Lewis, F., Optimal Estimation, John Wiley & Sons, Inc, 1986.

[3] Deshpande, A.S., "Bridging a Gap in Applied Kalman Filtering: Estimating Outputs When Measurements Are Correlated with the Process Noise." IEEE Control Systems Magazine, Vol. 37, Number 3, 2017, pp. 87–93.

R2006a より前に導入