Filter direkt auf Quaternions anwenden

OP #3413411
Lesenswert?

Grüß euch

Hat jemand Erfahrung damit Filter direkt auf Quaternions anzuwenden? 
Funktioniert sowas überhaupt?

Ich verwende aktuell eine Quaternion-Darstellung in einem selbst 
gebauten Quadrocopter. Dabei werden im Code Sensor-Signale skalar 
tiefpass gefiltert. Schön wärs natürlich, diese Filter auch direkt in 
Quaternions zu rechnen, jedoch bekomm ich meinen Kopf irgendwie nicht 
drum herum.

Besonders die Tatsache, dass nach Rechenoperationen stets normalisiert 
werden muss will nicht so recht miteinspielen. Solang ich einen Filter 
stets auf ein ganzes Quaternion anwende, verändere ich jedes Element in 
dem Quaternion um den gleichen Faktor. Nun zu normalisieren ist somit 
sinnlos, weil man damit erst wieder am Anfang steht.

Literatur bezüglich Quaternion Filtern findet man auch so gut wie gar 
nicht? Wird sowas überhaupt gemacht?

mfg
Vincent
Gast #3413589
Lesenswert?

Ja. sicher wird das gemacht. Graphik mit Quaternionen zu rechnen hat den 
Vorteil einfacherer Drehungen im 3D Raum. Der Preis dafuer sind die 
Normalisierungen. Man will ja nicht mit double rechnen miuessen. Fuer 
einen Quadrokopter ... moeglicherweise etwas uebertrieben.

Bei Drehungen im 3D Raummuss man erst auf den Urspung zurueck, dann 
ent-Euler'n, die Drehung machen und wieder Euler'n. Eher aufwendig fuer 
einen kleiner Controller. Ich wuerde mir eher was mit Integern 
ueberlegen.
Gast #3413931
Lesenswert?

Einen Tiepass auf ein Quaternion? Ok. Man hat ein Soll-Quaternion, und 
ein Ist-Quaternion. Das Ist-Quaternion ist das Soll-Quaternion, mit den 
einzelnen Komponenten ge-tief-passt. Wie man eben einen Tiefpass 
rechnet, auf jede Komponente angewendet.
OP #3414004
Lesenswert?

Ok, dann kapier ich irgendwas anderes nicht.
Ich hab mir der Einfachkeit halber die ganze Sache in Matlab angesehn.

Um die Richtigkeit des Filters überprüfen zu können hab ich ihn einmal 
komplett skalar und einmal im Quaternion Formalismus gerechnet. Als 
Inputs hab ich schlichtweg quantisierte Sinus-Schwingungen verschiedener 
Amplituden (pi/4, pi/8 und 0) genommen. Die Zeitkonstanten der Filter 
sind aktuell komplett willkürlich gewählt (aber natürlich bei beiden 
Versuchen ident).

Um die Sinus-Schwingungen, die quasi meine "Eingangs-Winkel" darstellen 
in ein Quaternion umzusetzen, hab ich mich der Aerospace-Toolbox bedient 
und dort einen entsprechenden Block hergenommen. Das erste dabei 
auftretende Problem ist, dass dieser Block die Umwandlung von Euler 
Winkeln in ein Quaternion in einer entsprechenden Sequenz rechnet, 
sprich 'XYZ', 'YZX', usw. usf.

Dadurch ist das entstehende Quaternion ja schon einmal in irgendeiner 
Form "verzerrt", bzw. entspricht nicht der wahren gleichzeitigen Drehung 
um eine einzelne Achse. Soweit so gut. Weiters kommen nun ein paar 
Winkel-Funktionen hinzu, die wohl in irgendeiner Form für numerische 
Rechenfehler sorgen... Spätestens bei der Rückrechnung vom Quaternion zu 
den Euler Winkeln.

Was mich aber doch stutzig macht ist die Abweichung meines letzten 
Winkels, den ich am Eingang mit stets "0" angenommen hab. -> Die Grafiph 
verdeutlicht das.

Gelb/Rot - Winkel 1
Lila/Grün - Winkel 2
Blau/Türkis - Winkel 3

Während die ersten beiden Winkel noch ganz gut stimmen bekomm ich beim 
3.Winkel 0.16-0.17 radiant raus, obwohl der Eingang 0 ist?
Das kann doch nicht allein durch die Verzerrung in der Quaternion 
Darstellung kommen?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren