Kalman Filter



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| xiE 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( xiE 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 xi2
Beweis
Zum 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 (1K) auf den vorhergesagten Wert:

xoptk+1=K cdotzk+1+(1K) 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+1xoptk+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=(1K)(ek+ xik)K etak+1


Beweis

 beginarraylek+1=xk+1xoptk+1=xk+1Kzk+1(1K)(xoptk+uk)==xk+uk+ xikK(xk+uk+ xik+ etak+1)(1K)(xoptk+uk)==(1K)(xkxoptk+ xik)K etak+1=(1K)(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)=(1K)2(E2k+ sigma2 xi)+K2 sigma2 eta


Schlüssel zum Beweis
Aus 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:


Code in Matlab
clear all; N=100 % number of samples a=0.1 % acceleration sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+normrnd(0,sigmaEta); for t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi); z(t+1)=x(t+1)+normrnd(0,sigmaEta); end; %kalman filter xOpt(1)=z(1); eOpt(1)=sigmaEta; % eOpt(t) is a square root of the error dispersion (variance). % It's not a random variable. for t=1:(N-1) eOpt(t+1)=sqrt((sigmaEta^2)*(eOpt(t)^2+sigmaPsi^2)/(sigmaEta^2+eOpt(t)^2+sigmaPsi^2)) K(t+1)=(eOpt(t+1))^2/sigmaEta^2 xOpt(t+1)=(xOpt(t)+a*t)*(1-K(t+1))+K(t+1)*z(t+1) end; plot(k,xOpt,k,z,k,x) 


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+(1Kstab) 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+(1K)(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 xoptk1 . 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

Source: https://habr.com/ru/post/de436248/


All Articles