INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

3D Cartesian Coordinate Rotation



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

03.12.2010, 20:55 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2010 20:57 von jak888.)
Beitrag #1

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
3D Cartesian Coordinate Rotation
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)
   
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:
   

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.

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.12.2010, 10:54
Beitrag #2

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
3D Cartesian Coordinate Rotation
OK: Kaum macht mans richtig gehts. Ich hatte (siehe bild) die ausgänge alle auf X' gelegt...
jetzt scheints einigermaßen zu gehn.

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.12.2010, 12:04
Beitrag #3

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
3D Cartesian Coordinate Rotation
Danke für die Rückmeldung. Top2

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2010, 20:13
Beitrag #4

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
3D Cartesian Coordinate Rotation
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...

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.12.2010, 22:32 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2010 22:33 von jak888.)
Beitrag #5

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
3D Cartesian Coordinate Rotation
   

habs inzwischen selbst rausgefunden.
Vorher hatte ich das problem, dass die Matrizen laut fehlermeldung nicht initialisiert waren. Jetzt gehts.

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.12.2010, 09:22
Beitrag #6

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
3D Cartesian Coordinate Rotation
' 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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.12.2010, 11:11
Beitrag #7

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
3D Cartesian Coordinate Rotation
' 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?

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.12.2010, 13:27
Beitrag #8

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
3D Cartesian Coordinate Rotation
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.12.2010, 16:03
Beitrag #9

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
3D Cartesian Coordinate Rotation
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.

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.12.2010, 16:44
Beitrag #10

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
3D Cartesian Coordinate Rotation
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Rotation von Bildern bzw. 2D-Arrays mit Interpolation Novgorod 1 5.798 11.12.2009 09:26
Letzter Beitrag: unicorn

Gehe zu: