Wie wähle ich die Parameter eines Kalman-Filters aus?

8

Angenommen, ich möchte die Position eines Autos in 2D verfolgen. Was ich als Sensordaten bekomme, ist meine aktuelle Position. Mein Zustand ist also

x=(xyx˙y˙)

Dabei ist die Position in m von einem vordefinierten Punkt entfernt, ist die Geschwindigkeit in m / s zur Startzeit und ist die Beschleunigung in . Die Messungen sindxR.x˙R.x¨R.m/.s2

z=(x(M.)y(M.))

Was ich wählen kann, ist meine Beschleunigung bei jedem Zeitschritt ( Zeitschritte haben die Länge ):icht

u=(x¨(u)y¨(u))

Da der Kalman-Filter ein linearer Filter ist, lautet mein Zustandsmodell:

x(P.)=EINx+B.u

Die Messung ist vom Zustand abhängig, mit etwas Rauschen v :

z=H.x+v

mit EINR.4×4 , H.R.2×4 . Da kann man die Beschleunigung / Geschwindigkeit in die Richtungen zerlegen und die Gleichung für die neue Position lautet

xnew(t)=x+x˙t+0,5x¨t2ynew(t)=y+y˙t+0,5y¨t2x˙new(t)=x˙+x¨ty˙new(t)=y˙+y¨t

In Anbetracht unseres Staatsmodells erhalten wir also:

x(P.)=(10t0010t00100001)EINichx+(0,5t2000,5t2t00t)B.ichuich
  1. Ist dies bisher ein vernünftiges Szenario / Ansatz für den Kalman-Filter?

  2. Wie wähle ich die anfängliche Unsicherheitskovarianzmatrix / den Anfangszustand ? Ich habe gehört, dass man hauptsächlich die Matrixwerte "groß" macht - was auch immer das bedeutet. es beispielsweise eine Diagonalmatrix sein, ist für einige ? Zum Beispiel ist da der Erddurchmesser ungefähr und wenn mehr als für ein Auto niemals passieren wird?P.0R.4×4x

    P.0=(ein10000ein20000ein30000ein4)
    einR.+ein1=ein2=2000000040000 kmein3=ein4=90324 km / h

    Für den Anfangszustandsparameter würde ich zwei warten:

    x0=(x- -1(M.)y- -1(M.)x- -1(M.)- -x- -2(M.)y- -1(M.)- -y- -2(M.))

Vorhersageschritt

Die Zustandsvorhersage funktioniert wie oben:

xich+1(P.)=EINichxich+B.ichuich

Kovarianzvorhersage:

(P)P.ich+1(P.)=EINP.ichEINT.+Q.mitQ.R.4×4.
  1. Woher bekomme ich die Prozessfehlerkovarianz ? Welche Eigenschaften muss es haben? Ich denke positiv definitiv? Was bedeutet diese Matrix?Q.

Innovationsschritt

Innovation, die die Messung mit der Vorhersage vergleicht:

y~ich+1=zich+1- -H.xich+1(P.)
  1. (gelöst) : Woher bekomme ich die Beobachtungsmatrix ? Was bedeutet das?H.R.2×4

BEARBEITEN :

Ich habe es bekommen. In meinem Beispiel ist da es die Beziehung zwischen dem Zustand und der Messung codiert.

H.=(10000100),

Innovationskovarianz:

S.ich+1=H.P.ich+1(P.)H.T.+R.

Für die Messfehlerkovarianz muss ich etwas über die Funktionsweise meiner Sensoren wissen. Ich denke, dies ist normalerweise eine diagonale Matrix, da die Sensoren unabhängig sind (?).R.R.2×2

Kalman Gain:

K.ich+1=P.ich+1(P.)H.T.S.ich+1- -1

Nun endlich das Update zu Zustand und Kovarianz:

xich+1=xich+1(P.)+K.ich+1y~
P.ich+1=(ich- -K.ich+1H.)P.ich+1(P.)

Quellen:

  • http://greg.czerniak.info/guides/kalman1/ (Ich habe dies beim Schreiben dieser Frage gefunden - es hat bereits einige meiner Fragen beantwortet, die ich hoffentlich entfernt habe.)
  • Verschiedene Vorträge am KIT
Martin Thoma
quelle
martin-thoma.com/kalman-filter ist ein Artikel, den ich basierend auf dieser Frage und den Antworten geschrieben habe.
Martin Thoma
Bitte beachten Sie unsere beiden Artikel in der Dezember 2016-Ausgabe der hier beigefügten Zeitschrift SADHANA. Prof.MRAnanthasayanam.
ANANTHASAYANAM
@ANANTHASAYANAM: Ich habe Ihre Antwort in einen Kommentar umgewandelt. Es wäre gut, wenn Sie in diesen Papieren eine Antwort hätten, um Links zu ihnen bereitzustellen.
Peter K.

Antworten:

5

Ist dies bisher ein vernünftiges Szenario / Ansatz für den Kalman-Filter?

Antwort 1: Ja, Ihr Modell sieht vernünftig aus. Sie behandeln die Beschleunigung jedoch als konstant. Wenn sich dies in Ihrem Experiment ändert, sollten Sie dies in Ihre Systemfehlermatrix .Q.

Wie wähle ich die anfängliche Unsicherheitskovarianzmatrix / den Anfangszustand ?P.0R.4×4x

Antwort 2: ist Ihr ursprünglicher Zustand Kovarianz. Das drückt aus, wie viel Sie über die anfängliche Schätzung des Zustands wissen . Wenn Sie keine Ahnung haben, setzen Sie normalerweise wobei groß ist. Siehe zum Beispiel diese Antwort, die .P.0x0

P.0=σ2ich4
σ2σ2=1000

Woher bekomme ich die Prozessfehlerkovarianz ? Welche Eigenschaften muss es haben? Ich denke positiv definitiv? Was bedeutet diese Matrix?Q.

Antwort 3: Diese Matrix drückt Ihren Systemfehler aus. Die Einträge in dieser Matrix stehen für die Kovarianz der entsprechenden Werte in Ihrem Systemmodell. Wenn Sie beispielsweise davon ausgehen, dass die Beschleunigung so konstant ist wie Sie, sich aber in der realen Welt ändern wird, möchten Sie möglicherweise die entsprechende Kovarianz hier einfügen.

Abgesehen davon ist es immer eine gute Idee, viel mit Ihren und Matrizen zu experimentieren . Wenn Sie größer machen, hängt dies mehr von Ihren Live-Daten ab. Wenn Sie größer machen, hängt dies mehr von Ihrer Vorhersage ab. Selten ist ein Modell perfekt ohne Tuning.Q.P.Q.P.

Emiswelt
quelle
Ich dachte, ich könnte das in jedem Zeitschritt anpassen und damit die Beschleunigung in jedem Schritt anpassen? uich
Martin Thoma
1
Antwort 2: Ich dachte, würde meinen Messfehler bereits codieren und würde die aktuelle Unsicherheit über den Zustand codieren? R.P.
Martin Thoma
@ MartinThoma 1: Ich dachte du sagtest du hättest nur Entfernungsmessungen? Wie erhalten Sie die Beschleunigung, wenn Sie sie nicht messen können? 2: Sie sind richtig. ist Ihre Anfangszustandskovarianz und ist die aktuelle Zustandskovarianz. Im Allgemeinen ist unabhängig von Messungen. Gemäß Ihrer Gleichung ( ) [die ich gerade markiert habe] entwickelt sich unabhängig von anderen Ereignissen im System , sofern oder nicht zeitlich variieren . P.0P.kP.kP.EINQ.P.
Peter K.
2
@Emiswelt: Deine Antwort 2 scheint mir falsch. Die Frage war: Wie wähle ich die anfängliche Unsicherheitskovarianzmatrix aus? was bezieht sich nicht auf den Messfehler?
Peter K.
2
@ Emiswelt: OK. Ich habe bearbeitet. Lassen Sie mich wissen, ob es in Ordnung ist. Ich habe eine etwas andere Einstellung zu Punkt 3 ... was mich zurück zu Punkt 1 führt ... :-) Ich werde es ein wenig schmoren lassen, bevor ich eine Antwort verfasse.
Peter K.