Fragen zum Kalman-Filter



  • Guten Tag,

    vorweg: Ich bin nicht der beste in Mathe, habe es aber mit einer Erklärung hinbekommen (http://www.mi.hs-rm.de/~schwan/Projects/CG/P4/Dokumentation/node16.html), das Kalman-Filter zu implementieren und das Szenario "verrauschter Messwert" nachzubilden. So sieht mein Ergebnis aus:

    http://www.abload.de/img/kalan5suxr.png

    Allerdings sind mir einige Punkte sehr unklar. Ich fange mit Fragen zu einem Bereich an, das ist einfacher 😉 🙂

    ➡ Fragen zum Systemrauschen wk1w_{k-1} und Messrauschen vkv_{k}
    Der initiale Zustand (in diesem Fall x=5x=5) wird als a priori-Schätzung angenommen und im Korrekturschritt korrigiert, anschließend wird prädiziert. Eine Gleichung für die Prädiktion lautet:

    x_k=Ax_k1+Buk1+wk1x\_k=A * x\_{k-1} + B * u_{k-1} + w_{k-1}

    Zitat:

    Das Systemrauschen ww ist eine normalverteilte Zufallsvariable mit dem Mittelwert 0 und der Varianz QQ.
    Die Varianz wird angenommen und dem Verhalten des Kalmanfilter angepasst

    Des Weiteren gibt es die Messgleichung:

    z_k=Hx_k+vkz\_k=H*x\_k+v_k

    Das Messrauschen vv wird durch eine normalverteite Zufallsvariable mit dem Mittelwert 0 und der Varianz RR repräsentiert.

    Problem: vv und ww tauchen später im rekursiven Ablauf gar nicht mehr auf.

    vv ist in meinen Augen einfach der Rauschterm im Beobachtungsmodell, den ich via "randn" auf den konstanten wahren Wert c=1 addiere. Da "randn" eine Varianz von 1 hat habe ich ursprünglich R=1R=1 gesetzt. Ist der Gedanke korrekt?

    Bei ww wusste ich jetzt gar nicht, was ich machen soll. Das Rauschen fehlt bei mir im System somit derzeit komplett?! Ursprünglich habe ich Q=1Q=1 gesetzt. Kann mir jemand die Bedeutung von ww nochmal erklären?

    Letztendlich habe ich mit Q=1Q=1 und R=1R=1 schon eine Annäherung erzielt, das im oben dargestellte Ergebnis habe ich durch rumprobieren hinbekommen:

    Q=0.0001Q=0.0001
    R=1R=1

    Ist das tatsächlich die Vorgehensweise? Varianzen aus Datenblättern übernehmen / irgendwas schätzen und dann anpassen und schauen ob die Ergebnisse besser werden 😕 😕

    Für jede Antwort bin ich sehr dankbar, da das Thema für mich nicht leicht ist.



  • Habe jetzt noch den idealen Wurf implementiert:

    http://www.abload.de/img/wurfvprbh.png

    Ich finde es beeindruckend, was das Filter leisten kann 😮

    Ich habe zwischenzeitig noch mehr gelesen und viel probiert und auch einiges verstanden, trotzdem würde ich gerne mit jemanden chatten/schreiben der mal wirklich viel mit dem kalman gemacht hat... da sind immer noch offene Punkte. Bitte melden 🙂



  • Hallo!

    Almanach schrieb:

    Problem: vv und ww tauchen später im rekursiven Ablauf gar nicht mehr auf.

    Die sind ja auch im echten Leben unbekannt. Man rechnet im Prinzip nur mit ihrer Wahrscheinlichkeitsverteilung weiter, also die Erwartungswerte 0 und die Kovarianzmatrizen Q bzw R.

    Almanach schrieb:

    vv ist in meinen Augen einfach der Rauschterm im Beobachtungsmodell, den ich via "randn" auf den konstanten wahren Wert c=1 addiere. Da "randn" eine Varianz von 1 hat habe ich ursprünglich R=1R=1 gesetzt. Ist der Gedanke korrekt?

    Was "c=1" bei dir bedeutet, weiß ich nicht. Wenn ich dich richtig verstehe, simulierst du das ganze und damit auch das Rauschen. In dem Fall, ja, das müsste so korrekt sein; denn die Varianz R entspricht ja dem Quadrat der Streuuung und die ist 1 bei dir, also R = 1^2 = 1.

    Almanach schrieb:

    Bei ww wusste ich jetzt gar nicht, was ich machen soll. Das Rauschen fehlt bei mir im System somit derzeit komplett?! Ursprünglich habe ich Q=1Q=1 gesetzt. Kann mir jemand die Bedeutung von ww nochmal erklären?

    Das Systemrauschen ist etwas Unvorhersehbares, was den Zustand verändern kann. Irgend ein Einfluss auf das System. Die englische Wikipediaseite nennt in ihrem Beispiel eine zufällige kleine Beschleunigung, die auf das System wirkt. Das könnte z.B. durch Wind hervorgerufen werden -- wobei die vom Wind induzierte Beschleunigung sicherlich nicht "weiß" sein wird. Mit solchen Annahmen muss mal also etwas aufpassen.

    Almanach schrieb:

    Letztendlich habe ich mit Q=1Q=1 und R=1R=1 schon eine Annäherung erzielt, das im oben dargestellte Ergebnis habe ich durch rumprobieren hinbekommen:

    Q=0.0001Q=0.0001
    R=1R=1

    Ist das tatsächlich die Vorgehensweise? Varianzen aus Datenblättern übernehmen / irgendwas schätzen und dann anpassen und schauen ob die Ergebnisse besser werden 😕 😕

    Das scheint nochmal eine Wissenschaft für sich zu sein. Die englische Wikipediaseite (finde ich übrigens besser als die deutsche bei diesem Thema) hat dazu auch zwei Abschnitte, einen zur Schätzung von Q und R und einen zur Qualität des Ganzen. Ich selbst bin da jetzt überfragt.

    Das Kalmanfilter habe ich bisher nicht implementiert. Aber mich interessiert das auch gerade, weil ich ein bisschen mit verschiedenen Inertialsensoren gespielt habe.


Log in to reply