+1 Daumen
7,8k Aufrufe

Zu meinem Verständnisproblem:

Ich komme aus der Roboterbranche. Die arbeiten ja auch mit dreidimensionalen Koordinatensystemen. Ich will eine Basisverschiebung realisieren. die beiden Basen sind zueinander verdreht. Mit den steuerungseigenen Transformationstools kann man ohne weiteres diesen Basiswechsel durchführen.

Nun will ich aber ein kleines Programm in Visual Basic schreiben das mir diese Basisverschiebung auch berechnet. Wie ich schon in meinen Tests erfahren musste, langt es nicht die folgenden Rotationsmatrizen der Reihe nach herzunehmen:

Drehung des Vektors \( r \) um die \( x_{3} \) -Achse im Anti-Uhrzeigersinn um den Winkel \( \varphi \)
$$ \begin{array}{c} {\left(\begin{array}{c} {x_{1}^{\prime}} \\ {x_{2}^{\prime}} \\ {x_{3}^{\prime}} \end{array}\right)=\left(\begin{array}{ccc} {\cos \varphi} & {-\sin \varphi} & {0} \\ {\sin \varphi} & {\cos \varphi} & {0} \\ {0} & {0} & {1} \end{array}\right)\left(\begin{array}{l} {x_{1}} \\ {x_{2}} \\ {x_{3}} \end{array}\right)} \\ {r^{\prime}=R_{z}(\varphi) r} \end{array} $$
Drehung des Vektors \( \boldsymbol{r}^{\prime} \) um die \( x_{1} \) -Achse im Anti-Uhrzeigersinn um den Winkel 6
\( \left(\begin{array}{c}{x_{1}^{\prime \prime}} \\ {x_{2}^{\prime \prime}} \\ {x_{3}^{\prime \prime}}\end{array}\right)=\left(\begin{array}{ccc}{1} & {0} & {0} \\ {0} & {\cos \theta} & {-\sin \theta} \\ {0} & {\sin \theta} & {\cos \theta}\end{array}\right)\left(\begin{array}{l}{x_{1}^{\prime}} \\ {x_{2}^{\prime}} \\ {x_{3}^{\prime}}\end{array}\right) \)
$$ \boldsymbol{r}^{\prime \prime}=\boldsymbol{R}_{x}(\theta) \boldsymbol{r}^{\prime} $$
Drehung des Vektors \( r^{\prime \prime} \) um die \( x_{3} \) -Achse im Anti-Uhrzeigersinn um den Winkel \( \psi \)
$$ \begin{array}{c} {\left(\begin{array}{c} {x^{'''}_{1}} \\ {x^{'''}_{2}} \\ {x^{'''}_{3}} \end{array}\right)=\left(\begin{array}{ccc} {\cos \psi} & {-\sin \psi} & {0} \\ {\sin \psi} & {\cos \psi} & {0} \\ {0} & {0} & {1} \end{array}\right)\left(\begin{array}{l} {x_{1}^{n}} \\ {x_{2}^{n}} \\ {x_{3}^{n}} \end{array}\right)} \\ {\boldsymbol{r}^{'''}=\boldsymbol{R}_{x}(\psi) \boldsymbol{r}^{n}} \end{array} $$

Also ist die gesamte Transformationsmatrix \( R \) das Produkt dreier Matrizen.


Die Translation kommt anschließend hinzu. Mit Excel habe ich mal die RotationsMatrizen erstellt um das ganze mal besser zu verfolgen.

blob.png


Sobald mehr als eine Drehung benötigt wird habe ich falsche Ergebnisse.


Kann mir jemand dabei helfen wie ich genau vorgehen muss?

Mitlerweile leuchtet mir auch ein das sich sinus und cosinus von X und Y ändert sobald ich um Z drehe.


Ziel ist es eine Basistransformation eines Punktes per visual basic zu realisieren. Sprich der Punkt im Raum soll durch eine zweit Basis beschrieben werden.


@ Werner-Salomon:

"Und sage uns auch noch, woher Du weißt, dass die Ergebnisse falsch sind."

Naja, jede Robotersteuerung (zumindest die, die ich kenne) hat ein Tool zum berechnen von solchen Aufgaben. Ich habe mir mal aus neugier einpaar solche transformationen erzeugt um eine Referenz zu haben.

Avatar von

2 Antworten

+2 Daumen

Hallo hugoboss,

Es fällt zunächst mal auf, dass auf dem oberen Bild eine \((z,x',z'')\)-Transformation beschrieben ist, während Du anschließend eine \((x,y',z'')\)-Transformation beschreibst und auch in der Exceltabelle realisiert hast. Erstere ist die sogenannte klassische Euler-Transformation, während eine Drehung um drei verschieden Achsen eher unüblich ist (außer bei Geoknecht3D!). (Bem.: wobei IMHO in dem Wiki-Artikel \(M_{zxz}\) mit \(M_{zxz}^T\) vertauscht wurde!)

Also wäre zunächst zu klären, wie die Winkel aus dem Roboter-Tool definiert sind. Sind es klassische Euler-Winkel \((z,x',z'')\) (was ich als wahrscheinlich annehme), so können die Ergebnisse nicht überein stimmen, wenn Du um \((x,y',z'')\) drehst.

In der Exceltabelle ist die Matrix für \(R_y\) falsch. Dort steht das Vorzeichen für den Sinus an der falschen Stelle. Bei den Elementen \(a_{31}\) und \(a_{13}\) sind die Vorzeichen zu tauschen.

Weiter fällt mir noch auf, dass in dem PDF, was Du hier verlinkt hast, homogene Koordinaten benutzt werden. Du erwähnst zwar in Deinem Beitrag vom MatheBoard Verschiebungen, sie tauchen aber nirgendwo in Deinen Zahlen auf.

Und bitte poste uns noch die Ergebnisse Deines Roboter-Tools, also die Koordinaten, die Deiner Meinung nach richtig sind. Dann können wir auch mal nachrechnen.

Gruß Werner

Avatar von 48 k

Hallo Werner,
hallo Wächter,

erst mal vielen Dank für Eure Unterstützung. Ich habe mir mal die XL.Sheet angesehen die ich hochgeladen habe. Dabei ist mir aufgefallen dass sie wirklich kaum lesbar ist :-).
Sorry!!!!

"Es fällt zunächst mal auf, dass auf dem oberen Bild eine (z,x′,z′′)-Transformation beschrieben ist, während Du anschließend eine (x,y′,z′′)-Transformation beschreibst und auch in der Exceltabelle realisiert hast."
Das ist korrekt. Ich hatte mir die Matrizen schnell aus einem PDF kopiert und hier eingefügt. Als ich sah dass es die falschen Matrizen sind, war es schon zu spät. Ich hatte die Frage hier im Board schon erstellt. Ich weiß aber dass ich im Nachhinein die Frage bearbeitet habe und die richtigen Matrizen für x,y,z eingefügt habe. Hat anscheinend aber nicht geklappt.

"Erstere ist die sogenannte klassische Euler-Transformation, während eine Drehung um drei verschieden Achsen eher unüblich ist (außer bei Geoknecht3D!). (Bem.: wobei IMHO in dem Wiki-Artikel Mzxz mit MTzxz vertauscht wurde!)
Also wäre zunächst zu klären, wie die Winkel aus dem Roboter-Tool definiert sind. Sind es klassische Euler-Winkel (z,x′,z′′) (was ich als wahrscheinlich annehme), so können die Ergebnisse nicht überein stimmen, wenn Du um (x,y′,z′′) drehst. "


Deine Annahme ist richtig. Es handelt sich tatsächlich um Eulerwinkel, laut KUKA doku. Aber bitte entschuldige meine Frage, was meinst du mit "wie sind die Winkel definiert (z,x',z'')".  Verzeiht mir aber so tief habe ich mich mit dem Thema noch nie befasst.

Ich habe mir mal die oben genannten Werte transformieren lassen.

Basis1 = x 0, y 0, z 0, a 0, b 0, c 0 (Bezugsbasis von Punkt1)
Basis2 = x 0, y 0, z 0, a 1, b 2, c 3 (Zielbasis von Punkt1)

Punkt1 = x 100, y -100, z 100, a 0, b 0, c 0  (a, b, c ist erst mal uninteressant da dies die Orientierung des Roboterflansches oder des Werkzeuges ist)

Sobald ich nun die Transformationsberechnung bestätige, erhalte ich noch folgende Infos:

Translation = 0  (ist mir klar)
Rotation a 1, b 2, c 0

Das Ergebnis ist dann folgendes:
Punkt1‘ = x 105.1585, y -98,17969, z 96,44913, a 1, b 2, c 0

@ Werner

Das Vorzeichen habe ich berichtig. Ich komme nun auf das gleiche Ergebnis wie ihr.

Hallo hugoboss,

Das Zitat ist auch schön:

Wir haben öfters das Problem, dass die Orientierungsdaten, die unsere Konstrukteure mit ihren CAD-Programmen ermitteln nicht mit den Robotern in Einklang zu bringen sind.

Die Ergebnis-Position \((E)\), die Du angibst, entspricht exakt einer Rotation des Punktes \(P=(100; -100; 100)^T\) um \(1°\) um die Z-Achse und einer anschließenden Rotation um \(2°\) um die gedrehte Y'-Achse. Eine dritte Rotation findet anscheinend nicht statt.

Formal in Matrizenschreibweise sieht das so aus: $$E = R_z(1°) \cdot R_y(2°) \cdot P$$ und in Zahlen:

blob.png

Bei der Angabe des Ergebnisses wird ja auch \(c=0\) ausgegeben (s.o.)!

Merkwürdig, jetzt komm ich nicht auf Deine Ergebnisse (Unterschiede in y,z Koordinaten)...

http://maxima-online.org/?inc=r1454151211

Ach herje, @Werner

ist die beschiebene Reihenfolge nicht ehr erst Ry(2) dann Rz(1) wenn ich die Matrizen betrachte  - dann simmer wieder beisammen?

Oh ja - die Reihenfolge!

Da habe ich gestern Abend lange drüber gebrütet! Die Gleichung stimmt - kannst Du mit einem Tabellenkalkulationsprogramm leicht prüfen!

jetzt komm ich nicht auf Deine Ergebnisse

der Winkel um X ist =0 nicht 3!

Ich habe jetzt keine Zeit. Ich werde heute Abend oder morgen antworten.

OK ,

Du schreibst

P=(100;−100;100)T um 1° um die Z-Achse und einer anschließenden Rotation um 2° um die Y-Achse.

und rechnest

E=Rz(1°)⋅Ry(2°)⋅P

was rechnersich zuerst eine Drehung um die y-Achse mit 2° und eine nachgeschaltete Drehung um z-Achse mit 1° darstellt. Oder wie siehst Du das? Wenn ich im CAS-Link oben Deine Rechnung nachstelle

\(Az(1/180*\%pi).Ay(2/180*\%pi).P =\begin{pmatrix}105.158520273288\cr -98.17968400526524\cr 96.44913303165947\end{pmatrix}\)

dann kommen wir aufs gleiche Ergebnis. Wobei ich die Reihenfolge erst um Z dann um Y schreiben würde als

\(Ay(2/180*\%pi). Az(1/180*\%pi).P = \begin{pmatrix}105.1579886560814\cr -98.23952887191078\cr 96.38875654780733\end{pmatrix}\)

---

Es sieht für mich so aus, dass hugoboss maschine die Befehle von rechts nach links abarbeitet?

Hallo Werner,

Bei der Angabe des Ergebnisses wird ja auch c=0 ausgegeben (s.o.)!

Genau das ist es ja was mich irritiert. Warum steht unter c eine 0 wenn ich angebe das meine Zielbasis um 3° in c verdreht ist

Basis1 = x 0, y 0, z 0, a 0, b 0, c 0 (Bezugsbasis von Punkt1)                                          Basis2 = x 0, y 0, z 0, a 1, b 2, c 3 (Zielbasis von Punkt1)

Mir ist aufgefallen das du im vergleich zu meiner Rechnung das δ der winkel a,b,c folgender maßen rechnest:

Basis2.a - Basis1.a => 1-0=1

So komme ich auch auf das richtige Ergebnis (x 105,159 y -98,18 .....) mit den ersten beiden Matrizen.

Transformationen1.pdf (28 kb)


Jetzt habe ich mal richtige realistische rotationen wie sie in den Robotern vorkommen (ohne translation) hergenommen.

Ich habe wieder zwei basen. Diese haben den gleichen Ursprung aber sind in allen drei Achsen verdreht.

Basis1 = x 0, y 0, z 0, a -179,828308, b 1,62193894, c 0,310080767 (Bezugsbasis von Punkt1)                                         

Basis2 = x 0, y 0, z 0, a 0, b 0, c 0 (Zielbasis von Punkt1)

Punkt1 = x 3331,3999, y -139,589905, z -146,998001, a -90,994133 , b -1,280123, c 0,310080767   (a, b, c ist erst mal uninteressant da dies die Orientierung des Roboterflansches oder des Werkzeuges ist) 

Sobald ich nun die Transformationsberechnung bestätige, erhalte ich jetzt folgende Infos:

Translation = 0 
Rotation a 179,837, b 1,623, c 0,305

Das Ergebnis ist dann folgendes:
Punkt1‘ = x -3325,471, y 148,2645, z -242,026, a 88,87099, b -1,002585, c -7,899083

Mein Ergebnis mit den Matrizen ist:

Punkt1‘ = x -3325,47141, y 149,5721, z -241,22026


also ich habe zuerst RZ ausgerechnet und anschließend Ry.

Im pdf. vom vorherigen Kommentar sind nur Anführungszeichen xyz' und xyz'' verkehrt.

Dann käme

P : [ 3331.3999, -139.589905, -146.998001]$

\(Az(179.837/180*\%pi).Ay(1.623/180*\%pi).Ax(0.305/180*\%pi).P =\begin{pmatrix}-3325.470687735978\cr 148.2665976833211\cr -242.0346434214119\end{pmatrix} \)

nah ran - vielleicht Rundungsfehler aufgrund unterschiedlich genauer Werte (Nachkommastellen %pi=3.141592653589793 beim meinem CAS und aufgrund der 3 Nachkommastellen im Winkel sind bestenfalls 2 Nachkommastellen gültig).

Was hast Du gerechnet?

wie schon erwähnt,

Mein Ergebnis mit den Matrizen ist:
Punkt1‘ = x -3325,47141, y 149,5721, z -241,22026

Das Ergebnis transformiert mit dem Robotertool: Kommt eher an deins heran.
Punkt1‘ = x -3325,471, y 148,2645, z -242,026, a 88,87099, b -1,002585, c -7,899083

Wieder eine Frage,

gegeben sind zwei Basen:

blob.png

und

blob.png

einen Punkt der bezüglich Base8 folgende Koordinaten hat:

blob.png


Damit ich den Punkt bezüglich der Base 4 beschreiben kann, muss ich doch erst die Rotationsberechnungen durchführen und anschließend die Translation.

Kann mir jemand eine kurze Beispielrechnung schicken?

Hallo hugoboss,

es fällt wieder auf, dass die Winkel, die Du oben angibst nicht mit denen übereinstimmen, die bei der Berechnung des Tools ausgegeben werden. Dazu kommt, dass die Winkel alle sehr in der Nähe von ganzen Vielfachen von 90° liegen. In diesem Bereich weichen die Werte vom Cosinus nur sehr wenig von 1 ab, was ein Vergleich von nakten Zahlen weiter erschwert. Auch scheint das Tool nummerisch ungenau zu sein. Wenn ich die Länge des transformierten Vektors von \((-3325,471|148,2645|-242,026)^T\), den das Tool oben berechnet hat, so weicht sein Betrag in der achten Stelle von der Länge des Originals ab. Das ist nicht viel, aber alles zusammen macht einen Vergleich schwierig.

Ich würde zunächst mal eine neue Schreibweise vorschlagen, die ich aus der Robotik kenne. Sie wird u.a bei der Denavit-Hartenberg-Transformation benutzt. Wenn ich schreibe

$$^0T_1$$

so ist \(T\) eine Transformationsmatrix, die ein System \(1\) bezogen auf ein System \(0\) beschreibt. Und weiter ist \(T\) eine homogene Transformation, d.h. Rotation und Translation werden in einer Matrix zusammen gefasst. Die \(0\) und die \(1\) stehen für das, was Du als Basis bezeichnest. Ist also ein Punkt \(p\) im System (in der Basis) \(1\) gegeben, so schreibt man

$$^1p= (...)$$

Die Position von \(p\) im System \(0\) - das ist dann \(^0p\) - berechnet man dann aus

$$^0p=^0T_1 \cdot ^1p$$

Wichtig ist dabei, dass eine Multiplikation nur mit Indizes, die links und rechts vom Malzeichen übereinstimmen, erlaubt ist. Alles andere gibt nur Zahlenschrott! Konsequenterweise ist dann auch

$$^1T_0 = \left( ^0T_1\right)^{-1}$$

Das Beispiel aus Deinem Kommentar vom 29,3. sieht dann so aus

$$^1p = \begin{pmatrix} 3331,3999 \\ -139,589905 \\ -146,998001 \\ 1 \end{pmatrix}$$ die 1 als vierte Koordinate ist die homogene Koordinate, die bei Positionen immer =1 ist. Die transformierte Position \(^2p\) im System 2 ist allgemein

$$^2p = ^2T_1 \cdot ^1p$$

und die Transformation \(^2T_1\) ist allen Anschein nach

$$^2T_1 = R_z(a) \cdot R_y(b) \cdot R_x(c)$$ wobei \(a\), \(b\) und \(c\) die drei Winkel beschreiben, mit denen das System \(1\) aus dem System \(2\) hervorgegangen ist. Und das beantwortet im Grunde auch Deine letzte Frage

Damit ich den Punkt bezüglich der Base 4 beschreiben kann, muss ich doch erst die Rotationsberechnungen durchführen und anschließend die Translation.

Nein - zunächst musst Du erstmal feststellen, wie die Transformation \(^4T_8\) aussieht. Ich vermute, dass Du aus den beiden Angaben der beiden Basen die beiden Transformationen \(^0T_4\) und \(^0T_8\) berechnen kannst. Dann ergäbe sich

$$^4T_8 = ^4T_0 \cdot ^0T_8 = \left( ^0T_4\right)^{-1} \cdot ^0T_8$$ und Dein gesuchter Punkt \(^4p \) wäre dann

$$^4p = ^4T_8 \cdot ^8p = \left( ^0T_4\right)^{-1} \cdot ^0T_8 \cdot ^8p$$

Ich habe jetzt mehrere Bitten an Dich:

1.) gewöhne Dir die oben vorgeschlagene Notation an, so wissen wir eher über was wir reden. Schreibt man hier z.B.: \(^0T_1\), so wird daraus \(^0T_1\).

2.) Befasse Dich mit den homogenen Koordinaten.

3.) Wähle in den Beispielen Winkel die nicht im Bereich von Vielfachen von 90° liegen. Also eher 25° oder -150° und nicht 1° oder 179°.

4.) Schreibe Zahlen bitte als Texte. Beim Abschreiben macht man Fehler. ich kopiere sie lieber direkt.

Und wenn Du Fragen hast, so stelle sie bitte. Vielleicht machst Du zu konkreten Problemen lieber eine neuen Frage auf, sonst verlieren wir hier irgendwann den Überblick.

Gruß Werner

Hallo Hans,

Du schriebst:

ist die beschriebene Reihenfolge nicht eher erst Ry(2) dann Rz(1) wenn ich die Matrizen betrachte  - dann simmer wieder beisammen?

Wenn Du die Reihenfolge der Multiplikation meinst, so stimmt das natürlich. Der Positionsvektor wird zuerst mit \(R_y\) und dann erst das Ergebnis mit \(R_x\) multipliziert. Nun ist aber jede Transformationsmatrix eine Transformation von einem Koordinatensystem in ein anderes. Wenn ich mir aber folgenden Ausdruck anschaue

$$p'' = R_z \cdot R_y \cdot p$$

sind dort drei Systeme. Das womit man startet, das um Z gedrehte und das um das gedrehte Y (das Y') gedrehte. Man kann sich das vorstellen, wie drei Dreibeine, die mit einem Drehgelenk in der Z-Achse vom 1 und 2 und mit einem Drehgelenk in den Y-Achsen des 2 und 3 Dreibeins miteinander verbunden sind. Ich habe das mal im Geoknecht3D versucht darzustellen:

Skizze3.png

(klick auf das Bild)

dort habe ich einen Vektor \(p=(0|1|4)^T\) dargestellt, der zuerst(!) um die Z-Achse um 70° (roter Winkel) gedreht wird und anschließend(!) um die mitgedrehte Y'-Achse um -25° (blauer Winkel) gedreht wird. Das Resultat ist

$$p'' = R_z(70°) \cdot R_y(-25) \cdot p = (-1,518|-1,247|3,625)^T$$

rechne es nach! Ich hatte oben nicht geschrieben, dass ich die gedrehte Y-Achse meine; ich habe das korrigiert. Du kannst es auch zuerst um Y drehen und anschließend um die ursprüngliche (!) (nicht verdrehte) Z-Achse. Das Ergebnis ist dasselbe!

Gruß Werner


Hallo Allerseits.

Als erstes möchte ich mich bei euch ALLE bedanken.

Und nun, zum Thema des Tages und der folgenden:

Frohe Ostern an ALLE!!!


Zu meiner Frage vom letzten Kommentar:

Damit ich den Punkt bezüglich der Base 4 beschreiben kann, muss ich doch erst die Rotationsberechnungen durchführen und anschließend die Translation.
Kann mir jemand eine kurze Beispielrechnung schicken?

Bitte nicht falsch verstehen, ich kann eine translation berechnen (glaube ich jedenfalls). Ist ja nichts anderes als (nachdem die Rotationsberechnung durchgeführt wurde, das bedeutet 0T4  zu  0T8 sind jetzt parallel in allen drei Achsen zu einander)  die Differenz 0T4  zu  0T zu ermitteln und die ermittelten Elemente auf den 8P hinzu zu rechnen. (Schwitz, ich hoffe ich habe alles richtig geschrieben :-)   )

Mich irritiert aber eins. Ich habe doch mal etwas von einem Berechnungstool gesprochen. Da bekomme ich folgende Informationen:

Translation Total : 97,31 (Das ist wol die Gesamtstrecke )                                    Translation            X=92,276    Y=6,282    Z=-30,248

Wenn folgende Basen gegeben sind:

blob.png blob.png

sind die errechneten differenzen bei mir folgende:

blob.png






Hallo Werner,

3.) Wähle in den Beispielen Winkel die nicht im Bereich von Vielfachen von 90° liegen. Also eher 25° oder -150° und nicht 1° oder 179°.

tja, sorry aber das sind halt realistische Bedinungen in meinem Fall.


blob.png

Gruß!

Hallo Hugoboss,

Bitte nicht falsch verstehen, ich kann eine Translation berechnen (glaube ich jedenfalls).

... glaube ich nicht.

Ist ja nichts anderes als (nachdem die Rotationsberechnung durchgeführt wurde, das bedeutet 0_T_4  zu  0_T_8 sind jetzt parallel in allen drei Achsen zu einander)

Nein, \(^0T_4\) und \(^0T_8\) sind eben nicht parallel! Und genau das macht den Unterschied.

hugoboss ich bitte Dich Winkel zu wählen, die ein paar mehr Grad von 0° und 180° abweichen und Du lieferst uns ein Beispiel, mit einer Winkeldifferenz von ca 0,1°. Und dann sollen wir die Erklärung für die Abweichungen zwischen Deiner Rechnung (die wir nicht kennen) und der Rechnung Deines Tools (was wir auch nicht kennen) aus den Abweichung der letzten Ziffern einer 8 bis 9-Stelligen Zahl heraus erklären (inklusive möglicher Rundungsfehler). Hat was von Kaffeesatzlesen - findet Du nicht?

Also ich habe nachgerechnet und für die Translation \(^4p_8\) das Ergebnis:

$$^4p_8 = \begin{pmatrix} 92,276 & 6,282 & -30,248 \end{pmatrix}^T$$

was ja so ziemlich mit dem Ergebnis Deines Tools übereinstimmt. Und für den Vektor \(^0p_{48}\) habe ich das Ergebnis

$$^0p_{48} = \begin{pmatrix} 91,258 & 7,187 & 33,007 \end{pmatrix}^T$$ ja - und das ist ja anscheinend Dein Ergebnis. Um es ganz klar zu sagen: beide Ergebnisse sind richtig und es handelt sich in beiden Fällen um den gleichen Vektor von der Basis 4 zur Basis 8. Der Unterschied liegt im Bezugssystem. \(^4p_8\) beschreibt die Position bezogen auf die Basis 4 und \(^0p_{48}\) beschreibt den selben Vektor von der 'Welt-Basis' aus, also von der Basis aus, in der die Basen 4 und 8 definiert sind.

Und wie ersteres geht habe ich oben schon beschrieben. Es ist $$^4T_8 = ^4T_0 \cdot ^0T_8 = \left( ^0T_4\right)^{-1} \cdot ^0T_8$$ und \(^4p_8\) ist der Positionsvektor von \(^4T_8\). Und wie das Tool den Rotationsanteil der Transformation ausrechnet, glauben wir ja inzwischen auch zu wissen (s.o.). Damit sollte ja nun Deine anfängliche Frage beantwortet sein.

Aber ich vermute, dass Du noch Fragen hast. Also nur heraus damit!

Gruß Werner


Nein, \(^0T_4\) und \(^0T_8\) sind eben nicht parallel! Und genau das macht den Unterschied.

Das meinte ich nicht. Das Weltkoordinatensystem \(T_0\) wird nicht berührt und mir ist auch klar das \(^0T_4\)  und \(^0T_8\) nicht parallel sind.

Vielmehr dachte ich dass wenn ich die Rotationsmatrizen durchlaufe und meinen \(^4P\) berechnet habe, dann kann ich mir einfach die Differenz der Ursprünge meiner Basen errechnen und einfach auf den \(^4P\) addieren.

Ich werde mich aber noch einwenig mehr einlesen müssen.


Bis dahin,

habt Gedult! ;-)

... wenn ich die Rotationsmatrizen durchlaufe und meinen \(^4P\) berechnet habe, dann kann ich mir einfach die Differenz der Ursprünge meiner Basen errechnen und einfach auf den 4P4P addieren.

es wäre mir lieber, Du würdest das formal hinschreiben. Hier ist mir schon nicht klar, was Du mit \(^4P\) meinst!?

Hallo Werner,


Sorry, aber ich blick da nicht ganz durch. Kannst du mir mal analytisch die Translation von \(^4T_8\) beschreiben. Zudem erschweren natürlich die verschiedenen Bezeichnungen, die Ihr schon im "Blut" habt, meine Erklärungen beim Versuch diese zu nutzen.



vielleicht gibt das https://ggbm.at/zNtvcrTu einen Einblick in die Grundlagen?

Hallo hugoboss,

Zunächst mal zur Klarstellung, was ist eigentliche was. Dazu eine Skizze:

Skizze5.png

Ich erkläre das alles nur in 2D, was IMHO völlig ausreicht. Zu 3D ist da grundsätzlich kein Unterschied. Links oben siehst Du die Basis 4. Die Transformation \(^0T_4\) vom 0- oder Weltsystem, welches durch die dunkelgrauen Linien gekennzeichnet ist, zum System Basis 4. Oben im Bild ist:

$$^0T_4 = \begin{pmatrix} 0 & -1 & -2 \\ 1 & 0 & 2 \\ 0 & 0 & 1\end{pmatrix}$$ Die erste Spalte beschreibt den X-Vektor von Basis 4 bezogen auf das 0-System. Da er senkrecht nach oben zeigt, hat er die Richtung

$$^0x_4 = \begin{pmatrix} 0 \\ 1 \\ 0\end{pmatrix}$$ die dritte Koordinate ist der homogene Anteil, und da X nur die Richtung und keine Position vorgibt ist diese =0. Die zweite Spalte ist \(^0y_4\) und beschreibt die Y-Richtung von Basis 4. Und der dritte Vektor ist die Position von Basis 4 im 0-System:

$$^0p_4 = \begin{pmatrix} -2 \\ 2 \\ 1\end{pmatrix}$$ und da dies eine Position ist, ist die homogene Koordinate =1. Das rechte System Basis 8 ist entsprechend aufgebaut. Es ist

$$^0T_8 = \begin{pmatrix} \frac12 \sqrt{3} & -\frac12 & 2 \\ \frac12 & \frac12 \sqrt{3} & 1 \\ 0 & 0 & 1 \end{pmatrix}$$ Vielleicht fällt Dir aus, dass der linke obere Teil der Matrix genau der Rotationsanteil ist

$$^0R_8 = \begin{pmatrix} \cos 30° & -\sin 30° \\ \sin 30° & \cos 30° \end{pmatrix}$$

Jetzt betrachten wir nur die Translation von 4 nach 8 (der rote Pfeil). Im 0-System ist es einfach die Differenz der beiden Positionen:

$$^0p_{48} = ^0p_8 - ^0p_4 = \begin{pmatrix} 2 \\ 1 \end{pmatrix} - \begin{pmatrix} -2 \\ 2\end{pmatrix} = \begin{pmatrix} 4 \\ -1 \end{pmatrix} $$

das kannst Du durch Abzählen der Kästchen im Bild oben überprüfen. Wenn Du nun aber dieselbe Position aus Sicht von Basis 4 beschreiben willst, so wäre dies der Vektor \(^4p_8\). Die Position von Basis 8 im 0-System ist bekannt, es ist (s.o.)

$$^0p_8 = \begin{pmatrix} 2 \\  1\end{pmatrix}$$ und \(^4p_8\) berechnet sich nun aus

$$^4p_8 = ^4T_0 \cdot ^0p_8$$

achte darauf, das die Indizes links und rechts vom Malzeichen identisch sein müssen! Es ist

$$^4T_0 = \left( ^0T_4 \right)^{-1}$$ und nun kann jede Transformation \(T\) (auch in 3D) folgendermaßen invertieren. Allgemein gilt

$$T^{-1} = \begin{pmatrix} R & p \\  0^T & 1 \end{pmatrix} ^{-1} = \begin{pmatrix} R^T & - R^T \cdot p \\  0^T & 1 \end{pmatrix}$$

und speziell für mein Beispiel hier:

$$ \left( ^0T_4 \right)^{-1} = \begin{pmatrix}  \begin{pmatrix} 0 & -1 \\  1 & 0 \end{pmatrix}\cancel{T} & \begin{pmatrix} -2 \\ 2 \end{pmatrix} \\  0^T & 1 \end{pmatrix} ^{-1} \\ \space = \begin{pmatrix}  \begin{pmatrix} 0 & 1 \\  -1 & 0 \end{pmatrix} & - \begin{pmatrix} 0 & 1 \\  -1 & 0 \end{pmatrix}\begin{pmatrix} -2 \\ 2 \end{pmatrix} \\  0^T & 1 \end{pmatrix} \\ \space= \begin{pmatrix} 0 & 1 & -2 \\ -1 & 0 & -2 \\ 0 & 0 & 1\end{pmatrix}$$ Versuche Dich mal in das System Basis 4 hinein zu versetzen und schau wie von dort aus das 0-System beschrieben ist. Du wirst dann feststellen, dass es sich genau um diese Transformation handelt. Nun nur noch die Multiplikation mit \(^4p_8\); das macht:

$$^4p_8 = ^4T_0 \cdot ^0p_8 = \begin{pmatrix} 0 & 1 & -2 \\ -1 & 0 & -2 \\ 0 & 0 & 1\end{pmatrix} \cdot \begin{pmatrix} 2 \\  1 \\ 1 \end{pmatrix} = \begin{pmatrix} -1 \\  -4 \\ 1 \end{pmatrix} $$ D.h. aus der Sicht von Basis 4 muss man 1 Einheit in X-Richtung (von Bais 4) negativ gehen und dann 4 Einheiten inn Y-Richtung ebenfalls negativ. um zum Ursprung von Basis 8 zu gelangen.

Gruß Werner

Hallo Werner,

danke für deine Antwort.

Bin gerade dabei diese zu studieren.

Gehe ich davon richtig aus das x von Welt in deiner Skizze senkrecht ist?


Gruß

Sorry, x-Welt ist wie ich verstanden habe wagerecht.

Die erste Spalte beschreibt den X-Vektor von Basis 4 bezogen auf das 0-System. Da er senkrecht nach oben zeigt, hat er die Richtung

Hallo Werner


jetzt verstehe ich was das mit den ganzen 1en in den Transformationsmatrizen die ich im INet fand zu tun hat. Das zauberwort ist "Richtungsvektoren". In der Transformationsmatrix vom R^2 ist die erste Spalte praktisch der Richtungsvektor von    X -Basis4 bezüglich der Welt ( x=0 y=1 )

Zweite Spalte der Richtungsvektor von Y -Basis4 bezüglich der Welt ( x=-1 y=0 ).


Langsam aber sicher fange ich an zu begreifen.




Hallo Werner,

nochmals, einen großen Dank für deine Bemühung. Das klingt alles sehr plausibel obwohl ich noch ein wenig Verdauungsprobleme habe.

blob.png

mit R sind die Rotationsmatrizen gemeint oder? Wenn ja, kann man hier einfach den ermittelten Vektor eintragen oder muss mann (alle) Rotationsmatrizen hier eintragen?

Des Weiteren bin ich mir noch nicht sicher was du mit 0T  und T meinst (siehe unten)

 blob.png

Links vom markierten T sind die Richtungsvektoren von der Basis4. Obwohl Basis4 eigentlich um 90° zur Welt verdreht ist braucht man hier keine Rotationsmatrix da ich dies schon mit den Richtungsvektoren angebe oder? Und das wäre dann in diesem Beispiel 0T????

Was meinst du aber mit T, vieleicht die negierung von 0T wie im nächste Schritt beschrieben?


Gruß!


 

Hallo hugoboss,

mit R sind die Rotationsmatrizen gemeint oder?

Ja - es ist die Rotationsmatrix (Einzahl) der Transformation gemeint.


Wenn ja, kann man hier einfach den ermittelten Vektor eintragen oder muss man (alle) Rotationsmatrizen hier eintragen?

Die Frage irritiert mich. Du kannst eine Rotationsmatrix nicht schreiben indem Du "einen Vektor einträgst" - und was meinst Du mit "alle Rotationsmatrizen"? In einer Transformationsmatrix befindet sich genau ein Rotationsanteil, der kann das Ergebnis verschiedener Rotationen um unterschiedliche Winkel und Achsen sein, aber es ist nur eine Rotationsmatrix.


Des Weiteren bin ich mir noch nicht sicher was du mit 0T und T meinst

nichts aufregendes. Das sind einfach die 0'en, die waagerecht (daher das 'T' für transponiert) unter der Rotationsmatrix stehen. Es ist

$$T= \begin{pmatrix} \cos \alpha & -\sin \alpha & p_x \\ \sin \alpha & \cos \alpha & p_y \\ \colorbox{#ffff00}{0} & \colorbox{#ffff00}{0} & 1 \end{pmatrix}$$

$$\begin{pmatrix} 0 & 0 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}^T = 0^T$$

Das 'T' neben der Rotationsmatrix ist falsch. Das gehört da nicht hin!


Links vom markierten T sind die Richtungsvektoren von der Basis4. Obwohl Basis4 eigentlich um 90° zur Welt verdreht ist

Oh - das ist ein Missverständnis! Es ist zunächst mal

$$^0T_4 = \begin{pmatrix}  \begin{pmatrix} 0 & -1 \\  1 & 0 \end{pmatrix} & \begin{pmatrix} -2 \\ 2 \end{pmatrix} \\  0^T & 1 \end{pmatrix}$$ nicht mehr und nicht weniger. Und jetzt setze ich eine hoch \((-1)\) auf beiden Seiten:

$$\left( ^0T_4 \right) ^{-1}= \begin{pmatrix}  \begin{pmatrix} 0 & -1 \\  1 & 0 \end{pmatrix} & \begin{pmatrix} -2 \\ 2 \end{pmatrix} \\  0^T & 1 \end{pmatrix}^{-1}$$ und erst danach führe ich die Invertierung auf der rechten Seite durch

$$\begin{aligned} \left( ^0T_4 \right)^{-1} &= \begin{pmatrix}  \begin{pmatrix} 0 & 1 \\  -1 & 0 \end{pmatrix} & - \begin{pmatrix} 0 & 1 \\  -1 & 0 \end{pmatrix}\begin{pmatrix} -2 \\ 2 \end{pmatrix} \\  0^T & 1 \end{pmatrix} \\ &= \begin{pmatrix} 0 & 1 & -2 \\ -1 & 0 & -2 \\ 0 & 0 & 1\end{pmatrix} \end{aligned}$$ Gruß Werner

Hallo Werner,

Ich kappiere.

Was ist eigentlich der Unterschied zwischen der oben genannten Invertierung und der Inverse einer Matrix? Ich las vom Gaus-Jordan-Algorithmus.

Hallo hugoboss,

Was ist eigentlich der Unterschied zwischen der oben genannten Invertierung und der Inverse einer Matrix?

das ist dasselbe.

Ich las vom Gaus-Jordan-Algorithmus. 

das ist ein nummerisches Verfahren. Das könntest Du hier natürlich auch anwenden, aber auf Grund der typischen Eigenschaften einer Transformationsmatrix ist der von mir gezeigte Weg wesentlich einfacher.

musste mich aus beruflichen Gründen für ein paar Tage ausklinken.

Mittlerweile bin ich dabei das hier gelernte in VB zu realisieren. Zum Glück gibt es in VB schon fertige funktionen wie z.B eine vorgefertige 4x4 Rotationsmatrix um eine beliebige Achse mit Translationsteil oder die Invert-Funktion einer z.B. 4x4 Matrix.

Und genau da stellt sich bei mir eine Frage:

Der Rotationsteil um eine achse einer 4x4 Matrix besteht aus vier elementen. Alle anderen elemente inklusive translationsteil sind 0.
Hat dies irgend einen Einfluss beim bilden der Inversen Matrix?

Falls jemand interresse hat könnte ich den VB-Code hier zur Verfügung stellen.


MfG

Hallo hugoboss,

Der Rotationsteil um eine Achse einer 4x4 Matrix besteht aus vier Elementen. Alle anderen Elemente inklusive Translationsteil sind 0.

Dass alle anderen Elemente 0 sind, wäre ein Fehler. Die sonstigen Elemente sollten den Wert annehmen, den auch die Einheitsmatrix hat. Also alle Elemente auf der Diagonalen müssen =1 sein, solange sie nicht Teil der Rotation sind.

Beispiel: Rotations um \(z\):

$$R_z(\varphi) = \begin{pmatrix} \cos \varphi & -\sin \varphi & 0 & 0\\ \sin \varphi & \cos \varphi & 0 & 0\\ 0& 0& 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$ Gruß Werner

wow, super schnelle Atwort!

MfG

Habe es gerade überprüft und alle Elemente der Diagonale stehen auf 1 wenn diese nicht durch Rotation überschrieben sind.

Hallo Werner,

wie schon erwähnt bin ich dran das ganze in VB zu realisieren. Ich habe versucht dein oberes Beispiel vom 8.4. (nur in dreidimensionaler Form) zu realisieren. Auch die unendlich langen nachkommastellen und die Winkel nahe dem vielfachen von 90 Grad habe ich weggelassen. Ich muss leider mitteilen dass ich das so nicht geschafft habe. Allerdings habe ich mit meinen realistischen Werten gearbeitet. Im zweidimensionalen raum war alles plausibel und ich habe auch die richtigen Vektoren herausbekommen.

Im R^3 aber musste ich einen anderen Weg gehen. Das Problem war offensichtlich die Rotationsmatrix. Hier musste ich mit der 'Gier-Nick-Roll: z, y′, x″-Konvention arbeiten. Jetzt habe ich auch die richtige Translation \(^4p_8\) errechnet.

 blob.png

Jetzt fehlt mir noch eins. Die Translation habe ich geschafft. Nun muss ich noch den Punkt der ursprünglich in der Basis 8 beschrieben war, bezüglich der Basis 4 beschreiben.

Ich dachte dass ich auf die Punktkoordinaten einfach den errechneten Vektor addiere aber dass geht schief.

Hallo hugoboss,

aber dass geht schief.

nun - das ist keine ausreichende Fehlerbeschreibung, woraufhin ich Dir mit irgendwas helfen könnte.

Nur soviel: Wenn Du zwei Vektoren addierst oder subtrahierst, so ist das nur genau dann sinnvoll, wenn sie sich im selben Bezugssystem befinden, d.h. der Index links oben in der oben angegebenen Schreibweise muss übereinstimmen.

Gruß Werner


folgendes Problem stellt sich mir gerade:

Basis1 (x=10 y=20 z=30 a=60 b=30 c=10)        (Rz)a=60 (Ry)b=30 (Rx)c=10
Basis2 (x=40 y=50 z=60 a=-170 b=60 c=30)     (Rz)a=-170 (Ry)b=60 (Rx)c=30

Als zwischenergebnis erhalte ich eine Translation in x,y,z und eine Rotationsangabe a,b,c.
x 43,358      y 28,653      z 0,907    < bis hier alles im grünen Bereich
a -80,661    b 17,596    c 80,035    < das verstehe ich nicht

Wie man unschwer erkennen kann sind die Ergebnisse für a,b,c nicht die Winkeldifferenzen beider Basen.
Wie aber werden diese Winkel ermittelt???

Hallo hugoboss,

da bist Du ja wieder ;-)

Wie man unschwer erkennen kann sind die Ergebnisse für a,b,c nicht die Winkeldifferenzen beider Basen.

Warum sollten das auch die Differenzen sein? Die von Dir angegebene Translation ist auch nicht die Differenz aus den beiden Positionen!

Du hast gegeben: die beiden Basen mit \(^0T_{B1}\) und \(^0T_{B2}\). Und Du hast berechnet:

$$^{B2}T_{B1} = \left( ^0T_{B2}\right)^{-1} \cdot ^0T_{B1}$$ und der Rotationsanteil von \(^{B2}T_{B1}\) ist genau:

$$\text{Rot}\left( ^{B2}T_{B1} \right) = R_z(-80,661°) \cdot R_y(17,596°) \cdot R_x(80,035°)$$ ich habe das gleiche heraus wie Du.


Wie aber werden diese Winkel ermittelt???

Aus der Rotationsmatrix. Du berechnest zunächst das Ergebnis der Verknüpfung von \(\left( ^0T_{B2}\right)^{-1}\) und \(^0T_{B1}\) als Matrix. Dann vergleichst Du die neun Elemente mit dem Ausdrücken aus der allgemeinen Form von \(R_z\cdot R_y \cdot R_x\). Daraus berechnest Du dann die drei Winkel ... ist etwas aufwendig, aber möglich.

Ein Tipp: sieh zu, dass Du das Tool, welches Du benutzt, von Winkeln auf die Ausgabe der Matrix umstellst. In der Robotik taugen Winkel nur als Beschreibung für die Stellung der Rotationsachsen des Roboters. Ansonsten sind sie ziemlich unhandlich (wie man hier sieht) und irreführend. Mit der Matrix kannst Du Dir (mit etwas Übung) die Lage der Transformation besser vorstellen, mit Winkeln kann ich das bis heute nicht!

Gruß Werner

Mensch Werner, wenn du nicht wärst...... :-)


muss erst mal über Pfingsten arbeiten. Sobald ich die Berechnung realisiert habe, melde ich mich mit dem Ergebnis!


Bis dann! Und nochmals vielen Dank!!!

Noch eine Frage:

Ausschnitt aus Wikipedia https://de.wikipedia.org/wiki/Roll-Nick-Gier-Winkel


blob.png

Gelten die oberen Formeln für x-beliebige Rotationsmatrizen (es gibt ja verschiedene Konventionen)?

Hallo hugoboss,

Ja - die Rotationsmatrix ist eindeutig. Nur die Winkel und ihre Reihenfolge sind es nicht! D.h. aus dem WIki-Artikel geht nicht hervor, was mit \(\alpha\), \(\beta\) und \(\gamma\) gemeint ist, bzw, wie diese definiert sind. (Deshalb auch der Tipp: geh' weg von den Winkeln!)

Ich habe es aber spaßeshalber mal durchgerechnet. Es ist

$$\text{Rot}(^{B2}T_{B1}) \approx \begin{pmatrix}0.15468& 0.21907& -0.96337\\ -0.94058& -0.26572& -0.21145\\ -0.30230& 0.93883& 0.16495\end{pmatrix}$$

wenn ich nach obigen Formeln die Winkel berechne, so komme ich auf:

$$\beta = 17,596°\quad \alpha=-80,661° \quad \gamma=80,035°$$ ... scheint also die passende Konvention zu sein.

Ein Tipp: sieh zu, dass Du das Tool, welches Du benutzt, von Winkeln auf die Ausgabe der Matrix umstellst. In der Robotik taugen Winkel nur als Beschreibung für die Stellung der Rotationsachsen des Roboters. Ansonsten sind sie ziemlich unhandlich (wie man hier sieht) und irreführend. Mit der Matrix kannst Du Dir (mit etwas Übung) die Lage der Transformation besser vorstellen, mit Winkeln kann ich das bis heute nicht!

Am Tool kann ich leider nichts umstellen. Ich greife aber von meiner Matrix alle neun Elemente ab und rechne zuerst auf Bogenmaß und dann auf Grad um.

Das mache ich für Basis1 und für Basis2 und schau mir dann die Differenzen an.

Mein Fehler war, die Angabe der Winkel für eine Basis, bezieht sich immer auf die RoboterRoot bzw. Welt und nicht auf irgend einer anderen Basis.

Denkfehler!

Hallo Werner,

bin wieder zurück. Habe auch die Winkel aus der Rotationsmatrix auslesen können. Ging eigentlich mit den oberen Formeln ganz fix.

Trotz dem habe ich noch Probleme bei einem Basiswechsel auf die richtigen Koordinaten zu kommen.

Ich bin folgendermaßen vorgegangen:

1. Ermitteln der Translation: \(^0T_2\) * (Delta von Basis1 und 2)

2. Ermitteln der Rotation: wie oben beschrieben aus der Transformation

    \(^2T_1\) = (\(^0T_2\))-1 * \(^0T_1\) und auslesen der Rotationen aus der Matrix mit   hilfe der oberen Formeln.


Bis hier scheint alles ok zu sein.

Nun kann der Punkt P1' folgender maßen ermittelt werden:

\(^2P\) = \(^2T_1\) * \(^1P1\)


1 Frage:

In \(^2T_1\) muß man doch die Translation nun einbinden. Ich denke mal dass die errechnete Translation aus der Rotationsmatrix damit gemeint ist (siehe 1.) und nicht die x,y,z Differenzen der beiden Basen \(^0B1_1\) und \(^0B2_2\)?

Leider komme ich aber nicht auf die Koordinaten die ich mit dem Robotertool herausbekommen habe.


Vieleicht könntest du mal nachrechnen und mir sagen was ich da falsch mache:

Gegeben sind zwei Basen:

Base 1(Ausgangsbasis)
x 3964,7   y -1176,52    z 2280,41   Rz(a) -179,83   Ry(b) 1,622   Rx(c) 0,31

'Base 2 (neue Basis)
x 10  y 20   z 30   Rz(a) 60   Ry(b) 30   Rx(c) 10

Koordinaten vom Punkt1 bezüglich der Ausgangsbasis1                                                 x 3331,4      y -139,5899  z -146,998   Rz -90,994133 Ry -1,280123 Rx -6,27094316

Soll Koordinaten vom Punkt1 bezüglich der Basis2 nach Transformation                         x-1532,865  y -812,6591  z 1599,538  Rz 36,79716  Ry -21,09262  Rx -32,7314


Die errechnete Translation ist:                                                                                                   x -310,1531   y -3541,872  z 3081,326

Die Rotation aus der Rotationsmatrix:                                                                                       a (Rz) 117.658432  b (Ry) 24.9345188  c (Rx) -21.603447


Bis hierher bin ich gekommen.  Die errechnete Translation füge ich in die Rotationsmatrix \(^2T_1\) ein (elemente 41-43) und diese multipliziere ich mit P1.

Als ergebnis bekomme ich das hier raus

x -1452,434   y -2374,899   z -1841,089


Hmmmm, was mach ich nur falsch?


Hat sich erledigt.     War ein Fehler in den Variablen!

Hallo Werner, Hallo an alle!

mittlerweile bin ich bei der Transformation sehr genau. Jedenfalls was x,y,z betrifft. Wie du vermutlich auch von der Robotik kennst, ist ein Punkt im Raum bezogen auf einem Objekt (Basis oder System) beschrieben mit x,y,z Koordinaten.

Zusätzlich besitzt dieser Punkt in der Robotik a,b,c Winkel die die Orientierung des RoboterFlansches oder des RoboterTools (Werkzeug z.B Schweißzange) beschreiben.

Mein momentanes Problem ist die Berechnung dieser Orientierungen. Fällt dir da was ein?


Z.B.

Base 1(Ausgangsbasis)
x 3964,7  y -1176,52    z 2280,41  Rz(a) -179,83  Ry(b) 1,622  Rx(c) 0,31

'Base 2 (neue Basis)
x 10  y 20  z 30  Rz(a) 60  Ry(b) 30  Rx(c) 10

Koordinaten vom Punkt1 bezüglich der Ausgangsbasis1                                                x 3331,4   y -139,5899   z -146,998   Rz -90,994   Ry -1,28  Rx -6,271

Soll Koordinaten vom Punkt1 bezüglich der Basis2 nach Transformation                        x-1532,865  y -812,6591  z 1599,538  Rz 36,797  Ry -21,093  Rx -32,731

Hallo hugoboss,

Mein momentanes Problem ist die Berechnung dieser Orientierungen. Fällt dir da was ein?

Was soll mir dazu noch einfallen? Ich dachte wir reden die ganze Zeit (mehr als 40 Beiträge!) genau über dieses Thema!

... und bei den Transformationen solltest Du vielleicht noch eine Frage formulieren. Was genau ist jetzt Dein Problem? Und schreibe bitte bei jedem Ding, welches Du als "Basis" bezeichnest, worauf sich das bezieht. Gerne in der Schreibweise, die ich oben vorgeschlagen habe.

Das entscheidende Ding bei Koordinatentransformation ist, zu definieren, über was genau man redet!

+1 Daumen

Hm,

wenn Dein XL-Sheet (lade es doch als Google-Tab hoch - kaum zu lesen)

P : [100, -100, 100] um  Rz -1° ,Ry -2°,Rx  -3° dreht dann komm ich auf

http://maxima-online.org/?inc=r-256612086


\( \begin{pmatrix}98.23952887191078\cr -101.7300101593675\cr 100\end{pmatrix}\)  \(\begin{pmatrix}94.68973433501515\cr -101.7300101593675\cr 103.3675928158301\end{pmatrix}\) \(\begin{pmatrix}94.68973433501515\cr -96.1807509014795\cr 108.5500684826675\end{pmatrix}\)

Avatar von 21 k

Das stimmt auch mit meinem Ergebnis überein.

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

2 Antworten
Gefragt 4 Jul 2013 von Gast
2 Antworten
0 Antworten
Gefragt 29 Sep 2014 von Gast

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community