共分散遷移式
"1次元カルマンフィルタ" セクションにおいて、私たちは既に 共分散遷移式(または、共分散予測式)を学びました。 ここでは、あなたが既に共分散遷移(予測)のコンセプトについて理解していることにします。このセクションでは、カルマンフィルタにおける共分散遷移式を行列表記を用いて導出します。
一般的な共分散遷移式は次のように表されます。
| \( \boldsymbol{P_{n,n}} \) | :推定値の不確かさ - 現時点の状態の共分散 |
| \( \boldsymbol{P_{n+1,n}} \) | :予測値の不確かさ - 次時点の状態の共分散 |
| \( \boldsymbol{F} \) | :"線形システムのモデリング" のセクションで導出されたシステム行列。 |
| \( \boldsymbol{Q} \) | :プロセス雑音行列 |
プロセス雑音を考慮しない推定の不確かさ
ここでは、プロセス雑音が存在しない \( (Q=0) \) と仮定します。このとき、
\[ \boldsymbol{P_{n+1,n} = FP_{n,n}F^{T}} \]
となります。この遷移式はとても単純な形をしています。以下では、この方程式を導出します。"背景" の章で、次のような式が登場しました。
\[ COV(\boldsymbol{x}) = E \left( \left( \boldsymbol{x - \mu_{x}} \right) \left( \boldsymbol{x - \mu_{x}} \right)^{T} \right) \]
ここで、ベクトル \( x \) はシステムの状態変数ベクトルです。
したがって、
\[ \boldsymbol{P_{n,n}} = E \left( \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right) \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right)^{T} \right) \]
ここで、状態方程式より、
\[ \boldsymbol{\hat{x}_{n+1,n}=F\hat{x}_{n,n}+G\hat{u}_{n,n}} \]
であるから、
\[ \boldsymbol{P_{n+1,n}} = E \left( \left( \boldsymbol{\hat{x}_{n+1,n} - \mu_{x_{n+1,n}}} \right) \left( \boldsymbol{\hat{x}_{n+1,n} - \mu_{x_{n+1,n}}} \right)^{T} \right) \]
\[ = E \left( \left( \boldsymbol{F\hat{x}_{n,n} + G\hat{u}_{n,n} - F\mu_{x_{n,n}} - G\hat{u}_{n,n}} \right) \left( \boldsymbol{F\hat{x}_{n,n} + G\hat{u}_{n,n} - F\mu_{x_{n,n}} - G\hat{u}_{n,n}} \right)^{T} \right) \]
\[ = E \left( \boldsymbol{F} \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right) \left( \boldsymbol{F} \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right) \right)^{T} \right) \]
ここで、転置行列の性質 \( \boldsymbol{(AB)^T = B^T A^T} \) を用いて、
\[ = E \left(\boldsymbol{F} \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right) \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right)^{T} \boldsymbol{F^{T}} \right) \]
\[ = \boldsymbol{F} E \left( \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right) \left( \boldsymbol{\hat{x}_{n,n} - \mu_{x_{n,n}}} \right)^{T} \right) \boldsymbol{F^{T}} \]
\[ = \boldsymbol{F P_{n,n} F^{T}} \]
プロセス雑音行列 \( Q \) の構成
既に知っているように、システムの状態方程式は次のように表されます。
\[ \boldsymbol{\hat{x}_{n+1,n}=F\hat{x}_{n,n}+G\hat{u}_{n,n}+w_{n}} \]
ここで、\( w_{n} \) は時間ステップ \( n \) におけるプロセス雑音です。
プロセス雑音とそのカルマンフィルタの性能への影響については、"1次元カルマンフィルタ" のセクションで説明しました。1次元カルマンフィルタでは、プロセス雑音の分散を \( q \) と表します。
多次元カルマンフィルタにおいては、プロセス雑音は、共分散行列 \( \boldsymbol{Q} \) で表されます。
プロセス雑音の分散がカルマンフィルタの性能に決定的な影響を与えることを説明しました。\( q \) が小さすぎるとラグ誤差が発生します(例題7を参照)。また、\( q \) 大きすぎると、カルマンフィルターは測定値に追従し(例題8を参照)、雑音の多い推定値を生成してしまいます。
プロセス雑音は、異なる状態変数間で独立な場合があります。このとき、プロセス雑音の共分散行列 \( \boldsymbol{Q} \) は対角行列になります。
\[ \boldsymbol{Q} = \left[ \begin{matrix} q_{11} & 0 & \cdots & 0 \\ 0 & q_{22} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & q_{kk} \\ \end{matrix} \right] \]
プロセス雑音が変数間で独立でないことも考えれます。 等速運動モデルの例を見てみます。このモデルは加速度ゼロを仮定しています( \(a=0\) )。しかし、加速度にランダムなばらつき \( \sigma^{2}_{a} \) があるとすると、速度と位置にばらつきが生じます。この場合、プロセス雑音は状態変数間で相関を持ちます(つまり、独立でない)。
プロセス雑音には、次の2つのモデルがあります。
- 離散雑音モデル
- 連続雑音モデル
ここでは、どちらのモデルも扱います。
離散雑音モデル
離散雑音モデルは、雑音が各時間帯では異なりますが、長い時間区間では一定であると仮定しています。
等速運動モデルでは、プロセス雑音行列は次のように表されます。
\[ \boldsymbol{Q} = \left[ \begin{matrix} V(x) & COV(x,v) \\ COV(v,x) & V(v) \\ \end{matrix} \right] \]
位置と速度の分散および共分散を、加速度の分散 \( \sigma^{2}_{a} \) を用いて表します。