Fragen : Rotationsmatrix zwischen zwei 3D-systems ?



  • Hi Leute ,
    Ich hab bei meinem Projekt 2 koordinatensystems also (x1,y1,z1) und (x2,y2,z2) mit den Winkelverschiebungen für jede achse sind (Delta-phi, Delta-psi, Delta-rho) . Nun muss ich den Rotationsmatrix für eine Drehung von (x1,y1,z1) nach (x2,y2,z2)

    wer hat für mich vielleicht einen Idee ? Danke ! 👍


  • Mod

    Stelle x2,y2,z2 in der Basis 1 dar. Die Transformation von Basis 1 zu Basis 2 ist dann die Diagonalmatrix mit x2,y2,z2 in dieser Darstellung.



  • danke SeppJ ! kannst du vielleicht deutiger erklären ? und was soll ich mit den Winkel-verschiebungen bearbeiten ? 😕


  • Mod

    HBhannover schrieb:

    danke SeppJ ! kannst du vielleicht deutiger erklären ?

    Ja, war etwas ungenau 🙂 .

    Darf ich deine Notation ändern? Die Benutzung von x,y,z als Namen für Vektoren ist etwas hinderlich, das will ich mir später für die Komponenten aufsparen. Sagen wir du hast die Basis A, mit den Basisvektoren a1,a2,a3. Und du hast die Basis B mit den Basisvektoren b1,b2,b3. Dann stellst du die Basisvektoren von B in der Basis A dar. Dann ist die Transformationsmatrix in der Basis A:

    $\begin{pmatrix}b1\_x & b2\_x &b3_x\\ b1\_y & b2\_y &b3_y\\ b1\_z & b2\_z &b3_z \end{pmatrix}_A$

    Diese kannst du dann nach den üblichen Regeln in andere Basen transformieren.

    und was soll ich mit den Winkel-verschiebungen bearbeiten ? 😕

    Ich sehe nicht, wozu du die bräuchtest. Wenn die Basen durch eine Rotation ineinander überführbar sind, dann ist die gezeigte Matrix automatisch eine Rotationsmatrix. Wenn sie es nicht sind, dann ist es auch nicht möglich, eine solche Rotation zu finden.


  • Mod

    Oder meinst du, du hast die Winkel gegeben und die neue Basis nicht? Dann musst du einfach nur passende Rotationen aneinanderhängen. Wie und in welcher Reihenfolge du das machen musst, kommt auf die Details an, wie du die Winkeln gegeben hast.



  • Ja SeppJ 👍

    soweit hab ich verstanden ,was du meinst. das ist gute Idee. Aber ja , bei meine Aufgabe bekomme ich schon alle Infomation für beide Systems , also

    Ich hab einer Roboter mit 3D-Scanner dabei . Am Anfang der Fahrt bleibt er im Koordinaten (x0,y0,z0) und im Zeitpunkt t1 bleibt er bei (x1,y1,z1) mit Punkt-wolke-1 und im Zeitpunkt t2 (hier ist aktuelle Position) bleibt er bei (x2,y2,z2) mit Punkt-wolke-2 . Der roboter hat eine sogenannte Odometrie, mit der der Roboter immer weisst, wo er jetzt steht.

    das heisst: x1,y1,z1,x2,y2,z2 durch Odometrie immer schon klar. alle werden in der Beziehung mit (x0,y0,z0) gerechnet. und die Winkeln von beide (x1,y1,z1)(x2,y2,z2)in der Beziehung mit (x0,y0,z0) auch klar.

    So .... 😮 Ich muss jetzt Punkt-wolke-1 im Koordinatensystem (x2,y2,z2) darstellen ! dass heisst: ich muss suche einen Matrix ,damit kann ich alle Punkte in Punkt-wolke-1 bei dem Koordinatensystem (x2,y2,z2) bringen .Vorsicht: die Winkel-verschiebung schon gewusst!!!

    ich hoffe ihr habt mich verstanden, weil ich noch nicht gut Deutsch spreche 😃

    Also , ich hab schon 1 woche überlegen . immer nocht kein Erfolg !
    danke SeppJ noch mal 😉



  • HBhannover schrieb:

    ich hoffe ihr habt mich verstanden, weil ich noch nicht gut Deutsch spreche 😃

    Nicht wirklich.

    Wenn du eine lineare Transformation suchst dann brauchst du 3 Punkte und deren Bilder. Wenn du affin transformieren möchtest dann brauchst du 4 Punkte und deren Bilder.



  • hi Ben04 !

    meinst du : also ich muss 3 Koordinaten-systems benutzen ? also Global-system (x0,y0,z0) ; und Alte Position (x1,y1,z1) ; und noch aktuelle Position (x2,y2,z2) ???

    dann muss ich transformieren deren Bilder (also Punktwolke) wie folge :

    Position(x1,y1,z1)---> Position(x0,y0,z0)----> Position(x2,y2,z2)

    uhm ... das ist vielleicht richtig , aber dann wie ist der Matrix mit Winkel dabei ?



  • @HBhannover:
    Nein, ich verstehe dich nicht.

    Versuche dich mal klar mathematisch auszudrücken:

    Dein Roboter fährt von Position P0 nach P1.

    Was willst du jetzt bestimmen ? Willst du die Transformationsmatrix T bestimmen, welche die Transformation (x, y, z) sowie die Rotation deines Roboters enthält s.d. P0 * T = P1 gilt ?

    Und was liefert hier dein 3D-Scanner ? Absolute Koordinaten bezogen zu einem Punkt oder relative Koordinaten ?

    Sagen dir die Begriffe Rotationsmatrix, 4x4 Transformationsmatrix, Vorwärtskinematik, inverse Kinematik, Denavit-Hartenberg-Transformation etwas ?



  • @ bitte ein Bit : Hi Bitbugersucht 😋 👍

    Ich hab schon Verfahren ! aber noch nicht fertig ,und jetzt noch Probleme getroffen ! wenn du Lust hast , dann erkläre ich mein bis jetzt unglösbare Aufgabe 😃

    Dein Roboter fährt von Position P0 nach P1.
    ---> Ja aber Nein ! P0 ist Anfangsposition. P1 ist Alte-Position und P2 ist aktuelle Position ! also alle Daten von P1 und P2 werden in der Beziehung mit P0 durch eine sogenannte Odometrie(in dem Roboter) gegeben !

    Was willst du jetzt bestimmen ?
    ---> in Position1 (P1) habe ich eine Punktwolke (wird geliefert durch Scanner), und jetzt möchte ich diese Punktwolke in Position2 (P2) darstellen ! deshalb brauche ich einen Transformationsmatrix um Punktwolke in der Beziehung mit P1 nach P2 zu transportieren.(aber Achtung : die Drehwinkeln für 3 Achsen habe ich schon durch Odometrie,ich muss deshalb ganz genau umdrehen)

    Und was liefert hier dein 3D-Scanner ?
    ---> 3d-Scanner gibt uns die Punktwolke für jede Positionen : P1 haben wir Punktwolke-1 in der Beziehung mit P1 .

    Sagen dir die Begriffe Rotationsmatrix, 4x4 Transformationsmatrix, Vorwärtskinematik, inverse Kinematik, Denavit-Hartenberg-Transformation etwas ?
    ---> Klar ! ich bin auf dem Weg mit diese Verfahren ! aber bekomme ich jetzt einen Problem , und zwar :
    nachdem die Punktwolke von Position1 nach Position2 transportiert wurde , steht die Punkwolke1 klar in der Beziehung mit Koordinatensystem P2 (x2,y2,z2) aber fast senkrecht gegenüber Punktwolke2 .

    dann ich überlege so : vielleicht bei Transformationsmatrix habe ich die Drehwinkeln nicht richtig gerechnet !!! aber wie soll ich jetzt korriegieren ??? um die Drehwinkeln für 3 Achsen so genau wie die Winkeln werden gegeben durch Odometrie ???

    so ist das !!! und jetzt Bitte ein Bit-lösung 😉



  • Hmm, das hört sich für mich so an als ob du die Transformationsmatrix nicht richtig bestimmst, denn eine Transformationsmatrix beschreibt im Endeffekt die Bewegungsabfolge deines Roboters.

    Wenn du die Bewegungsabfolge in eine sequenzielle Abfolge von Translationen und Rotationen unterteilen kannst, kann die Transformationsmatrix T beispielsweise folgendermaßen aussehen:

    T = T(Translation_P1)*T(Rotation_z_45)*T(Translation_P2)

    d.h. zuerst führt der Roboter eine Translation P1 aus, danach dreht er sich um 45° um die Z Achse und danach führt er die Translation P2 aus.

    Achte hierbei unbedingt auf die Definition der Matrizenmultiplikationen (linkshändiges oder rechtshändiges Koordinatensystem) und auf die Reihenfolge wie du die einzelnen Transformationsmatrizen multiplizierst.

    T(Rotation_z_45)*T(Translation_P2) != T(Translation_P2)*T(Rotation_z_45)



  • @ Bitburger : danke dir , das war gute Idee 🙂

    Hi Leute !!! 👍

    Endlich habe ich meine Arbeit fertig gemacht ! Danke euch viel-mal für die hilfreiche Diskussion !
    (Falls Jemand braucht etwas für Rotationsmatrix in 3D ,kann auch bei mir einige Unterlagen bekommen )


Anmelden zum Antworten