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...
Modularier schrieb: > Hallo, > > > Auf dieser Seite wird die Berechnung ein bisschen erklärt: > > http://www.cbcity.de/das-kalman-filter-einfach-erk... > Wie wird denn das G hier bestimmt? Aus welcher Annahme geschieht dies?
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...
Woher kommst du? Vllt wohnen wir ja nicht weit auseinander und wir können uns gegenseitig helfen... :D
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!
Ich kann das Buch "Optimal State Estimation: Kalman, H Infinity, and Nonlinear Approaches 1st Edition" empfehlen.
Welche Größe des Schätzers möchtest du optimieren? Fehler? Integral des Fehlers über die Zeit? Max.Abweichung?
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.
Das ist ein super Kurs für Kalman Filter und EKF https://www.youtube.com/watch?v=B2qzYCeT9oQ&list=PLpUPoM7Rgzi_7YWn14Va2FODh7LzADBSm
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.
Bei der oberen Gleichung meinte ich natürlich die Standardabweichung, nicht die Varianz:
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.