Der \( \alpha -\beta -\gamma \)-Filter
Dieses Kapitel ist ein Einstieg und beschreibt die \(\alpha -\beta\)- und \(\alpha -\beta -\gamma\)-Filter. Diese Filter werden häufig zur Glättung von Zeitreihendaten (time series data smoothing) verwendet. Die Prinzipien des \(\alpha -\beta (-\gamma)\)-Filters stehen in engem Zusammenhang mit den Prinzipien des Kalman-Filters (Kalman Filter).
Beispiel 1 – Gold abwiegen
Jetzt sind wir bereit für das erste einfache Beispiel. In diesem Beispiel schätzen wir den Zustand eines statischen Systems. Ein statisches System ist ein System, dessen Zustand sich über einen sinnvollen Zeitraum nicht ändert. Ein Beispiel für ein statisches System wäre ein Turm, und der Zustand wäre seine Höhe.
In diesem Beispiel schätzen wir das Gewicht des Goldbarrens. Wir haben eine unverzerrte Waage, d. h. die Messungen haben keinen systematischen Fehler (systematic measurement error), enthalten aber zufälliges Rauschen (random noise).
Adriaen Isenbrant, niederländisch ca. 1515–20
The Metropolitan Museum of Art (Open-Access-Richtlinie)
Das System ist der Goldbarren, und der Systemzustand (system state) ist sein Gewicht. Das dynamische Modell (dynamic model) des Systems ist konstant, da wir annehmen, dass sich das Gewicht über kurze Zeiträume nicht ändert.
Um den Systemzustand (also den Gewichtswert) zu schätzen, können wir mehrere Messungen durchführen und diese mitteln.
Zum Zeitpunkt \( n \) ist die Schätzung \( \hat{x}_{n,n} \) der Mittelwert aller bisherigen Messungen:
| \( x \) | ist der wahre Wert des Gewichts. |
| \( z_{n} \) | ist der gemessene Gewichtswert zum Zeitpunkt \( n \). |
| \( \hat{x}_{n,n} \) | ist die Schätzung von \( x \) zum Zeitpunkt \( n \) (die Schätzung erfolgt nach der Messung \( z_{n} \)). |
| \( \hat{x}_{n+1,n} \) | ist die Schätzung des zukünftigen Zustands (\( n+1 \)) von \( x \). Die Schätzung wird zum Zeitpunkt \( n \) gebildet. Mit anderen Worten: \( \hat{x}_{n+1,n} \) ist ein vorhergesagter bzw. extrapolierter Zustand. |
| \( \hat{x}_{n-1,n-1} \) | ist die Schätzung von \( x \) zum Zeitpunkt \( n-1 \) (die Schätzung erfolgt nach der Messung \( z_{n-1} \)). |
| \( \hat{x}_{n,n-1} \) | ist eine a-priori-Vorhersage (prior prediction) – die Schätzung des Zustands zum Zeitpunkt \( n \). Die Vorhersage wird zum Zeitpunkt \( n-1 \) gebildet. |
Das dynamische Modell in diesem Beispiel ist statisch (bzw. konstant), da sich das Gewicht des Goldes im Zeitverlauf nicht ändert. Daher gilt \( \hat{x}_{n+1,n}= \hat{x}_{n,n} \).
Obwohl die obige Gleichung mathematisch korrekt ist, ist sie für eine Implementierung unpraktisch. Um \( \hat{x}_{n,n} \) zu berechnen, müssten wir alle bisherigen Messungen speichern – das erfordert viel Speicher. Außerdem müssten wir den Mittelwert nach jeder neuen Messung erneut berechnen – das erfordert Rechenleistung.
Praktischer ist es, nur die letzte Schätzung (\( \hat{x}_{n-1,n-1} \)) zu behalten und sie nach jeder neuen Messung zu aktualisieren. Die folgende Abbildung veranschaulicht den benötigten Algorithmus:
- Schätze den aktuellen Zustand anhand der Messung und der a-priori-Vorhersage.
- Sage den nächsten Zustand anhand der aktuellen Zustandsschätzung mit dem dynamischen Modell voraus.
Mit einem kleinen mathematischen Trick können wir die Mittelwertgleichung so umformen, dass sie besser zu unseren Bedürfnissen passt:
| Anmerkungen | ||
|---|---|---|
| \( \hat{x}_{n,n}= \frac{1}{n} \sum _{i=1}^{n} \left( z_{i} \right) \) | Average formula: sum of \( n \) measurements divided by \( n \) | Mittelwertformel: Summe von \( n \) Messungen geteilt durch \( n \) |
| \( = \frac{1}{n} \left( \sum _{i=1}^{n-1} \left( z_{i} \right) + z_{n} \right) \) | Summe der \( n-1 \) Messungen plus die letzte Messung, geteilt durch \( n \) | |
| \( = \frac{1}{n} \sum _{i=1}^{n-1} \left( z_{i} \right) + \frac{1}{n} z_{n} \) | Ausmultiplizieren | |
| \( = \frac{1}{n}\frac{n-1}{n-1} \sum _{i=1}^{n-1} \left( z_{i} \right) + \frac{1}{n} z_{n} \) | Multipliziere und dividiere mit \( n-1 \) | |
| \( = \frac{n-1}{n}\color{#FF8C00}{\frac{1}{n-1} \sum _{i=1}^{n-1} \left( z_{i} \right)} + \frac{1}{n} z_{n} \) |
Umordnen Der „orange“ Term ist die vorherige Schätzung |
|
| \( = \frac{n-1}{n}\color{#FF8C00}{\hat{x}_{n-1,n-1}} + \frac{1}{n} z_{n} \) | Umschreiben der Summe | |
| \( = \hat{x}_{n-1,n-1}- \frac{1}{n}\hat{x}_{n-1,n-1}+ \frac{1}{n} z_{n} \) | Verteile den Term \( \frac{n-1}{n} \) | |
| \( = \hat{x}_{n-1,n-1}+ \frac{1}{n} \left( z_{n}- \hat{x}_{n-1,n-1} \right) \) | Umordnen |
\( \hat{x}_{n-1,n-1} \) ist die Zustandsschätzung von \( x \) zum Zeitpunkt \( n-1 \), basierend auf der Messung zum Zeitpunkt \( n-1 \).
Bestimmen wir nun \( \hat{x}_{n,n-1} \) (den vorhergesagten Zustand von \( x \) zum Zeitpunkt \( n \)) auf Basis von \( \hat{x}_{n-1,n-1} \) (der Schätzung zum Zeitpunkt \( n-1 \)). Anders gesagt: Wir möchten \( \hat{x}_{n-1,n-1} \) auf den Zeitpunkt \( n \) extrapolieren.
Da das dynamische Modell in diesem Beispiel statisch ist, entspricht der vorhergesagte Zustand von \( x \) dem geschätzten Zustand von \( x \): \( \hat{x}_{n,n-1} = \hat{x}_{n-1,n-1} \).
Damit lässt sich die Schätzung des aktuellen Zustands \( \hat{x}_{n,n} \) wie folgt schreiben:
Die obige Gleichung ist eine der fünf Kalman-Filter-Gleichungen. Sie heißt Zustandsaktualisierungsgleichung (State Update Equation) und bedeutet Folgendes:
Der Faktor \( \frac{1}{n} \) ist spezifisch für unser Beispiel. Die zentrale Rolle dieses Faktors besprechen wir später. An dieser Stelle möchte ich nur festhalten, dass dieser Faktor in der „Kalman-Filter-Sprache“ Kalman-Gain (Kalman Gain) heißt. Er wird mit \( K_{n} \) bezeichnet. Der Index \( n \) zeigt, dass sich der Kalman-Gain mit jeder Iteration ändern kann.
Die Entdeckung von \( K_{n} \) war einer der bedeutenden Beiträge von Rudolf Kálmán.
Bevor wir in die Details des Kalman-Filters einsteigen, verwenden wir hier den griechischen Buchstaben \( \alpha_{n} \) anstelle von \( K_{n} \).
Damit sieht die Zustandsaktualisierungsgleichung so aus:
Der Term \( \left( z_{n}- \hat{x}_{n,n-1} \right) \) ist das Messresiduum (measurement residual), auch Innovation (innovation) genannt. Die Innovation enthält neue Information.
In diesem Beispiel nimmt \( \frac{1}{n} \) ab, wenn \( n \) größer wird. Am Anfang haben wir noch nicht genug Information über den aktuellen Zustand; daher basiert die erste Schätzung vollständig auf der ersten Messung: \( \frac{1}{n}|_{n=1} = 1 \). Mit jeder weiteren Messung bekommt die neue Messung weniger Gewicht im Schätzprozess, weil \( \frac{1}{n} \) kleiner wird. Ab einem gewissen Punkt wird der Beitrag neuer Messungen vernachlässigbar.
Machen wir weiter mit dem Beispiel. Bevor wir die erste Messung durchführen, können wir das Gewicht des Goldbarrens grob abschätzen, indem wir den Stempel auf dem Goldbarren lesen. Das nennt man Startschätzung (initial guess) – und es ist unsere erste Schätzung.
Der Kalman-Filter benötigt diese Startschätzung als Vorgabe; sie kann sehr grob sein.
Schätzalgorithmus
Die folgende Grafik zeigt den Schätzalgorithmus, der in diesem Beispiel verwendet wird.
Jetzt sind wir bereit, den Mess- und Schätzprozess zu starten.
Das numerische Beispiel
Iteration Null
Initialisierung
Unsere Startschätzung für das Gewicht des Goldbarrens beträgt 1000 Gramm. Die Startschätzung wird nur einmal zur Initialisierung des Filters verwendet und ist für nachfolgende Iterationen nicht mehr erforderlich.
\[ \hat{x}_{0,0}=1000g \]
Vorhersage
Das Gewicht des Goldbarrens soll sich nicht ändern. Daher ist das dynamische Modell des Systems statisch. Unsere nächste Zustandsschätzung (Vorhersage) entspricht der Initialisierung:
\[ \hat{x}_{1,0} = \hat{x}_{0,0}=1000g \]
Erste Iteration
Schritt 1
Durchführung der Gewichtsmessung mit der Waage:
\[ z_{1}= 996g \]
Schritt 2
Berechnung des Gains. In unserem Beispiel gilt \( \alpha_{n}= \frac{1}{n} \), also:
\[ \alpha_{1}= \frac{1}{1}=1 \]
Berechnung der aktuellen Schätzung mit der Zustandsaktualisierungsgleichung:
\[ \hat{x}_{1,1}= \hat{x}_{1,0}+ \alpha _{1} \left( z_{1}- \hat{x}_{1,0} \right) = 1000+1 \left( 996-1000 \right) = 996g \]
Schritt 3
Das dynamische Modell des Systems ist statisch; das Gewicht des Goldbarrens soll sich also nicht ändern. Unsere nächste Zustandsschätzung (Vorhersage) entspricht der aktuellen Zustandsschätzung:
\[ \hat{x}_{2,1}= \hat{x}_{1,1}=996g \]
Zweite Iteration
Nach einer Zeiteinheit wird die Vorhersage (predicted estimate) aus der vorherigen Iteration zur a-priori-Schätzung (prior estimate) der aktuellen Iteration:
\[ \hat{x}_{2,1}=996g \]
Schritt 1
Durchführung der zweiten Gewichtsmessung:
\[ z_{2}= 994g \]
Schritt 2
Berechnung des Gains:
\[ \alpha _{2}= \frac{1}{2} \]
Berechnung der aktuellen Schätzung:
\[ \hat{x}_{2,2}= \hat{x}_{2,1}+ \alpha_{2} \left( z_{2}- \hat{x}_{2,1} \right) =996+\frac{1}{2} \left( 994-996 \right) = 995g \]
Schritt 3
\[ \hat{x}_{3,2}= \hat{x}_{2,2}=995g \]
Dritte Iteration
\[ z_{3}= 1021g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{3}= \frac{1}{3} \] \[ \hat{x}_{3,3}=~ 995+\frac{1}{3} \left( 1021-995 \right) =1003.67g \] \[ \hat{x}_{4,3}=1003.67g \]
Vierte Iteration
\[ z_{4}= 1000g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{4}= \frac{1}{4} \] \[ \hat{x}_{4,4}= 1003.67+\frac{1}{4} \left( 1000-1003.67 \right) =1002.75g \] \[ \hat{x}_{5,4}=1002.75g \]
Fünfte Iteration
\[ z_{5}= 1002g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{5}= \frac{1}{5} \] \[ \hat{x}_{5,5}= 1002.75+\frac{1}{5} \left( 1002-1002.75 \right) =1002.6g \] \[ \hat{x}_{6,5}=1002.6g \]
Sechste Iteration
\[ z_{6}= 1010g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{6}= \frac{1}{6} \] \[ \hat{x}_{6,6}= 1002.6+\frac{1}{6} \left( 1010-1002.6 \right) =1003.83 \] \[ \hat{x}_{7,6}=1003.83g \]
Siebte Iteration
\[ z_{7}=983g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{7}= \frac{1}{7} \] \[ \hat{x}_{7,7}= 1003.83+\frac{1}{7} \left( 983-1003.83 \right) =1000.86g \] \[ \hat{x}_{8,7}=1000.86g \]
Achte Iteration
\[ z_{8}=971g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{8}= \frac{1}{8} \] \[ \hat{x}_{8,8}= 1000.86+\frac{1}{8} \left( 971-1000.86 \right) =997.125g \] \[ \hat{x}_{9,8}=997.125g \]
Neunte Iteration
\[ z_{9}=993g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{9}= \frac{1}{9} \] \[ \hat{x}_{9,9}= 997.125+\frac{1}{9} \left( 993-997.125 \right) =996.67g \] \[ \hat{x}_{10,9}=996.67g \]
Zehnte Iteration
\[ z_{10}=1023g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha_{10}= \frac{1}{10} \] \[ \hat{x}_{10,10}= 996.67+\frac{1}{10} \left( 1023-996.67 \right) =999.3g \] \[ \hat{x}_{11,10}=999.3g \]
Hier können wir stoppen. Der Gain nimmt mit jeder Messung ab. Daher ist der Beitrag jeder weiteren Messung kleiner als der Beitrag der vorherigen Messung. Wir kommen dem wahren Gewicht von 1000 g ziemlich nahe. Würden wir noch mehr Messungen durchführen, würden wir uns dem wahren Wert weiter annähern.
Die folgende Tabelle fasst unsere Messungen und Schätzungen zusammen, und die Grafik vergleicht Messwerte, Schätzungen und den wahren Wert.
| \( n \) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| \( \alpha _{n} \) | \( 1 \) | \( \frac{1}{2} \) | \( \frac{1}{3} \) | \( \frac{1}{4} \) | \( \frac{1}{5} \) | \( \frac{1}{6} \) | \( \frac{1}{7} \) | \( \frac{1}{8} \) | \( \frac{1}{9} \) | \( \frac{1}{10} \) |
| \( z_{n} \) | 996 | 994 | 1021 | 1000 | 1002 | 1010 | 983 | 971 | 993 | 1023 |
| \( \hat{x}_{n,n} \) | 996 | 995 | 1003.67 | 1002.75 | 1002.6 | 1003.83 | 1000.86 | 997.125 | 996.67 | 999.3 |
| \( \hat{x}_{n+1,n} \) | 996 | 995 | 1003.67 | 1002.75 | 1002.6 | 1003.83 | 1000.86 | 997.125 | 996.67 | 999.3 |
Analyse der Ergebnisse
Die folgende Grafik vergleicht die wahren, gemessenen und geschätzten Werte.
Der Schätzalgorithmus glättet die Messungen und konvergiert gegen den wahren Wert.
Erforderliche Anzahl an Messungen
Wie viele Messungen brauchen wir? Sollten wir nach 10, 100 oder vielleicht 1000 Messungen aufhören?
Die erforderliche Anzahl an Messungen hängt von der gewünschten Schätzpräzision ab. Eine Antwort auf diese Frage erhalten wir, sobald wir den zweiten Teil des Buches durchgearbeitet haben. Der neugierige Leser kann jedoch schon jetzt einen Blick in Anhang J des Buchs werfen.
Zusammenfassung des Beispiels
In diesem Beispiel haben wir einen einfachen Schätzalgorithmus für ein statisches System entwickelt. Außerdem haben wir die Zustandsaktualisierungsgleichung hergeleitet – eine der fünf Kalman-Filter-Gleichungen. Wir werden die Zustandsaktualisierungsgleichung im nächsten Kapitel wieder aufgreifen.
Beispiel 2 – Verfolgung eines Flugzeugs mit konstanter Geschwindigkeit in einer Dimension
Jetzt ist es an der Zeit, ein dynamisches System zu betrachten, dessen Zustand sich mit der Zeit ändert. In diesem Beispiel verfolgen wir ein Flugzeug mit konstanter Geschwindigkeit in einer Dimension mit dem \( \alpha - \beta \)-Filter.
Nehmen wir eine eindimensionale Welt an. Wir betrachten ein Flugzeug, das sich radial vom Radar entfernt (oder auf das Radar zu bewegt). In der eindimensionalen Welt ist der Winkel zum Radar konstant und die Flughöhe ist konstant – wie in der folgenden Abbildung dargestellt.
\( x_{n} \) bezeichnet die Entfernung (range) zum Flugzeug zum Zeitpunkt \( n \). Die Flugzeuggeschwindigkeit kann näherungsweise mit der Differentiation der Entfernung bestimmt werden – also über die zeitliche Änderung der gemessenen Entfernung.
Damit ist die Geschwindigkeit die Ableitung der Entfernung:
Für diskrete Messungen:
Das Radar sendet in konstanten Abständen einen Track-Strahl (track beam) in Richtung des Ziels. Das Track-to-Track-Intervall (track-to-track interval) ist \( \Delta t \).
Zwei Bewegungsgleichungen beschreiben das dynamische Modell des Systems für eine Bewegung mit konstanter Geschwindigkeit:
Nach diesen Gleichungen entspricht die Entfernung des Flugzeugs im nächsten Tracking-Zyklus der Entfernung im aktuellen Tracking-Zyklus plus Zielgeschwindigkeit multipliziert mit dem Track-to-Track-Intervall. Da wir in diesem Beispiel konstante Geschwindigkeit annehmen, entspricht die Geschwindigkeit im nächsten Zyklus der Geschwindigkeit im aktuellen Zyklus.
Dieses Gleichungssystem nennt man Gleichung zur Zustandsextrapolation (State Extrapolation Equation) – auch Übergangsgleichung (Transition Equation) oder Vorhersagegleichung (Prediction Equation) genannt – und es ist ebenfalls eine der fünf Kalman-Filter-Gleichungen. Dieses Gleichungssystem extrapoliert den aktuellen Zustand auf den nächsten Zustand (Vorhersage).
Wir haben die Gleichung zur Zustandsextrapolation bereits im vorherigen Beispiel verwendet, als wir angenommen haben, dass das Gewicht im nächsten Zustand dem Gewicht im aktuellen Zustand entspricht.
Die Gleichungen zur Zustandsextrapolation hängen von der Systemdynamik ab und unterscheiden sich von Beispiel zu Beispiel.
Es gibt eine allgemeine Form der Gleichung zur Zustandsextrapolation in Matrixschreibweise. Diese lernen wir später.
In diesem Beispiel verwenden wir die oben stehenden, für unseren Fall spezifischen Gleichungen.
- Zustandsaktualisierungsgleichung
- Gleichung zur Zustandsextrapolation
Jetzt passen wir die Zustandsaktualisierungsgleichung für unser Beispiel an.
Der \( \alpha - \beta \)-Filter
Nehmen wir an, die Track-to-Track-Periode des Radars (\( \Delta t \)) beträgt 5 Sekunden. Angenommen, zum Zeitpunkt \( n-1 \) beträgt die geschätzte Entfernung des UAV (Unmanned Aerial Vehicle) 30 000 m und die geschätzte UAV-Geschwindigkeit 40 m/s.
Mit den Gleichungen zur Zustandsextrapolation können wir die Zielposition zum Zeitpunkt \( n \) vorhersagen:
\[ \hat{x}_{n,n-1}= \hat{x}_{n-1,n-1}+ \Delta t\hat{\dot{x}}_{n-1,n-1}=30000+5\times40=30200m \]
Die Vorhersage der Zielgeschwindigkeit zum Zeitpunkt \( n \):
\[ \hat{\dot{x}}_{n,n-1}= \hat{\dot{x}}_{n-1,n-1}=40m/s \]
Zum Zeitpunkt \( n \) misst das Radar jedoch eine Entfernung \( z_{n} \) von 30 110 m und nicht – wie erwartet – 30 200 m. Zwischen erwarteter (vorhergesagter) und gemessener Entfernung besteht also eine Lücke von 90 m. Dafür gibt es zwei mögliche Ursachen:
- Die Radarmessungen sind nicht präzise.
- Die Flugzeuggeschwindigkeit hat sich geändert. Die neue Flugzeuggeschwindigkeit ist: \( \frac{30\,110-30\,000}{5}=22\,m/s \)
Welche der beiden Aussagen stimmt?
Schreiben wir die Zustandsaktualisierungsgleichung für die Geschwindigkeit auf:
Der Wert des Faktors \( \beta \) hängt von der Präzision des Radars ab. Angenommen, die \( 1\sigma \)-Präzision des Radars beträgt 20 m. Dann ist die 90 m-Lücke zwischen vorhergesagter und gemessener Entfernung sehr wahrscheinlich auf eine Änderung der Flugzeuggeschwindigkeit zurückzuführen. In diesem Fall sollten wir \( \beta \) groß wählen. Setzen wir \( \beta = 0{,}9 \), ergibt sich für die geschätzte Geschwindigkeit:
\[ \hat{\dot{x}}_{n,n}= \hat{\dot{x}}_{n,n-1}+ \beta \left( \frac{z_{n}-\hat{x}_{n,n-1}}{ \Delta t} \right) =40+0.9 \left( \frac{30110-30200}{5} \right) =23.8m/s \]
Angenommen dagegen, die \( 1\sigma \)-Präzision des Radars beträgt 150 m. Dann ist die 90 m-Lücke wahrscheinlich auf den Radarmessfehler zurückzuführen. In diesem Fall sollten wir \( \beta \) klein wählen. Setzen wir \( \beta = 0{,}1 \), ergibt sich:
\[ \hat{\dot{x}}_{n,n}= \hat{\dot{x}}_{n,n-1}+ \beta \left( \frac{z_{n}-\hat{x}_{n,n-1}}{ \Delta t} \right) =40+0.1 \left( \frac{30110-30200}{5} \right) =38.2m/s \]
Wenn sich die Flugzeuggeschwindigkeit tatsächlich von 40 m/s auf 22 m/s geändert hat, sehen wir das nach 10 Tracking-Zyklen (wenn wir die obige Gleichung 10-mal mit \( \beta=0{,}1 \) anwenden). Wenn die Lücke hingegen durch Messfehler verursacht wurde, liegen die Folgemessungen mal vor, mal hinter der vorhergesagten Position. Im Mittel würde sich die Zielgeschwindigkeit dann nicht ändern.
Die Zustandsaktualisierungsgleichung für die Flugzeugposition ist ähnlich zu der Gleichung, die wir im vorherigen Beispiel hergeleitet haben:
Anders als im vorherigen Beispiel – wo \( \alpha \) in jeder Iteration neu berechnet wird (\( \alpha _{n}= \frac{1}{n} \)) – ist \( \alpha \) in diesem Beispiel konstant.
Die Größe von \( \alpha \) hängt von der Messpräzision des Radars ab. Bei hoher Präzision sollten wir \( \alpha \) groß wählen, sodass die Messungen stark gewichtet werden. Wenn \( \alpha = 1 \) gilt, entspricht die geschätzte Entfernung der gemessenen Entfernung:
\[ \hat{x}_{n,n}= \hat{x}_{n,n-1}+ 1 \left( z_{n}- \hat{x}_{n,n-1} \right) = z_{n} \]
Wenn \( \alpha = 0 \) gilt, hat die Messung keinen Einfluss:
\[ \hat{x}_{n,n} = \hat{x}_{n,n-1}+ 0 \left( z_{n}- \hat{x}_{n,n-1} \right) = \hat{x}_{n,n-1} \]
Damit haben wir ein Gleichungssystem hergeleitet, das die Zustandsaktualisierungsgleichung für den Radar-Tracker bildet. Sie werden auch \( \alpha - \beta \) Track-Update-Gleichungen bzw. \( \alpha - \beta \) Track-Filtergleichungen genannt.
Zustandsaktualisierungsgleichung für die Geschwindigkeit:
Schätzalgorithmus
Die folgende Grafik zeigt den Schätzalgorithmus, der in diesem Beispiel verwendet wird.
Anders als im vorherigen Beispiel sind die Gain-Werte (gain values) \( \alpha \) und \( \beta \) hier vorgegeben. Beim Kalman-Filter werden \( \alpha \) und \( \beta \) durch den Kalman-Gain (Kalman Gain) ersetzt, der in jeder Iteration berechnet wird – das lernen wir später.
Jetzt sind wir bereit für ein numerisches Beispiel.
Das numerische Beispiel
Betrachten wir ein Flugzeug, das sich in einer eindimensionalen Welt radial auf ein Radar zu bewegt (oder sich davon entfernt).
Die Parameter des \( \alpha - \beta \)-Filters sind:
- \( \alpha =0.2 \).
- \( \beta =0.1 \).
Das Track-to-Track-Intervall beträgt 5 Sekunden.
Iteration Null
Initialisierung
Die Anfangsbedingungen zum Zeitpunkt \( n=0 \) sind gegeben:
\[ \hat{x}_{0,0}=30000m \] \[ \hat{\dot{x}}_{0,0}=40m/s \]
Vorhersage
Die Startschätzung wird mit den Gleichungen zur Zustandsextrapolation auf den ersten Zyklus extrapoliert:
\[ \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \rightarrow \hat{x}_{1,0}= \hat{x}_{0,0}+ \Delta t\hat{\dot{x}}_{0,0} =30000+5 \times 40=30200m \] \[ \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \rightarrow \hat{\dot{x}}_{1,0}= \hat{\dot{x}}_{0,0} =40m/s \]
Erste Iteration
Im ersten Zyklus (\( n=1 \)) ist die Startschätzung die a-priori-Schätzung (prior estimate):
\[ \hat{x}_{n,n-1} = \hat{x}_{1,0}=30200m \] \[ \hat{\dot{x}}_{n,n-1} = \hat{\dot{x}}_{1,0}=40m/s \]
Schritt 1
Das Radar misst die Entfernung zum Flugzeug:
\[ z_{1}= 30171m \]
Schritt 2
Berechnung der aktuellen Schätzung (current estimate) mit der Zustandsaktualisierungsgleichung:
\[ \hat{x}_{1,1} = \hat{x}_{1,0}+ \alpha \left( z_{1}- \hat{x}_{1,0} \right) =30200+0.2 \left( 30171-30200 \right) = 30194.2m \] \[ \hat{\dot{x}}_{1,1}= \hat{\dot{x}}_{1,0}+ \beta \left( \frac{z_{1}-\hat{x}_{1,0}}{ \Delta t} \right) = 40+0.1 \left( \frac{30171-30200}{5} \right) = 39.42m/s \]
Schritt 3
Berechnung der nächsten Zustandsschätzung mit den Gleichungen zur Zustandsextrapolation:
\[ \hat{x}_{2,1}= \hat{x}_{1,1}+ \Delta t\hat{\dot{x}}_{1,1} =30194.2+5 \times 39.42=30391.3m \] \[ \hat{\dot{x}}_{2,1}= \hat{\dot{x}}_{1,1} =39.42m/s \]
Zweite Iteration
Nach einer Zeiteinheit wird die Vorhersage aus der vorherigen Iteration zur a-priori-Schätzung (prior estimate) der aktuellen Iteration:
\[ \hat{x}_{2,1}=30391.3m \] \[ \hat{\dot{x}}_{2,1}= 39.42m/s \]
Schritt 1
Das Radar misst die Entfernung zum Flugzeug:
\[ z_{2}= 30353m \]
Schritt 2
Berechnung der aktuellen Schätzung (current estimate) mit der Zustandsaktualisierungsgleichung:
\[ \hat{x}_{2,2} = \hat{x}_{2,1}+ \alpha \left( z_{2}- \hat{x}_{2,1} \right) =30391.3+0.2 \left( 30353-30391.3 \right) = 30383.64m \] \[ \hat{\dot{x}}_{2,2}= \hat{\dot{x}}_{2,1}+ \beta \left( \frac{z_{2}-\hat{x}_{2,1}}{ \Delta t} \right) = 39.42 + 0.1 \left( \frac{30353-30391.3}{5} \right) = 38.65m/s \]
Schritt 3
Berechnung der nächsten Zustandsschätzung mit den Gleichungen zur Zustandsextrapolation:
\[ \hat{x}_{3,2}= \hat{x}_{2,2}+ \Delta t\hat{\dot{x}}_{2,2} =30383.64+5 \times 38.65=30576.9m \] \[ \hat{\dot{x}}_{3,2}= \hat{\dot{x}}_{2,2} =38.65m/s \]
Dritte Iteration
\[ z_{3}= 30756m \] \[ \hat{x}_{3,3}= 30576.9+0.2 \left( 30756 -30576.9 \right) = 30612.73m \] \[ \hat{\dot{x}}_{3,3}= 38.65+0.1 \left( \frac{30756 - 30576.9}{5} \right) = 42.2m/s \] \[ \hat{x}_{4,3}= 30612.73+5 \times 42.2=30823.9m \] \[ \hat{\dot{x}}_{4,3}= 42.2m/s \]
Vierte Iteration
\[ z_{4}= 30799m \] \[ \hat{x}_{4,4}= 30823.9+0.2 \left( 30799-30823.9 \right) = 30818.93m \] \[ \hat{\dot{x}}_{4,4}= 42.2+0.1 \left( \frac{30799-30823.9}{5} \right) = 41.7m/s \] \[ \hat{x}_{5,4}= 30818.93+5 \times 41.7=31027.6m \] \[ \hat{\dot{x}}_{5,4}= 41.7m/s \]
Fünfte Iteration
\[ z_{5}= 31018m \] \[ \hat{x}_{5,5}= 31027.6+0.2 \left( 31018 -31027.6 \right) = 31025.7m \] \[ \hat{\dot{x}}_{5,5}= 41.7+0.1 \left( \frac{31018 -31027.6}{5} \right) = 41.55m/s \] \[ \hat{x}_{6,5}= 31025.7+5 \times 41.55 = 31233.4m \] \[ \hat{\dot{x}}_{6,5}= 41.55m/s \]
Sechste Iteration
\[ z_{6}= 31278m \] \[ \hat{x}_{6,6}= 31233.4+0.2 \left( 31278 -31233.4 \right) = 31242.3m \] \[ \hat{\dot{x}}_{6,6}= 41.55+0.1 \left( \frac{31278 -31233.4}{5} \right) = 42.44m/s \] \[ \hat{x}_{7,6}= 31242.3+5 \times 42.44 = 31454.5m \] \[ \hat{\dot{x}}_{7,6}= 42.44m/s \]
Siebte Iteration
\[ z_{7}= 31276m \] \[ \hat{x}_{7,7}= 31454.5+0.2 \left( 31276 -31454.5 \right) = 31418.8m \] \[ \hat{\dot{x}}_{7,7}= 42.44+0.1 \left( \frac{31276 -31454.5}{5} \right) = 38.9m/s \] \[ \hat{x}_{8,7}= 31418.8+5 \times 38.9 = 31613.15m \] \[ \hat{\dot{x}}_{8,7}= 38.9m/s \]
Achte Iteration
\[ z_{8}= 31379m \] \[ \hat{x}_{8,8}= 31613.15+0.2 \left( 31379 -31613.15 \right) = 31566.3m \] \[ \hat{\dot{x}}_{8,8}= 38.9+0.1 \left( \frac{31379 -31613.15}{5} \right) = 34.2m/s \] \[ \hat{x}_{9,8}= 31566.3 + 5 \times 34.2 = 31737.24m \] \[ \hat{\dot{x}}_{9,8}= 34.2m/s \]
Neunte Iteration
\[ z_{9}= 31748m \] \[ \hat{x}_{9,9}= 31737.24+0.2 \left( 31748 -31737.24 \right) = 31739.4m \] \[ \hat{\dot{x}}_{9,9}= 34.2+0.1 \left( \frac{31748 -31737.24}{5} \right) = 34.4m/s \] \[ \hat{x}_{10,9}= 31739.4+5 \times 34.4=31911.4m \] \[ \hat{\dot{x}}_{10,9}=34.4m/s \]
Zehnte Iteration
\[ z_{10}= 32175m \] \[ \hat{x}_{10,10}= 31911.4+0.2 \left( 32175 -31911.4 \right) = 31964.1m \] \[ \hat{\dot{x}}_{10,10}= 34.4+0.1 \left( \frac{32175 -31911.4}{5} \right) = 39.67m/s \] \[ \hat{x}_{11,10}= 31964.1+5 \times 39.67 = 32162.45m \] \[ \hat{\dot{x}}_{11,10}= 39.67m/s \]
Die folgende Tabelle fasst unsere Messungen und Schätzungen zusammen.
| \( n \) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| \( z_{n} \) | 30171 | 30353 | 30756 | 30799 | 31018 | 31278 | 31276 | 31379 | 31748 | 32175 |
| \( \hat{x}_{n,n} \) | 30194.2 | 30383.64 | 30612.73 | 30818.93 | 31025.7 | 31242.3 | 31418.8 | 31566.3 | 31739.4 | 31964.1 |
| \( \dot{\hat{x}}_{n,n} \) | 39.42 | 38.65 | 42.2 | 41.7 | 41.55 | 42.44 | 38.9 | 34.2 | 34.4 | 39.67 |
| \( \hat{x}_{n+1,n} \) | 30391.3 | 30576.9 | 30823.9 | 31027.6 | 31233.4 | 31454.5 | 31613.15 | 31737.24 | 31911.4 | 32162.45 |
| \( \dot{\hat{x}}_{n+1,n} \) | 39.42 | 38.65 | 42.2 | 41.7 | 41.55 | 42.44 | 38.9 | 34.2 | 34.4 | 39.67 |
Analyse der Ergebnisse
Die folgende Grafik vergleicht die wahren Werte, die Messwerte und die Schätzungen.
Unser Schätzalgorithmus glättet die Messungen und konvergiert gegen den wahren Wert.
Verwendung von großem \( \alpha \) und \( \beta \)
Die folgende Grafik zeigt die wahren, gemessenen und geschätzten Werte für \( \alpha = 0{,}8 \) und \( \beta = 0{,}5 \).
Der „Glättungsgrad“ dieses Filters ist deutlich geringer. Die „aktuelle Schätzung“ (current estimate) liegt sehr nah an den Messwerten, und die Vorhersagefehler sind relativ groß.
Sollten wir also immer kleine Werte für \( \alpha \) und \( \beta \) wählen?
Die Antwort lautet: Nein. Die Werte von \( \alpha \) und \( \beta \) sollten von der Messpräzision abhängen. Verwenden wir hochpräzise Sensorik (z. B. Laser-Radar), bevorzugen wir größere \( \alpha \) und \( \beta \), sodass der Filter den Messungen stärker folgt. Dann reagiert der Filter schnell auf eine Geschwindigkeitsänderung des Ziels. Ist die Messpräzision dagegen gering, bevorzugen wir kleinere \( \alpha \) und \( \beta \). Dann glättet der Filter die Unsicherheit (Fehler) in den Messungen – reagiert aber deutlich langsamer auf Geschwindigkeitsänderungen.
Zusammenfassung des Beispiels
Wir haben die Zustandsaktualisierungsgleichungen des \( \alpha - \beta \)-Filters hergeleitet und außerdem die Gleichung zur Zustandsextrapolation kennengelernt. Auf dieser Grundlage haben wir einen Schätzalgorithmus für ein eindimensionales dynamisches System entwickelt und ein numerisches Beispiel für ein Ziel mit konstanter Geschwindigkeit gelöst.
Beispiel 3 – Verfolgung eines beschleunigenden Flugzeugs in einer Dimension
In diesem Beispiel verfolgen wir ein Flugzeug mit konstanter Beschleunigung mit dem \( \alpha - \beta \)-Filter.
Im vorherigen Beispiel haben wir ein UAV verfolgt, das sich mit konstanter Geschwindigkeit von 40 m/s bewegt. Die folgende Grafik zeigt Zielentfernung und -geschwindigkeit über der Zeit.
Wie man sieht, ist die Entfernungsfunktion linear.
Betrachten wir nun ein Kampfflugzeug. Dieses Flugzeug fliegt 20 Sekunden lang mit konstanter Geschwindigkeit von 50 m/s. Danach beschleunigt es weitere 35 Sekunden lang mit konstanter Beschleunigung von 8 m/s2.
Die folgende Grafik zeigt Zielentfernung, Geschwindigkeit und Beschleunigung über der Zeit.
Wie man der Grafik entnehmen kann, ist die Flugzeuggeschwindigkeit in den ersten 20 Sekunden konstant und wächst danach linear. Die Entfernung wächst in den ersten 20 Sekunden linear und danach quadratisch.
Wir werden dieses Flugzeug mit dem \( \alpha - \beta \)-Filter verfolgen, den wir im vorherigen Beispiel verwendet haben.
Das numerische Beispiel
Betrachten wir ein Flugzeug, das sich in einer eindimensionalen Welt radial auf ein Radar zu bewegt (oder sich davon entfernt).
Die Parameter des \( \alpha - \beta \)-Filters sind:
- \( \alpha =0.2 \)
- \( \beta =0.1 \)
Das Track-to-Track-Intervall beträgt 5 Sekunden.
Iteration Null
Initialisierung
Die Anfangsbedingungen zum Zeitpunkt \( n=0 \) sind gegeben:
\[ \hat{x}_{0,0}=30000m \] \[ \hat{\dot{x}}_{0,0}=50m/s \]
Vorhersage
Die Startschätzung wird mit den Gleichungen zur Zustandsextrapolation auf den ersten Zyklus extrapoliert:
\[ \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \rightarrow \hat{x}_{1,0}= \hat{x}_{0,0}+ \Delta t\hat{\dot{x}}_{0,0} =30000+5 \times 50=30250m \] \[ \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \rightarrow \hat{\dot{x}}_{1,0}= \hat{\dot{x}}_{0,0} =50m/s \]
Iterationen 1–10
Alle Filteriterationen sind in der folgenden Tabelle zusammengefasst:
| \( n \) | \( z_{n} \) | Aktuelle Zustandsschätzungen (\( \hat{x}_{n,n} \), \( \hat{\dot{x}}_{n,n} \)) | Vorhersage (\( \hat{x}_{n+1,n} \), \( \hat{\dot{x}}_{n+1,n} \)) |
|---|---|---|---|
| 1 | \( 30221m \) | \[ \hat{x}_{1,1} = 30250+0.2 \left( 30221- 30250 \right) = 30244.2m \] \[ \hat{\dot{x}}_{1,1}= 50+0.1 \left( \frac{30221 -30250}{5} \right) = 49.42m/s \] | \[ \hat{x}_{2,1} = 30244.2 + 5 \times 49.42 = 30491.3m \] \[ \hat{\dot{x}}_{2,1}= 49.42m/s \] |
| 2 | \( 30453m \) | \[ \hat{x}_{2,2} = 30491.3 + 0.2 \left( 30453 - 30491.3 \right) = 30483.64m \] \[ \hat{\dot{x}}_{2,2} = 49.42 + 0.1 \left( \frac{30453 - 30491.3}{5} \right) = 48.65m/s \] | \[ \hat{x}_{3,2} = 30483.64 + 5 \times 48.65 = 30726.9m \] \[ \hat{\dot{x}}_{3,2} = 48.65m/s \] |
| 3 | \( 30906m \) | \[ \hat{x}_{3,3} = 30726.9 + 0.2 \left( 30906 - 30726.9 \right) = 30762.7m \] \[ \hat{\dot{x}}_{3,3}= 48.65 + 0.1 \left( \frac{30906 - 30726.9}{5} \right) = 52.24m/s \] | \[ \hat{x}_{4,3} = 30762.7 + 5 \times 52.24 = 31023.9m \] \[ \hat{\dot{x}}_{4,3} = 52.24m/s \] |
| 4 | \( 30999m \) | \[ \hat{x}_{4,4} = 31023.9 + 0.2 \left( 30999 - 31023.9 \right) = 31018.93m \] \[ \hat{\dot{x}}_{4,4}= 52.24 + 0.1 \left( \frac{30999 - 31023.9}{5} \right) = 51.74m/s \] | \[ \hat{x}_{5,4} = 31018.93 + 5 \times 51.74 = 31277.6m \] \[ \hat{\dot{x}}_{5,4} = 51.74m/s \] |
| 5 | \( 31368m \) | \[ \hat{x}_{5,5} = 31277.6 + 0.2 \left( 31368 - 31277.6 \right) = 31295.7m \] \[ \hat{\dot{x}}_{5,5}= 51.74 + 0.1 \left( \frac{31368 - 31277.6}{5} \right) = 53.55m/s \] | \[ \hat{x}_{6,5} = 31295.7 + 5 \times 53.55 = 31563.4m \] \[ \hat{\dot{x}}_{6,5} = 53.55m/s \] |
| 6 | \( 31978m \) | \[ \hat{x}_{6,6} = 31563.4 + 0.2 \left( 31978 - 31563.4 \right) = 31646.3m \] \[ \hat{\dot{x}}_{6,6}= 53.55 + 0.1 \left( \frac{31978 - 31563.4}{5} \right) = 61.84m/s \] | \[ \hat{x}_{7,6} = 31646.3 + 5 \times 61.84 = 31955.5m \] \[ \hat{\dot{x}}_{7,6}= 61.84m/s \] |
| 7 | \( 32526m \) | \[ \hat{x}_{7,7} = 31955.5 + 0.2 \left( 32526 - 31955.5 \right) = 32069.6m \] \[ \hat{\dot{x}}_{7,7}= 61.84 + 0.1 \left( \frac{32526 - 31955.5}{5} \right) = 73.25m/s \] | \[ \hat{x}_{8,7} = 32069.6 + 5 \times 73.25 = 32435.85m \] \[ \hat{\dot{x}}_{8,7} = 73.25m/s \] |
| 8 | \( 33379m \) | \[ \hat{x}_{8,8} = 32435.85 + 0.2 \left( 33379 - 32435.85 \right) = 32624.5m \] \[ \hat{\dot{x}}_{8,8}= 73.25 + 0.1 \left( \frac{33379 - 32435.85}{5} \right) = 92.1m/s \] | \[ \hat{x}_{9,8} = 32624.5 + 5 \times 92.1 = 33085m \] \[ \hat{\dot{x}}_{9,8} = 92.1m/s \] |
| 9 | \( 34698m \) | \[ \hat{x}_{9,9} = 33085 + 0.2 \left( 34698 - 33085 \right) = 33407.6m \] \[ \hat{\dot{x}}_{9,9}= 92.1 + 0.1 \left( \frac{34698 - 33085}{5} \right) = 124.37m/s \] | \[ \hat{x}_{10,9} = 33407.6 + 5 \times 124.37 = 34029.5m \] \[ \hat{\dot{x}}_{10,9} = 124.37m/s \] |
| 10 | \( 36275m \) | \[ \hat{x}_{10,10} = 34029.5 + 0.2 \left( 36275 - 34029.5 \right) = 34478.6m \] \[ \hat{\dot{x}}_{10,10} = 124.37 + 0.1 \left( \frac{36275 - 34029.5}{5} \right) = 169.28m/s \] | \[ \hat{x}_{11,10} = 34478.6 + 5 \times 169.28 = 35325m \] \[ \hat{\dot{x}}_{11,10} = 169.28m/s \] |
Analyse der Ergebnisse
Die folgenden Grafiken vergleichen die wahren, gemessenen und geschätzten Werte für Entfernung und Geschwindigkeit in den ersten 75 Sekunden.
Man erkennt eine konstante Lücke zwischen den wahren bzw. gemessenen Werten und den Schätzungen. Diese Lücke nennt man Verzögerungsfehler (lag error). Weitere gebräuchliche Bezeichnungen sind:
- Dynamischer Fehler (dynamic error)
- Systematischer Fehler (systematic error)
- Bias-Fehler (bias error)
- Trunkierungsfehler (truncation error)
Der Verzögerungsfehler tritt während der Beschleunigungsphase auf. Ein großer Verzögerungsfehler kann dazu führen, dass das Ziel verloren geht. In bestimmten Anwendungen – etwa in der Raketenführung oder in der Luftverteidigung – ist ein solcher Fehler nicht akzeptabel.
Zusammenfassung des Beispiels
Wir haben den durch Zielbeschleunigung verursachten Verzögerungsfehler untersucht.
Beispiel 4 – Verfolgung eines beschleunigenden Flugzeugs mit dem \( \alpha -\beta -\gamma \)-Filter
In diesem Beispiel beheben wir den Verzögerungsfehler (lag error) mithilfe des \( \alpha -\beta -\gamma \)-Filters. Das Flugzeug bewegt sich mit konstanter Beschleunigung.
Der \( \alpha -\beta -\gamma \)-Filter
Der \( \alpha -\beta -\gamma \)-Filter (\( \alpha -\beta -\gamma \) filter; manchmal auch g-h-k-Filter (g-h-k filter) genannt) berücksichtigt eine Zielbeschleunigung. Dadurch werden die Gleichungen zur Zustandsextrapolation (State Extrapolation Equations) zu:
Analyse der Ergebnisse
Die folgenden Grafiken vergleichen die wahren, gemessenen und geschätzten Werte für Entfernung, Geschwindigkeit und Beschleunigung in den ersten 50 Sekunden.
Zusammenfassung des Beispiels
Wie man sieht, kann der \( \alpha -\beta -\gamma \)-Filter mit dynamischen Modellgleichungen, die die Beschleunigung berücksichtigen, ein Ziel mit konstanter Beschleunigung verfolgen und den Verzögerungsfehler eliminieren.
Aber was passiert im Fall eines manövrierenden Ziels? Das Ziel kann die Flugrichtung plötzlich durch ein Manöver ändern. Das dynamische Modell des Ziels kann außerdem einen Ruck (jerk; Änderung der Beschleunigung) enthalten. In solchen Fällen erzeugt der \( \alpha -\beta -\gamma \)-Filter mit konstanten \( \alpha -\beta -\gamma \)-Koeffizienten Schätzfehler und verliert in manchen Fällen die Zielverfolgung.
Der Kalman-Filter kann Unsicherheit im dynamischen Modell behandeln. Das ist unser nächstes Thema – direkt nach der Zusammenfassung.
Zusammenfassung des \( \alpha -\beta -(\gamma) \)-Filters
Es gibt viele Arten von \( \alpha -\beta -(\gamma) \)-Filtern, und sie beruhen auf demselben Prinzip:
- Die aktuelle Zustandsschätzung basiert auf den Zustandsaktualisierungsgleichungen.
- Die folgende Zustandsschätzung (Vorhersage) basiert auf den Gleichungen des dynamischen Modells.
Der Hauptunterschied zwischen diesen Filtern ist die Auswahl der Gewichtungskoeffizienten \( \alpha -\beta -(\gamma) \). Einige Filtertypen verwenden konstante Gewichtungskoeffizienten, andere berechnen die Gewichtungskoeffizienten für jede Filteriteration (Zyklus).
Die Wahl von \( \alpha \), \( \beta \) und \( \gamma \) ist entscheidend für die korrekte Funktion des Schätzalgorithmus.
Welche Werte sollten die \( \alpha -\beta -(\gamma) \)-Parameter haben?
Ich habe den \( \alpha -\beta -(\gamma) \)-Filter als Einführung in den Kalman-Filter beschrieben; deshalb gehe ich hier nicht weiter darauf ein. Interessierte Leser finden viele Bücher und Artikel zu diesem Thema. Als Referenz empfehle ich:
Dirk Tenne, Tarunraj Singh. “Optimal Design of \( \alpha -\beta -(\gamma) \) Filters”. State University of New York at Buffalo.
Ein weiteres wichtiges Thema ist die Initialisierung des Filters, also die Bereitstellung des Anfangswerts für die erste Filteriteration.
Die folgende Liste enthält die bekanntesten \( \alpha -\beta -(\gamma) \)-Filter:
- Wiener-Filter
- Bayes-Filter
- Polynomfilter mit abklingendem Gedächtnis (Fading-memory polynomial Filter)
- Polynomfilter mit wachsendem Gedächtnis (Expanding-memory / growing-memory polynomial Filter)
- Kleinste-Quadrate-Filter (Least-squares Filter)
- Benedict–Bordner-Filter
- Lumped-Filter
- Diskontierter Kleinste-Quadrate-\( \alpha -\beta \)-Filter (Discounted least-squares \( \alpha -\beta \) Filter)
- Kritisch gedämpfter \( \alpha -\beta \)-Filter (Critically damped \( \alpha -\beta \) Filter)
- Growing-memory-Filter
- Kalman-Filter
- Erweiterter Kalman-Filter (Extended Kalman Filter)
- Unscented-Kalman-Filter (Unscented Kalman Filter)
- Erweiterter komplexer Kalman-Filter (Extended Complex Kalman Filter)
- Gauss-Hermite-Kalman-Filter (Gauss-Hermite Kalman Filter)
- Cubature-Kalman-Filter (Cubature Kalman Filter)
- Partikelfilter (Particle Filter)
Ich hoffe, irgendwann ein Tutorial zu einigen dieser Filter zu schreiben. Dieses Tutorial handelt jedoch vom Kalman-Filter, der das Thema der folgenden Beispiele ist.