4 Punkte von GN⁺ 2024-02-13 | 1 Kommentare | Auf WhatsApp teilen
  • Der Kalman-Filter ist ein Algorithmus, der aus verrauschten oder ungenauen Messwerten in Echtzeit genauere Zustandsschätzungen erzeugt und für sensorbasierte Vorhersage und Regelung verwendet wird.
  • Er glättet nicht einfach nur Messwerte, sondern kann auch Zustandsvariablen wie Position und Geschwindigkeit schätzen, die sich nicht direkt beobachten lassen.
  • Das Radar-Tracking-Beispiel zeigt einen Ablauf, bei dem 2D-Positionsmesswerte und Kovarianzen als Eingabe dienen, um Position und Geschwindigkeit eines Objekts als 4×1-Zustandsvektor zu schätzen.
  • Nach der Initialisierung des Zustands mit den ersten beiden Messwerten werden anschließend wiederholt Vorhersage, Berechnung des Kalman Gain, sowie Aktualisierung von Zustand und Fehlerkovarianz ausgeführt.
  • Da der Filter nur eine einzige Historie beibehält, nämlich die aktuelle Zustandsschätzung, lässt er sich auch auf Geräten mit Speicherbeschränkungen leicht implementieren.

Das große Bild des Kalman-Filters

  • Der Kalman-Filter lässt sich wie eine Blackbox mit Ein- und Ausgabe betrachten.
    • Die Eingabe sind verrauschte oder mitunter ungenaue Messwerte.
    • Die Ausgabe sind Schätzwerte mit reduziertem Rauschen und höherer Genauigkeit.
  • Die Schätzwerte können Systemzustandsparameter sein, die tatsächlich nicht gemessen oder beobachtet wurden.
  • Er wird verwendet, um beobachtbare und nicht beobachtbare Parameter in Echtzeit mit hoher Genauigkeit zu schätzen.
  • Hochgenaue Schätzwerte werden für präzise Vorhersagen und Entscheidungen genutzt.
  • Deshalb wird er häufig in der Robotik und in Echtzeitsystemen eingesetzt, wo verlässliche Informationen nötig sind.

Welches Problem der Kalman-Filter löst

  • Auf Basis ungenauer oder verrauschter Messwerte schätzt er den Zustand einer Variablen oder andere Größen, die sich nur schwer direkt beobachten lassen, mit höherer Genauigkeit.
  • Typische Anwendungen sind:
    • Objektverfolgung: Aus gemessenen Positionen werden Position und Geschwindigkeit eines Objekts genauer geschätzt.
    • Gewichtsschätzung mit einer digitalen Waage: Aus dem auf eine Oberfläche ausgeübten Druck wird das Gewicht eines Objekts geschätzt.
    • Führung, Navigation und Regelung: Mit IMU-Sensoren werden Position, Geschwindigkeit und Beschleunigung geschätzt und zur Steuerung der nächsten Bewegung verwendet.
  • Die Stärke des Kalman-Filters liegt weniger in der Glättung von Messwerten als in seiner Fähigkeit, schwer messbare Systemparameter zu schätzen.
  • In Echtzeitsystemen führen genauere Schätzwerte zu besserer Regelung und besseren Funktionen.

Ein- und Ausgaben des Radar-Tracking-Beispiels

  • Das Beispiel behandelt ein Radar-Tracking-Szenario zur Verfolgung von Flugzeugen und Objekten rund um einen Flughafen.
  • Der ausgegebene Track-Zustand wird zur Anzeige für Fluglotsen verwendet, die den Luftraum überwachen.
  • Das Radar gibt x-, y-Positionsmesswerte in einem 2D-kartesischen Koordinatensystem aus.
    • Die Messwerte werden als 2×1-Spaltenvektor z dargestellt.
    • Die Varianz-Kovarianz-Matrix der Messwerte wird mit R bezeichnet.
    • Der Zeitstempel der Messung wird mit t bezeichnet.
    • Der Index m steht für Messparameter, k für die Reihenfolge der Messung.
  • Der Kalman-Filter schätzt aus den Radarmesswerten Position und Geschwindigkeit des Objekts.
    • Die Schätzung wird als 4×1-Spaltenvektor x dargestellt.
    • Die Varianz-Kovarianz-Matrix der Schätzung wird als 4×4-Matrix P dargestellt.
    • Der Zeitstempel der Zustandsschätzung wird mit T gekennzeichnet.

Schritt 1: Initialisierung des Systemzustands

  • Die Initialisierungsmethode des Kalman-Filters unterscheidet sich je nach Anwendung.
  • In diesem Radar-Tracking-Beispiel wird der Systemzustand mit dem ersten Messwert initialisiert.
  • Die Eingabemesswerte enthalten nur Positionsinformationen, der ausgegebene Systemzustand enthält jedoch Position und Geschwindigkeit des Objekts.
  • Wenn der erste Messwert eintrifft, ist nur die Position zu diesem Zeitpunkt bekannt.
    • Nach der ersten Schätzung wird der Systemzustand auf die Eingabeposition gesetzt.
    • Die Fehlerkovarianz des Systemzustands wird auf die Positionsgenauigkeit des ersten Messwerts gesetzt.

Schritt 2: Reinitialisierung des Systemzustands

  • Für die Schätzung der Geschwindigkeit wird ein zweiter Positionsmesswert benötigt, daher wird die Systemzustandsschätzung reinitialisiert.
  • Die Geschwindigkeit wird durch lineare Approximation berechnet.
    • Geschwindigkeit = zurückgelegte Strecke / dafür benötigte Zeit.
  • Die aktualisierte Systemzustandsschätzung besteht aus der Position des zweiten Messwerts und der berechneten Geschwindigkeit.
  • Die aktualisierte Fehlerkovarianz des Systemzustands enthält die Positionsgenauigkeit des zweiten Messwerts und eine angenäherte Genauigkeit der Geschwindigkeit.
  • Der Näherungswert für die Geschwindigkeitsgenauigkeit kann nach dem Durchlauf von Daten durch den Filter per Tuning angepasst werden.
    • Im Beispiel wird der Varianzterm der Geschwindigkeit auf 10⁴ gesetzt.
    • Dieser Wert steht für eine hohe Unsicherheit bezüglich des Geschwindigkeitszustands.
    • Die Geschwindigkeitseinheit im Beispiel ist m/s.

Iterative Verarbeitung nach der Initialisierung

  • Die ersten beiden Schritte dienen dazu, die Systemschätzung mit einigen Messwerten zu initialisieren und zu reinitialisieren.
  • Je nach Anwendung kann die Initialisierung unterschiedlich ausfallen.
  • Das Ziel ist, eine Systemzustandsschätzung zu erhalten, die sich anschließend mit den Kalman-Filter-Gleichungen aktualisieren lässt.
  • In den folgenden Schritten werden neue Messwerte in den Filter eingebracht und die Zustandsschätzung aktualisiert.

Schritt 3: Vorhersage der Systemzustandsschätzung

  • Wenn der dritte Messwert eintrifft, wird die Systemzustandsschätzung in die Zukunft fortgeschrieben, um sie zeitlich mit dem Messwert abzugleichen.
  • Dieser Abgleich ist nötig, um Messwert und Zustandsschätzung zu kombinieren.
  • Für die Vorhersage wird ein Systemmodell verwendet.
  • Im Beispiel wird die Positionsänderung des Objekts über das Zeitintervall mit einem linearen Bewegungsmodell konstanter Geschwindigkeit angenähert.
    • Das Modell konstanter Geschwindigkeit nimmt an, dass die Beschleunigung 0 ist.
  • Die Zustandsübergangsmatrix beschreibt diese Bewegungsgleichung.
    • Diese Matrix wird verwendet, um die Zustandsschätzung und die Fehlerkovarianzmatrix passend fortzuschreiben.
  • Wird die Zustandsschätzung auf einen zukünftigen Zeitpunkt fortgeschrieben, steigt die Unsicherheit über den Zustand zu diesem Zeitpunkt, daher wird die Fehlerkovarianz größer.

Q-Matrix und H-Matrix

  • Die Q-Matrix repräsentiert das Prozessrauschen des Systemmodells.
    • Das Systemmodell ist eine Näherung.
    • Die Genauigkeit des Modells verändert sich im Verlauf des Systemzustands.
    • Die Q-Matrix beschreibt diese Unsicherheit und wird zum bestehenden Zustandsrauschen addiert.
    • Im Beispiel tragen reale Beschleunigung und Verzögerung zu diesem Fehler bei.
  • Die H-Matrix ist die Zustands-Messmatrix und transformiert die Systemzustandsschätzung aus dem Zustandsraum in den Messraum.
    • In manchen Anwendungen ist sie eine Matrix aus 0 und 1.
    • In Anwendungen mit einem Extended Kalman Filter wird sie mit Differentialgleichungen gefüllt.
    • Die dazugehörige Erklärung führt zum Artikel Extended Kalman Filters.
  • Die H-Matrix in diesem Beispiel ist eine einfache Matrix, die Zustandsschätzung und Fehlerkovarianz so reduziert, dass nicht die vollständigen Positions- und Geschwindigkeitswerte, sondern nur die Positionswerte verglichen werden können.

Schritt 4: Berechnung des Kalman Gain

  • Der Kalman-Filter berechnet für jeden neuen Messwert den Kalman Gain.
  • Der Kalman Gain bestimmt, wie stark der Eingabemesswert die Systemzustandsschätzung beeinflusst.
  • Ist das Messrauschen sehr groß, vertraut der Kalman Gain der aktuellen Zustandsschätzung stärker als der neuen, aber ungenauen Information.
  • Die richtige Gewichtung von aktueller Schätzung und neuer Messinformation zur Erzeugung einer optimalen Schätzung ist der Kern des Kalman-Filter-Algorithmus.

Schritt 5: Aktualisierung von Zustand und Fehlerkovarianz

  • Der Kalman-Filter verwendet den Kalman Gain, um den Systemzustand und die Fehlerkovarianzmatrix zum Zeitpunkt des Eingabemesswerts zu schätzen.
  • Der Kalman Gain wird in beiden Berechnungen verwendet, um den Messwert passend zu gewichten.
    • Berechnung der neuen Systemzustandsschätzung
    • Berechnung der Fehlerkovarianz des Systemzustands
  • Die berechnete Zustandsschätzung ist die einzige Zustandshistorie, die der Kalman-Filter beibehält.
  • Aufgrund dieser Eigenschaft lässt sich der Kalman-Filter auch auf Geräten mit geringen Speicherrestriktionen implementieren.

Zusammenfassung

  • Der Kalman-Filter ist ein universeller Prozess zur optimalen Zustandsschätzung.
  • Er wird in einer Vielzahl von Anwendungen eingesetzt, die präzise Schätzungen benötigen.
  • Zerlegt in kleine Schritte wirkt die Funktionsweise des Kalman-Filters weniger abschreckend und leichter verständlich.

1 Kommentare

 
GN⁺ 2024-02-13
Hacker-News-Kommentare
  • In einer Diskussion über den Kalman-Filter darf der Link zu diesem hervorragenden Lernmaterial nicht fehlen. Es ist ein als Sammlung von Jupyter-Notebooks geschriebenes Buch: https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Pyt...
    Dieses Buch behandelt den Alpha-Beta-Filter gewissermaßen als kleinen Bruder des vollwertigen Kalman-Filters. Als ich mich wegen eines ähnlichen Bedarfs in einem aktuellen Projekt intensiv damit beschäftigt habe, wurde mir klar, dass Alpha-Beta-Filter und die Kalman-Familie stark auf Vorhersagen für die nahe Zukunft ausgerichtet sind, während ich eigentlich eine Glättung historischer Daten brauchte.
    Also begann ich, mich mit doppelter exponentieller Glättung zu beschäftigen. Sie schien perfekt zum Use Case zu passen, und je tiefer ich einstieg, desto mehr stellte sich heraus, dass es am Ende im Grunde ein Alpha-Beta-Filter mit anderen Variablennamen ist.
    Ich habe das Gefühl, dass dieser ganze mathematische Bereich auf einigen gemeinsamen Grundtheorien aufbaut, deren Gemeinsamkeiten aber verdeckt werden, weil verschiedene Disziplinen über unterschiedliche Ansätze zum selben System gelangen und dabei andere Namen und Notationen verwenden. Im Zentrum von Dingen wie Potenzreihen, der Eulerschen Zahl, Gradientenabstieg, Filtern, Rückkopplungssystemen und allgemeiner Systemtheorie scheint es einen relativ kleinen Kern an Intuition zu geben; wenn man den erfasst, würde sich sehr viel Mathematik elegant verbinden.

    • Sich darüber aufzuregen, dass Mathematiker einbuchstabige Variablennamen verwenden, geht oft am Kern vorbei. Kurze Namen helfen dabei, sich auf die Struktur von Gleichungen und Beziehungen zu konzentrieren, und machen es leichter, Muster zu erkennen wie: „Moment, das hat nur einen anderen Namen, ist strukturell aber dasselbe wie X, das ich schon kenne.“
      Es geht nicht darum, Papier zu sparen oder es leichter zu schreiben. Mit einer englischen Tastatur griechische Buchstaben mit Hoch- und Tiefstellung in LaTeX zu schreiben, ist nicht einfacher als Wörter auszuschreiben. Es geht darum, den Lesern bestimmte Informationen zu vermitteln, die sich anders nur schwer ausdrücken lassen.
      Mathematische Notation sieht zwar aus wie Schrift, ist aber im Kern eine ziemlich bildhafte Notation; lange Wörter verdecken dieses Bild.
    • Was du suchst, liegt eher im Bereich der Theorie linearer oder nichtlinearer dynamischer Systeme. Leider gibt es dort keinen einzelnen intuitiven Kern, der durch eine konsistente Notation gestützt wird, sondern mehrere Perspektiven, die untereinander nicht konsistent sind.
      Wenn man gute Vorlesungen zu Regelungstechnik und Signalen/Systemen besucht, bekommt man diese Intuition verinnerlicht und lernt die Mathematik und Begriffe, ohne sich an bestimmte Notationskonventionen zu klammern. Die eigentliche Intuition lautet: „Alles ist ein Filter“, und der Rest besteht darin, diese Idee zu analysieren und zu synthetisieren.
    • Ein Blick in Probabilistic Robotics von Dieter Fox, Sebastian Thrun und Wolfram Burgard dürfte sich lohnen. Das Buch ordnet viele Kalman-bezogene Themen mit konsistenter Notation in einem bayesschen Rahmen ein.
      Mit dem Wachstum von AI/ML werden Ideen aus der klassischen Regelungstechnik inzwischen auch mit Reinforcement Learning zusammengeführt.
    • Wenn Q und R konstant sind, konvergiert der Gain wie üblich schnell, und der Kalman-Filter wird zu einem exponentiellen Filter mit vorgeschaltetem Vorhersageschritt. Für viele ist das deutlich leichter zu verstehen und passt auch gut dazu, wie er in der Praxis verwendet wird.
      Denn üblicherweise werden Q und R von Hand angepasst, „bis es gut aussieht“, und danach nicht mehr geändert. Außerdem muss man dann statt mehrerer Werte Q und R nur noch einen einzigen Gain von Hand einstellen.
    • Ich hatte früher einen sehr ähnlichen Gedanken. Der Trick ist, dass viele Filter am Ende auf Alpha/Beta hinauslaufen, und man den Kalman-Filter als Methode betrachten kann, diese Konstanten zu erzeugen, wenn man ein lineares Modell und die Varianz des Messrauschens gut kennt.
      Wenn das Rauschen der Messwerte immer gleich ist, konvergiert es mit der Zeit zu Konstanten; besonders nützlich wird es erst, wenn man die Messgenauigkeit gut bestimmen kann, sie sich aber stark ändert.
  • Ich musste kürzlich eine Kalman-Filter-Implementierung übernehmen, und es war wirklich schwierig, gute Materialien zu finden, die es in einer Sprache erklären, die ich als Entwickler verstehen kann. Nach etwa einem Monat Lernen habe ich zwei Artikel geschrieben; vielleicht helfen sie jemandem: https://www.splinter.com.au/2023/12/14/the-kalman-filter-for..., https://www.splinter.com.au/2023/12/15/the-kalman-filter-wit...
    Aus Entwicklersicht war es ironischerweise so, dass ich die Mathematik erst verstanden habe, nachdem ich es selbst implementiert hatte. Es scheint eine Art des Lernens zu sein, bei der man auf bereits Bekanntem aufbaut; ich frage mich, ob es dafür einen Begriff gibt.

  • Ich habe immer gedacht, dass Mathematik viel leichter zu lernen wäre, wenn sie sprechende Variablennamen verwenden würde. Zumindest in interaktiven Medien wie dem Web könnte man wenigstens Tooltips einbauen. Beim Mathematiklernen verbringt man 90 % der Zeit damit, Symbole nachzuschlagen.
    Auch hier ist verwirrend, welche Reihenfolge gemeint ist, wenn es heißt, der Index „zeigt die Reihenfolge der Messungen an“. Vermutlich ist einfach der Index gemeint. Es ist allerdings schon eine Weile her, dass ich mit Kalman-Filtern zu tun hatte.

    • Was oft vergessen wird: mathematische Notation ist dafür entworfen, algebraische Umformungen leichter nachvollziehbar zu machen. Sie ist nicht dafür gedacht, dass ihre Bedeutung allein aus der Notation selbst ersichtlich ist; eher Physiker erwarten, dass eine Formel wie E=mc^2 schon für sich genommen Bedeutung hat.
      Je reiner die Mathematik wird, desto kürzer ist meist der Gültigkeitsbereich der Variablen. Normalerweise wird eine Variable direkt vor ihrer Verwendung definiert, und ihr Scope reicht nicht über den jeweiligen Beweis oder die Herleitung hinaus.
      Einige Entscheidungen in diesem Text sind allerdings einfach seltsam. Zum Beispiel wird P zugleich als Variable und als Index verwendet, und P steht für die Kovarianzmatrix, obwohl die Präzisionsmatrix die exakte Inverse der Kovarianzmatrix ist.
    • Beim Lesen von Papers hasse ich so etwas am meisten. Die Autoren versuchen, abstrakt und akademisch zu klingen, und werden am Ende nur frustrierend vage. Damit ein Satz Sinn ergibt, braucht er Subjekt und Objekt.
      Genau diese Mehrdeutigkeit ist der nervigste Teil von Forschungsarbeiten. Man muss unbedingt präzise sein. Statt relativer Formulierungen sollte man absolute Beschreibungen verwenden. Man sollte nicht schreiben: „siehe rechts“. Ich könnte ja nach links schauen.
      Wenn man schreibt: „Nachdem das Prisma gedreht wurde, ist der Lichtkegel ...“, fehlt die Angabe, in welche Richtung gedreht wurde: nach links oder rechts, horizontal oder nach oben/unten, schnell oder langsam. Im Kopf der schreibenden Person sind all diese Kernelemente vorhanden, aber Leser können keine Gedanken lesen.
    • Stimme vollkommen zu. Ähnlich habe ich empfunden, dass das beste Mathematikbuch, das noch niemand geschrieben hat, wohl eines wäre, das Notation und Bedeutung von Variablen gut aufbereitet und Sätze aus verschiedenen Gebieten klar kuratiert.
    • Die hier gemeinte Reihenfolge ist der zeitliche Index, dem die Werte zugeordnet sind. Zum Beispiel ist x_3 der Zustand im dritten Zeitschritt.
      Der Index „p“ steht vermutlich für prediction, also Vorhersage. x_p zur Zeit 3 ist der Zustand, den man für Zeit 4 erwartet. Wenn Zeit 4 dann tatsächlich erreicht ist, berechnet man x_4 unter Einbeziehung des neuen Messwerts.
      Klar gesagt: Dieses x_4 unterscheidet sich von dem x_p, das zur Zeit 3 berechnet wurde, weil Vorhersagen immer ein wenig danebenliegen.
    • Ich würde sagen, die Variablennamen wurden bereits so gewählt, dass sie erklärend sind. Niemand wählt sie absichtlich undurchsichtiger oder schwerer nachzuverfolgen.
      Das Problem ist, dass jemand, der gerade erst anfängt, die Konzepte oder die Standardnotation des jeweiligen Problembereichs noch nicht gelernt hat; deshalb bleibt der Schmerz, in ein neues Thema hineinzukommen.
  • Kalman-Filter könnten einer dieser ungewöhnlichen Fälle sein, in denen die vereinfachte Version der Mathematik so stark vereinfacht ist, dass die ursprüngliche Form kaum noch zu erkennen ist.
    Was tatsächlich passiert: Man erhält einen Messwert, simuliert mögliche zukünftige Zustände, kombiniert diese Information dann mit dem nächsten Messwert und wiederholt das Ganze.
    Zum Beispiel macht man mehrere Fotos eines Tennisballs, schätzt aus dem ersten Foto Position und Geschwindigkeit, simuliert, wohin er fliegen wird, und vergleicht das mit dem nächsten Foto, um zu sehen, welche Schätzung der Wahrheit näherkommt. Als ältere Methode kann man sich auch vorstellen, die Sonnenhöhe zu messen, daraus auf einer Karte eine Linie möglicher Positionen zu erzeugen und sie mit dem Ort zu vergleichen, an dem man sich ursprünglich vermutet hat.
    Natürlich sind exakte Berechnungen praktisch fast unmöglich. Deshalb vereinfacht man durch Sampling. Weil selbst das schwierig ist, nimmt man an, dass die Verteilung einigermaßen nahe an einer Gauß-Verteilung liegt. Vereinfacht man dann noch weiter und nimmt an, dass die Änderungen des Systems lineare Transformationen sind, erhält man den hier behandelten Kalman-Filter.
    Ich fände es erstaunlich, wenn man allein anhand der linearen Algebra verstehen könnte, was tatsächlich vor sich geht.

    • Erklärungen zu Kalman-Filtern beginnen seltsamerweise oft mit „Das ist ganz einfach!“. Auch der Originalbeitrag folgt diesem Muster.
      Gerade diese Erklärung hat mir zum ersten Mal eine Intuition dafür gegeben, was tatsächlich passiert. Für mich als jemanden aus der Informatik ist schon der Name ziemlich irreführend, weil es kein Filter im Sinne von Stream-Verarbeitung oder SQL ist.
    • Man kann es noch einfacher sagen. Lineare Algebra ist sogar einfacher.
      Ein Kalman-Filter versucht, den verborgenen Input zu schätzen, der die Messwerte erzeugt hat. Dazu formuliert man das Problem: minimiere über x [tatsächlicher_Messwert - erwarteter_Messwert(x)]^2/s^2. Dabei ist s das Sigma des Rauschens.
      Das ergibt sich aus einem Zustandsschätzungsproblem, bei dem man die Likelihood maximiert, den tatsächlichen_Messwert zu sehen, gegeben x. In der Likelihood-Funktion ist nämlich nur der Term -([x-expected(x)]/s)^2 wichtig. Man muss sich nur den Exponenten einer Normalverteilung oder praktisch irgendeiner Exponentialverteilung ansehen.
      Da der tatsächliche_Messwert eine Konstante ist, lässt sich das bei linearer Funktion erwarteter_Messwert direkt als konvexe Optimierung lösen. Ableiten, gleich 0 setzen und lösen ergibt den Update-Schritt des Kalman-Filters.
      Ist die Funktion nichtlinear, linearisiert man die Gleichungen, minimiert sie und führt damit im Grunde einen Newton-Raphson-Schritt aus, der die Lösung dieser „falschen Linearisierung“ zurückgibt. Das ist Analysis und lineare Algebra auf Bachelor-Niveau; nur sagt es einem niemand so.
      Allerdings ist das auch völlig falsch. Es handelt sich um einen Hack aus den 1960ern, der versucht, mit einer solchen rekursiven einstufigen Linearisierung die Likelihood-Funktion zu maximieren. Weil die Cramér-Rao-Schranke falsch gelesen wurde, glaubten mehrere Generationen von Ingenieuren, das sei optimal; tatsächlich ist es das nicht.
      Heute haben wir mindestens 10.000-mal mehr Rechenleistung, und bessere Leistung erhält man, wenn man nichtlineare Gleichungen mit mehreren Newton-Raphson-Schritten aufstellt und löst, oder eine längere Messhistorie beibehält und dieses gesamte Bündel mit mehreren Newton-Raphson-Schritten löst, oder Gauß-Mischungsdarstellungen verwendet, um multimodale Messfunktionen zu unterstützen.
      Solche Dinge werden in der Forschung zur Zustandsschätzung von den 1980ern bis heute gut behandelt, aber die Lehrbücher wirken immer noch, als seien sie 1972 in Stein gemeißelt worden.
      Die Cramér-Rao-Schranke ist nur definiert, wenn alle Mess-Likelihood-Funktionen am wahren Zustand linearisiert werden; das ist asymptotisch nur in einem Bündel möglich, das alle Messwerte bewahrt, nicht vor unendlicher Zeit und auch nicht mit einem rekursiven Filter.
  • Unter den älteren Erklärungen fand ich diesen Beitrag gut: https://www.bzarg.com/p/how-a-kalman-filter-works-in-picture..., https://news.ycombinator.com/item?id=13449229

  • Wenn man wirklich einen Kalman-Filter braucht, kann man diesen Beitrag, den Wikipedia-Artikel oder den Implementierungsquellcode (https://github.com/LdDl/kalman-rs/blob/master/src/kalman/kal...) lesen und wohl verstehen.
    Meiner Erfahrung nach sind aber fast alle Menschen weltweit visuelle Lerntypen, die am besten anhand von Beispielen lernen. Deshalb überrascht es mich, dass das Tutorial in der Seitenmitte keine Beispielzahlen in die Formeln einsetzt. Vielleicht habe ich es übersehen, aber auch die Abbildungen beginnen erst nach einer ganzen Seite Text zu „Was ist ein Kalman-Filter“, und selbst diese Abbildungen sind wiederum noch mehr Formeln.

    • An anderer Stelle wurde gesagt, dass Konventionen bei Variablennamen ein Hindernis beim Lernen und Verstehen mathematischer Themen sind, und diese Sichtweise kann ich nachvollziehen. Aber dem hier beschriebenen Problem stimme ich noch stärker zu.
      Es ist erstaunlich, wie häufig das vorkommt. In schwächerer Form sieht man dasselbe Problem auch bei Softwarebibliotheken, die keine Codebeispiele enthalten.
  • Was mir eingeleuchtet hat: Wenn man zwei unsichere Messverteilungen, also Verteilungen mit großer Varianz, kombiniert, entsteht eine sicherere Messung, also eine schmalere Verteilung.
    Kombiniert man diesen sichereren Messwert wieder mit dem nächsten Messwert und wiederholt das, hat man im Grunde einen Kalman-Filter.

  • Unter den Video-Reihen, die KF erklären, fand ich diese wirklich gut. Ich habe es damit besser verstanden als mit dem Material im ursprünglichen Beitrag: https://www.youtube.com/watch?v=CaCcOwJPytQ

  • Mein verstorbener Vater hat diesen Filter während seiner gesamten Laufbahn häufig verwendet, schon seit der Zeit, als er gerade erst erfunden wurde. Er arbeitete mit Radar- und Raketenleitsystemen.

  • Schließ die Augen und geh kurz ein bisschen herum. Stell dir vor, wo du bist, und öffne dann die Augen: Ist deine tatsächliche Position anders als die, die du im Kopf hattest?
    Genau dieser letzte Schritt – die Überzeugung über Zustandsvariablen mithilfe von Beobachtungen zu aktualisieren – ist das, was ein Kalman-Filter macht.