HomeWissen Stichwortverzeichnis Tags

Kalman-Filter

Einfache Sprache

Der kalman-Filter ist eine Spezialisierung des Bayes-Filter. Der Belief $\text{Bel}(x_t)$ besteht aus einem Durchschnitt $\mu_t$ und der Kovarianzmatrix $\Sigma_t$. Jede Iteration benötigt der Algorithmus eine Aktion $u_t$ und eine Beobachtung $z_t$. Für Begriffserkärung siehe hier. Damit dier Kalman-Filter anwendbar ist müssen 3 Annahmen zusätzlich zur Markov Annahme gelten.

Ist nur für den kontinuerliche Räume definiert.

Sei $\mathfrak x_t =\left( \begin{array}{c} x_{1,t}\\\vdots\\x_{n,t}\end{array} \right)$ der Zustands-Vektor, $\mathfrak z_t =\left( \begin{array}{c} z_{1,t}\\\vdots\\ z_{k,t}\end{array} \right)$ der Mess-Vektor und $\mathfrak u_t =\left( \begin{array}{c} u_{1,t}\\\vdots\\x_{m,t}\end{array} \right)$ der Kontroll-Vektor bzw. Transitionsvektor.

Voraussetzungen

Folgende drei Eigenschaften müssen erfüllt sein, damit nach jeder Iteration $\text{Bel}(\mathfrak x_t)$ normalverteilt ist. Natürlich muss auch dieMarkov Annahme des Bayes-Filter erfüllt sein.

1. Linearität der Transitionsfunktion

Die Zustandsübergangswahrscheinlichkeit $p(\mathfrak x_t\mid \mathfrak u_t,\mathfrak x_{t-1})$ muss eine Lineare Funktion sein. Also es die Transitionsfunktion in Vektor-Schreibweise

$$\mathfrak x_t=\mathfrak A_t \mathfrak x_{t_1}+ \mathfrak B_t\mathfrak u_t +\mathfrak e_t\;,$$

welche die Bewegung des Roboters beschreibt. $\mathfrak e_t$ beschreibt die Unsicherheit der Transitionsfunktion und ist in der Regel normalverteilt mit Mittelwert $0$ und Kovarianzmatrix $\mathfrak R_t$. Daraus ergibt sich das der Mittelwert und die Kovarianz von $p(\mathfrak x_t\mid \mathfrak u_t,\mathfrak x_{t-1})$ durch $\mathfrak A_t \mathfrak x_{t_1}+ \mathfrak B_t\mathfrak u_t$ und $\mathfrak R_t$ definiert ist. Dies kann nach der Definition der Normalverteilung als

$$p(\mathfrak x_t\mid \mathfrak u_t,\mathfrak x_{t-1})= \text{det}(2\pi\mathfrak R_t)^{-1/2}\text{exp}\left(-\frac{1}{2}\left(\mathfrak x_t-\mathfrak A_t \mathfrak x_{t_1}- \mathfrak B_t\mathfrak u_t \right)^T\mathfrak R_t^{-1}\left(\mathfrak x_t-\mathfrak A_t \mathfrak x_{t_1}- \mathfrak B_t\mathfrak u_t \right)\right)$$

geschrieben werden.

2. Linearität der Wahrnehmungsfunktion

Auch $p(\mathfrak z_t\mid \mathfrak x_t)$ muss linear sein. Also durch eine Lineare Funktion dargestellt werden können

$$\mathfrak z_t = \mathfrak C_t\mathfrak x_t + \mathfrak d_t\;.$$

$\mathfrak d_t$ beschreibt die Unsicherheit der Wahrnehmungsfunktion und ist in der Regel normalverteilt mit Mittelwert $0$ und Kovarianzmatrix $\mathfrak Q_t$. Es ergibt sich wieder folgende Funktion

$$p(\mathfrak z_t\mid \mathfrak x_t)= \text{det}(2\pi\mathfrak Q_t)^{-1/2}\text{exp}\left(-\frac{1}{2}\left(\mathfrak z_t-\mathfrak C_t \mathfrak x_{t} \right)^T\mathfrak Q_t^{-1}\left(\mathfrak z_t-\mathfrak C_t \mathfrak x_{t} \right)\right)\;.$$

für die Berechnung.

3. normalvertielter Startbelief

Der Startbelief $\text{Bel}(\mathfrak x_0)$, bezüglich der realen Position $\mathfrak x_0$, muss normalverteilt mit Mittelwert $\mathfrak m_0$ und Kovarianz $\mathfrak S_0$. Also ist $\text{Bel}(\mathfrak x_0)$ gegeben durch

$$\begin{align}\text{Bel}(\mathfrak x_0) &= p(\mathfrak x_0)\\ &= \mathcal N(\mathfrak m_0,\mathfrak S_0) \\&= \text{det}(2\pi\mathfrak S_0)^{-1/2}\text{exp}\left(-\frac{1}{2}\left(\mathfrak x_0-\mathfrak m_0\right)^T\mathfrak S_0^{-1}\left(\mathfrak x_0-\mathfrak m_0\right)\right)\end{align}$$

Kalman gain

Der Kalman gain $\mathfrak K_t$ beschreibt zu welchem Grad die Messung in den neuen Zustand einfließt.

Innovation

Die Innovation im Kontext des Kalman-Filters beschreibt die Differenz zwischen tatsächlichen und erwarteten Messung, also $\mathfrak z_t -\mathfrak C_t \bar{\mathfrak m}_t$

Algorithmus

In Vektor-Schreibweise wird eine Iteration des Kalman-Filters durch folgenden Algorithmus berechnet:

	\begin{algorithm}
	\caption{Vektorisierter Kalman-Filter}
	\begin{algorithmic}
	\Input Mittelwertvektor $\mathfrak m_{t-1}$, Kovarianzmatrix $\mathfrak S_{t-1}$, Beobachtungsvektor $\mathfrak z_t$, Transitionsvektor $\mathfrak u_t$
	\Procedure{vectorized-kalman-filter}{$\mathfrak m_{t-1},\mathfrak S_{t-1}, \mathfrak z_t, \mathfrak u_t$}
	\State $\bar\mathfrak m_t \gets \mathfrak A_t\mathfrak m_{t-1}+\mathfrak B_t\mathfrak u_t$\Comment{Transformation.}
	\State $\bar\mathfrak S_t \gets \mathfrak A_t\mathfrak S_{t-1}\mathfrak A_t^T+ \mathfrak R_t$
	\State $\mathfrak K_t \gets \bar\mathfrak S_t\mathfrak C_{t}^T\left(\mathfrak C_t\bar\mathfrak S_t\mathfrak C^T_t+\mathfrak Q_t\right)^{-1}$\Comment{kalman gain.}
	\State $\mathfrak m_t \gets \bar\mathfrak m_t + \mathfrak K_t\left(\mathfrak z_t - \mathfrak C_t\bar\mathfrak m_t\right)$\Comment{Messung.}
	\State $\mathfrak S_t \gets \left(\mathfrak I - \mathfrak K_t\mathfrak C_t \right)\bar\mathfrak S_t$
	\Return $\mathfrak m_t,\mathfrak S_t$
    \EndProcedure
	\end{algorithmic}
	\end{algorithm}

Laufzeit durch $\mathcal O(n^2+k^{2.4})$ begrenzt. Herleitung in 3.2.4 in Probabilistic robotics.

Home: