Hallo Freakz!
Weiß jemand, wie man einen Frame ohne geometrischen Operator berechnen kann? Also quasi mit Taschenrecher.
Ich wüßte gerne die Formel für: FRAME_NEU=FRAME1:FRAME2
Hallo Freakz!
Weiß jemand, wie man einen Frame ohne geometrischen Operator berechnen kann? Also quasi mit Taschenrecher.
Ich wüßte gerne die Formel für: FRAME_NEU=FRAME1:FRAME2
Moin,
hmmm mal ne Vermutung (hab kein Robi da zum Testen, da im Urlaub ), durch simple Vektoraddition?
HTH
Bewareofthis
Hallo,
[Klugscheißmodus ein]
eine einfache Vektoraddition tut es alleine nicht! Das gilt nur falls die beiden Frames gleich orientiert sind: A=B=C. Die einfachste Methode das nachzustellen ist deine gegebenen Frames in ZYX-Eulerwinkeln erstmal in eine homogene (4x4)-Transformationsmatrix umzuwandeln:
Angenommen du hast zwei Frames P={X1,Y1,Z1,A1 B1,C1} und Q={X2,Y2,Z2,A2,B2,C2} beschrieben bezüglich eines festen Weltkoordinatensystems (in der Steurung ist das das aktuelle $BASE). Dann ergibt sich die zugehoerige Transformationsmatrix für P bzw. Q durch Rotation des festen Weltkoordinatensystems als Ausgangssystems erst um den Winkel AX um die Z-Achse, dann eine um den Winkel BX um die Y-Achse und zuletzt um den Winkel CX umd die X-Achse als (X=1 oder 2, ca=cos(AX), sa=sin(AX), cb = cos(BX),...):
| ca*cb ca*sb*sc - sa*cc ca*sb*cc + sa*sc | XX |
| sa*cb sa*sb*sc + ca*cc sa*sb*cc - ca*sc | YX |
| -sb cb*sc cb*cc | ZX |
| 0 0 0 | 1 |
Die beiden so erhaltenen Matrizen musst du dann einfach miteinander multiplizieren. Um dann wieder auf die Darstellung als ZYX Eulerwinkel zu kommen musst du die so erhaltene Matrix wieder rückübersetzen in {X,Y,Z,A,B,C} (A11 Matrixelment erste Zeile erste Spalte, A12 Matrixelement erste Zeile zweite Spalte, ...):
X = A14
Y = A24
Z = A34
norm := sqrt( A11*A11 + A21*A21 );
Eulersingularität bei B=90°
Falls norm > 1E-5
sa = A21/norm;
ca = A11/norm;
A = atan2(sa, ca);
sonst
sa = 0.0;
ca = 1.0;
A = 0.0;
B = atan2( -A21, ca*A11 + sa*A21 );
C = atan2( sa*A13 - ca*A23, -sa*A12 + ca*A22 );
atan2 ist dabei der Arkustangens mit zwei Argumenten, der entgegen dem normalen Arkustangens am Taschenrechner anhand der Vorzeichen der beiden Argumente auch eine Unterscheidung nach dem Quadranten in dem das Ergebnis liegen muss vornimmt.
[Klugscheißmodus aus]
Wie man sieht ist das alles nicht so einfach, mann kann aber auchmal in Wikipedia nach Eulerwinkel und Denavit-Hardenberg suchen, da ist auch Platz für längere Erklärungen warum das so ist.
Gruß
Fubini
Hallo Fubini,
hoffe Du hast Dich jetzt nicht verausgabt (2. Doktorarbeit ?)
Schönen Gruss aus
@LindPaul:
Was du auch im Urlaub, da kann unser Brötchengeber ja dicht machen!
Gruß
Fubini
[Klugscheißmodus ein]
Kannst gerne weiter klugscheißen!
Da kann ich doch mal was mit anfangen.
Hallo Fubini,
Erst einmal vielen Dank für diesen Beitrag, auch wenn er schon etwas älter ist. Seine Lektüre hat mich jedenfalls auf den richtigen Weg gebracht.
Da viele Links auf diesen Artikel bestehen, nur eine Korrektur eines kleinen Tippfehlers.
Es muß natürlich heißen:
B = atan2( -A31, ca*A11 + sa*A21 );
Und noch einen kleinen Tipp für Leute wie mich, die die Formel mal eben auf Excel nachprobieren wollen. Hier entspricht ATAN2(x,y) der Funktion ATAN(y/x). Die Argumente werden also genau umgekehrt wie üblich übergeben...
Schöne Grüße auf dem kalten Süd-Frankreich (2° und 50km/h Wind),
Tilman
Und weil der geometische Operator soooo geil ist, es deuten die zwei Punkte auf zwei kleine Runde Kugeln hin [:], wer die Punkte/Kugeln/Eier nicht auf den Tisch legen will oder kann, sollte mal die Suchfunktion benutzen.
Denn da gibt es schon ein in VB ausgecodetes Beispiel für die Mathematikvernarrten.
Ich hab mir das ja runtergeladen, und hab jetzt keine Fragen mehr über Dicke Eier, äh Zwillingskugeln äh oder Doppelpunkte:
Werde aber weiter nicht den Weg zu Fuss gehen, da es ja das Doppelpünktchen gibt.
Hier entspricht ATAN2(x,y) der Funktion ATAN(y/x).
Um exakt zu bleiben:
Mehr:
http://de.wikipedia.org/wiki/A…ei_Argumenten_.28atan2.29
Guten Morgen,
Zu atw12az5:
Da habe ich mich wohl krumm ausgedrückt. Klar, so berechnet Excel natürlich auch den atan2, lustig (oder wenig lustig) ist halt nur, daß zuerst x und dann y übergeben werden. Original Hilfe von Microsoft: Syntaxe ATAN2(no_x;no_y) no_x représente l'abscisse du point, no_y représente l'ordonnée du point.
Zu Robotnik:
Den Code in VB brauche ich eigentlich nicht, und das mit den Eiern habe ich nicht verstanden. Einen Roboter kann ein "Anwender" bereits mit Formularen programmieren, das ist Technikerniveau. Als "Experte" gibt es dann KRL. Es ist jedoch auch interessant zu verstehen, was der Roboter eigentlich die ganze Zeit rechnet. Dabei hat mir der Beitrag von Fubini geholfen, und dafür habe ich mich bedankt. Mit vernarrt sein hat das nichts zu tun..
Schöne Grüße,
Tilman
Achso du meintest ob die Funktion ausgeführt ist als:
atan2(x,y) oder atan2(y,x)
Hab ich auch schon beide Varianten angetroffen
Am besten einfach ausprobieren
atan2(1,0)
atan2(-1,0)
atan2(0,1)
atan2(0,-1)
Dann ists klar...
Hier nochmal der Code der schon in einem anderen Thread gepostet wurde.
Nicht von mir....
Ist in VB geschrieben...
Hallo,
wer das ganze in KRL haben will, kann sich auf der Steuerung im C:/KRC/UTIL-Ordner die Programme kue_weg und kue_weg2 anschauen. Aufgrund der doch frappierenden Namensgleichheit der Methoden schätze ich da kommen auch die Vorlagen zu den VisualBasic-Routinen her.
Gruß
Fubini
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können