Formel für Geometrischen Operator

  • 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

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • Schritt für Schritt zum Roboterprofi!
  • 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

  • [Klugscheißmodus ein]


    Kannst gerne weiter klugscheißen! :applaus:


    Da kann ich doch mal was mit anfangen.


    :heildir2:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • 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... :applaus: :applaus: :applaus:


    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.

  • Guten Morgen,



    Zu atw12az5: :genau:


    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: :huh:


    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 :mrgreen:


    Am besten einfach ausprobieren
    atan2(1,0)
    atan2(-1,0)
    atan2(0,1)
    atan2(0,-1)
    Dann ists klar...

  • Robotnik


    Ah ja.


    Und wenn der Doppelpunkt [:] falsch angewendet wird dann gibts dicke Eier.

    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.<br />Albert Einstein

  • 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

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden