Gleichung zur Kovarianzextrapolation
Ich gehe davon aus, dass der Leser bereits mit dem Konzept der Kovarianzextrapolation (Vorhersage) vertraut ist. Wir sind der Gleichung zur Kovarianzextrapolation (Covariance Extrapolation Equation) (oder Prädiktor-Kovarianzgleichung (Predictor Covariance Equation)) bereits im Abschnitt "Eindimensionaler Kalman-Filter" begegnet. In diesem Abschnitt leiten wir die Gleichung zur Kovarianzextrapolation des Kalman-Filters in Matrixschreibweise her.
Die allgemeine Form der Gleichung zur Kovarianzextrapolation lautet:
| \( \boldsymbol{P}_{n,n} \) | die quadrierte Unsicherheit einer Schätzung (Kovarianzmatrix) des aktuellen Zustands ist |
| \( \boldsymbol{P}_{n+1,n} \) | die quadrierte Unsicherheit einer Vorhersage (Kovarianzmatrix) für den nächsten Zustand ist |
| \( \boldsymbol{F} \) | die Zustandsübergangsmatrix ist, die wir im Abschnitt "Modellierung linearer dynamischer Systeme" hergeleitet haben |
| \( \boldsymbol{Q} \) | die Prozessrauschmatrix ist |
Die Schätzkovarianz ohne das Prozessrauschen
Nehmen wir an, das Prozessrauschen ist gleich null \( (Q=0) \), dann gilt:
\[ \boldsymbol{P}_{n+1,n} = \boldsymbol{FP}_{n,n}\boldsymbol{F}^{T} \]
Die Herleitung ist relativ einfach. Ich habe im Abschnitt "Wesentliche Grundlagen II" gezeigt, dass:
\[ COV(\boldsymbol{x}) = E \left( \left( \boldsymbol{x - \mu_{x}} \right) \left( \boldsymbol{x - \mu_{x}} \right)^{T} \right) \]
Wobei der Vektor \( x \) ein Systemzustandsvektor ist.
Daher gilt:
\[ \boldsymbol{P}_{n,n} = E \left( \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right) \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right)^{T} \right) \]
Gemäß der Gleichung zur Zustandsextrapolation:
\[ \boldsymbol{\hat{x}}_{n+1,n} = \boldsymbol{F\hat{x}}_{n,n} + \boldsymbol{G\hat{u}}_{n,n} \]
Daher gilt:
\[ \boldsymbol{P}_{n+1,n} = E \left( \left( \boldsymbol{x}_{n+1,n} - \boldsymbol{\hat{x}}_{n+1,n} \right) \left( \boldsymbol{x}_{n+1,n} - \boldsymbol{\hat{x}}_{n+1,n} \right)^{T} \right) = \]
\[ = E \left( \left( \boldsymbol{Fx}_{n,n} + \boldsymbol{G\hat{u}}_{n,n} - \boldsymbol{F\hat{x}}_{n,n} - \boldsymbol{G\hat{u}_{n,n}} \right) \left( \boldsymbol{Fx}_{n,n} + \boldsymbol{G\hat{u}}_{n,n} - \boldsymbol{F\hat{x}}_{n,n} - \boldsymbol{G\hat{u}_{n,n}} \right)^{T} \right) = \]
\[ = E \left( \boldsymbol{F} \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right) \left( \boldsymbol{F} \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right) \right)^{T} \right) = \]
Wenden wir die Eigenschaft der Matrixtransposition an: \( \boldsymbol{(AB)}^T = \boldsymbol{B}^T \boldsymbol{A}^T \)
\[ = E \left(\boldsymbol{F} \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right) \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right)^{T} \boldsymbol{F}^{T} \right) = \]
\[ = \boldsymbol{F} E \left( \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right) \left( \boldsymbol{x}_{n,n} - \boldsymbol{\hat{x}}_{n,n} \right)^{T} \right) \boldsymbol{F}^{T} = \]
\[ = \boldsymbol{F} \boldsymbol{P}_{n,n} \boldsymbol{F}^{T} \]
Konstruktion der Prozessrauschmatrix \( Q \)
Wie Sie bereits wissen, wird die Systemdynamik beschrieben durch:
\[ \boldsymbol{\hat{x}}_{n+1,n} = \boldsymbol{F\hat{x}}_{n,n} + \boldsymbol{G\hat{u}}_{n,n} + \boldsymbol{w}_{n} \]
Wobei \( \boldsymbol{w}_{n} \) das Prozessrauschen zum Zeitschritt \( n \) ist.
Wir haben das Prozessrauschen und seinen Einfluss auf die Leistung des Kalman-Filters im Abschnitt "Eindimensionaler Kalman-Filter" besprochen. Beim eindimensionalen Kalman-Filter wird die Varianz des Prozessrauschens mit \( q \) bezeichnet.
Im mehrdimensionalen Fall ist das Prozessrauschen eine Kovarianzmatrix, die mit \( \boldsymbol{Q} \) bezeichnet wird.
Wir haben gesehen, dass die Varianz des Prozessrauschens einen entscheidenden Einfluss auf die Leistung des Kalman-Filters hat. Ein zu kleines \( q \) verursacht einen Nachlauf-Fehler (lag error) (siehe Beispiel 7). Ist der \( q \)-Wert zu hoch, folgt der Kalman-Filter den Messungen (siehe Beispiel 8) und erzeugt verrauschte Schätzungen.
Das Prozessrauschen kann zwischen verschiedenen Zustandsvariablen unabhängig sein. In diesem Fall ist die Prozessrausch-Kovarianzmatrix \( \boldsymbol{Q} \) eine Diagonalmatrix:
\[ \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] \]
Das Prozessrauschen kann auch abhängig sein. Zum Beispiel nimmt das Modell mit konstanter Geschwindigkeit eine Beschleunigung von Null an (\(a=0\)). Eine zufällige Varianz in der Beschleunigung \( \sigma^{2}_{a} \) verursacht jedoch eine Varianz in Geschwindigkeit und Position. In diesem Fall korreliert das Prozessrauschen mit den Zustandsvariablen.
Es gibt zwei Modelle für das Umgebungsprozessrauschen.
- Diskretes Rauschmodell
- Kontinuierliches Rauschmodell
Diskretes Rauschmodell
Das diskrete Rauschmodell geht davon aus, dass das Rauschen in jeder Periode unterschiedlich ist, aber zwischen den Perioden konstant bleibt.
Für das Modell mit konstanter Geschwindigkeit sieht die Prozessrausch-Kovarianzmatrix wie folgt aus:
\[ \boldsymbol{Q} = \left[ \begin{matrix} V(x) & COV(x,v) \\ COV(v,x) & V(v) \\ \end{matrix} \right] \]
Wir drücken die Varianz und Kovarianz von Position und Geschwindigkeit durch die zufällige Beschleunigungsvarianz des Modells aus: \( \sigma^{2}_{a} \).