Hallo,
ich würde gerne wissen wie man beim Kalman Filter die
Prozessrauschkovarianzmatrix Q berechnet.
In vielen Quellen findet man dort einfach nur eine Varianz sigma²
multipliziert mit der Einheitsmatrix.
Soweit ich weiß, sollten aber auch die Abhängigkeiten der Zustände
zueinander enthalten sein, womit das keine allgemeine Lösung sein
sollte.
Auf dieser Seite wird die Berechnung ein bisschen erklärt:
http://www.cbcity.de/das-kalman-filter-einfach-erklaert-teil-2
Allerdings ist es doch ein bisschen schwammig und auf der Seite habe ich
auch schon einige Fehler gefunden.
Weiß jemand von euch wie man allgemein Q beim Kalman Filter berechnet?
Vielen Dank für jede Hilfe!
Modularier schrieb:> Hallo,>> ich würde gerne wissen wie man beim Kalman Filter die> Prozessrauschkovarianzmatrix Q berechnet.>> In vielen Quellen findet man dort einfach nur eine Varianz sigma²> Weiß jemand von euch wie man allgemein Q beim Kalman Filter berechnet?>> Vielen Dank für jede Hilfe!
Man ermittelt Q iterativ durch probieren. Allerdings gibt es schon
Ansätze wie man Q wählen sollte. Such hier auf der Seite mal nach Kalman
Fitler.
Hallo Tom,
vielen Dank für deine Antwort. Natürlich habe ich auch schon das µC
Forum rauf- und runtergesucht und konnte aber keine zufriedenstellende
Antwort finden.
Was du meinst dürfte ja schlicht die Einheitsmatrix mit einem iterativ
bestimmten sigma² multipliziert sein. Aber ich denke, dass man damit das
Filter falsch parametriert. Siehe zum Beispiel in dem obigen Link, dort
wird gesagt, dass man Q tatsächlich berechnen kann: Q=G*G^T*sigma_a^2
Allerdings habe ich nicht ganz verstanden, wie man auf G kommt. Die
beiden physikalischen Abhängigkeiten, die dort angegeben sind:
x=1/2dt²*x^{..}
x^{.}=dt*x^{..}
mögen zwar "richtig gemeint" sein, sind aber m.E. mathematisch falsch.
Oder kann mir das jemand erklären? Z.B. die zweite Gleichung: Die
Ableitung von x = Abtastzeit mal 2. Ableitung? Das kann doch nicht
stimmen!?
Modularier schrieb:> Hallo Tom,>> vielen Dank für deine Antwort. Natürlich habe ich auch schon das µC> Forum rauf- und runtergesucht und konnte aber keine zufriedenstellende> Antwort finden.>> Was du meinst dürfte ja schlicht die Einheitsmatrix mit einem iterativ> bestimmten sigma² multipliziert sein. Aber ich denke, dass man damit das> Filter falsch parametriert. Siehe zum Beispiel in dem obigen Link, dort> wird gesagt, dass man Q tatsächlich berechnen kann: Q=G*G^T*sigma_a^2>> Allerdings habe ich nicht ganz verstanden, wie man auf G kommt. Die> beiden physikalischen Abhängigkeiten, die dort angegeben sind:>> x=1/2dt²*x^{..}> x^{.}=dt*x^{..}>> mögen zwar "richtig gemeint" sein, sind aber m.E. mathematisch falsch.> Oder kann mir das jemand erklären? Z.B. die zweite Gleichung: Die> Ableitung von x = Abtastzeit mal 2. Ableitung? Das kann doch nicht> stimmen!?
Bei welchem Kalman Filter bist du jetzt?
Weil Sigma klingt nach UKF oder SPKF...
Hallo Tom,
vielen Dank nochmal für deine Antwort! Ich bin (noch) beim Standard KF.
Also mir ist schon klar, dass G unter der Annahme bestimmt wird, dass
für x und y jeweils die Geschwindigkeit gleich die Ableitung der
Position ist und eine einwirkende Störung (Beschleunigung) Auswirkungen
auf beide Zustände hat.
Die beiden dort aufgestellten Gleichungen mit denen man dann auf G kommt
sind aber m.E. falsch.
Die Abhängigkeit zwischen z.B. Beschleunigung und Geschwindigkeit ist
Ich verstehe nicht, wie man damit auf die Gleichungen aus dem Link bzw.
auf G kommt.
Modularier schrieb:> Hallo Tom,>> vielen Dank nochmal für deine Antwort! Ich bin (noch) beim Standard KF.>> Also mir ist schon klar, dass G unter der Annahme bestimmt wird, dass> für x und y jeweils die Geschwindigkeit gleich die Ableitung der> Position ist und eine einwirkende Störung (Beschleunigung) Auswirkungen> auf beide Zustände hat.>> Die beiden dort aufgestellten Gleichungen mit denen man dann auf G kommt> sind aber m.E. falsch.>> Die Abhängigkeit zwischen z.B. Beschleunigung und Geschwindigkeit ist> x˙k+1=x˙k+x¨kdt\dot{x}_{k+1} = \dot{x}_k +\ddot{x}_k dt> Ich verstehe nicht, wie man damit auf die Gleichungen aus dem Link bzw.> auf G kommt.
Die Schreibweise finde ich etwas unglücklich. x_k assoziert ja den
diskreten Vektor, wo dann aber die Punkte deplatziert sind. Ich bin
jetzt mit dem Ansatz nicht so vertraut, bin gerade selbst dabei ein EKF
zu entwickeln.
Ich muss mir die Sache nochmal genauer ansehen...
Ich kannte es bisher nur so, dass man die Q Matrix als Diagonalmatrix
vorgibt. Man kann glaube ich wenn man sie so vorgibt wie in dem Link
sehr gut sehen, mit welchem Element der Matrix Q sich die Schätzung
einer Zustandsgröße verändert und so diese Matrix bestimmen. So würde
ich das sehen.
Hallo Tom,
danke für die Antworten! Ich komme aus Hamburg.
Ich habe mal einen groben Einheitencheck gemacht und dabei entsteht in
diesem Beispiel zumindest schonmal kein Widerspruch, wenn man Q wie im
Link berechnet.
Die Diagonalmatrix findet man in vielen Quellen. Auf derselben Seite
gibt es noch einen Artikel über den EKF und dort wird Q ebenfalls mit
einer Diagonalmatrix vorgegeben.
Das KF oder EKF scheint mit einer Diagonalmatrix als Q zwar irgendwie zu
funktionieren, sollte aber erst durch eine richtige Parametrierung von Q
zur optimalen Funktionsweise kommen.
Q hat Einfluss auf P und somit auch auf S und K. Ich denke, wenn Q nicht
richtig parametriert ist, kann man sich die ganzen Rechnungen und somit
auch das KF gleich sparen.
Falls jemand eine Lektüre Empfehlung zum Thema KF hat, wäre ich dafür
sehr dankbar!
Lys A. schrieb:> Welche Größe des Schätzers möchtest du optimieren? Fehler?> Integral des> Fehlers über die Zeit? Max.Abweichung?
Fehler. Zudem sollte es max. dynamisch sein.
Eine allgemeine Lösung gibt es dafür meines Wissens nicht. Du kannst wie
du bereits geschrieben hast die Sensorsignale in ruhelage mal messen und
die rauschvarianz als fehlerleistung in Q angeben (zumindest als
Startpunkt für die Diagonale). Ansonsten hilft nur rumspielen mit der
Intuition, dass Q deine Modellierungsfehler, Unsicherheiten und
Sensorrauschen repräsentiert.
@Modularier:
wie siehst du die Schreibweise der Matrix Q in dem Link?
Ist es als Standardabweichung des Products zweier ZF-Variablen zu
verstehen oder als Kovarianz zwischen zwei ZFV?
Das Sigma irritiert mich, da es ja oft für die Standardabweichung
steht... In diesem Kontext mach die Kovarianz ja mehr sinn..
Die Frage habe ich mir natürlich auch schon gestellt. Ich weiß es nicht.
Wenn man 2 Standardabweichungen miteinander "verschmelzt" kenne ich
bisher immer die Formel
. In dem Link ist jedoch
, die Standardabweichungen werden also miteinander multipliziert.
Ich hab mal in das Buch "Kalman Filter for beginners" von Phil Kim
reingeschaut. Dort wird Q nur durch eine Diagonalmatrix angegeben.
Ich denke das Beispiel aus dem Link ist falsch: x und y sind voneinander
unabhängige Zustandsvektoren. Dementsprechend, kann auch eine
Standardabweichung von der x Seite keinen Einfluss haben auf die Fehler
und die Standardabweichung auf der y Seite, was aber bei der Berechnung
von Q hier offensichtlich der Fall ist.