Quantcast
Channel: Kommentare zu: Das Extended Kalman Filter einfach erklärt
Viewing all 38 articles
Browse latest View live

Von: Motorblog » Alpha-Beta-Filter – der kleine Bruder vom Kalman Filter

$
0
0

[…] häufigsten gelesen hier im Blog, sind die Beiträge zum Kalman Filter (Teil 1 & Teil 2 & EKF). In den Kommentaren und Emails, die ich dazu bekomme, zeigt sich allerdings, dass da mit Kanonen […]


Von: christian

$
0
0

Hallo,

erstmal danke für die hilfreichen Erklärungen. Kurze Frage um erweiterten Modell (CTRV), ich benötige den Fall der Positionsschätzung im Tunnel, wenn keine bzw. nur noch unsichere GPS-Lokalisierungen möglich sind.
Dann würde ich die Position gerne weiter schätzen, zum Beispiel eben auf Basis des ESP Geschwindigkeitssignal und der Gierrate, die ebenfalls vom ESP kommt.

Ich habe dies mal versucht zu simulieren, indem ich einfach die ersten GPS Werte noch eingelesen habe aber dann im Weiteren den Filter mit latitude = 0 und longitude = 0 gefüttert habe.
Da kommen jedoch völlig unbrauchbare Positionsschätzwerte heraus. Wenn ich immer 0 eingebe, so passt die Schätzung ganz gut, allerdings natürlich nicht Positionstreu. Hier hatte ich versucht nur die erste GPS-Koordinate einzuspeisen und dann basierend auf dieser weiter ohne GPS (genullt) zu schätzen, was allerdings nicht funktioniert hatte. Hätten Sie hier eine Idee?

Vielen Dank und Gruß

Von: Paul Balzer

$
0
0

Hallo Christian,
wenn du die GPS Position einfach auf 0.0/0.0 setzt, dann sagst du dem Kalman Filter, dass es die Position bitte auf’s Meer verschieben soll (siehe: https://www.google.de/maps/@0.0,0.0,6z), denn Lat/Lon von 0.0/0.0 ist ja auch eine Position auf der Welt, nämlich da wo sich Nullmeridian und Äquator schneiden.

Wenn du dem Filter sagen willst, dass du keine GPS Position hast, dann musst du das im Correction Schritt in der Measurement Matrix JH machen. Siehe `if GPS[filterstep]:` auf https://github.com/balzer82/Kalman/blob/master/Extended-Kalman-Filter-CTRV.ipynb?create=1

Da unterscheidet sich die Mess-Matrix dahingehend, dass du wenn GPS vorhanden ist die Positionszustände aktualisierst, wenn keine GPS Position vorhanden ist, schreibst du eine 0 in die Mess-Matrix und der Zustand wird nicht aktualisiert vom Correction-Step. Natürlich integrierst du damit die Messfehler von Geschwindigkeits- und Gierratensensor auf. Je nachdem wie gut die sind, wirst du nach ein paar Sekunden/Minuten relevante Fehler in der Positionsschätzung haben.

Hilft dir das?

Von: Christian

$
0
0

Hallo Paul,

danke für deine Antwort. Das ist soweit klar!
Jetzt habe ich noch eine Frage, ich möchte die Rechenschrittweite verändern, d.h. dass die Messwerte der Sensoren (Gierrate, Geschwindigkeit) alle 100 ms kommen und die GPS-Position alle 1s einmal.
Ich habe mal die Messdaten adaptiert, sodass ich z.B. nur jeden 5 Messwert und jeden 50 GPS Wert verwende (um die 50Hz down zu samplen).
Nun bekomme ich jedoch „stufige“ Verläufe, die der EKF berechnet.
Würde das so noch funktionieren, ggf. durch Adaption der Process Noise Covariance Matrix Q? Wenn ja wie müsste die dann aussehen? Oder bräuchte ich hierbei ein anderes Modell?
Kann der EKF eigentlich „asynchron“ getriggert werden oder müssen die Daten von GPS und Sensoren „aligned“ werden (Interpolation der GPS-Werte?).

Danke und viele Grüße

Von: Paul Balzer

Von: Paul Balzer

$
0
0

Was mir noch einfällt: Wenn du mit einem Sensor/Messung direkt einen Wert im Zustandsvektor (z.B. die Position) updatest, dann kann die natürlich ‚springen‘.
Umso kleiner der Wert in Q (Varianz des Prozessrauschens) im Vergleich zum entsprechenden Wert in R ist (Varianz des Messrauschens), umso weniger wird es sich durch die Messung beeinflussen lassen und springen. Allerdings ist dann dein Prozess auch träger, d.h. in Kurven o.ä. wird er nicht hinterher kommen.
Hier ein Tracking, wo du den Unterschied zwischen 50Hz und 1Hz siehst: http://mechlab-engineering.de/wordpress/wp-content/uploads/2014/03/Extended-Kalman-Filter-CTRV-Adaptive-Trajectory.png

Von: Christian

$
0
0

Danke für deine Ausführungen! Ich werde mal aufgrund der langsameren Sample-Rates des Prozesses das CTRA Dynamikmodell ausprobieren.
Finde hierzu allerdings nicht allzu viele Infos, hättest du hier ein paar Quellen für mich?

Von: RandyW.

$
0
0

Was muss ich tun wenn keine Messung vorhanden ist? Nehme ich dann nur das Kinematikmodell (also nur x=gA(x,u))? oder muss ich auch immer die Covariance Pt mitberechnen?


Von: RandyW.

$
0
0

Was muss ich tun wenn keine Messung vorhanden ist? Nehme ich dann nur das Kinematikmodell (also nur x=gA(x,u))? oder muss ich auch immer die Covariance Pt mitberechnen?

Von: Paul Balzer

$
0
0

Die Kovarianz-Matrix P muss in jedem Fall mit berechnet werden. Denn wenn du keine Messung hast, wird die im ‚Prediction‘ Step immer größer und größer (es kommt ja +Q dazu) und das zeigt dem Filter, dass es immer weniger sicher ist. Du hast ja keine Messungen.
Wenn du keine hast, kannst du den Correction Step einfach weg lassen (man sagt das Filter läuft ‚Open Loop‘) oder du setzt die Messfunktion `h` auf Nullvektor (0).

Von: Torben

$
0
0

Hallo Paul,
danke für die interessanten Ausführungen. Ich habe eine Frage zum Matlab Skript.
Im Corrector Schritt wird der neue geschätzte Zustandsvektor zu \(x_{est} = x1 + K \cdot (y – h(x1))\) berechnet.
Wenn ich das richtig nachvollzogen habe, so wird in einem deinem Skript die Messung \(y\) zum Zeitpunkt \(t0\) aufgenommen, aber die Differenz zur „virtuellen“ Messung \(h(x1)\) zum Zeitpunkt \(t1\) gebildet. Müsste \(y\) nicht zum Zeitpunkt \(t1\) gemessen werden, konkret statt \(h(s)\), \(h(f(s))\) nehmen ?

Eine andere Frage betrifft die Übergangsmatrix. Üblicherweise habe ich kontinuierliche Modelle in Zustandsnormalform \(x_{dot} = A \cdot x + B \cdot u\), wie kommt man denn von dieser in die diskrete Form der Übergangsmatrix \(x_{t+1} = Phi(t) \cdot x(t)\) ?

Von: PES4 | Andreas' Blog

$
0
0

[…] gesucht Das Kalman-Filter einfach erklärt [Teil 1] Das Kalman Filter einfach erklärt [Teil 2] Das Extended Kalman Filter einfach erklärt Kalman Filter For Dummies IMU Data Fusing: Complementary, Kalman, and Mahony Filter Combine […]

Von: Motorblog » Von der Theorie auf die Rennstrecke: Kalman-Filter für die Antriebsschlupfregelung

$
0
0

[…] eigenen Projektes mit dem Kalmanfilter beschäftigt und dabei viel von den Blogeinträgen KF 1/KF 2/EKF gelernt. Da ich auch aufgrund des Standortvorteils direkt mit Paul über die Gestaltung fachsimpeln […]

Von: htw-mechlab.de » Sensordatenfusion mit Extended Kalman Filter (EKF)

Von: Anonymous

$
0
0

˚Ʒ˚ݥ֥ɤΥ륤 ȥͥ롢å᥹ե8` iphone8`ƷB餷Ƥޤ“iphonecasesjpbuycheap777″˚ݤiPhone8/plusЩ`ʤdiphone`,ͥiphone8`,륤ȥiPhoneX`,åiphone8plus`,ޥۥ`֥ɥԩ`Dͨ؜.
ͥiphone` http://www.cyclinghalloffame.com/


Von: Paul Balzer

$
0
0

Hallo Martin,
ich habe den Artikel noch mal etwas überarbeitet, weil ich die Matlab Lösung nicht so schön finde. Die ist in der Tat verwirrend, weil dort numerisch differenziert wird und auch mit den Funktionen hin & her gesprungen wird.
Schau dir mal das eingebettete Video an mit der Python Implementierung, dann wird es deutlicher hoffe ich!
Grüße

Von: Andreas

$
0
0

Hallo Herr Balzer,

eine schöne Einführung zum Thema haben Sie hier erstellt. Was ich mich bei diesem Part zum EKF Frage ist folgendes:
Die Drehwinkelgeschwindigkeit im letzten Diagramm sieht “extrem” stark verrauscht aus. Die Messpunkte liegen auf den richtigen Statezustand. Kann es sein, dass bei bei der Kovarianz für die Messung anstatt:
R=r^2 ein R=r^2*eye(2,2) gemeint war?

Schönen Gruß
Andreas

Von: Manajemen

$
0
0

Can you provide additional details on the advantages or considerations of using Python for implementing EKF compared to other programming languages, and are there specific libraries or tools that are commonly used in EKF implementations in Python?

Viewing all 38 articles
Browse latest View live