Forum: Mikrocontroller und Digitale Elektronik Filter direkt auf Quaternions anwenden


von Vincent H. (vinci)


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

von Hei (Gast)


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.

von Seano L. (Gast)


Lesenswert?

Hei schrieb:
> einen kleiner Controller. Ich wuerde mir eher was mit Integern
> ueberlegen.
Ja, würde ich auch sagen, ist eher was für Grafikkarten und für nen 
Helicopter weit übertrieben, der Aufwand lohnt sich nicht.

von Vincent H. (vinci)


Lesenswert?

Und wie wende ich z.B. einen einfachen diskreten Tiefpass auf ein 
Quaternion an?

Elementweise?
Oder muss man da irgendwelche anderen Rechenregeln beachten?

von Hei (Gast)


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.

von Vincent H. (vinci)


Angehängte Dateien:

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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.