Startseite
Forum
Fragen
Suchen
Formeleditor
Über Uns
Registrieren
Login
FAQ
Suchen
Foren-Übersicht
->
Sonstiges
Antwort schreiben
Benutzername
(du bist
nicht
eingeloggt!)
Titel
Nachrichtentext
Smilies
Weitere Smilies ansehen
Schriftfarbe:
Standard
Dunkelrot
Rot
Orange
Braun
Gelb
Grün
Oliv
Cyan
Blau
Dunkelblau
Indigo
Violett
Weiß
Schwarz
Schriftgröße:
Schriftgröße
Winzig
Klein
Normal
Groß
Riesig
Tags schließen
Schreibt eure Formeln hier im Board am besten mit Latex!
So gehts:
Latex-Kurzbeschreibung
|
Formeleditor
[quote="dermarkus"]An welcher Stelle [latex]\vec X_0[/latex] hast du die Ableitungen ausgerechnet? Muss diese Stelle nicht als Konstante noch mitberücksichtigt werden? Vergleich mit einem eindimensionalen Fall: Die linearisierte Annäherung [latex]f_{\rm lin}(x)[/latex] einer Kurve [latex]f(x)[/latex] in der Nähe der Stelle [latex]x_0[/latex] ist die Tangente an die Kurve in diesem Punkt: [latex]\left. f_{\rm lin}(x) \right |_{bei \, der \, Stelle \, x_0} \approx \frac{\dd}{\dd x} f(x_0) \cdot (x-x_0) + f(x_0)[/latex] Müsste dann nicht dementsprechend deine linearisierte Näherung [latex]\vec h_{\rm lin}[/latex] [latex]\vec h_{\rm lin}(\vec X) = \underline{\underline H}(\vec X_0) \cdot (\vec X - \vec X_0) + \vec h(\vec X_0)[/latex] sein, wenn du deine Matrix [latex]\underline{\underline H}(\vec X_0)[/latex] aus den Ableitungen an der Stelle [latex]\vec X_0[/latex] bildest?[/quote]
Optionen
HTML ist
aus
BBCode
ist
an
Smilies sind
an
BBCode in diesem Beitrag deaktivieren
Smilies in diesem Beitrag deaktivieren
Spamschutz
Text aus Bild eingeben
Alle Zeiten sind GMT + 1 Stunde
Gehe zu:
Forum auswählen
Themenbereiche
----------------
Mechanik
Elektrik
Quantenphysik
Astronomie
Wärmelehre
Optik
Sonstiges
FAQ
Sonstiges
----------------
Off-Topic
Ankündigungen
Thema-Überblick
Autor
Nachricht
mzenzes
Verfasst am: 02. Jun 2008 10:20
Titel:
Hallo Markus
Ja, du hast recht. Das habe ich die Tage schon
herausgefunden
- eigentlich auch logisch, wenn man dich das durchließt ;-)
In meinem Fall (Kalmanfilterung mit OpenCv) ist die Jacobische bei der Matrizenrechnung durchaus nötig. Für die Vorhersage des nächsten Systemzustandes nehme ich dann entweder die linearsisierung (ungenau). Oder einfach direkt das echte Gleichungssystem (das ich ja kenne).
Aber danke nochmal für eine Antwort.
mit besten Grüßen
mzenzes
dermarkus
Verfasst am: 02. Jun 2008 02:44
Titel:
An welcher Stelle
hast du die Ableitungen ausgerechnet? Muss diese Stelle nicht als Konstante noch mitberücksichtigt werden?
Vergleich mit einem eindimensionalen Fall: Die linearisierte Annäherung
einer Kurve
in der Nähe der Stelle
ist die Tangente an die Kurve in diesem Punkt:
Müsste dann nicht dementsprechend deine linearisierte Näherung
sein, wenn du deine Matrix
aus den Ableitungen an der Stelle
bildest?
mzenzes
Verfasst am: 23. Mai 2008 12:02
Titel: nicht-linearer Kalmanfilter; Jacobische; Linearisierung
Hallo Leute,
wiedermal schlage ich mich erfolglos mit dem rum was ich eigentlich können sollte ;-)
Es dreht sich um die Anwendung eines nicht-linearen Kalmanfilters mit der OpenCv-Library.
Dort habe ich mich eingearbeitet, und stehe nun vor dem Problem, das ich meine Messgleichung linearisieren muss, um sie im Filter verwenden zu können. Dazu schreibt die
Wikipedia
das ich die Linearisierung mittels der Jacobischen Matrix vornehmen kann. Gut, kein Problem. Oder...?
(Im Kalman-Filter wird aus dem aktuellen Systemzustand unter anderem der zu erwartende Messvektor geschätzt, um ihn dann mit dem echten im Nachhinein zu vergleichen. Dann kann man etwas über die Güte der Filterung und Messung aussagen. Diese vorhersage wird entweder mit der Systemmatrix C gemacht, oder aber mit der linearisierung des Gleichungssystems. In dem Fall muss sie jeden Durchlauf neu linearisiert werden; Gleichungnen in Octave-Schreibweise)
Meine 3x1 Messgleichung h(X), mit dem 3x1 Systemzustandsvektor X (Messvektor in [m/s²], Zustand in [rad]):
Code:
g = 9.81;
h = [ -sin(X(2)) ;
cos(X(2))*sin(X(1)) ;
cos(X(2))*cos(X(1)) ]*g;
Dieses Gleichungssystem muss ich nun mittels der Jacobischen Matrix zur Matrix H linearisieren.
Hierbei ist dh1/dX(1) die Ableitung der ersten Gleichung nach der ersten Unbekannten usw:
Code:
H = [ dh1/dX(1), dh1/dX(2), dh1/dX(3) ;
dh2/dX(1), dh2/dX(2), dh2/dX(3) ;
dh3/dX(1), dh3/dX(2), dh3/dX(3) ];
Oder, ausgeschrieben:
Code:
H = [ 0 , -cos(X(2)), 0 ;
cos(X(1))*cos(X(2)) , -sin(X(2))*sin(X(1)), 0 ;
-sin(X(1))*cos(X(2)) , -sin(X(2))*cos(X(1)), 0 ]*g;
Nach meinem Verständniss muss ich nun, um mittels dieser Matrix wiederrum den Messvektor zu erhalten (quasi nur zur Probe Rückwärts rechnen), den Zustandsvektor numerisch verrechnen (einsetzen), und dann die Matrix mit X malnehmen.
Also H(X)*X. Klappt natürlich nciht...
Als Beispiel:
Code:
X = [0.1;0;0];
H = [ 0, -1, 0 ;
0.995, 0, 0 ;
-0.0998, 0, 0 ]*g;
H*X = [ 0 ; 0.976 ; -0.0979 ];
Anhand der echten Messgleichung h ermittele ich aber den zu erwartenden Messvektor folgendermaßen:
Code:
h = [ -0 ; 0.979 ; 9.760 ];
Was auch gemessen wird...
Tja, wo hab ich den Bock eingebaut? Was mache ich falsch?
-Die Jacobische ist meiner Meinung nach richtig, die Rechenvorschrift ja ziemlich eindeutig. Und ein bisschen sin/cos Ableiten...
-Ist das Verfahren (Jacobische) ansich schon ungeeignet? Findet sich aber in vielen Beispiel Kalman-Applikationen...
-Reihenfolge der Matrizenmultiplikation durcheinander? Eigentlich nicht, ausserdem muss ich ja auf die Dimensionen achten...
-Die numerische ausgerechnete H-Matrix sieht ja Zahlentechnisch ganz schön aus, alles was ich brauche kommt drin vor
-Da X in [rad] angegeben ist, wird wahrscheinlich selten sowas wie 1 als Element dabei sein, und durch dieses multiplizieren (H*X) erhalte ich dann immer sehr kleine Ergebnisse. Also ist irgendwo ein prinzipieller Fehler?