Angenommen, ich möchte die Position eines Autos in 2D verfolgen. Was ich als Sensordaten bekomme, ist meine aktuelle Position. Mein Zustand ist also
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 sind
Was ich wählen kann, ist meine Beschleunigung bei jedem Zeitschritt ( Zeitschritte haben die Länge ):
Da der Kalman-Filter ein linearer Filter ist, lautet mein Zustandsmodell:
Die Messung ist vom Zustand abhängig, mit etwas Rauschen :
mit , . Da kann man die Beschleunigung / Geschwindigkeit in die Richtungen zerlegen und die Gleichung für die neue Position lautet
In Anbetracht unseres Staatsmodells erhalten wir also:
Ist dies bisher ein vernünftiges Szenario / Ansatz für den Kalman-Filter?
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?
Für den Anfangszustandsparameter würde ich zwei warten:
Vorhersageschritt
Die Zustandsvorhersage funktioniert wie oben:
Kovarianzvorhersage:
- Woher bekomme ich die Prozessfehlerkovarianz ? Welche Eigenschaften muss es haben? Ich denke positiv definitiv? Was bedeutet diese Matrix?
Innovationsschritt
Innovation, die die Messung mit der Vorhersage vergleicht:
- (gelöst) : Woher bekomme ich die Beobachtungsmatrix ? Was bedeutet das?
BEARBEITEN :
Ich habe es bekommen. In meinem Beispiel ist da es die Beziehung zwischen dem Zustand und der Messung codiert.
Innovationskovarianz:
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 (?).
Kalman Gain:
Nun endlich das Update zu Zustand und Kovarianz:
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
quelle
Antworten:
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.
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.0 x0
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.
quelle