ich suche eine Loesung zu folgendem Problem:
Alles 3-Dimensional.
Ich messe einen Punkt in einem Koordinatensystem und noch einmal denselben
Punkt in einem neuen Koordinatensystem.
Der Punkt ist jeweils gegenueber den beiden Koordinatensystemen als ein
Einheitsvektor beschrieben.
Es handelt sich also um eine reine Drehung.
Die Frage ist nun, um welche Winkel die Koordinatensysteme zueinander
verdreht sind. (Yaw, Pitch und Roll Darstellung)
Beziehungsweise, wie ich auf eine Abbildungsmatrix kommen kann, die die
Drehung der Koordinatensysteme ausdrueckt.
Vielen Dank fuer Eure Hilfe
Daniel
--
.~. Daniel Schramm Phone: +49 231 6108112 Mail:daniel....@gmx.de
/V\ Bruehlweg 36 Mobile:+49 178 8839848 ICQ: 35816985
// \\ 44379 Dortmund Fax: +49 231 96989961 WWW: pinguin.sauerland.de
/( )\ Germany
^`~'^
Da P2 aus P1 hervorgeht muss gelten:
P2=R*P1 (*)
mit der Nebenbed.: R ist orthogonal (d.h. die Spalten- bzw.
Zeilenvektoren bilden ein Orthonormalsystem) ergeben sich 6 weitere
Gleichungen
Bezeichne r_i die i-te Zeile von R muss also noch gelten
r_i*r_i^t = 1 , i =1, 2, 3
r_i*r_j^t = 0 , i,j = 1, 2, 3 und i!=j
Somit hast Du ein nichtlineares Gleichungssystem mit 9 Gleichungen und 9
Unbekannten, dass man lösen kann.
Mir ist noch ein weitere Ansatz bekannt, der das Problem in eine
Eigenwertaufgabe umwandelt. Stichwort hierzu sind Quaternionen.
Gruß
Stefan
Deine Euler-Winkel findest Du in
http://mathworld.wolfram.com/EulerAngles.html --> Gl. 43 ff
Siehe auch
http://mathworld.wolfram.com/RotationMatrix.html
Grüße
Hermann
--
>>ich suche eine Loesung zu folgendem Problem:
>>Alles 3-Dimensional.
>>Ich messe einen Punkt in einem Koordinatensystem und noch einmal denselben
>>Punkt in einem neuen Koordinatensystem.
>>Der Punkt ist jeweils gegenueber den beiden Koordinatensystemen als ein
>>Einheitsvektor beschrieben.
>>Es handelt sich also um eine reine Drehung.
>>Die Frage ist nun, um welche Winkel die Koordinatensysteme zueinander
>>verdreht sind. (Yaw, Pitch und Roll Darstellung)
>>Beziehungsweise, wie ich auf eine Abbildungsmatrix kommen kann, die die
>>Drehung der Koordinatensysteme ausdrueckt.
> Deine Euler-Winkel findest Du in
> http://mathworld.wolfram.com/EulerAngles.html --> Gl. 43 ff
> Siehe auch
> http://mathworld.wolfram.com/RotationMatrix.html
...oder in diesem Dokument:
http://wwwbruegge.in.tum.de/pub/DWARF/DwarfTutorial/maths3D.pdf
Schau nach unter
Q38. How do I generate a rotation matrix to map one vector onto another?
und
Q37. How do I generate a rotation matrix for a selected axis and angle?
> Ich messe einen Punkt in einem Koordinatensystem und noch einmal denselben Punkt in einem neuen Koordinatensystem.
Bist du sicher dass es dafür nur eine Lösung gibt und nicht
unendlich viele? Ich meine man bräuchte in jedem
Koordinatensystem zwei Punkte um die Drehung eindeutig
berechnen zu können. Bin aber kein Mathematiker.
Michael
Wenn man freie Drehungen im Raum betrachtet,
benoetigt man zwei Original- und Bildpunkte.
Wenn man wie der OP
um eine Gerade durch den Ursprung des Koordinatensystems drehen will,
benoetigt genuegt es, einen Originalpunkt A und sein Bild A' zu kennen
(solange beide verschieden sind). -
Die Drehachse ist muss senkrecht auf den Ortsvektoren A und A' stehen
(also parallel zu A x A'), und der Drehwinkel ist gleich dem Winkel
zwischen A und A'.
> Wenn man freie Drehungen im Raum betrachtet,
> benoetigt man zwei Original- und Bildpunkte.
> Wenn man wie der OP
> um eine Gerade durch den Ursprung des Koordinatensystems drehen will,
> benoetigt genuegt es, einen Originalpunkt A und sein Bild A' zu kennen
> (solange beide verschieden sind). -
Da stimme ich dir zu. Aber von einer Drehung "um eine Gerade
durch den Ursprung" war beim OP nicht die Rede, jedenfalls
hab ich's nicht so verstanden.
Gruss
Michael
Er dreht das Koordinatensystem. Und Koordinatensysteme dreht man
meistens um ihren Ursprung (d.h. Gerade durch den Ursprung), wenn nichts
anderes angegeben.
Stefan
> Er dreht das Koordinatensystem. Und Koordinatensysteme dreht man
> meistens um ihren Ursprung (d.h. Gerade durch den Ursprung), wenn nichts anderes angegeben.
Die erste Drehung bildet den Vektor 1 auf den Vektor 2 ab.
Man könnte danach noch eine zweite Drehung mit Vektor 2 als
Drehachse anwenden. Das ändert nichts daran dass Vektor 1
auf Vektor 2 abgebildet wird, führt aber dazu dass das es
beliebig viele Lösungen gibt.
Es sei denn die Aufgabe soll mit einer Drehung um nur EINE
Achse gelöst werden.
Gruss
Michael
Hallo Thomas, Hallo Michael,
Bisher finde ich wiederspruechliche Angaben, ob es moeglich ist, oder nicht.
In Scripten zur Robotik finde ich Loesungsansaetze um aus der Darstellung
Drehwinkel+Drehachse eine Drehmatrix aufzustellen und auch, wie ich aus
einer Drehmatrix auf die 3 Winkel Yaw, Pitch und Roll schliessen kann.
(sofern beide Koordinatensysteme den gleichen Ursprung haben)
Wenn ich aus den 3 Winkeln auf die Matrik komme, kann ich auch die Winkel
aus der Matrix wieder berechnen.
Wenn ich aus der Achse/Winkel-Darstellung auf die Matrix schliesse und dann
die Winkel wie zuvor berechnen will, kommen leider falsche Ergebnisse
heraus.
Aus einer Arbeit der Stanford University habe ich jetzt das "Geruecht", dass
es mit nur mit 2 Vektoren eindeutig sein kann, wobei fuer 2 Vektoren auf
eine Loesung ueber das "Wahba-Problem" verwiesen wird.
Kann irgendwelche Literatur dieses "Geruecht" belegen?
Auf einen 2. Vektor kann ich (wiederwillig) zurueckgreifen, muss dann aber
belegen koennen, warum ich den 2.Vektor auch zur Lagebestimmung nutze und
nicht die auf den 2. Vektor ueberlagerten Informationen gewinnen kann.
Danke fuer die Anregungen.
> Kann irgendwelche Literatur dieses "Geruecht" belegen?
Das Problem hat sich erledigt, ich habe einen anschaulichen Beweis gefunden,
der bestaetigt, dass die Drehmatrix nicht auf eindeutige Yaw, Pitch und
Roll Winkel zurueckgefuehrt werden kann.
Danke fuer Eure Zeit und Ideen.
Hi Daniel!
Die Information, dass die Drehung eindeutig durch
Angabe eines Vektors und seines Bildes gegeben ist,
war natuerlich falsch,
denn man kann als Drehachse *jeden* Vektor in der Ebene benutzen,
die senkrecht zur Verbindunglinie der beiden gegebenen Vektoren liegt.
Was Du mit "dass die Drehmatrix nicht auf eindeutige Yaw, Pitch und Roll
zurueckgefuehrt werden kann" ausdruecken willst, ist mir allerdings unklar.
Gruss
Thomas
Daniel Schramm wrote:Kann irgendwelche Literatur dieses "Geruecht" belegen?Das Problem hat sich erledigt, ich habe einen anschaulichen Beweis gefunden, der bestaetigt, dass die Drehmatrix nicht auf eindeutige Yaw, Pitch und Roll Winkel zurueckgefuehrt werden kann. Danke fuer Eure Zeit und Ideen. Daniel
--
MfG
Dirk Noack
" ... Wenn man's richtig macht, geht's gleich ... " :-)
em@il: d {dot} n o a ck {at} i b s {dash} a u t o m a t i o n {dot} d e
http: w w w {dot} i b s {dash} a u t o m a t i o n {dot} d e
Hi Dirk! Du postest in HTML.
Ausserdem hast Du Daniel wahrscheinlich missverstanden,
denn sein Problem und Deines sind grundverscheiden. -
Waehrend Du jeweils die Koordinaten von DREI Punkten gegeben hast,
hatte Daniel nur jeweils EINEN Punkt gegeben, was ein grosser Unterschied ist.
Ich kann nur das tun, was ich schon einmal in diesem Thread getan habe,
naemlich "The Matrix and Quaternions FAQ" empfehlen:
http://wwwbruegge.in.tum.de/pub/DWARF/DwarfTutorial/maths3D.pdf
ab Seite 7.
Dich interessiert:
"Q37. How do I generate a rotation matrix for a selected axis and angle?"
Falls die Daten, die Dir gegeben sind, moeglicherweise etwas ungenau sind,
solltest Du in Betracht ziehen, das Zuviel an Information,
das Dir zur Verfuegung steht
(bis zu 9 "unabhaengige" Parameter statt der drei benoetigten)
zum Ausgleich von Fehlern zu benutzen. -
Frag dazu am besten http://groups.google.de
nach "procrustes rotation" oder "procrustes algorithm".
></pre>
></body>
></html>
Schalte beim naechsten Mal bitte Textmodus ein! Danke vorab.
Jetzt kann man aber eine neue Rotation R_neu mit
R_neu=R2*R1 definieren.
Da der Rotationswinkel bei R2 beliebig ist (es ist ja nur die Achse
festgelegt) gibt es beliebig viele solche R2 und somit beliebig viele
R_neu. Jedes R_neu legt aber wiederum eine Drehung um eine Achse mit
einem bestimmten Winkel fest.
Das bedeutet aber, dass eine Rotation um nur EINE Achse auch nicht
ausreicht um eine eindeutige Rotation festzulegen. Es muss also nicht
nur eine (bzgl. der Anzahl), sondern eine bestimmte Achse sein.
Oder hab ich wieder etwas übersehen?
Gruss
Stefan
> Jetzt kann man aber eine neue Rotation R_neu mit
> R_neu=R2*R1 definieren.
>
> Da der Rotationswinkel bei R2 beliebig ist (es ist ja nur die Achse
> festgelegt) gibt es beliebig viele solche R2 und somit beliebig viele
> R_neu. Jedes R_neu legt aber wiederum eine Drehung um eine Achse mit
> einem bestimmten Winkel fest.
Die Rotation R_neu entspricht aber einer hintereinander
Ausführung von zwei Drehungen.
Es wird im Allgemeinen keine Drehung um EINE Achse geben die
R_neu entspricht.
Gruss
Michael
Da wär ich mir nicht so sicher!
Kennst du die Formel von Rodrigues?
Alois
> Da wär ich mir nicht so sicher!
Ich hab nochmal darüber nachgedacht, und vielleicht hast du
Recht.
> Kennst du die Formel von Rodrigues?
Nein, wo finde ich die?
Michael
> > Kennst du die Formel von Rodrigues?
>
> Nein, wo finde ich die?
>
zB. in "Einführung in die Mechanik und Symmetrie" von Marsden und
Ratiu.
Sie stellt eine sehr elegante Formel für die Berechnung der
Rotationsmatrix aus ihrem infinitesimalen Generator dar. Für unsere
Zwecke muss man sie natürlich noch invertieren, keine triviale
Angelegenheit.
Alois
Das brauchen wir doch gar nicht!??
Was man braucht ist,
dass die Hintereinanderausfuehrung zweier Drehungen
um Drehachsen, die sich schneiden, wieder eine Drehung ist.
Das ist einfach einzusehen, sobald man weiss,
dass man jede Drehung als Hintereinanderausfuehrung zweier
Spiegelungen darstellen kann,
an Ebenen, die sich in der Drehachse schneiden,
wobei man eine der beiden Ebenen auch noch frei waehlen kann
(einzige Bedingung: die Drehachse muss in dieser Ebene liegen).
Hat man jetzt zwei Drehungen nacheinander auszufuehren,
o.B.d.A. beide nicht-trivial und nicht um die gleiche Drehachse,
teilt man die zuerst ausgefuehrte Drehung in zwei Spiegelungen auf,
D1 = S2 * S1
wobei die zweite Spiegelung S2 an der Ebene von *beiden* Drehachsen
aufgespannten Ebene erfolgen soll.
Die zweite Drehung teilt man auch auf, diesmal so
D2 = S3 * S2
dass die *erste* Spiegelung wieder an der Ebene durch beide Drehachsen erfolgt.
Fuehrt man beide Drehungen D1 und D2 hintereinander aus,
kuerzen sich die Spiegelungen S2 heraus,
da eine Spiegelung, zweimal hintereinander ausgefuehrt,
die identische Abbildung ergibt:
D2 * D1 = S3 * S2 * S2 * S1 = S3 * Id * S1 = S3 * S1
D2 * D1 ist damit eine Hintereinanderausfuehrung von zwei Drehungen
und muss damit eine Drehung sein und zwar um die Achse,
die sich durch Schnitt der Spiegelungsebenen S3 und S1 ergibt
und mit dem doppelten Schnittwinkel dieser beiden Ebenen als Drehwinkel.
Doch: R_neu ist eine Rotationsmatrix und jede Rotationsmatrix beschreibt
eine Drehung um EINE Achse a mit einem gewissen Winkel alpha.
Achse/Winkel lassen sich auch leicht berechnen:
Ein EW von R_neu ist 1, die anderen beiden haben die Form
cos(alpha)+i sin(alpha) und cos(alpha)-i sin(alpha).
alpha oder -alpha ist dabei der Drehwinkel und die Achse entspricht dem
EV a von R, der mit dem EW 1 korrespondiert.
Ob alpha oder -alpha der "richtige" Winkel ist hängt davon ab, ob man um
a oder -a dreht.
Stefan
Michael Koch wrote: