Koordinatentransformation (Geodäsie/Vermessung)

Kai Westermann @, Freitag, 10.12.2010, 16:44 (vor 2747 Tagen)

Moin!

Ich bin Roboterprogrammierer und habe folgendes Problem:

Ich muß Raumpunkte mit einer Toolverschiebung transformieren.
Ich habe kartesische Raumpunkte, welche sich auf die Werkzeugspitze eines Roboters beziehen. Hierzu brauche ich den entsprechenden Raumpunkt, an dem eine imaginäre Kugel steht, diese umgibt den oberen Werkzeugteil und die Achse 6. Das wiederum gibt mir die Möglichkeit beide Punkte zur Anzeige zu bringen und mögliche Kollisionen einzugrenzen.
Bislang erzeuge ich die Toolverschiebung in einem Tool, die Umrechnung der Raumpunkte wiederum in einem anderen und die Datenaufbereitung mache ich in Excel.
Jetzt würde ich gerne alles in Excel machen.

Die Toolverschiebung hat in dem Tool die Formel(?) A-1*B,
wobei A das Werkzeug- und B das Kugeltool ist, also etwa so:

A B Resultat
X -60,421 0,0 -315,61
Y 0,0 0,0 0,0
Z 1193,93 200,0 944,42
a -180,0 0,0 180,0
b 0,0 0,0 15,0
c -180,0 0,0 180,0

a ist hierbei die Drehung um Z,
b die Drehung um Y,
c die Drehung um X.

Die Raumpunktverschiebung wiederum wird mir mit Frame 1:Frame 2 = Frame 3 angezeigt.

Frame 1
X 788.397888,Y 480.050903,Z 2151.60596,A -175.321503,B 12.8846502,C 2.97614193
Frame 2
X -352.0, Y 0.0, Z 942.0, A 0.0, B 90.0, C 0.0
Frame 3
X 917.329, Y 539.6745, Z 3147.141, A -8.445652, B 76.78176, C 167.212

Hier ist nun eine andere Toolverschiebung in Frame 2 verwendet, als in obigem Beispiel zu sehen.

Mit Dank für alle eventuelle Mühe

Kai Westermann

Koordinatentransformation

Kai Westermann @, Freitag, 10.12.2010, 16:57 (vor 2747 Tagen) @ Kai Westermann

Hm....leider bekomme ich keine schönere Anzeige des Teiles mit dem Toolverschiebungsbeispiel hin...oder doch?:

Die Toolverschiebung hat in dem Tool die Formel(?) A-1*B,
wobei A das Werkzeug- und B das Kugeltool ist, also etwa so:

A B Resultat
X -60,421 0 -315,61
Y 0,0 0 0
Z 1193,93 200 944,42
a -180,0 0 180
b 0,0 0 15
c -180,0 0 180

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Freitag, 10.12.2010, 16:59 (vor 2747 Tagen) @ Kai Westermann

Hi,

Hm....leider bekomme ich keine schönere Anzeige des Teiles mit dem Toolverschiebungsbeispiel hin...oder doch?:

Wie wäre es, wenn Du die Vorschau benutzt?


      A      B      Resultat 
X  -60,421   0      -315,61 
Y    0,0     0         0
Z 1193,93  200       944,42 
a -180,0     0       180 
b    0,0     0        15
c -180,0     0       180

Ich weiß nicht, was schön ist aber CODE sieht vermutlich besser aus, oder?

Gruß Micha

EDIT: Okay, die Tabs versauen es dann wieder. Habe mal Leerzeichen genommen. ;-)

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Freitag, 10.12.2010, 17:04 (vor 2747 Tagen) @ Kai Westermann

Hi Kai,

ich habe leider nicht viel von dem Verstanden, was überhaupt Dein Problem ist.

Ich muß Raumpunkte mit einer Toolverschiebung transformieren.

Was ist eine Toolverschiebung?

Ich habe kartesische Raumpunkte, welche sich auf die Werkzeugspitze eines Roboters beziehen.

Okay.

Hierzu brauche ich den entsprechenden Raumpunkt, an dem eine imaginäre Kugel steht, diese umgibt den oberen Werkzeugteil und die Achse 6.

ich kenne mich mit Roboterprogrammierung nicht aus. Insofern kann ich mir weder unter der imaginären Kugel noch unter der Achse 6 etwas vorstellen. Ist das überhaupt wichtig, um Dir zu helfen?

Jetzt würde ich gerne alles in Excel machen.

Okay, was hindert Dich?

Die Toolverschiebung hat in dem Tool die Formel(?) A-1*B,
wobei A das Werkzeug- und B das Kugeltool ist, also etwa so:

A B Resultat
X -60,421 0,0 -315,61
Y 0,0 0,0 0,0
Z 1193,93 200,0 944,42
a -180,0 0,0 180,0
b 0,0 0,0 15,0
c -180,0 0,0 180,0

a ist hierbei die Drehung um Z,
b die Drehung um Y,
c die Drehung um X.

Eine räumliche Helmert-Transformation ohne Maßstab, würde ich meinen.

Frame 1
X 788.397888,Y 480.050903,Z 2151.60596,A -175.321503,B 12.8846502,C 2.97614193
Frame 2
X -352.0, Y 0.0, Z 942.0, A 0.0, B 90.0, C 0.0
Frame 3
X 917.329, Y 539.6745, Z 3147.141, A -8.445652, B 76.78176, C 167.212

Hier ist nun eine andere Toolverschiebung in Frame 2 verwendet, als in obigem Beispiel zu sehen.

Soll es denn das selbe Beispiel sein?


Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Transformation, Helmert, Koordinaten

Koordinatentransformation

Kai Westermann @, Montag, 13.12.2010, 09:50 (vor 2744 Tagen) @ MichaeL

Moin, MichaeL!

ich habe leider nicht viel von dem Verstanden, was überhaupt Dein Problem ist.

Mist....

Was ist eine Toolverschiebung?

Einen Industrieroboter hast Du aber schon mal gesehen, oder?
Hier ein Link zur Mathematik und Robotern, das macht es hoffentlich heller.

ich kenne mich mit Roboterprogrammierung nicht aus. Insofern kann ich mir weder unter der imaginären Kugel noch unter der Achse 6 etwas vorstellen. Ist das überhaupt wichtig, um Dir zu helfen?

Dachte ich, muß aber nicht.

Jetzt würde ich gerne alles in Excel machen.

Okay, was hindert Dich?

Das Wissen, wie. Ich kann Roboter programmieren, aber für Toolverschiebungen gibt es Werkzeuge, die aber in diesem Falle alles nur komplizierter im Handling machen

Eine räumliche Helmert-Transformation ohne Maßstab, würde ich meinen.

Hm.....kann sein.

Hier ist nun eine andere Toolverschiebung in Frame 2 verwendet, als in obigem Beispiel zu sehen.

Soll es denn das selbe Beispiel sein?

Ursprünglich ja, dann mußte ich feststellen, daß das Werkzeug im Programm gar nicht verwendet wird, ich also kein Beispiel daraus kreieren kann

Also, der Roboter hat ein WELT-Koordinatensystem, dieses steckt im Roboterfuß.
Dann gibt es das Tool-Koordinatensystem NULL, welches im Flansch des Roboters steckt,
also ohne daß ein Werkzeug angebaut ist. Das nennt man auch ToolCenterPoint TCP.
Wenn nun ein Raumpunkt angefahren wird, dann bewegt der Roboter den TCP im Flansch an die im Programm angegebene Stelle im Raum.
Nun kann man dem Roboter ein Werkzeug anbauen und will dann ja den selben Raumpunkt nicht mit dem Flansch, sondern der Spitze des Werkzeuges anfahren. Dazu benötigt man dann die besagte Toolverschiebung.
Ich habe nun die Raumpunkte im Programm, wo das Werkzeug jeweils im Raum steht und möchte wissen, wo ein imaginäres, zweites Werkzeug im Raum stünde, wenn es denn angebaut wäre; die besagte Werkzeugkugel.
Vielleicht kann ich das mit der Helmert-Transformation lösen, obwohl mir das mehr nach einer BASE-Verschiebung aussieht. Das wäre, wenn nicht mehr das WELT-Koordinatensystem der Bezug für die Raumpunkte wäre sondern z.B. die Mitte der Anlage, in der der Roboter steht. Eine Analogie wäre, statt des geographischen Nordpoles, den magnetischen zu nehmen.

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 13.12.2010, 10:36 (vor 2744 Tagen) @ Kai Westermann

Hallo Kai,

Einen Industrieroboter hast Du aber schon mal gesehen, oder?

Ja, aber deshalb kenne ich trotzdem die fachspezifische Terminologie nicht. Viele Deiner Erklärungen sind daher für mich zweideutig und im Zusammenhang dann z.T. unverständlich.
Ein Werkzeug bpsw. kann im Kontext des Roboters wirklich ein physischer Gegenstand sein zB ein Bohrer; betrachtet im Kontext eines Programms (Software) könnte es aber auch eine Routine zum Rechnen oder Darstellen sein. So heißt die Leiste mit Icons in Word, wo man Fett, Kursiv oder die Schriftfarbe wählen kann schließlich Werkzeugleiste oder Toolbar. Insofern trifft gerade gesagtes auch für das Wort Tool zu. Und nun überleg' Dir, was ich aus Sätzen wie:

für Toolverschiebungen gibt es Werkzeuge

rauslesen soll. ;-)

Also, der Roboter hat ein WELT-Koordinatensystem, dieses steckt im Roboterfuß.

Okay. Heißt also, jeder Roboter lebt in seiner eigenen Welt. Hat man zwei Roboter, so hat man auch zwei WELT-Koordinatensysteme? (Ist der Name dann nicht eher unpassend gewählt?)

Dann gibt es das Tool-Koordinatensystem NULL, welches im Flansch des Roboters steckt,
also ohne daß ein Werkzeug angebaut ist. Das nennt man auch ToolCenterPoint TCP.

Gut. Ich stelle mir hier einen Roboterarm vor. TCP definiert die Position dieses Arms im Raum bezogen auf das System WELT.

Wenn nun ein Raumpunkt angefahren wird, dann bewegt der Roboter den TCP im Flansch an die im Programm angegebene Stelle im Raum.

Du kannst also nur die Position des TCP programmieren bzw. anfahren lassen?

Nun kann man dem Roboter ein Werkzeug anbauen und will dann ja den selben Raumpunkt nicht mit dem Flansch, sondern der Spitze des Werkzeuges anfahren. Dazu benötigt man dann die besagte Toolverschiebung.

Erscheint soweit einleuchtend. Das ist also eine konstante Verschiebung für ein Werkzeug bezogen auf das Koordinatensystem NULL bzw. TCP.

Ich habe nun die Raumpunkte im Programm, wo das Werkzeug jeweils im Raum steht

Das verstehe ich gerade nicht. Du weißt, wo das Werkzeug aktuell ist, oder Du weißt, welche Position im Raum der Roboter mit der Werkzeugspitze anfahren soll?

und möchte wissen, wo ein imaginäres, zweites Werkzeug im Raum stünde, wenn es denn angebaut wäre; die besagte Werkzeugkugel.

Hier steige ich wieder aus.

Vielleicht kann ich das mit der Helmert-Transformation lösen, obwohl mir das mehr nach einer BASE-Verschiebung aussieht.

Die Transformation besteht aus 7 Parameter: 3 Verschiebungen in X, Y und Z, 1 Streckung (Maßstab) und 3 Drehungen um die jeweiligen Achsen (X, Y und Z). Mittels dieser Trafo werden also die funktionalen Beziehungen zwischen zwei kartesischen Koordinatensystemen hergestellt, um Koordinaten des einen Systems in das zweite zu überführen.

Ich weiß leider immer noch nicht, was Du benötigst aber vll habe ich ja schon etwas mehr verstanden als beim letzten Mal.

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Transformation, Helmert, Koordinaten, Roboter

Koordinatentransformation

Kai Westermann @, Montag, 13.12.2010, 11:22 (vor 2744 Tagen) @ MichaeL

Moin, MichaeL!

Ja, aber deshalb kenne ich trotzdem die fachspezifische Terminologie nicht. Viele Deiner Erklärungen sind daher für mich zweideutig und im Zusammenhang dann z.T. unverständlich.

Nochma Mist....

Also, der Roboter hat ein WELT-Koordinatensystem, dieses steckt im Roboterfuß.

Okay. Heißt also, jeder Roboter lebt in seiner eigenen Welt. Hat man zwei Roboter, so hat man auch zwei WELT-Koordinatensysteme? (Ist der Name dann nicht eher unpassend gewählt?)

Für einen Geodäten ist das sicherlich unpassend, ja. Ein Roboter ist aber sein eigener Planet und kreist um sich selbst ;-)

Dann gibt es das Tool-Koordinatensystem NULL, welches im Flansch des Roboters steckt,
also ohne daß ein Werkzeug angebaut ist. Das nennt man auch ToolCenterPoint TCP.

Gut. Ich stelle mir hier einen Roboterarm vor. TCP definiert die Position dieses Arms im Raum bezogen auf das System WELT.

Korrekt!

Wenn nun ein Raumpunkt angefahren wird, dann bewegt der Roboter den TCP im Flansch an die im Programm angegebene Stelle im Raum.

Du kannst also nur die Position des TCP programmieren bzw. anfahren lassen?

Korrekt!

Nun kann man dem Roboter ein Werkzeug anbauen und will dann ja den selben Raumpunkt nicht mit dem Flansch, sondern der Spitze des Werkzeuges anfahren. Dazu benötigt man dann die besagte Toolverschiebung.

Erscheint soweit einleuchtend. Das ist also eine konstante Verschiebung für ein Werkzeug bezogen auf das Koordinatensystem NULL bzw. TCP.

101% !

und möchte wissen, wo ein imaginäres, zweites Werkzeug im Raum stünde, wenn es denn angebaut wäre; die besagte Werkzeugkugel.

Hier steige ich wieder aus.

Anderes Beispiel, durchaus aus der Praxis: Ein Roboter hat gleichzeitig zwei Werkzeuge angebaut, eine Schweißzange die nach unten vom Flansch wegsteht und einen Greifer, der nach oben vom Flansch wegragt. In Koordinaten: Der TCP der Schweißzange steht -200mm in X und +800mm in Z, der Greifer +600mm in X und +150mm in Z. Alles in Bezug auf den Flansch-TCP.
Nun fahre ich einen Raumpunkt, bezogen auf das WELT-Koordinatensystem mit der Schweißzange an und möchte wissen, wo dann der TCP des Greifers, wiederum in WELT, im Raum steht.
Nehmen wir an, der Schweißzangen-TCP steht bei X +1000mm, Y +1000mm und Z +1000mmm,
dann steht der Greifer-TCP bei X +100mm, Y 1400mm und Z +1750mm im WELT-Raum.
Und das will ich für alle meine Schweißzangen-Raumpunkte im Programm machen: Ausrechnen, wo der Greifer-TCP dann liegt......besser?

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 13.12.2010, 11:43 (vor 2744 Tagen) @ Kai Westermann

Hi,

okay, das Problem habe ich erfasst. Nun wollen wir mal hoffen, das wir auch eine Lösung finden ;-)

Anderes Beispiel, durchaus aus der Praxis: Ein Roboter hat gleichzeitig zwei Werkzeuge angebaut, eine Schweißzange die nach unten vom Flansch wegsteht und einen Greifer, der nach oben vom Flansch wegragt. In Koordinaten: Der TCP der Schweißzange steht -200mm in X und +800mm in Z, der Greifer +600mm in X und +150mm in Z. Alles in Bezug auf den Flansch-TCP.

Okay, und Du kennst TCP (nicht die Werkzeuge) im WELT-System bzw. Du hast hierfür einen Parametersatz gegeben?

Nun fahre ich einen Raumpunkt, bezogen auf das WELT-Koordinatensystem mit der Schweißzange an und möchte wissen, wo dann der TCP des Greifers, wiederum in WELT, im Raum steht.

Die Punkte allein werden nicht reichen. Du musst auch wissen, wie Du den Punkt angefahren hast. Der Punkt allein liefert Dir ja keine Info, wie die Drehung des Arms und damit des Systems NULL ist.

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Transformation, Helmert, Koordinaten, Roboter

Koordinatentransformation

Kai Westermann @, Montag, 13.12.2010, 16:44 (vor 2744 Tagen) @ MichaeL

Okay, und Du kennst TCP (nicht die Werkzeuge) im WELT-System bzw. Du hast hierfür einen Parametersatz gegeben?

Hm......die Sache mit dem Parametersatz scheint mir, wie gesagt eher einer BASE-Verschiebung zu entsprechen.

Die Punkte allein werden nicht reichen. Du musst auch wissen, wie Du den Punkt angefahren hast. Der Punkt allein liefert Dir ja keine Info, wie die Drehung des Arms und damit des Systems NULL ist.

Richtig, daher besteht ein Raumpunkt ja auch aus X,Y,Z und den Drehungen A,B,C; was Rz,Ry und Rx entspricht.

Das Beispiel, welches ich lieber als CODE hier hätte einstellen sollen, ist ja eine solche Toolverschiebung. Das funktioniert auch, nur brauche ich drei Programme um da hinzukommen und ich würde das gerne alles in Excel erschlagen. Die Leute, die diese Programme geschrieben haben, haben ja auch nur Formeln angewandt, die ich halt nicht drauf habe.

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 13.12.2010, 16:59 (vor 2744 Tagen) @ Kai Westermann

Hallo,

daher besteht ein Raumpunkt ja auch aus X,Y,Z und den Drehungen A,B,C; was Rz,Ry und Rx entspricht.

Gut, Du kennst die Koordinaten Deines Werkzeugs im NULL-System. Dann reche doch mal nach, obs stimmt bzw. wie die Parameter definiert sind.

Der Punkt im NULL-System lautet:
P_{NULL} = [ x, y, z]^T

Der gleiche Punkt im WELT-System muss nun sein:

P_{WELT} = T + Rz \cdot Ry \cdot Rx \cdot P_{NULL}

wobei T eine Verschiebung ist mit
T = [ X, Y, Z]^T

und R jeweils eine Rotationsmatrix ist.

Das Beispiel, welches ich lieber als CODE hier hätte einstellen sollen, ist ja eine solche Toolverschiebung.

Ich gehe jetzt mal davon aus, dass Du die Parameter X,Y,Z (für den Vektor T) und A,B, C (für die Drehungen) immer kennst.

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Rotationsmatrix, Transformation, Helmert, Koordinaten, Roboter

Koordinatentransformation

Kai Westermann @, Dienstag, 14.12.2010, 09:57 (vor 2743 Tagen) @ MichaeL

Da muß ich mich erst mal mit beschäftigen.
Ich melde mich wieder,

Danke!

Koordinatentransformation

Kai Westermann @, Sonntag, 23.01.2011, 14:58 (vor 2703 Tagen) @ MichaeL

Keine Sonne, ich blick's einfach nicht.

OK. Folgende Sachlage:

Mein Tool hat die Koordinatenverschiebung zu Tool 0:

X 675,0
Y 0,0
Z 512,0
Rz 0,0
Ry 0,0
Rx 180,0

Im Roboter eingetragen als Tool 2

Die Angenommene Werkzeugkugel hat die Koordinatenverschiebung zu Tool 0:

X 0,0
Y 0,0
Z 200,0
Rz 0,0
Ry 0,0
Rx 0,0

Im Roboter eingetragen als Tool 32

Ein mit Tool 2 angefahrener Punkt im Raum hat die Koordinaten:

X 2143.76099,Y -58.443779,Z 2511.771,A -178.192398,B -27.0893803,C -0.96805799

Dann steht Tool 32 auf den folgenden Koordinaten:

X 2534.56 Y -60.0, Z 3243.96.0, A 1.8, B 27.17, C -179.05

und diese Koordinaten möchte ich berechnen.
Gegegeben sind Tool 2, Tool 32 und der Raumpunkt mit Tool 2 angefahren,
wie das vorstehend zu sehen ist.

der Kai

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 24.01.2011, 08:44 (vor 2702 Tagen) @ Kai Westermann

Hallo,

ich gehe recht in der Annahme, dass Tool 2 und 32 fest verbunden sind miteinander?

Mich wundert, dass Du zwei unterschiedliche Rotationen angibst. Wenn ich Tool 2 drehe, muss sich doch Tool 32 um den selben Winkel geändert hat. Das scheint Deinen Angaben zu folge aber nicht der Fall zu sein...

Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter, Rotation, Matrix

Koordinatentransformation

Kai Westermann @, Montag, 24.01.2011, 16:49 (vor 2702 Tagen) @ MichaeL

Meinst Du die 180° von Rx?
Das ist ja die Drehung des Koordinatensystems von Tool 2 zu Tool 0
Wir verfahren keine Punkte im Raum, sondern Koordinatenursprünge.
Ein Tool muß ja eine Ausrichtung haben, weil es nicht egal ist,
wie das Werkzeug den Punkt erreicht.
Tool 2 steht also 675 mm in X und 512 in Z aus dem Flansch.
Dabei weist das Werkzeug noch eine Drehung von 180° um X aus.

Was ich bisher habe sind die folgenden Gleichungen der Helmert-Transformation:

Xb=cx+Xa-Ya*rz+Za*ry
Yb=cy+Xa*rz+Ya-Za*rx
Zb=cz-Xa*ry+Ya*rx+Za

Und die Koordinaten vom letzten Beitrag:

Xa 2143,76099
Ya -58,443779
Za 2511,771
Xb 2534,56
Yb -60
Zb 3243,96
cx 675
cy 0
cz 512
rz 0
ry 0
rx 3,141592654

damit habe ich alles was man bräuchte, um den Vektor von Tool 2 zu Tool 32 auszurechnen
um dann für jeden Raumpunkt im Tool 2 den Raumpunkt an dem Tool 32 steht zu ermitteln.
Meine Unbekannten sind dann Xb, Yb und Zb, die ich jetzt herausbekommen habe,
indem ich den Roboter an Xa, Ya, Za mit Tool 2 gestellt habe und dann vom Roboterpanel die Position von Tool 32 abgelesen habe, besagte Xb, Yb, Zb.

Gruß

Kai

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 24.01.2011, 17:42 (vor 2702 Tagen) @ Kai Westermann

Hallo,

Meinst Du die 180° von Rx?

Aus Deinem Posting habe ich folgendes Ausgangssystem entnommen:
Tool0 [0 0 0]
Tool2 [675 0 -512] // die -512 weil eine Drehung um X um 180° hier nur Z ändert
Tool32 [0 0 200]

So sehen die drei Positionen aus, wenn man noch nichts gemacht hat. Dann drehst und schiebst Du etwas rum im Raum. Drehpunkt ist immer Tool0. Vollziehe ich eine Drehung um 45° um die X-Achse, dann gilt:

Tool2_{45} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & cos(\alpha) & -sin(\alpha)  \\ 0 & sin(\alpha)  & cos(\alpha) \end{pmatrix} \cdot \begin{pmatrix} 675 \\ 0 \\ -512 \end{pmatrix}

Tool2_{45} = \begin{pmatrix} 675 \\ 362.0387 \\ -362.0387 \end{pmatrix}
Tool32_{45} = \begin{pmatrix} 0 \\ -141.4214 \\ 141.4214 \end{pmatrix}

Toiol2 und Tool32 wurden um 45° gedreht. Wenn Du den Abstand zwischen den alten und den neuen Koordinaten ausrechnest, wird es der selbe sein.

Was ich bisher habe sind die folgenden Gleichungen der Helmert-Transformation:

Xb=cx+Xa-Ya*rz+Za*ry
Yb=cy+Xa*rz+Ya-Za*rx
Zb=cz-Xa*ry+Ya*rx+Za

Die gilt nur für differentiell kleine Drehungen, was Du in jedem Fall nicht hast - sie ist für Dich also unbrauchbar.

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter, Rotation, Matrix

Koordinatentransformation

Kai Westermann @, Dienstag, 25.01.2011, 15:28 (vor 2701 Tagen) @ MichaeL

Moin!

Aus Deinem Posting habe ich folgendes Ausgangssystem entnommen:
Tool0 [0 0 0]
Tool2 [675 0 -512] // die -512 weil eine Drehung um X um 180° hier nur Z ändert
Tool32 [0 0 200]

So sehen die drei Positionen aus, wenn man noch nichts gemacht hat. Dann drehst und schiebst Du etwas rum im Raum. Drehpunkt ist immer Tool0. Vollziehe ich eine Drehung um 45° um die X-Achse, dann gilt:

