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
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.
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.
Und wie wende ich z.B. einen einfachen diskreten Tiefpass auf ein Quaternion an? Elementweise? Oder muss man da irgendwelche anderen Rechenregeln beachten?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.