LabVIEWForum.de - 3D Cartesian Coordinate Rotation

LabVIEWForum.de

Normale Version: 3D Cartesian Coordinate Rotation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich entwickle zur Zeit einen 3D-Sensor. Der Sensor besteht aus einem 3-Achs Drehratensensor und einem 3-Achse-Beschleunigungssensor.
Ich habe das ganze so aufgezogen, dass es 2 Koordinatensysteme gibt: Eins das relativ zum Sensor liegt und eines, welches den realen Raum darstellt. Zu Beginn des Programms wird anhand der Erdbeschleunigung die Nulllage des Sensors ausgerechnet. Dies funktioniert ganz gut, die Achsen werden (soweit man das beurteilen kann) richtig berechnet.
Den Sensor habe ich als Objekt definiert, welches aus 3 Arrays besteht, die die jeweiligen Koordinaten bezüglich des Realsystems beinhalten. (siehe Bild)
[attachment=31036]
Nun soll mit jedem Schleifendurchlauf die Sensorlage korrigiert werden. Hierzu verwende ich das "3D-Cartesian-Coordinate-Rotation (Euler)(Array)" VI.
Folgendes Bild zeigt die entsprechende Methode:
[attachment=31037]

Ich übergebe je ein Array[3] mit den jeweiligen Koordinaten einer Achse meines Sensorkoordinatensystems.

Nun ist es allerdings so, dass das VI keine wirklich sinnvollen Ergebnisse liefert. Das Koordinatensystem welches zu Beginn des Programms errechnet wird passt soweit. Sobald das VI aber einmal durchgelaufen ist, werden die Koordinaten der X-Achse umgedreht, so dass die X-Achse jetzt in z richtung zeigt. die anderen beiden Achsen werden nicht verändert.

Hat jemand schon einmal mit diesem VI gearbeitet und kann mir sagen, was ich falsch mache? Bin für jede Hilfe dankbar.

Edit: Ich sollte vielleicht noch erwähnen, dass die Winkel richtig übergeben werden.
OK: Kaum macht mans richtig gehts. Ich hatte (siehe bild) die ausgänge alle auf X' gelegt...
jetzt scheints einigermaßen zu gehn.
Danke für die Rückmeldung. Top2

Gruß Markus
Aaaaargh....

Mir ist gerade aufgefallen, dass das VI keine Drehung um die y-Achse unterstützt... Kann mir mal jemand erklären, was das soll? der Sinn davon erschließt sich mir nämlich gerade nicht wirklich...

Jetzt werd ich das wohl von Hand machen müssen, was bedeutet, dass ich die Drehmatrizen erstellen muss. Kann mir bitte jemand erklären, wie ich Matrizen erstellen kann?

Wenn ich beispielsweise die Matrix:

|123|
|456|
|789|

erstellen will, wie sieht dann der entsprechende Code in LabVIEW aus? Ich werd aus der LabVIEW Hilfe auch nicht schlauer...
[attachment=31058]

habs inzwischen selbst rausgefunden.
Vorher hatte ich das problem, dass die Matrizen laut fehlermeldung nicht initialisiert waren. Jetzt gehts.
' schrieb:..
Mir ist gerade aufgefallen, dass das VI keine Drehung um die y-Achse unterstützt... Kann mir mal jemand erklären, was das soll? der Sinn davon erschließt sich mir nämlich gerade nicht wirklich.
..

Drehung um die x-Achse auch nicht...
Sieh dir die Hilfe noch mal an. Es nutzt Euler Drehungtheorie. Drehung erfolgt in drei Schritten z, x' und z'-Achse (vielleicht noch mal die Kekskrümel und Staubflocken vom Monitor wischenWink). Die Eulerwinkel sind nicht, dass was man als Ottonormalverbraucher erwartet. Mehr kann ich Dir aber nicht zu Eulers Theorie der Drehungen sagen.

Um aus dem Fehlercode einen Error-Cluster zu machen solltest du vielleicht das Error Cluster From Error Code VI benutzen oder zumindest noch den Fehlerzustand auf TRUE setzen.
' schrieb:Um aus dem Fehlercode einen Error-Cluster zu machen solltest du vielleicht das Error Cluster From Error Code VI benutzen oder zumindest noch den Fehlerzustand auf TRUE setzen.

Danke für den Hinweis. Das ist mir schon aufgefallen und ich habs entsprechend geändert.

Mir ist schon aufgefallen, dass die Drehung in 3 Schritten erfolgt. Wie kann ich die Drehung anhand der 3 Drehraten, die mir der Sensor liefert realisieren? Also Winkel um x, y und z.
Kann ich für kleine Winkel die Bewegung als Folge von 3 Drehungen sehen und dann 3 Mal mit den entsprechenden Drehmatrizen drehen? Einmal für x, einmal für y und einmal für z?
Drehungen im Dreidimensionalen sind nicht kommutativ. Die Reihenfolge spielt also eine Rolle.

Bei Deinen Fragen kann ich Dir aus dem Kopf nicht mehr weiterhelfen. Ich denke, hier solltest Du Fachbücher zu rate ziehen.
Mmmh... OK... Die Arbeit geht ja nächstes Semester weiter. Dann schau ich da noch einmal exakter rein. Ich hatte jetzt vom Gefühl her gedacht, dass die Drehungen im 3Dimensionalen zumindest für kleine Winkel kommutativ sind.

Ich werd wohl nächstes Semester entweder eine Herleitung machen müssen, wie ich die Drehung in Drehung mit Eulerwinkeln umrechne oder eine andere Möglichkeit finden.

Fällt dir spontan ein Buch ein, welches das Thema abdeckt? Außer bei Lothar (Papula) würde mir gerade nicht einfallen, wo ich suchen sollte.
Nein, Literatur habe ich keine dazu. Eventuell findet man dazu auch was mittels Google. Zumindest Eulers Drehungstheorie sollte kein Problem sein. Ansonsten würde ich nach einem Buch über Sensorik suchen.
Referenz-URLs