Zustandsschätzung: Kalman Filter

Zustandsschätzung: Kalman Filter

Die ausführliche Zusammenfassung für Kalman Filter siehe hier.

Prädiktion

Wir möchte ein Schritt Prädiktion für Zustand machen, also am Zeitschritt kk (k>mk > m, m:=#Messungenm:= \text{\#Messungen}) die Prädiktion für den Zustand xk+1\underline{x}_{k+1} zu machen

Modell:

xk+1=Akxk+Bk(u~k+wk)uk \underline{x}_{k+1}=\mathbf{A}_{k} \cdot \underline{x}_{k}+\mathbf{B}_{k} \cdot \underbrace{\left(\underline{\tilde{u}}_{k}+\underline{w}_{k}\right)}_{\underline{u_k}}
  • Initialer Schätzwert für kk:

    xk1:m \underline{x}_{k|1:m}
    • basiert auf Messungen y1,,ym\underline{y}_{1}, \dots, \underline{y}_{m}
    • Eingabewerte u~0,,u~k1\underline{\tilde{u}}_{0}, \dots, \underline{\tilde{u}}_{k-1}
    • mit Erwartungswert x^k1:m\underline{\hat{x}}_{k|1:m} und Kovarianzmatrix Ck1:mxC_{k|1:m}^x
  • Berechnung des Erwartungswerts für k+1k+1

    E{xk+1}=E{Akxk+Bk(u~k+wk)}=E{Akxk+Bku~k+Bkwk}=AkE{xk}+BkE{u~k}=u~k (da u~k is fix)+BkE{wk}=0 ("mittelwertfrei")=Akx^k1:m+Bku~k(+) \begin{aligned} &E\left\{\underline{x}_{k+1}\right\}\\\\ =&E\left\{\mathbf{A}_{k} \cdot \underline{x}_{k}+\mathbf{B}_{k}\left(\underline{\tilde{u}}_{k}+\underline{w}_{k}\right)\right\}\\\\ =&E\left\{\mathbf{A}_{k} \cdot x_{k}+\mathbf{B}_{k} \tilde{u}_{k}+\mathbf{B}_{k} \underline{w}_{k}\right\}\\\\ =&\mathbf{A}_{k} \cdot E\left\{x_{k}\right\}+\mathbf{B}_{k} \cdot \underbrace{E\left\{\tilde{u}_{k}\right\}}_{=\tilde{\underline{u}}_{k} \text{ (da } \tilde{\underline{u}}_{k} \text{ is fix)}}+\mathbf{B}_{k} \cdot\underbrace{E\left\{\underline{w}_{k}\right\}}_{=0 \text{ ("mittelwertfrei")}}\\\\ =&\mathbf{A}_{k} \cdot \underline{\hat{x}}_{k|1: m}+\mathbf{B}_{k} \tilde{\underline{u}}_{k} \qquad (+) \end{aligned}
  • Berechnung der Kovarianzmatrix Ck+11:mxC_{k+1|1:m}^x

    xk+1=Akxk+Bkuk=[AkBk][xkuk] \begin{aligned} \underline{x}_{k+1} &=\mathbf{A}_{k} \underline{x}_{k}+\mathbf{B}_{k} \underline{u}_{k} \\ &=\left[\begin{array}{ll} \mathbf{A}_{k} & \mathbf{B}_{k} \end{array}\right]\left[\begin{array}{c} \underline{x}_{k} \\ \underline{u}_{k} \end{array}\right] \end{aligned} xk+1x^k+1=[AkBk][xkx^kuku^k]=[AkBk][xkx^kwk] \begin{aligned} \underline{x}_{k+1}-\hat{\underline{x}}_{k+1} &=\left[\begin{array}{ll} \mathbf{A}_{k} & \mathbf{B}_{k} \end{array}\right]\left[\begin{array}{c} \underline{x}_{k}-\hat{\underline{x}}_{k} \\ \underline{u}_{k}-\underline{\hat{u}}_{k} \end{array}\right] \\ &=\left[\begin{array}{ll} \mathbf{A}_{k} & \mathbf{B}_{k} \end{array}\right]\left[\begin{array}{c} \underline{x}_{k}-\underline{\hat{x}}_{k} \\ \underline{w}_{k} \end{array}\right] \end{aligned}

    Annahme: Zustand und Systemrauschen sind unkorreliert

    Cov{[xku~k]}=E{[xkx^kwk][(xkx^k)wk]}=[Ck1:mx00Ckw] \begin{aligned} \operatorname{Cov}\left\{\left[\begin{array}{c} \underline{x}_{k} \\ \underline{\tilde{u}}_{k} \end{array}\right]\right\} &=E\left\{\left[\begin{array}{c} \underline{x}_{k}-\underline{\hat{x}}_{k} \\ \underline{w}_{k} \end{array}\right]\left[\left(\underline{x}_{k}-\underline{\hat{x}}_{k}\right)^{\top} \underline{w}_{k}^{\top}\right]\right\} \\ &=\left[\begin{array}{cc} C_{k \mid 1: m}^{x} & 0 \\ 0 & C_{k}^{w} \end{array}\right] \end{aligned} Ck+11:mx=E{(xk+1x^k+1)(xk+1x^k+1)}=[AkBk]E{[xkx^kwk][xkx^kwk]}[AkBk]=[AkBk][Ck1:m00Ckw][AkBk]=AkCk1:mxAk+BkCkwBk(++) \begin{aligned} \mathbf{C}_{k+1 \mid 1 : m}^{x} &=E\left\{\left(\underline{x}_{k+1}-\hat{x}_{k+1}\right)\left(x_{k+1} - \hat{\underline{x}}_{k+1}\right)^\top\right\} \\ &=\left[\begin{array}{ll} \mathbf{A}_{k} & \mathbf{B}_{k} \end{array}\right] \cdot E\left\{\left[\begin{array}{c} \underline{x}_{k}-\hat{\underline{x}}_{k} \\ \underline{w}_{k} \end{array}\right]\left[\begin{array}{ll} \underline{x}_{k}-\hat{\underline{x}}_{k} & \underline{w}_{k} \end{array}\right]^\top\right\} \cdot\left[\begin{array}{l} \mathbf{A}_{k}^{\top} \\ \mathbf{B}_{k}^{\top} \end{array}\right] \\\\ &=\left[\begin{array}{ll} \mathbf{A}_{k} & \mathbf{B}_{k} \end{array}\right] \cdot\left[\begin{array}{cc} \mathbf{C}_{k \mid 1:m} & 0 \\ 0 & \mathbf{C}_{k}^{w} \end{array}\right] \cdot\left[\begin{array}{l} \mathbf{A}_{k}^{\top} \\ \mathbf{B}_{k}^{\top} \end{array}\right] \\ &=\mathbf{A}_{k} \cdot \mathbf{C}_{k \mid 1: m}^{x} \mathbf{A}_{k}^{\top}+\mathbf{B}_{k} \mathbf{C}_{k}^{w} \mathbf{B}_{k}^{\top} \qquad(++) \end{aligned}

Rekursive Prädiktion

  • Beginn mit Erwartungswert x^m1:m\underline{\hat{x}}_{m|1:m} und Kovarianzmatrix Cm1:mxC_{m|1:m}^x

  • Rekursion mit (+)(+) und (++)(++) für k>mk > m

Beispiele: Übungsblatt 5, Aufgabe 4

Filterung

Erinnerung

Struktur des dynamischen Systems

Graphische Darstellung von dynamischer Systeme

Graphische Darstellung von dynamischer Systeme

Messabbildung

y_k=H_kx_k+v_k \underline{y}\_{k}=\mathbf{H}\_{k} \cdot \underline{x}\_{k}+\underline{v}\_{k}

Ansatz: Linearer Schätzer

xk1:k=Kk(1)xk1:k1+Kk(2)yk() \underline{x}_{k \mid 1: k}=\mathbf{K}_{k}^{(1)} \underline{x}_{k \mid 1: k-1}+\mathbf{K}_{k}^{(2)} \underline{y}_{k} \qquad(\ast)

🎯 Wir suchen den sog. BLUE-Filter (Best Linear Unbiased Estimator) 💪

Ein Schätzer heißt erwartungstreu , wenn sein Erwartungswert gleich dem wahren Wert des zu schätzenden Parameters ist.

Ist eine Schätzfunktion nicht erwartungstreu, spricht man davon, dass der Schätzer verzerrt ist. Das Ausmaß der Abweichung seines Erwartungswerts vom wahren Wert nennt man Verzerrung oder Bias. Die Verzerrung drückt den systematischen Fehler des Schätzers aus.

Source und Bsp: Wiki

  • Erwartungswerttreue (unbiased)

    E{xk1:k}=E{Kk(1)xk1:k1+Kk(2)yk}E{xk1:k}=Kk(1)E{xk1:k1}+Kk(2)E{yk}E{xk1:k}=Kk(1)E{xk1:k1}+Kk(2)E{Hkxk+vk}E{xk1:k}=Kk(1)E{xk1:k1}+Kk(2)HkE{xk} Erwartungstreu x~=Kk(1)x~+Kk(2)Hkx~I=Kk(1)+Kk(2)Hk \begin{aligned} E\left\{\underline{x}_{k \mid 1: k}\right\}&=E\left\{\mathbf{K}_{k}^{(1)} \underline{x}_{k \mid 1: k-1}+\mathbf{K}_{k}^{(2)} \underline{y}_{k}\right\} \\ E\left\{\underline{x}_{k \mid 1: k}\right\}&=\mathbf{K}_{k}^{(1)} E\left\{\underline{x}_{k \mid 1: k-1}\right\}+\mathbf{K}_{k}^{(2)} E\left\{\underline{y}_{k}\right\} \\ E\left\{\underline{x}_{k \mid 1: k}\right\}&=\mathbf{K}_{k}^{(1)} E\left\{\underline{x}_{k \mid 1: k-1}\right\}+\mathbf{K}_{k}^{(2)} E\left\{\mathbf{H}_{k} \cdot x_{k}+\underline{v}_{k}\right\} \\ E\left\{\underline{x}_{k \mid 1: k}\right\}&=\mathbf{K}_{k}^{(1)} E\left\{\underline{x}_{k \mid 1: k-1}\right\}+\mathbf{K}_{k}^{(2)} \mathbf{H}_{k} E\left\{\underline{x}_{k}\right\} \quad \mid \text { Erwartungstreu } \\ \underline{\tilde{x}}&=\mathbf{K}_{k}^{(1)} \underline{\tilde{x}}+\mathbf{K}_{k}^{(2)} \mathbf{H}_{k} \cdot \underline{\tilde{x}} \\ \Rightarrow \mathbf{I} &=\mathbf{K}_{k}^{(1)}+\mathbf{K}_{k}^{(2)} \mathbf{H}_{k} \end{aligned}

    z.B.

    Kk(1)=IKkHkKk(2)=Kk \begin{aligned} \mathbf{K}_{k}^{(1)} &= \mathbf{I} - \mathbf{K}_{k}\mathbf{H}_{k} \\ \mathbf{K}_{k}^{(2)} &= \mathbf{K}_{k} \end{aligned}

Setze in ()(\ast) ein:

xk1:k=:xke=(IKkHk)xk1:k1=:xkp+Kkyk() \underbrace{\underline{x}_{k \mid 1: k}}_{=: \underline{x}_{k}^{e}}=\left(\mathbf{I}-\mathbf{K}_{k}\mathbf{H}_{k} \right) \underbrace{\underline{x}_{k \mid 1: k-1}}_{=: \underline{x}_{k}^{p}}+\mathbf{K}_{k} \underline{y}_{k} \qquad(* *)

Aber der Schätzert ist noch nicht vollständig festgelegt, da Kk\mathbf{K}_{k} noch nicht festgelegt ist.

\Rightarrow Wir suche Kk\mathbf{K}_{k} so, dass der resultierende Schätzer MINIMAL kovarianz aufweist. (“Minimalvarianz Schätzer”)

Nehme an, dass Messung unkorreliert mit priorer Schätzung. Aus ()(\ast\ast) gilt

Ck1:k(Kk)=:Cke(Kk)=(IKkHk)Ck1:k1x=:Ckp(IKkHk)+KkCkvKk() \underbrace{\mathbf{C}_{k \mid 1: k}\left(\mathbf{K}_{k}\right)}_{=: \mathbf{C}_{k}^{e}\left(\mathbf{K}_{k}\right)}=\left(\mathbf{I}-\mathbf{K}_{k} \mathbf{H}_{k}\right) \underbrace{\mathbf{C}_{k \mid 1: k-1}^{x}}_{=: \mathbf{C}_{k}^{p}}\left(\mathbf{I}-\mathbf{K}_{k} \mathbf{H}_{k}\right)^{\top}+\mathbf{K}_{k} C_{k}^{v} \mathbf{K}_{k}^{\top} \qquad(\ast\ast\ast)

Wir betrachten nun die Filterkovarianz Cke\mathbf{C}_{k}^{e} als Funktion von Kk\mathbf{K}_{k} , d. h. Cke(Kk)\mathbf{C}_{k}^{e}(\mathbf{K}_k) . Ziel ist es, das Kk\mathbf{K}_{k} so zu finden, dass die Filterkovarianz so klein wie möglich ist.

Trick: Auf Skalares Gütemaß zurückzuführen

D.h., um Kovarianzmatrizen generell vergleichen zu können, verwende man die Funktionen, die von einer n×nn \times n Matrix in R1\mathbb{R}^1 abbilden. Anders gesagt, die einer Kovarianzmatrix einen Skalar zuordnen, denn man kann nur Skalare direkt miteinander vergleichen.

Z.B., Projektion mit beliebigen Einheitsvektor e\underline{e}

P(K)=eCc(K)e P(\mathbf{K}) = \underline{e}^\top \cdot \mathbf{C}_c(\mathbf{K}) \cdot \underline{e}

MINIMAL Kovarianz \Leftrightarrow P(K)P(\mathbf{K}) soll minimal sein für e\underline{e}.

Andere mögliche skalare Gütemaße:

  • Spur()\operatorname{Spur}(\cdot): Summe der Diagonalelemente

    Spur(C)=σ_x2+σ_y2 \begin{equation} \operatorname{Spur}(\mathbf{C})=\sigma\_{x}^{2}+\sigma\_{y}^{2} \end{equation}
  • det()\operatorname{det}(\cdot): Determinante, also Produkt der Eigenwerte

    det(C)=σ_x2σ_y2 \operatorname{det}(\mathbf{C})=\sigma\_{x}^{2} \cdot \sigma\_{y}^{2}
Beispiel
截屏2022-07-03 10.33.08

Ableitung mit der Matrizen Differenzregeln:

KP(K)=K{e[(IKH)Cp(IKH)+KCyK]e}=K{e[CpCpHKKHCp+KHCpHK+KCyK]e}=[HCpee]ee(HCp)+2eeKHCpH+2eeKCy=!0 \begin{aligned} \frac{\partial}{\partial \mathbf{K}} P(\mathbf{K}) &=\frac{\partial}{\partial \mathbf{K}}\left\{\underline{e}^{\top}\left[(\mathbf{I}-\mathbf{K} \mathbf{H}) \mathbf{C}_{p}(\mathbf{I}-\mathbf{K} \mathbf{H})^{\top}+\mathbf{K} \mathbf{C}_{y} \mathbf{K}^{\top}\right] \underline{e}\right\} \\ &=\frac{\partial}{\partial \mathbf{K}}\left\{\underline{e}^{\top}\left[\mathbf{C}_{p}-\mathbf{C}_{p} \mathbf{H}^{\top} \mathbf{K}^{\top}-\mathbf{K} \mathbf{H} \mathbf{C}_{p}+\mathbf{K} \mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top} \mathbf{K}^{\top}+\mathbf{K} \mathbf{C}_{y} \mathbf{K}^{\top}\right] \underline{e}\right\} \\ &=-\left[\mathbf{H} \mathbf{C}_{p} \underline{e} \underline{e}^{\top}\right]^{\top}-\underline{e} \underline{e}^{\top}\left(\mathbf{H} \mathbf{C}_{p}\right)^{\top}+2 \underline{e} \underline{e}^{\top} \mathbf{K} \mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}+2 \underline{e} \underline{e}^{\top} \cdot \mathbf{K} \mathbf{C}_{y} \\ &\overset{!}{=} \mathbf{0} \end{aligned}

Also

CpHCpH+2KHCpH+2KCy=!0K(Cy+HCpH)=CpHK=CpH(Cy+HCpH)1 (Kalman gain)  \begin{array}{l} -\mathbf{C}_{p} \cdot \mathbf{\mathbf{H}}^{\top}-\mathbf{C}_{p} \mathbf{H}^{\top}+2 \mathbf{K} \mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}+2 \mathbf{K} \mathbf{C}_{y} \stackrel{!}{=} \mathbf{0} \\ \mathbf{K}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}\right)^{\top}=\mathbf{C}_{p} \mathbf{H}^{\top} \\ \mathbf{K}=\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{\mathbf{H}}^{\top}\right)^{-1} \quad \text { (Kalman gain) } \end{array}

Setze K\mathbf{K} in ()(\ast \ast) ein

x^e=(IKH)x^p+Ky^ (combination form) =x^p+K(y^Hx^p) (feedback form) =x^p+CpH(Cy+HCpH)1(yHx^p) \begin{aligned} \underline{\hat{x}}_{e} &=(\mathbf{I}-\mathbf{K} \mathbf{H}) \underline{\hat{x}}_{p}+\mathbf{K} \cdot \underline{\hat{y}} \qquad \text { (combination form) } \\ &=\underline{\hat{x}}_{p}+\mathbf{K}\left(\underline{\hat{y}}-\mathbf{H} \cdot \underline{\hat{x}}_{p}\right) \qquad \text { (feedback form) } \\ &=\underline{\hat{x}}_{p}+\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1}\left(\underline{y}-\mathbf{H} \cdot \underline{\hat{x}}_{p}\right) \end{aligned}

Das ist das Kalman Filter.

Nun Setze K\mathbf{K} in ()(\ast \ast \ast) ein, um die Kovarianzmatrix zu berechnen.

Ce=[ICpH(Cy+HCpH)1Hk]Cp[ICpH(Cy+HCpH)1Hk]1+CpH(Cy+HCpH)1Cy(Cy+HCpH)1HCp=Cp2CpH(Cy+HCpH)1HCp+CpH(Cy+HCpH)1HCpH(Cy+HCpH)1HCp+CpH(Cy+HCpH=:D)1Cy(Cy+HCpH)1HCp=Cp2CpHD1HCp+CpHD1DD1HCp=CpCpH(Cy+HCpH)1HCp \begin{aligned} \mathbf{C}_{e}=& {\left[\mathbf{I}-\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H}_{k}\right] \cdot \mathbf{C}_{p} } \\ & \cdot\left[\mathbf{I}-\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H}_{k}\right]^{-1} \\ &+\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{C}_{y}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H} \mathbf{C}_{p} \\\\ =& \mathbf{C}_{p}-2 \mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H} \mathbf{C}_{p} \\ &+\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H} \mathbf{C}_{p} \\ &+\mathbf{C}_{p} \mathbf{H}^{\top}(\underbrace{\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}}_{=:\mathbf{D}})^{-1} \mathbf{C}_{y}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H} \mathbf{C}_{p}\\\\ =& \mathbf{C}_{p}-2 \mathbf{C}_{p} \mathbf{H}^{\top} \mathbf{D}^{-1} \mathbf{H} \mathbf{C}_{p}+\mathbf{C}_{p} \mathbf{H}^{\top} \mathbf{D}^{-1} \mathbf{D} \mathbf{D}^{-1} \mathbf{H} \mathbf{C}_{p} \\\\ =& \mathbf{C}_{p}-\mathbf{C}_{p} \mathbf{H}^{\top}\left(\mathbf{C}_{y}+\mathbf{H} \mathbf{C}_{p} \mathbf{H}^{\top}\right)^{-1} \mathbf{H} \mathbf{C}_{p} \end{aligned}
Schritt für Schritt Herleitung: Übungsblatt 6, Aufgabe 1 (Sehr ausführlich und hilfreich! 👍)

Beispiel

  • Kompletter Kalman Filter: Übungsblatt 5 Aufgabe 3

  • Prädiktion: Übungsblatt 5, Aufgabe 4

  • Filterung: Übungsblatt 6 Aufgabe 1