Luenberger Beobachter

Das Ziel vom Luenberger Beobachter ist es, alle Zustände von einem Differenzialgleichungssystem zur Laufzeit zu schätzen. Die Schätzung erfolgt durch den Abgleich zwischen Modellvorstellung, Systemeingang und Messdaten.
Der Beitrag zeigt, wie ein Luenberger Beobachter aufgebaut ist und wie der Fehler zwischen Schätzung und den tatsächlichen Zuständen mit zunehmender Zeit gegen 0 konvergiert.
Ein lineares, zeitinvariantes Zustandsraummodell (ZRM) ist gegeben durch: $$ \begin{align*} \dot{x}(t) &= \textbf{A}x(t) + \textbf{B}u(t) \\ y(t) &= \textbf{C}x(t) \end{align*} $$ Analog zum ZRM ist auch die Modellvorstellung des Beobachters mit dem geschätzten Zustand \(\hat{x}(t)\) in Matrix Notation beschrieben. $$ \begin{align*} \dot{\hat{x}}(t) &= \textbf{A}\hat{x}(t) + \textbf{B}u(t) \\ \hat{y}(t) &= \textbf{C}\hat{x}(t) \end{align*} $$ Der Schätzfehler wird als Differenz zwischen tatsächlichem Zustand \(x(t)\) und geschätztem Zustand \(\hat{x}(t)\) definiert. $$ \begin{align*} e(t) &:= x(t) - \hat{x}(t) \\ &\quad\downarrow \\ \dot{e}(t) &:= \dot{x}(t) - \dot{\hat{x}}(t) \end{align*} $$ Wird für den Regelfehler nun das ZRM und die Gleichung für den Beobachter eingesetzt folgt. $$ \begin{align*} \dot{e}(t) = \textbf{A}x(t) + \textbf{B}u(t) - \textbf{A}\hat{x}(t) - \textbf{B}u(t)\\ \end{align*} $$ Damit der Schätzfehler gegen 0 konvergieren kann, werden nachfolgend die Messwerte mitverwendet. Die Differenz zwischen den Messwerten \(y(t)\) und den geschätzten Messwerten \(\hat{y}(t)\) wird oft als Innovation bezeichnet und mit der Gainmatrix \(\textbf{L}\) gewichtet in die Differenzialgleichung eingeführt. $$ \begin{align*} \dot{e}(t) &= \textbf{A}x(t) + \textbf{B}u(t) - \textbf{A}\hat{x}(t) - \textbf{B}u(t) - \textbf{L}(y(t)-\hat{y}(t))\\ &= \textbf{A}x(t) - \textbf{A}\hat{x}(t) - \textbf{L}(y(t)-\hat{y}(t))\\ &= \textbf{A}x(t) - \textbf{A}\hat{x}(t) - \textbf{L}(\textbf{C}x(t)-\textbf{C}\hat{x}(t))\\ &= [\textbf{A} - \textbf{L}\textbf{C}] x(t) - [\textbf{A} - \textbf{L}\textbf{C}]\hat{x}(t)\\ &= [\textbf{A} - \textbf{L}\textbf{C}] e(t) \end{align*} $$

$$ \begin{bmatrix} \dot{x} \\ \dot{e} \end{bmatrix} = \begin{bmatrix} \textbf{A} -\textbf{B}\textbf{K}& \textbf{B}\textbf{K} \\ \textbf{0} & \textbf{A}-\textbf{L}\textbf{C} \end{bmatrix} \begin{bmatrix} x \\ e \end{bmatrix} $$
Um die Matrix \(\textbf{L}\) zu bestimmen, bedienen wir uns der Anomalie zwischen Beobachter und Regler. Ein Zustandsregler führt die Zustände \(x\) von einem System gewichtet mit der Rückführmatix \(-K\) als Systemeingang \((u=-Kx)\)zurück. Dadurch folgt: $$ \begin{align*} \dot{x}(t) &= \textbf{A}x(t) + \textbf{B}u(t)\\ &= \textbf{A}x(t) - \textbf{B}\textbf{K}x(t)\\ &= [\textbf{A} - \textbf{B}\textbf{K}]x(t)\\ \end{align*} $$ Wird die Matrix \([\textbf{A} - \textbf{L}\textbf{C}]\) für den Beobachter transponiert, kann \(\textbf{L}\) analog zu einem Regler ausgelegt werden. Beispielsweise mittels Polplatzierung oder LQR-Berechnung. $$ \begin{align*} \dot{e} &= [\textbf{A}-\textbf{L}\textbf{C}]^Te \\ \dot{e} &= [\textbf{A}^T-\textbf{C}^T\textbf{L}^T]e \end{align*} $$

$$ \begin{align*} \text{Regler} &\rightarrow \text{Beobachter} \\ \textbf{A} &= \textbf{A}^T \\ \textbf{B} &= \textbf{C}^T \\ \textbf{K} &= \textbf{L}^T \end{align*} $$
Wird mit Matlab gearbeitet, kann der LQR Regler und der Beobachter gemäss dem nachfolgenden Befehl berechnet werden. Die Gainmatrix \(\textbf{L}\) entspricht gerade dem eingeschwungenen (statischen) Kalman-Gain. $$ \begin{align*} \textbf{K} &= lqr(\textbf{A}, \textbf{B}, \textbf{Q}, \textbf{R} ) \\ \textbf{L} &= lqr(\textbf{A}^T, \textbf{C}^T, \textbf{Q}, \textbf{R} )^T \end{align*} $$ Für die Schätzung der Zustände in Echtzeit kann gemäss dem nachfolgenden Blockschaltbild vorgegangen werden.

PT3-Strecke