Forum: Digitale Signalverarbeitung / DSP / Machine Learning Kalman Filter: Berechnung von Q


von Modularier (Gast)


Lesenswert?

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!

von Tom Heinze (Gast)


Lesenswert?

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.

von Modularier (Gast)


Lesenswert?

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!?

von Tom Heinze (Gast)


Lesenswert?

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...

von Tom Heinze (Gast)


Lesenswert?

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?

von Modularier (Gast)


Lesenswert?

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.

von Tom Heinze (Gast)


Lesenswert?

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...

von Tom Heinze (Gast)


Lesenswert?

Woher kommst du? Vllt wohnen wir ja nicht weit auseinander und wir 
können uns gegenseitig helfen... :D

von Tom Heinze (Gast)


Lesenswert?

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.

von Modularier (Gast)


Lesenswert?

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!

von Tom Heinze (Gast)


Lesenswert?

Ich kann das Buch "Optimal State Estimation: Kalman, H Infinity, and 
Nonlinear Approaches 1st Edition" empfehlen.

von Lys A. (jazz_89)


Lesenswert?

Welche Größe des Schätzers möchtest du optimieren? Fehler? Integral des 
Fehlers über die Zeit? Max.Abweichung?

von Tom Heinze (Gast)


Lesenswert?

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.

von Khilfe (Gast)


Lesenswert?


von sdfsdfsdf (Gast)


Lesenswert?

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.

von Tom Heinze (Gast)


Lesenswert?

@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..

von Modularier (Gast)


Lesenswert?

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.

von Modularier (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.