ich möchte gerne die Orientierung eines Flugobjektes im 3D darstellen. Dazu verwende ich Sensordaten (Quaternionen, auch Eulerwinkel oder Matrix wäre möglich). Allerdings entspricht die Orientierung der Hauptachsen des Sensors nicht denen des Flugobjektes. Es ist auch nicht möglich den Zusammenhang direkt zu vermessen sondern nur indirekt über die gemessenen Sensordaten.
Ich würde dazu das Flugobjekt kurzzeitig eine reine Nickwinkelbewegung ausführen lassen (Winkelbewegung um die Querachse = horizontale Achse quer zur Flugrichtung). Ich nehme an, dass ich mit den zwei Quaternionen am minimalen und am maximalen Nickwinkel den Vektor der Querachse berechnen kann.
Ich habe das schon an einem einfachen erfolgreich Beispiel wie folgt ausprobiert: Als Bedingung habe ich formuliert, dass ein Vektor p mit (p1, p2, p3)T in den beide über die Quaternionen (q1 und q2) definierten Koordinatensystemen den selben Vektor ergeben muss, d.h. q1pq1* = q2pq2*. Die Variablen p1, p2, p3 habe ich dann aus dem Gleichungssystem, dass sich für den skalaren und die 3 Komponenten des imaginären Teils ergibt berechnet.
Allerdings war dies schon bei einer einfachen Drehung (+ 60° und -60°) um die y-Achse relativ aufwendig. Trotz dieses erfolgreichen Beispiels bin ich mir nicht restlos sicher, ob dies auch verallgemeinert funktioniert. Zudem gibt es doch bestimmt noch einen mathematischen Kniff und ich kann mir die aufwendige Ausformulierungsarbeit und das Lösen des Gleichungssystems sparen.
Als weitere Vorbereitung steht noch die Ableitung der Quaternion für die Überführung des Sensor-Koordinatensystems in das flugobjektfesten Koordinatensystem an. Ich schätze, dass ich dazu aus p und dem Gravitationsvektor (aus den Daten des integrierten 3-achs Beschleunigungssensor) jeweils normiert das Kreuzprodukt bilde. Alle drei normiert ergeben die Drehmatrix von Sensor- in das flugobjektfeste Koordinatensystem (die Komponenten der Vektoren sind die Koeffizienten der Matrix). Aus dieser Drehmatrix könnte ich dann dafür die Quaternion ableiten. Oder geht das auch einfacher?
Um dann die Punkte für die Darstellung des bewegten Flugobjekts berechnen zu können, wird für jeden Datensatz die jeweils aktuelle Quaternion des Sensors noch mit der Quaternion des flugobjektfesten Koordinatensystems multipliziert.
Über ein Nachvollziehen meiner Gehirnakrobatik, Verbesserungsvorschläge oder gute Links wäre ich sehr dankbar.
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
hohe_berge hat geschrieben:
Allerdings entspricht die Orientierung der Hauptachsen des Sensors nicht denen des Flugobjektes. Es ist auch nicht möglich den Zusammenhang direkt zu vermessen sondern nur indirekt über die gemessenen Sensordaten.
Welche Daten hast du nun?
- die Rotation des Sensors relativ zu dem außeren Koordiantensystem ?
- die Rotation des Flugobjektes relativ zu dem außeren Koordinatensystem?
- die Rotation des Sensors relativ zum Flugobjekt?
Rotiert der Sensor mit dem Flugobjekt oder ist der Sensor fest?
Was misst der Sensor, bzw kannst du ein paar Beispieldaten angeben?
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Bei dem Sensor handelt es sich um ein Attitude Heading Reference System, siehe auch http://en.wikipedia.org/wiki/Attitude_a ... ce_Systems - jedoch nur Beschleunigungen, Drehraten und Magnetfeld ohne GPS. Der Sensor ist fix mit dem Flugobjekt verbunden.
Die Daten, die ich vom Sensor in Form von Quaternionen (eine Umrechnung in Eulerwinkel oder Matrix sieht die Datenaufbereitungs-SW auch vor) erhalte, geben mir dessen jeweilige Orientierung gegenüber dem äußeren Koordinatensystem. Ich habe noch keine Info, ob mir die Quaternionen die Transformation vom Sensor- ins äußere Koordinatensystem oder umgekehrt liefern – ich schätze ersteres - ich nehme an, dass dies aktuell jedoch auch nicht so wichtig ist, da sich die umgekehrte Drehung durch Inversion oder eine andere Umformung der Quaternionen ergibt (habe noch keinen konkreten Hinweis dazu gefunden).
Um aus den Sensordaten die Orientierung des Flugobjektes im äußeren Koordinatensystem ermitteln zu können, ist noch der fixe Zusammenhang von Sensororientierung zu Flugobjektorientierung zur ermitteln und zu berücksichtigen.
Zur Ermittlung habe ich mir das Manöver mit der reinen Nickwinkeldrehung und die oben beschriebenen Rechenschritte ausgedacht.
Für die Berücksichtigung des Zusammenhangs wäre es wahrscheinlich am einfachsten, wenn er auch in Form einer Quaternion beschrieben ist, denn dann kann ich die beiden Quaternionen (Sensororientierung und Zusammenhang Sensor-Flugobjekt) „einfach“ multiplizieren. „Einfach“, da ich mir bzgl. der Reihenfolge der Faktoren nicht ganz sicher bin (intuitiv würde ich Quaternion-Sensororientierung x Quaternion-Zusammenhang Sensor-Flugobjekt annehmen) und die Multiplikation von Quaternionen auch etwas aufwändiger als 3 x 4 ist.
Beispieldaten habe ich leider noch keine, da ich noch in der Konzeptphase bin. So ein Sensor ist nämlich relativ teuer.
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Mir ist nicht so klar wie du von den Messdaten auf die relative Drehung des Flugobjektes schliessen willst, wenn sich der Sensor mit dem Flugobjekt bewegt.
Ausser du hast die Moeglichkeit das Flugobjekt auszurichten so das es keine Rotation hat. Wenn du in dieser Position die Rotation misst, erhaelst du die relative Rotation des Sensors zum Flugzeug.
Mit der Rotation des Sensors und der relativen Rotation kannst du, wie du schon selbst gesagt hast, durch Multiplikation die absolute Rotation des Flugobjektes ermitteln.
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Langsam kommen wir zum Kern des Problems, nämlich zu dem Ermitteln des Zusammenhangs von Sensor- und Flugobjektorientierung. Dabei hast du mich auf eine zweite Möglichkeit gebracht.
Zunächst ein Abgleich der Begriffe, damit wir nicht an sprachlichen Unklarheiten verzweifeln:
- So wie ich dich verstehe meinst du mit „Rotation“ das was ich mit Orientierung bezeichne, nämlich die Winkel-Ausrichtung eines Körpers im Raum.
- So wie ich dich verstehe meinst du mit „Rotation des Sensors“ die Rotation/Orientierung, die der Sensor gegenüber dem äußeren Koordinatensystem misst.
- So wie ich dich verstehe meinst du mit „relativen Rotation“ die Rotation/Orientierung des Flugobjektes gegenüber dem Sensor
Im Folgenden beschreibe ich meine ursprüngliche Idee noch etwas ausführlicher und in anderen Worten:
Für den Zusammenhang von Sensor- und Flugobjekt-Koordinatensystem benötige ich die Einheits-Vektoren, die die Basis des Flugobjekt-Koordinatensystems bilden, ausgedrückt in Vektoren des Sensor-Koordinatensystems (der Rest wäre dann reine Mathematik mit Einheitsvektoren -> Matrix -> Quaternion).
Den ersten Vektor erhalte ich wie folgt: das Flugobjekt bewegt sich zunächst im stationären Geradeausflug, d.h. es rotiert nicht um irgendeine Achse, in konstanter Höhe. Anhand der vom Sensor in seinem Koordinatensystem gemessenen Beschleunigungen kenne ich die vertikale Achse. Diese Vertikale ist gleichzeitig auch die Z-Achse des Koordinatensystems des Flugobjektes.
Den zweiten Vektor erhalte ich wie folgt: durch ein Steuereingriff kann der Pilot dem stationären Geradeausflug eine reine Nickwinkelschwingung überlagern (vgl. Anstellwinkelschwingung http://de.wikipedia.org/wiki/Anstellwinkelschwingung). Diese Nickwinkelschwingung wirkt auf das Flugobjekt wie auf den Sensor gleichermaßen. Da ich ja nur die Orientierung mittels des Sensors messe, müsste das visualisiert aussehen wie wenn er um eine Drehachse hin- und herdreht (siehe auch http://www.motionnode.com/). Dabei geht die Drehachse durch den Ursprung des äußeren Koordinatensystems, der ja auch mit dem Ursprung des Sensor- und des Flugobjekt Koordinatensystems zusammenfällt (da nur die Orientierung betrachtet wird). Nun habe ich mir die Frage gestellt, welche mathematische Bedingung ich formulieren kann. Hier kam mir die Idee, dass alle Punkte auf dieser Drehachse vor und nach der Drehung dieselben Koordinaten haben. Stelle ich die Drehachse als Vektor dar, bedeutet dies, dass die Komponenten dieses Vektors sich durch die Drehung um diese Achse nicht verändern. Ich nehme die zwei Quaternionen (q1 und q2) von den beiden Orientierungen der Nickwinkelschwingung, bei der die Nickwinkel möglichst weit auseinander liegen (reduziert den Winkel-Fehler), und transformiere p jeweils mit einer Quaternion. Aus o.g. Bedingung folgt für den Vektor der Drehachse, dass er bzw. seine Komponenten gleich bleiben, d.h. q1pq1* = q2pq2*. Ich kann den Schritt über das äußere Koordinatensystem auch umgehen, indem ich aus den o.g. zwei Quaternionen eine mache (allerdings wäre dabei die Reihenfolgen und evtl. eine Invertierung zu beachten). Über einen Vergleich der Koeffizienten der beiden Seiten (1 x Realteil, 3 x Imaginärteil) erhält man vier Gleichungen mit denen p1, p2 und p3 berechenbar sind – allerdings ziemlicher Aufwand für das Ableiten und Lösen des Gleichungssystems.
Als ich dies geschrieben habe ist mir noch eine viel bessere Idee gekommen, um den zweiten Vektor zu erhalten: wenn ich die im vorangegangenen Absatz angesprochenen Quaternionen q1 und q2 zu einer q3 zusammenfasse (unter Beachtung der Reihenfolge und evtl. einer Invertierung, wahrscheinlich q1hoch-1 * q2), ergibt der Imaginärteil den Vektor der Drehachse.
Schließlich erhalte ich den dritte Vektor relativ einfach wie folgt: Kreuzprodukt aus dem ersten und dem zweiten Vektor. Hierbei ist nur noch die Richtung zu beachten, damit sich ein Rechtssystem ergibt.
Im Folgenden beschreibe ich meine zweite Idee, die jedoch ein zusätzliches Gerät nämlich ein GPS benötig und daher eher die Backup-Variante wäre:
Wieder geht es darum für den Zusammenhang von Sensor- und Flugobjekt-Koordinatensystem die Einheits-Vektoren, die die Basis des Flugobjekt-Koordinatensystems bilden, ausgedrückt in Vektoren des Sensor-Koordinatensystems zu ermitteln.
Im stationären Geradeausflug mit konstanter Höhe erhalte wie oben beschrieben die vertikale Achse = Z-Achse des Koordinatensystems des Flugobjektes. Zudem erhalte ich aus den GPS-Daten den Vektor der Längsachse relativ zu Nord und kann durch Vergleich mit der gemessenen Orientierung des Sensors bzgl. Nord (entspricht Heading) den oben als dritten Vektor bezeichneten Vektor ermitteln. Schließlich ergibt sich dann der zweite Vektor aus dem Kreuzprodukt des ersten und des dritten Vektors (inkl. Beachtung der Richtung für Rechtssystem).
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Hi
ich habe nicht die Zeit die andern Loesungen nachzuvollziehen, fuer die zweite Loesung ist hier nochmal eine Zusammenfassung fuer andere Thread Leser:
Ziel war es die Rotation (z.B. als Rotationsmatrix) des Sensors relativ zum Flugobjekt zu ermitteln:
- der Sensor misst einen Beschleunigungsvektor, dieser wird normiert und bildet die erste Achse einer Rotationsmatrix
- der Sensor misst den Rotationsunterschied, Drehgeschwindigkeit oder Drehbeschleunigung, wenn das Flugzeug anfaeng nach oben oder unten zu fliegen. Die Roationsachse kann aus dem Quaterion ermittelt werden und dient als 2te Ache der Rotationsmatrix.
- Die 3te Achse der Rotationsmatrix kann aus den andern beiden Achsen mittels Vektorprodukt ermittelt werden.
MfG
Flo
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.