Kalman Filter -! Kompliziert?

    Ich habe kürzlich einen Beitrag von Augmented Reality gelesen, in dem der Kalman-Filter im Vergleich zum einfacheren Alpha-Beta-Filter erwähnt wird. Lange Zeit wollte ich so etwas wie einen Ausschnitt über das Kompilieren eines FC komponieren, und jetzt denke ich, ist es Zeit. In dem Artikel werde ich Ihnen erklären, wie es in der Praxis möglich ist, einen erweiterten FZ zusammenzustellen, ohne sich wirklich mit hochwissenschaftlichen Überlegungen und tiefer theoretischer Forschung zu beschäftigen.

    Grundlegende Konzepte


    1. Die Eingabe-Ausgabe-Gleichung ist eine Differentialgleichung (zum Beispiel unter Verwendung von Lagrange-Gleichungen der zweiten Art), für die auf der linken Seite des Gleichheitszeichens Terme stehen, die von der Ausgabevariable abhängen (verallgemeinerte Koordinaten der Eigenbewegung des Systems), und auf der rechten Seite Terme mit Eingabevariable oder freie Mitglieder. Der Einfachheit halber können wir das folgende Beispiel anführen: Für das Pendel auf der linken Seite der Eingangs- / Ausgangsgleichung gibt es Terme mit dem Abweichungswinkel der Last von der Ruheposition und auf der rechten Seite Terme mit der Schwerkraft und anderen äußeren Kräften. Ich werde nicht beschreiben, wie solche Gleichungen erhalten werden - es besteht keine Notwendigkeit, die Veröffentlichung mit nutzlosen theoretischen Berechnungen zu komplizieren. Im Folgenden werde ich zeigen, dass Sie mit Methoden auskommen können, die für die Praxis geeignet sind.
    2. Transferfunktion (PF) - das Verhältnis des Ausgangs zum Eingang bzw. der Ausgangsvariablen zum Eingang. Nach der Proportionsregel entspricht die Übertragungsfunktion nach dem Herausnehmen des Gehirns aus den Klammern dem Verhältnis der linken Seite, geschrieben in der Operatorform, zur rechten Seite.
    3. Operator Form der Aufzeichnung - die Gleichung "Eingabe-Ausgabe" wird nach Änderung der Form geschrieben: s = d / dt und x (t) -> x (s). Als Ergebnis wird eine Gleichung der Form:
      a1 * x '' + a2 * x '+ a3 * x = b1 * u' + b2 * u
      in die Form
      (a1 * s ^ 2 + a2 * s + a3) * x (s) umgewandelt ) = (b1 * s + b2) * u (s).
      In diesem Fall hat die Übertragungsfunktion die Form:
      W (s) = x (s) / u (s) = (b1 * s + b2) / (a1 * s ^ 2 + a2 * s + a3)

    Herausforderung


    Als Anwendung für FC übernehmen wir die Verarbeitung der Informationen des Sensorblocks (siehe [1] ). Wir haben vier Einheiten von zweiachsigen mikromechanischen Beschleunigungsmessern (MMA). Nur 8 Messkanäle, für die jeweils eine separate Input-Output-Gleichung erstellt werden kann. Hierbei ist zu beachten, dass einige Hersteller von Sensoren (z. B. Analog Devices) ein annähernd linearisiertes (dies ist in unserem Fall wichtig) mathematisches Modell bereitstellen. Als ich an einem Diplom arbeitete, bekam ich von meinen Kollegen ein Modell für MatLab. Aber auch wenn der Hersteller festhältDas Problem ist gering, da er seine Geheimnisse eifrig hütet. Wenn wir über Beschleunigungsmesser von AD sprechen, ist ihre Bandbreite für viele praktische Probleme groß. Zum Beispiel das ADXL203-Band, wenn es den Speicher nicht ändert, 10 kHz. Es funktioniert nicht als akustischer Sensor (erreicht nicht Hunderte von kHz), sondern für den zivilen Einsatz an sich bewegenden Objekten (Autos, Yachten, Motorroller, Fahrräder, Kinderwagen) oder in der Spielebranche (es ist unwahrscheinlich, dass eine Person mit einer Frequenz von 10 Hz mit den Armen wedeln kann ) Ein solches Band ist überflüssig.
    Auf diese Weise können wir selbst das Modell der von uns benötigten Sensoren erstellen. Und auf diese Weise schlagen wir zwei Fliegen mit einer Klappe: Wir bilden ein einfaches linearisiertes Modell und führen die Rauschfilterung bereits auf der untersten Ebene ein. In Bezug auf die Einfachheit des Modells sollte beachtet werden, dass wir bei Verwendung einer Gleichung, die die Dynamik des Sensors genau beschreibt, gezwungen sein werden, Kalman-Filtermatrizen aus Zahlen zu erstellen, deren Ordnungen stark variieren. Im Modell "vom Hersteller" für die genannten Beschleunigungsmesser beträgt das Verhältnis von maximalem zu minimalem Koeffizienten etwa 1e + 10. Dies führt zu einer brutal geringen Konditionalität der Berechnungen, d.h. Ein kleiner Fehler beim Einstellen des Koeffizientenwerts kann zu einem sehr großen Rechenfehler führen. Indem wir die dem mathematischen Modell inhärente Bandbreite verringern, erhöhen wir die Stabilität der Berechnungen wesentlich.
    Wie macht man dieses Modell? Ja, sehr einfach. Mithilfe von MatLab- oder Octave-Paketen und der Frage nach der benötigten Bandbreite (Tiefpassfilter, Hochpassfilter oder Bandpassfilter), durch Stöbern oder Verwenden von Plug-Ins in den Paketen, synthetisieren wir PFs. Hierbei ist zu beachten, dass das MatLab-Paket ein visuelles Synthesewerkzeug für einen diskreten Filter enthält. In Octave habe ich noch kein Analog gefunden. In beiden Paketen können Sie die Frequenzgang- und Phasengangdiagramme aufzeichnen, auf denen Sie die Grenzfrequenz (en) sowie die Oszillationen des Frequenzgangdiagramms im und außerhalb des Durchlassbereichs beachten müssen. Im Allgemeinen erfüllt uns ein Schamane mit den Übertragungsfunktionskoeffizienten, bis die Frequenzantwort- und Phasenantwortgraphen zufriedenstellend sind. Ich habe mir schon ein anderes, fauleres vorgestellteine einfache Möglichkeit, nämlich genetische Algorithmen zur Identifizierung zu verwenden. Es ist lediglich erforderlich, die Referenzbeispiele „Input - Output“ zu implementieren und den Evolutionsprozess zu organisieren. Aus wissenschaftlicher Sicht sind die genannten „Methoden“ jedoch ungültig.

    Mathematisches Modell


    Der Einfachheit halber stimmen wir zu, dass es eine Gleichung in Operatorform gibt:

    Dies ist eine der häufigsten Gleichungen einer dynamischen Verbindung zweiter Ordnung. In dieser Gleichung spielt a2 - die Rolle des Federsteifigkeitskoeffizienten (die Steifigkeit ist direkt proportional zum Abstand der Position des Messfühlers von der Ruheposition); A1 ist der Dämpfungskoeffizient (eine Kraft proportional zur Bewegungsgeschwindigkeit; denken Sie an Honig - es ist einfacher, einen Löffel darin langsam als schnell zu bewegen). a0 - kennzeichnet die Trägheit. Die Koeffizienten rechts vom Gleichheitszeichen haben eine etwas andere Bedeutung. Diese Koeffizienten charakterisieren die Wirksamkeit der Wirkung in verschiedenen Reihenfolgen von Derivaten. Es ist wichtig zu verstehen, dass das Erfordernis der physikalischen Realisierbarkeit die maximale Ordnung der Ableitung rechts auf die maximale Ordnung der Ableitung der linken Seite begrenzt.
    Wenn uns eine solche Gleichung zur Verfügung steht, können wir mit den Vorbereitungen für die Herstellung des Kalman-Filters beginnen. Dazu müssen wir zuerst die Eingabe-Ausgabe-Gleichung in das Modell des „Zustandsraums“ transformieren. Dies geschieht durch Konvertieren in die "Cauchy-Form".
    Zuerst müssen Sie in die Form von Proportionen konvertieren und eine neue (fiktive) Variable einführen:

    Als Ergebnis erhalten wir ein Gleichungssystem:

    In diesem System ist die erste Gleichung die Gleichung des dynamischen Prozesses und die zweite die Beobachtungsgleichung.
    Wir reduzieren die erste Gleichung auf die Cauchy-Form (auf das System der Differentialgleichungen erster Ordnung) durch Ersetzen von x1 = x:

    Um das Schreiben der Ersetzungen zu
    vereinfachen , wurde in diesem System die inverse Laplace- Transformation durchgeführt (der Übergang von der Operatorform zur Differentialgleichung). Infolgedessen haben wir gebrochen
    die ursprüngliche Gleichung in zwei Gleichungen erster Ordnung. Die eingeführten Variablen x1 und x2 heißen "Zustandsvariablen" oder "Phasenkoordinaten". Das resultierende System arbeitet mit "kontinuierlicher" Zeit. Wir haben es unter Verwendung der ursprünglichen Differentialgleichungen zusammengestellt. Wir müssen jedoch einen Differenzalgorithmus (einen Algorithmus in diskreter Zeit) erstellen, um den Wert von Phasenkoordinaten in einem Computer auf wiederkehrende Weise zu berechnen. Daher muss dieses System vor der Verwendung des Kalman-Filters „diskretisiert“ werden. Aber dazu später mehr.
    Nun müssen wir eine Beobachtungsgleichung für die eingegebenen Phasenkoordinaten erstellen. Unter Berücksichtigung der
    eingeführten Substitutionen und in der Differentialform erhalten wir:

    Es bleibt, die erhaltenen Gleichungen in einer Vektormatrixform umzuschreiben, nachdem die Terme in Übereinstimmung mit den Phasenkoordinatenindizes angeordnet wurden:

    In dieser Gleichung sollten

    zur Diskretisierung dieser Gleichungen die folgenden Ausdrücke verwendet werden:

    wobei I die Identitätsmatrix ist, F und R die gewünschten diskretisierten Matrizen des Zustandsraummodells sind (Differenzgleichungen), ts die Quantisierungsperiode.
    Die Quantisierungsperiode ist ein Schlüsselelement bei der Abtastung. Je kleiner es ist, desto genauer
    wiederholt das diskrete Modell das Verhalten des Modells mit kontinuierlicher Zeit. Darüber hinaus wird
    das diskrete Modell bei zu großen ts aufgrund von Rechenfehlern
    instabil. Ist das Objekt nicht hochdynamisch (z. B. ein Tiefpassfilter mit
    einem Durchlassbereich von bis zu 10 Hz), kann die Quantisierungsperiode ausreichend groß gewählt werden. Für
    Mit dem vorgenannten Tiefpassfilter kann die Quantisierungsperiode mit einem großen Spielraum von 0,01 sec gewählt werden.
    Wir haben also ein diskretes Modell der Form:

    Jetzt ist alles bereit für die Vorbereitung des FC-Modells. Wir müssen nur die für jeden Messkanal erhaltenen Matrizen F, R und C diagonalisieren.Für 8 Messkanäle, für die jeweils eine diskrete richtige Matrix F mit den Abmessungen 2x2 erstellt wird, erhalten wir unsere eigene Kalman-Filtermatrix A (siehe Abbildung am Anfang der Veröffentlichung) ) mit den Abmessungen 16x16. Wir handeln auch mit dem Spaltenvektor R: 2x1 * 8 Kanäle = 16x8 - Matrix B im FC-Modell. Aus den Zeilenvektoren C wird die Matrix H des Kalman-Filters (8x16) zusammengesetzt.
    Fertig Dann müssen Sie alles programmieren. Persönlich bevorzuge ich die Verwendung von Ruby + NArray. Es ist mir ein Vergnügen, mit diesem Haufen Prototypen zu erstellen, aber dies ist meine persönliche Meinung ... an wen. Denken Sie daran, dass es sich nicht lohnt, diese Gleichungen direkt zu programmieren - die resultierenden Matrizen sind sehr dünn mit Nullen. Wenn Sie darüber nachdenken, können alle Matrixausdrücke in Blockoperationen unterteilt werden. Hier gibt es in der Umsetzungsphase noch viel zu optimieren.

    Fazit


    Entschuldigen Sie die Unklarheiten bezüglich der Schreibweise. Formeln zuckten aus verschiedenen Werken. Ich werde versuchen, kurz zu erklären, was in den Gleichungen des FC im Bild am Anfang des Beitrags steht.
    Das erste, was auffällt, sind die Matrizen P, Q, R, K. Dies ist die Kovarianzmatrix der Schätzfehler (Fehler beim Lösen des FC-Problems), die Kovarianzmatrix des Rauschens des dynamischen Prozesses und des Messrauschens sowie die Matrix der Kalman-Filterverstärkung. Die Vektoren „x“ und „z“ sind der Phasenvektor der FC (Nachahmung des Phasenvektors des Sensorblocks innerhalb des FC-Modells) und der Vektor der Ausgangssignale realer Sensoren (tatsächlich ist dies der Kanal zum Empfangen von Informationen von außen an die FC). Aus dem dargestellten Diagramm ist das Prinzip des FC-Betriebs leicht zu verstehen.
    Es scheint nichts kompliziertes zu sein. Es gibt jedoch eine Reihe wichtiger Nuancen in der Arbeit des FC. Daher ist FC als Algorithmus konzipiert, der unter mehreren Bedingungen (Hypothesen) den kleinsten mittleren quadratischen Fehler liefert. Erstens sind die Störungen weiß (gleichmäßige Spektralantwort) mit einer Gaußschen Verteilung von Zufallsvariablen. In der Praxis ist diese Hypothese jedoch nicht erfüllt, weil Es ist schwierig, eine Geräuschquelle mit solch idealen Parametern zu finden. Darüber hinaus haben die Messsysteme selbst endliche Bandbreiten. In diesem Fall müssen auch Variablen für Rauschprozesse in den Phasenvektor des photonischen Kristalls einbezogen werden. Es wird ein künstlicher Ansatz verwendet: Es wird angenommen, dass wir eine Quelle für weißes Rauschen haben, dessen Signal das Filter passiert. Somit wird das Modell von zwei dynamischeren Objekten - Filter - zum FC-Modell hinzugefügt.
    Die zweite Hypothese ist das unkorrelierte Rauschen verschiedener Messkanäle. Es wird auch selten durchgeführt, und es gibt wieder künstliche Methoden, um diese Einschränkung zu umgehen. Alle diese Methoden führen zu einer Vergrößerung der Dimension der FC => Erhöhung der Rechenlast.
    Die Kompliziertheit der Arbeit der FZ verkompliziert das Leben von Nerds von Wissenschaftlern, aber für praktische Anwendungen ist es oft wichtiger, die Dimension der FZ zu reduzieren, als bestimmte theoretische Anforderungen zu erfüllen. Wir suchen eine Näherungslösung nach numerischen Methoden und keine exakte analytische Lösung mit einer klaren theoretischen Begründung. Obwohl jemand wie ...

    Referenzliste


    1. Nicht orthogonale SINS für kleine UAVs
    2. habrahabr.ru/blogs/augmented_reality/118192
    3. Brammer K., Ziffling G., Kalman-Bucy-Filter. Per. mit ihm. - M .: Wissenschaft. Die Hauptausgabe
      der physikalischen und mathematischen Literatur. 1982.
    4. Sizikov V.S. Nachhaltige Methoden zur Aufbereitung von Messergebnissen. Studienführer.
      - St. Petersburg: "SpetsLit", 1999. - 240 p.
    5. Greg Welch, Gary Bishop. Eine Einführung in den Kalman Filter. TR 95-041, Institut für
      Informatik, Universität von North Carolina in Chapel Hill. 5. April 2004.

    Jetzt auch beliebt: