
Es gibt viele verschiedene Artikel zum Kalman-Filter, aber es ist schwierig, den zu finden, der eine Erklärung enthält, aus der alle Filterformeln stammen. Ich denke, dass diese Wissenschaft ohne Verständnis davon völlig unverständlich wird. In diesem Artikel werde ich versuchen, alles auf einfache Weise zu erklären.
Der Kalman-Filter ist ein sehr leistungsfähiges Werkzeug zum Filtern verschiedener Arten von Daten. Die Hauptidee dahinter ist, dass man Informationen über den physischen Prozess verwenden sollte. Wenn Sie beispielsweise Daten vom Tachometer eines Autos filtern, haben Sie aufgrund seiner Trägheit das Recht, eine große Geschwindigkeitsabweichung als Messfehler zu behandeln. Der Kalman-Filter ist auch deshalb interessant, weil er in gewisser Weise der beste Filter ist. Wir werden genau diskutieren, was es bedeutet. Am Ende des Artikels werde ich zeigen, wie es möglich ist, die Formeln zu vereinfachen.
Vorbereitungen
Lassen Sie uns zunächst einige Definitionen und Fakten aus der Wahrscheinlichkeitstheorie auswendig lernen.
Zufällige Variable
Wenn man sagt, dass es eine Zufallsvariable gibt
xi bedeutet dies, dass zufällige Werte angenommen werden können. Unterschiedliche Werte haben unterschiedliche Wahrscheinlichkeiten. Wenn zum Beispiel jemand einen Würfel fallen lässt, ist der Wertesatz diskret
\ {1,2,3,4,5,6 \}\ {1,2,3,4,5,6 \} . Wenn Sie sich mit einer Geschwindigkeit bewegen, mit der sich Partikel bewegen, sollten Sie natürlich mit einem kontinuierlichen Satz von Werten arbeiten. Werte, die nach jedem Experiment (Messung) herauskommen, würden wir mit bezeichnen
x1,x2,... , aber manchmal verwenden wir den gleichen Buchstaben wie für eine Zufallsvariable
xi . Bei einem kontinuierlichen Satz von Werten wird eine Zufallsvariable durch ihre Wahrscheinlichkeitsdichtefunktion charakterisiert
rho(x) . Diese Funktion zeigt eine Wahrscheinlichkeit, dass die Zufallsvariable in eine kleine Nachbarschaft fällt
dx des Punktes
x . Wie wir auf dem Bild sehen können, entspricht diese Wahrscheinlichkeit der Fläche des schraffierten Rechtecks unter dem Diagramm
rho(x)dx .

Sehr oft in unserem Leben haben Zufallsvariablen die Gauß-Verteilung, wenn die Wahrscheinlichkeitsdichte ist
rho(x) sime− frac(x− mu)22 sigma2 .

Wir können sehen, dass die Glockenform funktioniert
rho(x) ist am Punkt zentriert
mu und seine charakteristische Breite ist ungefähr
sigma .
Da es sich um die Gaußsche Verteilung handelt, wäre es eine Sünde, nicht zu erwähnen, woher sie kommt. Sowie die Nummer
e und
pi sind fest in der Mathematik verankert und können an den unerwartetsten Stellen gefunden werden, so dass die Gaußsche Verteilung tiefe Wurzeln in der Wahrscheinlichkeitstheorie hat. Die folgende bemerkenswerte Aussage erklärt teilweise das Vorhandensein der Gauß-Verteilung in vielen Prozessen:
Lassen Sie eine Zufallsvariable
xi hat eine willkürliche Verteilung (tatsächlich gibt es einige Einschränkungen für die Willkür, aber sie sind überhaupt nicht einschränkend). Lassen Sie uns durchführen
n experimentiert und berechnet eine Summe
xi1+...+ xin von gefallenen Werten. Lassen Sie uns viele Experimente machen. Es ist klar, dass wir jedes Mal einen anderen Wert der Summe erhalten. Mit anderen Worten, diese Summe ist eine Zufallsvariable mit einem eigenen Verteilungsgesetz. Es stellt sich heraus, dass für ausreichend groß
n Das Verteilungsgesetz dieser Summe tendiert zu einer Gaußschen Verteilung (übrigens wächst die charakteristische Breite einer Glocke wie
sqrtn . Lesen Sie mehr in der Wikipedia:
Zentraler Grenzwertsatz . Im wirklichen Leben gibt es viele Werte, die eine Summe einer großen Anzahl unabhängiger und identisch verteilter Zufallsvariablen sind. Diese Werte haben also eine Gauß-Verteilung.
Bedeutungswert
Per Definition ist ein Mittelwert einer Zufallsvariablen ein Wert, den wir in einer Grenze erhalten, wenn wir mehr und mehr Experimente durchführen und einen Mittelwert gefallener Werte berechnen. Ein Mittelwert wird auf verschiedene Arten bezeichnet: Mathematiker bezeichnen mit
E xi (Erwartung), Physiker bezeichnen es mit
overline xi oder
< xi> . Wir werden es so bezeichnen wie Mathematiker.
Zum Beispiel ein Mittelwert der Gaußschen Verteilung
rho(x) sime− frac(x− mu)22 sigma2 ist gleich
mu .
Varianz
Bei der Gaußschen Verteilung sehen wir deutlich, dass die Zufallsvariable dazu neigt, in einen bestimmten Bereich ihres Mittelwerts zu fallen
mu . Lassen Sie uns die Gaußsche Verteilung noch einmal genießen:

Auf dem Bild kann man sehen, dass eine charakteristische Breite eines Bereichs, in dem die Werte meistens fallen, ist
sigma . Wie können wir diese Breite für eine beliebige Zufallsvariable schätzen? Wir können einen Graphen seiner Wahrscheinlichkeitsdichtefunktion zeichnen und nur den charakteristischen Bereich visuell bewerten. Es wäre jedoch besser, einen genauen algebraischen Weg für diese Bewertung zu wählen. Wir können eine mittlere Abweichungslänge vom Mittelwert finden:
E| xi−E xi| . Dieser Wert ist eine gute Schätzung einer charakteristischen Abweichung von
xi . Wir wissen jedoch sehr gut, wie problematisch es ist, Absolutwerte in Formeln zu verwenden, weshalb diese Formel in der Praxis selten verwendet wird.
Ein einfacherer Ansatz (aus Sicht der Berechnung einfach) ist die Berechnung
E( xi−E xi)2 .
Dieser Wert wird als Varianz bezeichnet und mit bezeichnet
sigma xi2 . Die quadratische Wurzel der Varianz ist eine gute Schätzung der charakteristischen Abweichung der Zufallsvariablen. Es wird die Standardabweichung genannt.
Zum Beispiel kann man das für die Gaußsche Verteilung berechnen
rho(x) sime− frac(x− mu)22 sigma2 die Varianz ist gleich
sigma2 somit ist die Standardabweichung
sigma . Dieses Ergebnis entspricht wirklich unserer geometrischen Intuition. Tatsächlich ist hier ein kleiner Betrug versteckt. Tatsächlich sehen Sie in einer Definition der Gauß-Verteilung die Zahl
2 in einem Nenner des Ausdrucks
− frac(x− mu)22 sigma2 . Das hier
2 steht dort zweckmäßig für die Standardabweichung
sigma xi genau gleich sein
sigma . Die Formel der Gauß-Verteilung ist also so geschrieben, dass man bedenkt, dass man ihre Standardabweichung berechnen würde.
Unabhängige Zufallsvariablen
Zufällige Variablen können voneinander abhängen oder nicht. Stellen Sie sich vor, Sie werfen eine Nadel auf den Boden und messen die Koordinaten ihrer beiden Enden. Diese beiden Koordinaten sind Zufallsvariablen, aber sie hängen voneinander ab, da ein Abstand zwischen ihnen immer gleich der Länge der Nadel sein sollte. Zufallsvariablen sind unabhängig voneinander, wenn die fallenden Ergebnisse der ersten nicht von den Ergebnissen der zweiten abhängen. Für zwei unabhängige Variablen
xi1 und
xi2 Der Mittelwert ihres Produkts ist gleich dem Produkt ihres Mittelwerts:
E( xi1 cdot xi2)=E xi1 cdot xi2BeweisZum Beispiel blaue Augen zu haben und eine Schule mit höheren Auszeichnungen zu beenden, sind unabhängige Zufallsvariablen. Nehmen wir an, es gibt
20%=0,2 von Menschen mit blauen Augen und
5%=0,05 von Menschen mit höheren Ehren. So gibt es
0,2 cdot0,5=0,01=1% von Menschen mit blauen Augen und höheren Ehren. Dieses Beispiel hilft uns, Folgendes zu verstehen. Für zwei unabhängige Zufallsvariablen
xi1 und
xi2 die durch ihre Wahrscheinlichkeitsdichte gegeben sind
rho1(x) und
rho2(y) die Dichte der Wahrscheinlichkeit
rho(x,y) (Die erste Variable fällt auf
x und der zweite bei
y ) kann durch die Formel finden
rho(x,y)= rho1(x) cdot rho2(y)
Es bedeutet das
beginarrayl displaystyleE( xi1 cdot xi2)= intxy rho(x,y)dxdy= intxy rho1(x) rho2(y)dxdy= displaystyle intx rho1(x)dx inty rho2(y)dy=E xi1 cdotE xi2 endarray
Wie Sie sehen, erfolgt der Beweis für Zufallsvariablen, die ein kontinuierliches Wertespektrum aufweisen und durch ihre Wahrscheinlichkeitsdichtefunktion gegeben sind. Der Beweis ist für den allgemeinen Fall ähnlich.
Kalman-Filter
Problemm Aussage
Bezeichne mit
xk Ein Wert, den wir messen und dann filtern wollen. Dies kann eine Koordinate, Geschwindigkeit, Beschleunigung, Luftfeuchtigkeit, Temperatur, Druck usw. Sein
Beginnen wir mit einem einfachen Beispiel, das uns zur Formulierung des allgemeinen Problems führt. Stellen Sie sich vor, Sie haben ein Spielzeugauto mit Funksteuerung, das nur vorwärts und rückwärts fahren kann. In Kenntnis seiner Masse, Form und anderer Parameter des Systems haben wir berechnet, wie sich ein steuernder Joystick auf die Geschwindigkeit eines Autos auswirkt
vk .

Die Koordinate des Autos würde nach folgender Formel
xk+1=xk+vkdt
Im wirklichen Leben können wir nicht, wir können keine genaue Formel für die Koordinate haben, da einige kleine Störungen auf das Auto wirken, wie Wind, Unebenheiten, Steine auf der Straße, so dass die tatsächliche Geschwindigkeit des Autos von der berechneten abweicht . Also fügen wir eine Zufallsvariable hinzu
xik auf der rechten Seite der letzten Gleichung:
xk+1=xk+vkdt+ xik
Wir haben auch einen GPS-Sensor am Auto, der versucht, die Koordinate des Autos zu messen
xk . Natürlich gibt es einen Fehler bei dieser Messung, bei der es sich um eine Zufallsvariable handelt
etak . Vom Sensor würden wir also falsche Daten erhalten:
zk=xk+ etak
Unser Ziel ist es, eine gute Schätzung für die wahre Koordinate zu finden
xk , die Daten eines falschen Sensors kennen
zk . Diese gute Schätzung werden wir mit bezeichnen
xopt .
Im Allgemeinen die Koordinate
xk may steht für einen beliebigen Wert (Temperatur, Luftfeuchtigkeit, ...) und das Kontrollelement, mit dem wir bezeichnen würden
uk (im Beispiel mit einem Auto
uk=vk cdotdt ) Die Gleichungen für die Koordinaten- und Sensormessungen wären wie folgt:

(1)
Lassen Sie uns diskutieren, was wir in diesen Gleichungen wissen.
- uk ist ein bekannter Wert, der eine Entwicklung des Systems steuert. Wir kennen es aus dem Modell des Systems.
- Die Zufallsvariable xi repräsentiert den Fehler im Modell des Systems und der Zufallsvariablen eta ist ein Sensorfehler. Ihre Verteilungsgesetze hängen nicht von der Zeit ab (vom Iterationsindex k )
- Die Fehlermittel sind gleich Null: E etak=E xik=0 .
- Wir kennen möglicherweise kein Verteilungsgesetz der Zufallsvariablen, aber wir kennen ihre Varianzen sigma xi und sigma eta . Beachten Sie, dass die Abweichungen nicht von der Zeit abhängen k ) da die entsprechenden Vertriebsgesetze auch nicht.
- Wir nehmen an, dass alle zufälligen Fehler unabhängig voneinander sind: der Fehler zu der Zeit k hängt nicht vom jeweiligen Fehler ab k′ .
Beachten Sie, dass ein Filtrationsproblem kein Glättungsproblem ist. Unser Ziel ist es nicht, die Daten eines Sensors zu glätten, sondern nur den Wert zu erhalten, der so nah wie möglich an der realen Koordinate liegt
xk .
Kalman-Algorithmus
Wir würden eine Induktion verwenden. Stellen Sie sich das beim Schritt vor
k Wir haben den Wert des gefilterten Sensors bereits gefunden
xopt Dies ist eine gute Schätzung der realen Koordinate
xk . Denken Sie daran, dass wir die Gleichung kennen, die die reale Koordinate steuert:
xk+1=xk+uk+ xik
Bevor wir den Wert des Sensors erhalten, können wir daher angeben, dass er den Wert anzeigt, der nahe daran liegt
xopt+uk . Leider können wir bisher nichts genaueres sagen. Aber beim Schritt
k+1 Wir hätten einen ungenauen Messwert vom Sensor
zk+1 .
Die Idee von Kalman ist die folgende. Um die beste Schätzung der realen Koordinate zu erhalten
xk+1 Wir sollten eine goldene Mitte zwischen dem Ablesen des nicht präzisen Sensors erhalten
zk+1 und
xopt+uk - unsere Vorhersage, was wir auf dem Sensor erwartet haben. Wir werden ein Gewicht geben
K auf den Wert des Sensors und
(1−K) auf den vorhergesagten Wert:
xoptk+1=K cdotzk+1+(1−K) cdot(xoptk+uk)
Der Koeffizient
K wird als Kalman-Koeffizient bezeichnet. Es hängt vom Iterationsindex ab, und genau genommen sollten wir lieber schreiben
Kk+1 . Aber um Formeln in einer schönen Form zu halten, würden wir den Index von weglassen
K .
Wir sollten den Kalman-Koeffizienten so wählen, wie es die geschätzte Koordinate ist
xoptk+1 wäre so nah wie möglich an der realen Koordinate
xk+1 .
Wenn wir zum Beispiel wissen, dass unser Sensor sehr hochpräzise ist, würden wir auf seine Anzeige vertrauen und ihm ein großes Gewicht geben (
K ist nah an eins). Wenn der Sensor umgekehrt überhaupt nicht präzise ist, würden wir uns auf unseren theoretisch vorhergesagten Wert verlassen
xoptk+uk .
Im Allgemeinen sollten wir den Fehler unserer Schätzung minimieren:
ek+1=xk+1−xoptk+1
Wir verwenden die Gleichungen (1) (die sich auf einem blauen Rahmen befinden), um die Gleichung für den Fehler neu zu schreiben:
ek+1=(1−K)(ek+ xik)−K etak+1
Beweis beginarraylek+1=xk+1−xoptk+1=xk+1−Kzk+1−(1−K)(xoptk+uk)==xk+uk+ xik−K(xk+uk+ xik+ etak+1)−(1−K)(xoptk+uk)==(1−K)(xk−xoptk+ xik)−K etak+1=(1−K)(ek+ xik)−K etak+1 endarray
Nun ist es an der Zeit zu diskutieren, was bedeutet der Ausdruck "um den Fehler zu minimieren"? Wir wissen, dass der Fehler eine Zufallsvariable ist, daher nimmt er jedes Mal andere Werte an. Eigentlich gibt es keine eindeutige Antwort auf diese Frage. Ähnlich war es bei der Varianz einer Zufallsvariablen, als wir versuchten, die charakteristische Breite ihrer Wahrscheinlichkeitsdichtefunktion abzuschätzen. Wir würden also ein einfaches Kriterium wählen. Wir würden einen Mittelwert des Quadrats minimieren:
E(e2k+1) rightarrowmin
Schreiben wir den letzten Ausdruck um:
E(e2k+1)=(1−K)2(E2k+ sigma2 xi)+K2 sigma2 eta
Schlüssel zum BeweisAus der Tatsache, dass alle Zufallsvariablen in der Gleichung für
ek+1 hängen nicht voneinander und von den Mittelwerten ab
E etak+1=E xik=0 folgt, dass alle Kreuzbegriffe in
E(e2k+1) werden Nullen:
E( xik etak+1)=E(ek xik)=E(ek etak+1)=0.
In der Tat zum Beispiel
E(ek xik)=E(ek)E( xik)=0.Beachten Sie auch, dass Formeln für die Abweichungen viel einfacher aussehen:
sigma2 eta=E eta2k und
sigma2 eta=E eta2k+1 (seit
E etak+1=E xik=0 )
Der letzte Ausdruck nimmt seinen Minimalwert an, wenn seine Ableitung Null ist. Also wann:
displaystyleKk+1= fracEe2k+ sigma2 xiEe2k+ sigma2 xi+ sigma2 eta
Hier schreiben wir den Kalman-Koeffizienten mit seinem Index, daher betonen wir die Tatsache, dass dies vom Iterationsschritt abhängt. Wir ersetzen den mittleren quadratischen Fehler durch die Gleichung
E(e2k+1) der Kalman-Koeffizient
Kk+1 die seinen Wert minimieren:
displaystyleE(e2k+1)= frac sigma2 eta(Ee2k+ sigma2 xi)Ee2k+ sigma2 xi+ sigma2 eta
Also haben wir unser Problem gelöst. Wir haben die iterative Formel zur Berechnung des Kalman-Koeffizienten erhalten.
Alle Formeln an einem Ort Beispiel
Auf dem Plot vom Anfang dieses Artikels befinden sich gefilterte Daten des fiktiven GPS-Sensors, die sich auf dem fiktiven Auto befinden und sich mit konstanter Beschleunigung bewegen
a .
xt+1=xt+bei cdotdt+ xit
Schauen Sie sich die gefilterten Ergebnisse noch einmal an: Analyse
Wenn man sich anschaut, wie der Kalman-Koeffizient ist
Kk Änderungen gegenüber der Iteration
k ist zu sehen, dass es sich auf den bestimmten Wert stabilisiert
Kstab . Wenn beispielsweise die quadratischen mittleren Fehler des Sensors und des Modells als zehn zu eins zueinander stehen, wäre die Darstellung der Kalman-Koeffizientenabhängigkeit vom Iterationsschritt wie folgt:

Im nächsten Beispiel würden wir diskutieren, wie dies unser Leben vereinfachen kann.
Zweites Beispiel
In der Praxis kommt es vor, dass wir vom physikalischen Modell fast nichts wissen, was wir filtern. Stellen Sie sich vor, Sie haben beschlossen, diese Messungen von Ihrem bevorzugten Beschleunigungsmesser zu filtern. Eigentlich weiß man nicht vorwärts, wie der Beschleunigungsmesser bewegt werden würde. Das einzige, was Sie vielleicht wissen, ist die Varianz des Sensorfehlers
sigma2 eta . In diesem schwierigen Problem könnten wir alle unbekannten Informationen aus dem physikalischen Modell in die Zufallsvariable einfügen
xik ::
xk+1=xk+ xik
Genau genommen erfüllt diese Art von System nicht die Bedingung, die wir der Zufallsvariablen auferlegt haben
xik . Da es die uns unbekannten Informationen der Physik der Bewegung enthält. Wir können nicht sagen, dass die Fehler zu unterschiedlichen Zeitpunkten unabhängig voneinander sind und ihre Mittelwerte gleich Null sind. Mit anderen Worten bedeutet dies, dass für diese Art von Situationen die Kalman-Theorie nicht angewendet wird. Trotzdem können wir versuchen, die Maschinerie der Kalman-Theorie zu nutzen, indem wir nur einige vernünftige Werte für auswählen
sigma xi2 und
sigma eta2 um nur eine schöne Grafik des gefilterten Datums zu erhalten.
Aber es gibt einen viel einfacheren Weg. Wir haben das mit zunehmender Stufe gesehen
k Der Kalman-Koeffizient stabilisiert sich immer auf den bestimmten Wert
Kstab . Also anstatt die Werte der Koeffizienten zu erraten
sigma2 xi und
sigma2 eta und Berechnen des Kalman-Koeffizienten
Kk Durch schwierige Formeln können wir annehmen, dass dieser Koeffizient konstant ist, und nur diese Konstante auswählen. Diese Annahme würde die Filterergebnisse nicht wesentlich beeinflussen. Erstens ist die Kalman-Maschinerie ohnehin nicht genau auf unser Problem anwendbar, und zweitens stabilisiert sich der Kalman-Koeffizient schnell auf die Konstante. Am Ende wird alles sehr einfach. Wir brauchen fast keine Formel aus der Kalman-Theorie, wir müssen nur einen vernünftigen Wert auswählen
Kstab und fügen Sie es in die iterative Formel ein
xoptk+1=Kstab cdotzk+1+(1−Kstab) cdotxoptk
In der nächsten Grafik sehen Sie die auf zwei verschiedene Arten gefilterten Messungen von einem imaginären Sensor. Die erste Methode ist die ehrliche mit allen Formeln aus der Kalman-Theorie. Die zweite Methode ist die vereinfachte.

Wir sehen, dass es keinen großen Unterschied zwischen zwei dieser Methoden gibt. Am Anfang gibt es eine kleine Abweichung, wenn der Kalman-Koeffizient noch nicht stabilisiert ist.
Diskussion
Wir haben gesehen, dass die Hauptidee des Kalman-Filters darin besteht, den Koeffizienten zu wählen
K in einer Weise, dass der gefilterte Wert
xoptk+1=Kzk+1+(1−K)(xoptk+uk)
im Durchschnitt wäre so nah wie möglich an der realen Koordinate
xk+1 . Wir sehen, dass der gefilterte Wert
xoptk+1 ist eine lineare Funktion aus der Messung des Sensors
zk+1 und der vorherige gefilterte Wert
xoptk . Aber der vorherige gefilterte Wert
xoptk selbst ist eine lineare Funktion der Sensormessung
zk und der vorhergehende gefilterte Wert
xoptk−1 . Und so weiter bis zum Ende der Kette. Der gefilterte Wert hängt also linear von allen vorherigen Sensorwerten ab:
xoptk+1= lambda+ lambda0z0+ ldots+ lambdak+1zk+1
Aus diesem Grund wird der Kalman-Filter als linearer Filter bezeichnet. Es kann nachgewiesen werden, dass der Kalman-Filter der beste aller linearen Filter ist. Das Beste in dem Sinne, dass es einen quadratischen Mittelwert des Fehlers minimiert.
Mehrdimensionaler Fall
Es ist möglich, die gesamte Kalman-Theorie auf den mehrdimensionalen Fall zu verallgemeinern. Die dortigen Formeln sehen etwas ausgefeilter aus, aber die Idee ihrer Ableitung bleibt immer noch dieselbe wie in einer Dimension. Zum Beispiel können Sie in diesem schönen
Video das Beispiel sehen.
Literatur
Den Originalartikel von Kalman können Sie hier herunterladen:
http://www.cs.unc.edu/~welch/kalman/media/pdf/Kalman1960.pdf