Nein, das sind keine Positionen.
Tool 0 ist das Koordinatensystem am Flansch des Roboters, dieses hat keine Verschiebung, daher [0 0 0]
Tool 2 ist das Koordinatensystem am Werkzeug 2 des Roboters, dieses ist gegenüber dem Tool 0 mit [675 0 -512] und der Drehung von 180 um X verschoben und auf dieses beziehen sich die Raumpunkte des Programmes. In meinem Beispiel der Raumpunkt, oder eben die Position:

X 2143.76099,Y -58.443779,Z 2511.771,A -178.192398,B -27.0893803,C -0.96805799

Von diesem Punkt ist der Flansch des Roboters [675 0 -512 0 0 180] entfernt.
Und von dem letzteren Punkt ist der Mittelpunkt meiner angenommen Kugel wiederum
[0 0 200 0 0 0] entfernt, was dann die Koordinaten ergibt:

X 2534.56 Y -60.0, Z 3243.96.0, A 1.8, B 27.17, C -179.05

Meine Verschiebung ist also:

dX 390,79901
dY -1,556221
dZ 732,189
dRz -178,05
dRy 54,27
dRx 179,99

Die gilt nur für differentiell kleine Drehungen, was Du in jedem Fall nicht hast - sie ist für Dich also unbrauchbar.

*heul*

Gruß

Kai

Koordinatentransformation

Kai Westermann @, Dienstag, 25.01.2011, 16:26 (vor 2701 Tagen) @ Kai Westermann

Meine Verschiebung ist also:

dX 390,79901
dY -1,556221
dZ 732,189
dRz -178,05
dRy 54,27
dRx 179,99


Das muß Käse sein und aus der Drehung um X kommen.
Wenn man die Absolutwerte anders addiert, oder eben subtrahiert,
erhält man

dX 390,79901
dY -1,556221
dZ 732,189
dRz -180,02
dRy 0,07
dRx 179,99

Woher sollten auf einmal die 54° um Y kommen?

Koordinatentransformation

Kai Westermann @, Dienstag, 25.01.2011, 16:41 (vor 2701 Tagen) @ Kai Westermann

Schockschwerenot!

Ich bin ein Depp, das Tool 2 war's gar nicht, sondern Tool 1

Und das hat die Verschiebung zu Tool 0 von:

-15
0
1030
-180
0
-180

Und nicht:

675
0
512
0
0
180

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Dienstag, 25.01.2011, 17:47 (vor 2701 Tagen) @ Kai Westermann

Moin!

ich kann Dir immer nicht ganz folgen, da mit Deine Theologie nicht ganz geläufig ist - umgekehrt trifft dies vermutlich auch zu. Lass uns etwas früher einsteigen und kleiner Schritte machen, vielleicht führt das dann zum Ziel.

Der Ursprung der Maschine ist immer T0 = [0 0 0]. An dieser Maschine ist ein Arm dran, welcher die Koordinaten T2 = [675 0 -512] hat und an diesem Arm ein Werkzeug (Deine Kugel) mit den Koordinaten T32 = [0 0 200]. Wir haben derzeit also drei Punkte im Raum. Beziehen diese drei Punkte sich alle auf das selbe Koordinatensystem?

Eine grundsätzliche Anmerkung:
Zu den Abkürzungen: Du verwendest mal Rx, Ry, Rz und mal A, B, C. Es handelt sich aber immer um Drehwinkel, oder? Drehwinkel sind wie zB. Maße ohne Einheiten nutzlos, wenn man nicht den Drehsinn und die Reihenfolge der Drehungen kennt. Es gibt drei Rotationsmatrizen. Es lassen sich also 12 Kombinationen finden, diese zu multiplizieren. Ums schon mal vorweg zunehmen, ich werde es nicht für Dich austesten, welche Kombination Du benötigst - ich hoffe, Du verstehst das.

Etwas Theorie:
Die Transformationsgleichung lautet:
P = T + R\cdot p

P ... Punkt im Zielsystem P = [x y z]
p ... selber Punkt im Startsystem p = [x y z]
T ... Translation (Verschiebung)
R ... Rotationsmatrix

R resultiert dabei aus Deinen drei Drehwinkeln. Hierzu werden drei Achsdrehungen hintereinander druchgeführt. Das kann zB so aussehen: Als erstes drehst Du um die X-Achse, anschließend um die neue Y-Achse und abschließend um die neue Z-Achse. Mit "neue Achse" meine ich immer die nach der vorherigen Drehung entstandene Achse. In jeder Drehung wird also das System geändert. Das Verketten der Drehungen erreichst Du durch Multiplikation. Für das genannte Beispiel wäre es:

P = T + R\cdot p  = T + R_z \cdot R_y \cdot R_x \cdot p

Wie das Produkt von R ausmultipliziert aussehen kann (einer der 12 Varianten) siehst Du auf Seite 44 in der Mitte.

Ich hoffe Dir wird damit auch klar, dass Du nicht einfach ein paar Differenzen bestimmen kannst. Auch bin ich mir noch nicht Sicher, ob wir überhaupt zu einem zufriedenstellenden Ergebnis kommen. :-(

Ein Beispiel am Ende noch:

Es muss am Anfang eine Anfangsposition geben. Nehmen wir an, der Arm steht am Anfang auf
[10 20 30] und hat ein Werkzeug, das 50 nach oben ragt - also [10 20 80]. Jetzt Dreht der Roboter den Arm um 45° um die X-Achse, 0° um die Y-Achse und 0° um die Z-Achse. Nach dieser Drehung verschiebt er den Arm um T = [30 70 90]. Folgende Position hat nun der Arm: [40 62.9289 125.3553] und das Werkzeug [40 27.5736 160.7107]. Kannst Du das nachvollziehen?

Gruß Micha

P.S. ich habe gesehen, dass Du Werte korrigiert hast aber es hapert nicht an den Zahlen - mehr am erfassen Deines Problems, sodass ich nicht weiter drauf eingegangen bin.

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter, Rotation, Matrix

Koordinatentransformation

Kai Westermann @, Dienstag, 25.01.2011, 18:51 (vor 2701 Tagen) @ MichaeL

Moin!

ich kann Dir immer nicht ganz folgen, da mit Deine Theologie nicht ganz geläufig ist - umgekehrt trifft dies vermutlich auch zu. Lass uns etwas früher einsteigen und kleiner Schritte machen, vielleicht führt das dann zum Ziel.

OK

Der Ursprung der Maschine ist immer T0 = [0 0 0]. An dieser Maschine ist ein Arm dran, welcher die Koordinaten T2 = [675 0 -512] hat und an diesem Arm ein Werkzeug (Deine Kugel) mit den Koordinaten T32 = [0 0 200]. Wir haben derzeit also drei Punkte im Raum. Beziehen diese drei Punkte sich alle auf das selbe Koordinatensystem?

Nope!
Der Ursprung der Maschine ist [0 0 0]
Der Arm wird auf die Koordinaten gefahren, er ist ja beweglich und kann in einem Zylinder um diesen Ursprung alle möglichen Punkte erreichen.
Wenn nun zum Beispiel der Punkt P1 = [1000 1500 1800] angefahren wird, dann wird dieser Punkt auch so angegeben. Der Roboterflansch stünde dann [675 0 512] versetzt davon.
Meine angenommene Werkzeugkugel wiederum steht von letzterem Punkt [0 0 200] und von P1 [675 0 312] entfernt.

Eine grundsätzliche Anmerkung:
Zu den Abkürzungen: Du verwendest mal Rx, Ry, Rz und mal A, B, C. Es handelt sich aber immer um Drehwinkel, oder? Drehwinkel sind wie zB. Maße ohne Einheiten nutzlos, wenn man nicht den Drehsinn und die Reihenfolge der Drehungen kennt. Es gibt drei Rotationsmatrizen. Es lassen sich also 12 Kombinationen finden, diese zu multiplizieren. Ums schon mal vorweg zunehmen, ich werde es nicht für Dich austesten, welche Kombination Du benötigst - ich hoffe, Du verstehst das.

Keep your shirt on, das hätte ich auch nicht erwartet. Die Rotationsmatrix ist bekannt.
Zuerst wird um Z um den Betrag A, dann um Y um den Betrag B und hernach um X um den Betrag C gedreht. Daher die Angaben A,B und C. Ich habe versucht mich Eurer Schreibweise Rx, Ry, Rz anzunähern, das aber nicht konsequent genug getan, pardon.

Etwas Theorie:
Die Transformationsgleichung lautet:
P = T + R\cdot p

P ... Punkt im Zielsystem P = [x y z]
p ... selber Punkt im Startsystem p = [x y z]
T ... Translation (Verschiebung)
R ... Rotationsmatrix

R resultiert dabei aus Deinen drei Drehwinkeln. Hierzu werden drei Achsdrehungen hintereinander druchgeführt. Das kann zB so aussehen: Als erstes drehst Du um die X-Achse, anschließend um die neue Y-Achse und abschließend um die neue Z-Achse. Mit "neue Achse" meine ich immer die nach der vorherigen Drehung entstandene Achse. In jeder Drehung wird also das System geändert. Das Verketten der Drehungen erreichst Du durch Multiplikation. Für das genannte Beispiel wäre es:

P = T + R\cdot p  = T + R_z \cdot R_y \cdot R_x \cdot p

So weit kann ich folgen...

Wie das Produkt von R ausmultipliziert aussehen kann (einer der 12 Varianten) siehst Du auf Seite 44 in der Mitte.

Äääääh................ja............damit hört's dann auf.
Ich kann halt keine Matritzenrechnung. Wobei mir durchaus klar ist, daß man die Rotationen halt zurückdrehen und in der Rotationsmatrix die mathematische Beschreibung hierfür zu finden ist.

Ich hoffe Dir wird damit auch klar, dass Du nicht einfach ein paar Differenzen bestimmen kannst. Auch bin ich mir noch nicht Sicher, ob wir überhaupt zu einem zufriedenstellenden Ergebnis kommen. :-(

Ist klar. Aber es gibt Kollegen, die schreiben mal eben ein Programm, das so was erledigt und die werden auch nur mit Wasser kochen. Das sind aber alles Mathematiker und mit Wissensverbreiterung haben die das komischerweise nicht so.

Ein Beispiel am Ende noch:

Es muss am Anfang eine Anfangsposition geben. Nehmen wir an, der Arm steht am Anfang auf
[10 20 30] und hat ein Werkzeug, das 50 nach oben ragt - also [10 20 80]. Jetzt Dreht der Roboter den Arm um 45° um die X-Achse, 0° um die Y-Achse und 0° um die Z-Achse. Nach dieser Drehung verschiebt er den Arm um T = [30 70 90]. Folgende Position hat nun der Arm: [40 62.9289 125.3553] und das Werkzeug [40 27.5736 160.7107]. Kannst Du das nachvollziehen?

Jep, gute Vorlage:
Gegeben sind bei meiner Aufgabenstellung der Raumpunkt des Werkzeuges [40 27.5736 160.7107] und die Verschiebung/Drehung desselben im Bezug auf den Arm [0 0 50].
Dann bekomme heraus den Raumpunkt an dem der Arm steht [40 62.9289 125.3553].

Dann habe ich ein neues Werkzeug, welches 10 nach oben ragt und die Position, an der dieses neue Werkzeug steht, will ich wissen.

Oder anders:
Das ist der mir bekannte Raumpunkt [40 62.9289 125.3553] im Tool 2
Das ist die resultierende Verschiebung von Tool 2 zu Tool 32 [0 0 40]
Und ich hätte gern den Punkt, an dem Tool 32 steht.

P.S. ich habe gesehen, dass Du Werte korrigiert hast aber es hapert nicht an den Zahlen - mehr am erfassen Deines Problems, sodass ich nicht weiter drauf eingegangen bin.

Hätte ja sein können, daß Du irgendwas nachrechnest und dann wären falsche Werte doof.

Gruß

Kai

Koordinatentransformation

Kai Westermann @, Dienstag, 25.01.2011, 19:12 (vor 2701 Tagen) @ Kai Westermann

Der Ursprung der Maschine ist immer T0 = [0 0 0]. An dieser Maschine ist ein Arm dran, welcher die Koordinaten T2 = [675 0 -512] hat und an diesem Arm ein Werkzeug (Deine Kugel) mit den Koordinaten T32 = [0 0 200]. Wir haben derzeit also drei Punkte im Raum. Beziehen diese drei Punkte sich alle auf das selbe Koordinatensystem?

Nope!
Der Ursprung der Maschine ist [0 0 0]

Korrektur: Bei uns beiden ist der Koordinatenursprung bei [0 0 0] nur hat das nichts mit T0 zu tun.

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Dienstag, 25.01.2011, 19:57 (vor 2701 Tagen) @ Kai Westermann

Hi,

Ist klar. Aber es gibt Kollegen, die schreiben mal eben ein Programm,

die haben das Problem dann wohl erfasst. Um die Rechnung mache ich mir auch im Moment noch keine Sorgen...

Jep, gute Vorlage:
Gegeben sind bei meiner Aufgabenstellung der Raumpunkt des Werkzeuges [40 27.5736 160.7107] und die Verschiebung/Drehung desselben im Bezug auf den Arm [0 0 50].
Dann bekomme heraus den Raumpunkt an dem der Arm steht [40 62.9289 125.3553].
Dann habe ich ein neues Werkzeug, welches 10 nach oben ragt und die Position, an der dieses neue Werkzeug steht, will ich wissen.

Das verstehe ich inhaltlich nicht aber bei Deinem nachfolgenden bilde ich mir ein, es zu kapieren.

Oder anders:
Das ist der mir bekannte Raumpunkt [40 62.9289 125.3553] im Tool 2
Das ist die resultierende Verschiebung von Tool 2 zu Tool 32 [0 0 40]
Und ich hätte gern den Punkt, an dem Tool 32 steht.

Um das zu beantworten, brauche ich die Information, wie er an diese Position gekommen ist. Wenn wir bei meinem Beispiel bleiben, war die vorherige Position [10 20 30]. Um nach [40 62.9289 125.3553] zu kommen, muss er um 45° um X Drehen und um [30 70 90] schieben.
Das zweite Werkzeug, was mit dran hängt, hätte in der ersten Position demnach [10 20 70] (40 mehr in Z). Da es die selbe Drehung und Verschiebung macht, lautet die neue Position [40 34.6447 153.6396].

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter, Rotation, Matrix

Koordinatentransformation

Kai Westermann @, Dienstag, 25.01.2011, 17:21 (vor 2701 Tagen) @ MichaeL

Wenn ich rechne:

Zb = cosRy * dZ + Z

Dann komme ich ungefähr auf den Betrag von Zb, welcher mir auf dem Roboter angezeigt wird.

Mit Ry -27,1, dZ = Ztool1 - Ztool32 = 1030 - 200 = 830, Z = 2143,761

Dann erhalte ich in Excel für Zb 3250,64 Was zumindest in der Nähe von 3243,96 liegt.

Koordinatentransformation

Kai Westermann @, Donnerstag, 03.02.2011, 11:57 (vor 2692 Tagen) @ Kai Westermann

Problem gelöst!

Mit Deiner Hilfe, MichaeL und der Rotationsmatrix von Mordwinzew,
http://www.mordwinzew.de/index.php?id=5
habe ich nun endlich eine Umsetzung vornehmen können.
Wie im Einzelnen, tue ich noch mal kund.

Herzlichsten Dank

der Kai

Koordinatentransformation

Kai Westermann @, Donnerstag, 03.02.2011, 19:13 (vor 2692 Tagen) @ Kai Westermann

Zu früh gefreut............
Bei einem Tool klappt's, beim anderen nicht.
Nun habe ich der Möglichkeiten viele.

Für die Rotationen, habe ich von den Raumpunktdrehungen die Tooldrehungen abgezogen:

Rx = Rx1-Rx32
Ry = Ry1-Ry32
Ry = Ry1-Ry32

Dann habe ich die Rotationsmatrix aus dem File von Mordwinzew kopiert.
Dann multipliziere ich die Toolverschiebung von Tool 1 mit der Rotationsmatrix
und erhalte eine andere Verschiebung.
Diese subtrahiere ich von den X,Y,Z-Werten von Tool 1 und erhalte die Raumpunkte von Tool32.

Als ich das gleiche jedoch an Tool 2 probiere, kommen völlig andere Werte heraus.

Also stimmt entweder meine Rotationsmatrix nicht,
oder ich verwende nicht die richtige Rechenoperation für die Verknüpfung der
Rotationswinkel, weil die Beträge von Rx,Ry und Rz stimmen, nicht aber die Vorzeichen.

Das ist der VBA-Code der Umrechnung:

 
X = Left(DAT_Array(j, 6), Len(DAT_Array(j, 6)) - 2)
Y = Left(DAT_Array(j, 7), Len(DAT_Array(j, 7)) - 2)
Z = Left(DAT_Array(j, 8), Len(DAT_Array(j, 8)) - 2)
A = (Left(DAT_Array(j, 9), Len(DAT_Array(j, 9)) - 2)) * -3.1415927 / 180
B = (Left(DAT_Array(j, 10), Len(DAT_Array(j, 10)) - 2)) * -3.1415927 / 180
C = (Left(DAT_Array(j, 11), Len(DAT_Array(j, 11)) - 2)) * -3.1415927 / 180
Tool = Left(DAT_Array(j + 1, 6), Len(DAT_Array(j + 1, 6)) - 8)
 
                Cells(1, 8) = Cos(B) * Cos(A)
                Cells(2, 8) = Cos(C) * Sin(A) + Sin(C) * Sin(B) * Cos(A)
                Cells(3, 8) = Sin(C) * Sin(A) - Cos(C) * Sin(B) * Cos(A)
                Cells(1, 9) = Cos(B) * Sin(A)
                Cells(2, 9) = Cos(C) * Cos(A) - Sin(C) * Sin(B) * Sin(A)
                Cells(3, 9) = Sin(C) * Cos(A) + Cos(C) * Sin(B) * Sin(A)
                Cells(1, 10) = Sin(B)
                Cells(2, 10) = Sin(C) * Cos(B)
                Cells(3, 10) = Cos(C) * Cos(B)
 
                Cells(5, 8) = dX(Tool)
                Cells(5, 9) = dY(Tool)
                Cells(5, 10) = dZ(Tool)
 
                Range(Cells(7, 8), Cells(7, 10)).Select
                Selection.FormulaArray = "=MMULT(R[-2]C:R[-2]C[2],R[-6]C:R[-4]C[2])"
 

Wobei hier wieder A=Rz, B=Ry und C=Rx.

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Freitag, 04.02.2011, 08:10 (vor 2691 Tagen) @ Kai Westermann

Hi,

ohne das ich auf die schnelle alles verstehen konnte ein paar Anmerkungen. Rotationen müssen immer um den Drehpunkt vollzogen werden. Meistens muss daher die Verschiebung vor der Drehung passieren, wenn man die Umkehrung rechnet. Die Gleichung ist grundsätzlich:

X = T + R \cdot x

Gelesen wird das ganze idR. von rechts nach links. Du rotierst also zunächst den Punkt x, indem Du diesen mit R multiplizierst. Erst danach schiebst Du den bereits gedrehten Punkt um T (Punktrechnung vor Strichrechung).

Die Umkehrung ist demnach:
x = R^{-1} \cdot (X-T) = R^{T} \cdot (X-T)

Das verketten von Drehungen passiert durch Multiplikation mehrere Drehmatrizen.
R_{gesamt} = R_x \cdot R_y \cdot R_z \cdot R_y

Hier also eine Drehung um die Y-Z-Y-X-Achse, wobei jeweils die Achsen der resultierenden Drehung gemeint sind.

Vorzeichen Differenzen können entstehen, weil bspw. der Sinus nicht eindeutig ist:
\sin(\pi/4) = \sin(3\pi/4) = \sqrt{0.5}

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter, Rotation, Matrix

Koordinatentransformation

Kai Westermann @, Freitag, 04.02.2011, 10:35 (vor 2691 Tagen) @ MichaeL

Es wird immer heller.

Was ich falsch gemacht habe war, ich habe nicht jede Rotationsmatrix auch mit den dann gedrehten Winkeln versorgt.
Da ich derzeit mit Tools arbeite, die Drehungen von 180 Grad aufweisen, ging das mal auf und mal nicht.
Jetzt muß ich bloß noch rauskriegen, wie ich die korrekten Winkelwerte nach jeder Einzeldrehung berechne und dann ist der Drops gelutscht.

Koordinatentransformation

Kai Westermann @, Freitag, 04.02.2011, 18:37 (vor 2691 Tagen) @ MichaeL

Ich habe folgende Winkelwerte:


Rx -0,97
Ry -27,1
Rz -178,19

Aus denen wird nach der Verschiebung:


Rx -179,05
Ry 27,17
Rz 1,8


Die Drehungen sind: dRx und dRz 180 Grad, während dRy 0 ist.
Ich erhalte also durch die Drehung eine Vorzeichenänderung bei Ry und Rx.
Nur wie?
Und was passiert, wenn ich mal einen anderen Drehwinkel habe, zum Beispiel 75 Grad
(Weil ich ein Tool mit einer solchen Drehung habe), wie verhalten dich die jeweils anderen Winkel?

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Freitag, 04.02.2011, 20:53 (vor 2691 Tagen) @ Kai Westermann

Guten Abend,

Aus denen wird nach der Verschiebung:

Nach der Verschiebung oder nach der Drehung?

Die Drehungen sind: dRx und dRz 180 Grad, während dRy 0 ist.
Ich erhalte also durch die Drehung eine Vorzeichenänderung bei Ry und Rx.
Nur wie?

Du drehst also um X und um Z (oder andersherum) jeweils um 180°. Dann ist das Produkt aus beiden Drehungen eine Einheitsmatrix:

R_x \cdot R_z = R_z \cdot R_x =\begin{pmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{pmatrix}

Demnach müsstest Du einen Vorzeichenwechsel bei einer Koordinate in X und Z feststellen. Der Punkt [a b c] hat also die Koordinaten [-a b -c] nach der Drehung.

Wenn ich mich nicht vertippt habe, dann bekomme ich übrigens nach der Drehung folgende Winkel raus: 179.03°, 27.1°, -1.8°. Hier gibts also Differenzen zu Deiner Lösung, warum?

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter, Rotation, Matrix

Koordinatentransformation

Kai Westermann @, Montag, 07.02.2011, 09:26 (vor 2688 Tagen) @ MichaeL

Moin!

Die Drehungen sind: dRx und dRz 180 Grad, während dRy 0 ist.
Ich erhalte also durch die Drehung eine Vorzeichenänderung bei Ry und Rx.
Nur wie?

Du drehst also um X und um Z (oder andersherum) jeweils um 180°. Dann ist das Produkt aus beiden Drehungen eine Einheitsmatrix:

Ah so....

Fazit:
Ich drehe das Koordinatensystem um X und multipliziere die Verschiebung mit der Rotationsmatrix für Rx.
Dann drehe ich das Koordinatensystem um Y und multipliziere die Verschiebung mit der Rotationsmatrix für Ry
Abschließend mache ich das gleiche für Rz.
Dann passt es.
Wie ich die Verschiebung durch die Rotationsmatritzen multipliziere, habe ich jetzt ja raus. Aber das mit der Drehung noch nicht.
Vor allem, wenn die Koordinatendrehung andere Werte als 0 und 180 annimmt.

Wenn ich mich nicht vertippt habe, dann bekomme ich übrigens nach der Drehung folgende Winkel raus: 179.03°, 27.1°, -1.8°. Hier gibts also Differenzen zu Deiner Lösung, warum?

Gute Frage. Ich denke, Du meinst die Vorzeichen und nicht die kleine Nachkommadifferenz. Das sind die Werte so, wie ich sie vom Roboter abgelesen habe.

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 07.02.2011, 10:12 (vor 2688 Tagen) @ Kai Westermann

Moin,

Du drehst also um X und um Z (oder andersherum) jeweils um 180°. Dann ist das Produkt aus beiden Drehungen eine Einheitsmatrix:

Ah so....

Nachvollziehbar oder nimmst Du es nur so hin?

Fazit:
Ich drehe das Koordinatensystem um X und multipliziere die Verschiebung mit der Rotationsmatrix für Rx.

Normalerweise werden Verschiebungen addiert. Da ich aber nicht weiß, ob wir hier das selbe meinen, kann ich Dir nicht genau sagen, ob Du es richtig machst.

Aber das mit der Drehung noch nicht.

Hier sind drei Sachen wichtig und ggf. am Anfang verwirrend.
1. Du musst den Betrag der Drehung kennen.
2. Du musst den Drehsinn kennen (also das Vorzeichen des Winkels oder das in der Rotationsmatrix)
3. Du musst die Reihenfolge kennen, um die nacheinander gedreht wird.

Gute Frage. Ich denke, Du meinst die Vorzeichen und nicht die kleine Nachkommadifferenz.

Ich meine beides. Da es nur Multiplikationen mit 0, 1 oder -1 gab, können die Differenzen mMn. nicht nummerisch begründet werden.

Übrigens: Mit Freemat oder Octave kannst Du recht komfortabel Matrizen addieren, multiplizieren usw.

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation

Kai Westermann @, Montag, 07.02.2011, 11:05 (vor 2688 Tagen) @ MichaeL

Moin,

Nachvollziehbar oder nimmst Du es nur so hin?

Ööööhmmmm....................letzteres............nützt mir, glaube ich, nicht wirklich was, weil ich ja auch andere Drehwinkel wie 180° und 0° haben kann.

Normalerweise werden Verschiebungen addiert. Da ich aber nicht weiß, ob wir hier das selbe meinen, kann ich Dir nicht genau sagen, ob Du es richtig machst.

Ich multipliziere die Verschiebung mit den Rotationsmatritzen und addiere die resultierende Verschiebung zu meinem vorhandenen Raumpunkt, z.B. in Tool 2 und erhalte den neuen Raumpunkt in Tool 32. Das funzt auch.

Aber das mit der Drehung noch nicht.

Hier sind drei Sachen wichtig und ggf. am Anfang verwirrend.
1. Du musst den Betrag der Drehung kennen.

Kenne ich.

2. Du musst den Drehsinn kennen (also das Vorzeichen des Winkels oder das in der Rotationsmatrix)

Kenne ich auch, zumindest habe ich entsprechende Werte.

3. Du musst die Reihenfolge kennen, um die nacheinander gedreht wird.

Ebenfalls bekannt. Wo kann ich das eintragen?
Wo ich die Winkel in den Rotationsmatritzen eintragen muß, weiß ich. Aber wo muß ich die Ursprungswinkel und die Drehungen eintragen, um diese Winkel herauszubekommen?

Gute Frage. Ich denke, Du meinst die Vorzeichen und nicht die kleine Nachkommadifferenz.

Ich meine beides. Da es nur Multiplikationen mit 0, 1 oder -1 gab, können die Differenzen mMn. nicht nummerisch begründet werden.

Mit Rechts- oder Linksdrehung kann das auch nichts zu tun haben?

Übrigens: Mit Freemat oder Octave kannst Du recht komfortabel Matrizen addieren, multiplizieren usw.

Danke, aber ich muß und will das ganze ja in Excel machen.

Koordinatentransformation

Kai Westermann @, Montag, 07.02.2011, 12:22 (vor 2688 Tagen) @ Kai Westermann

Noch ma Moin!

Wo ich die Winkel in den Rotationsmatritzen eintragen muß, weiß ich. Aber wo muß ich die Ursprungswinkel und die Drehungen eintragen, um diese Winkel herauszubekommen?

Wo ist nicht gut formuliert, in was? Ich muß die Winkel in die Rotationmatrix eintragen, um die resultierende Verschiebung zu erhalten.
In was trage ich die Winkel ein um die resultierenden Winkel zu erhalten?

Es seien Rx=45, Ry=90, Rz=30
Es wird der Punkt um x um 45° gedreht, dann haben wir Rx=90, Ry=?, Rz=?
Dann wird um y 120° gedreht, welche Werte haben dann Rx,Ry und Rz?
Und so weiter, wie bekomme ich das raus?

Gruß

der Kai

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 07.02.2011, 18:32 (vor 2688 Tagen) @ Kai Westermann

Hi,

für Dein Beispiel nutze ich die Definition von Wikipedia für die 3 Rotationsmatrizen.

Es seien Rx=45, Ry=90, Rz=30

Die Reihenfolge der Drehungen ist mir wichtig. Lautet sie

R=Rx(45°)*Ry(90°)*Rz(30°)? (Drehung in der Sequenz Z-Y-X?)

Es wird der Punkt um x um 45° gedreht, dann haben wir Rx=90, Ry=?, Rz=?

R = Rx(45°)*R
Dann bekomme ich Rx=0°, Ry=90° und Rz=120°

War die ursprüngliche Sequenz aber X-Y-Z mit
R=Rz(30°)*Ry(90°)*Rx(45°)

und anschließend
R = Rx(45°)*R

Dann bekomme ich Rx=45°, Ry=75° und Rz=90°

Rx ist demnach nie 90°. Dieser Fall tritt nur ein, wenn die beiden Drehungen Rx am Anfang der Sequenz stehen würden (Z-Y-X-X), also

Rz(30°)*Ry(90°)*Rx(45°)*Rx(45°) = Rz(30°)*Ry(90°)*Rx(2*45°)

Micha

P.S. bekommst Du vom Forum eine Mail, wenn ich Dir antworte? Ich habe in den letzten Tagen ein paar unzustellbare Mails aus diesem Beitrag erhalten und wollte mal wissen, ob die E-Mail-Benachrichtigung ggf. defekt ist.

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation

Kai Westermann @, Montag, 07.02.2011, 18:58 (vor 2688 Tagen) @ MichaeL

Moin!

für Dein Beispiel nutze ich die Definition von Wikipedia für die 3 Rotationsmatrizen.

Ja wie? Die nimmt man auch zum drehen der Winkel her?

Die Reihenfolge der Drehungen ist mir wichtig. Lautet sie

R=Rx(45°)*Ry(90°)*Rz(30°)? (Drehung in der Sequenz Z-Y-X?)

Nope, der Roboter rechnet in der Sequenz Z-X-Y.
Da ich ja das ganze wieder zurückdrehe, muß ich also X-Y-Z zurückrechnen.

Es wird der Punkt um x um 45° gedreht, dann haben wir Rx=90, Ry=?, Rz=?

R = Rx(45°)*R
Dann bekomme ich Rx=0°, Ry=90° und Rz=120°

Wie das?

Rx ist demnach nie 90°. Dieser Fall tritt nur ein, wenn die beiden Drehungen Rx am Anfang der Sequenz stehen würden (Z-Y-X-X), also

Mir ging es nur um's Prinzip

P.S. bekommst Du vom Forum eine Mail, wenn ich Dir antworte? Ich habe in den letzten Tagen ein paar unzustellbare Mails aus diesem Beitrag erhalten und wollte mal wissen, ob die E-Mail-Benachrichtigung ggf. defekt ist.

Für Deinen Beitrag vom Freitag, habe ich keine Benachrichtigung erhalten.
Heute abend kamen alle Benachrichtigungen seit dem 4. Februar.

Ersma

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Montag, 07.02.2011, 19:19 (vor 2688 Tagen) @ Kai Westermann

Abend,

für Dein Beispiel nutze ich die Definition von Wikipedia für die 3 Rotationsmatrizen.

Ja wie? Die nimmt man auch zum drehen der Winkel her?

Winkel kann man nicht drehen. Ich kann aber den Winkel aus der Drehmatrix zurückrechnen, wenn ich das Produkt aller Drehungen kenne.

Dann bekomme ich Rx=0°, Ry=90° und Rz=120°

Wie das?

So, wie ich es beschrieben habe - rechne es nach. In Excel sicher möglich aber in Freemat eine Sache von 5sec:

rx =  45*pi/180;
ry =  90*pi/180;
rz =  30*pi/180;
 
Rx = [1 0 0
      0 cos(rx) -sin(rx)
      0 sin(rx)  cos(rx)];
 
 
Ry = [cos(ry) 0 sin(ry)
      0 1 0
      -sin(ry) 0 cos(ry)];
 
 
Rz = [cos(rz) -sin(rz) 0
      sin(rz) cos(rz) 0
      0 0 1];
 
 
R = Rz*Ry*Rx*Rx;

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation

Kai Westermann @, Mittwoch, 16.02.2011, 11:58 (vor 2679 Tagen) @ MichaeL

Moin!

So, wie ich es beschrieben habe - rechne es nach. In Excel sicher möglich aber in Freemat eine Sache von 5sec:

Wie gesagt, es muß halt in Excel gehen, also nützt mir Freemat da nix.

rx =  45*pi/180;
ry =  90*pi/180;
rz =  30*pi/180;
 
Rx = [1 0 0
0 cos(rx) -sin(rx)
0 sin(rx)  cos(rx)];
 
 
Ry = [cos(ry) 0 sin(ry)
0 1 0
-sin(ry) 0 cos(ry)];
 
 
Rz = [cos(rz) -sin(rz) 0
sin(rz) cos(rz) 0
0 0 1];
 
 
R = Rz*Ry*Rx*Rx;

Ich habe hier tausend Winkel in abertausende Matritzen eingetragen, aber was da raus kommt, entspricht nie dem, was ich raus haben muß.

Wahrscheinlich sind die ATan2-Funktionen, wie hier beschrieben, meine Lösung. Aber ich habe keine Rotationsmatrix aufgebaut bekommen, die mir wiederum gültige Ergebnisse gebracht hätte.
http://de.wikipedia.org/wiki/Roll-Nick-Gier-Winkel#Berechnung_aus_Rotationsmatrix

Mit verzweifelten Grüßen

der Kai

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Mittwoch, 16.02.2011, 12:04 (vor 2679 Tagen) @ Kai Westermann

Hi,

Wie gesagt, es muß halt in Excel gehen, also nützt mir Freemat da nix.

Du verstehst nicht, wie ich es meine. Zum Spielen und ausprobieren nehme ich lieber ein Tool, wo ich fix mal etwas probieren kann. Wenn ich dann dort sehe, dass es geht, portiere ich es in die Umgebung, in der es später laufen soll. Excel kann Matrizenrechnung; aber so einfach, wie in Freemat (oder einem vgl.baren Produkt) gehts eben nicht.

Ich habe hier tausend Winkel in abertausende Matritzen eingetragen, aber was da raus kommt, entspricht nie dem, was ich raus haben muß.

Dann war die richtige Kombination wohl noch nicht dabei; ggf. musst Du vorher auch noch schieben - was soll ich da sagen?

Wahrscheinlich sind die ATan2-Funktionen, wie hier beschrieben, meine Lösung.

Freemat kennt auch atan2(x,y); probiere es aus.

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation

Kai Westermann @, Freitag, 18.02.2011, 09:52 (vor 2677 Tagen) @ MichaeL

Da habe ich mich wohl etwas arg auf diesen Winkeln festgebissen.
Das vorläufige, amtliche Endergebnis ist also wie folgt:

Den Raumpunkt in die Rotationsmatrix im Format 4x4 eintragen (die mit den vielen Sin- und Cosinüssen).
Ebenso mit der Toolverschiebung verfahren.
Die erstere Matrix mit der invertierten, zweiten Matrix multiplizieren und im Ergebnis habe ich dann meine gewünschten Raumkoordinaten.

Ich kann mit dieser TeX-Schreibweise nicht um, sonst würde ich's hier einstellen.

Jedenfalls tut mein Makro nun, was ich wünsche. Bei Interesse, könnte ich Dir was mailen, auch mit ein wenig Erklärung zu der Tool- und Baseproblematik.

Herzlichen Dank, für Deine Hilfe, lieber Michael.

Ersma

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Freitag, 18.02.2011, 20:11 (vor 2677 Tagen) @ Kai Westermann

Guten Abend,

Den Raumpunkt in die Rotationsmatrix im Format 4x4 eintragen (die mit den vielen Sin- und Cosinüssen).

Hast Du schon immer eine homogene Rotationsmatrix bzw. homogene Koordinaten benutzt? War mir gar nicht aufgefallen in all den Beiträgen... Egal, die 4x4-Matrix ist äquivalent zu den 3x3 Matrizen, die ich bisher immer meinte.

Ebenso mit der Toolverschiebung verfahren.

Das ist aber nur ein Vektor, oder?

Die erstere Matrix mit der invertierten, zweiten Matrix multiplizieren und im Ergebnis habe ich dann meine gewünschten Raumkoordinaten.

Äh, ja... Das muss ich wohl wirklich mal sehen.

Ich kann mit dieser TeX-Schreibweise nicht um, sonst würde ich's hier einstellen.

Wenn Du Zeit hast, kannst Du es als PDF gern an mich senden und ich übernehme das für Dich.

Bei Interesse, könnte ich Dir was mailen, auch mit ein wenig Erklärung zu der Tool- und Baseproblematik.

Ich habe mal temporär eine Mail-adresse eingerichtet, an die Du es senden kannst: tmp@derletztekick.de Ich lasse die mal einen Monat aktiv.

Schönes Wochenende
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation

Kai Westermann @, Montag, 21.02.2011, 23:52 (vor 2674 Tagen) @ MichaeL

Moin!

Hast Du schon immer eine homogene Rotationsmatrix bzw. homogene Koordinaten benutzt?

Nope, habe ich nicht.

War mir gar nicht aufgefallen in all den Beiträgen... Egal, die 4x4-Matrix ist äquivalent zu den 3x3 Matrizen, die ich bisher immer meinte.

Nicht ganz, denn in die 4x4 Matrix, kann ich die Toolverschiebung und den Raumpiunkt direkt mit eintragen und erhalte nach Mat(A) \cdot Mat(B)^{-1} den neuen Raumpunkt.

Das ist aber nur ein Vektor, oder?

Eiegentlich ja, aber halt in kartesischen Koordinaten.

Ich habe mal temporär eine Mail-adresse eingerichtet, an die Du es senden kannst: tmp@derletztekick.de Ich lasse die mal einen Monat aktiv.

OK, ich seh' zu daß ich mal was zusammenschreibe.
Muß ich in den Kalender aufnehmen, sonst geht's wieder unter.

Gruß

der Kai

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Dienstag, 22.02.2011, 17:26 (vor 2673 Tagen) @ Kai Westermann

Hi,

ich habe Deine Mail erhalten - Danke.

Die Matrizen konnte ich nachvollziehen soweit. Da Rotationsmatrizen Orthgonalmatrizen sind, könnte man noch ein wenig optimieren. Ich habe folgendes gemacht:

T_C = T_A - R_A \cdot R_B^{T} \cdot T_B

Ich nutze 3x3 Matrizen und komme damit erstmal auf das selbe Ergebnis wie Du. Was ich aber nicht benötige ist die teure Inverse-Funktion, da die Inverse einer orthogonalen Matrix gleich der Transponierten ist (in Excel MTRANS).

R^{-1} = R^{T}

Beim Einfügen eines anderen Datensatzes in Deine Tabelle (bspw: XSWP96015400) erhalte ich jedoch nicht die SOLL-Position zurück. Beim X-Wert bspw. habe ich da 800 und es sollten eigentlich nur 779 sein. Möglicherweise hat das Tool ein anderes Offset als 200?!

Gruß Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, Roboter

Koordinatentransformation

Kai Westermann @, Dienstag, 22.02.2011, 21:29 (vor 2673 Tagen) @ MichaeL

Moin!


ich habe Deine Mail erhalten - Danke.

Bitte.

Die Matrizen konnte ich nachvollziehen soweit. Da Rotationsmatrizen Orthgonalmatrizen sind, könnte man noch ein wenig optimieren. Ich habe folgendes gemacht:

T_C = T_A - R_A \cdot R_B^{T} \cdot T_B

Ich nutze 3x3 Matrizen und komme damit erstmal auf das selbe Ergebnis wie Du. Was ich aber nicht benötige ist die teure Inverse-Funktion, da die Inverse einer orthogonalen Matrix gleich der Transponierten ist (in Excel MTRANS).

R^{-1} = R^{T}

Ääääh ja.......
Nun, mein Makro rattert ein auch umfangreicheres Roboterprogramm, mit vier Zangen in knapp einer Minute durch und es funzt.
Also sage ich nun: Never change a running system.

Beim Einfügen eines anderen Datensatzes in Deine Tabelle (bspw: XSWP96015400) erhalte ich jedoch nicht die SOLL-Position zurück. Beim X-Wert bspw. habe ich da 800 und es sollten eigentlich nur 779 sein. Möglicherweise hat das Tool ein anderes Offset als 200?!


Die 200 ziehe ich ja im Feld H13 ab.
Das klappt auch nicht, wenn Du die Zeilen 39,4, und 41 komplett in die Zeilen 35,36 und 37 kopierst?
Bei mir tut das, habe ich gerade noch mal durchgeführt.

Avatar

Koordinatentransformation

MichaeL ⌂, Bad Vilbel, Dienstag, 22.02.2011, 21:47 (vor 2673 Tagen) @ Kai Westermann

Guten Abend,

nein, dann stimmt es bei mir nicht. Aber wenn Du sicher bist, dass es bei _Dir_ geht, reicht das ja letztlich. Schließlich ist es das, worauf es ankommt. ;-)

Insofern müssen wir hier keine intensive Ursachenforschung betreiben.

Schöne Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

RSS-Feed dieser Diskussion