Koordinatentransformation

  • Moin, moin...


    ich danke als erstes für die Aufnahme in diesem Forum!


    ..um dan gleich mein Problem rauszuhauen. Mathe zählt nicht zu meinen Stärken, jedenfalls habe ich eine Menge wieder vergessen... Ich habe einen RX160L mit einer CS7B und ich möchte die Roboterhand über die eingabe der Koordinaten im Raum positionieren. Mein Problem ist die Umrechnung der Winkel. Ich bekomme aus dem CAD die Winkel xyz zu einem feststehenden System und die CS7B brauch ja bekanntlich Euler-Winkel zy'z''. Ich selber bin, wie schon erwähnt, nicht sehr gut auf Matrizen zu sprechen und möchte hier mal nach einem Lösungsansatz fragen. Als Tool hätte ich eben jene CS7B oder excel...
    Bitte nicht auslachen!

  • ANZEIGE
  • Hallo


    und willkommen im Forum.


    An der großen und schnellen Reaktion auf deine Frage kannst du wohl erahnen, dass die meisten hier wohl der Meinung sind, wer sowas machen will, sollte Matrizen mögen. :mrgreen:


    Ein CS7B ist schon ein ziemlich alter Stäubli Jahrgang und unterscheidet sich in der Programmierung etwas von den aktuellen CS8C. Mir geht es auch so, dass ich nichts älteres als Val 3 Version 6.x kenne. Da wäre es schon so, dass man nicht so viel mit Matrizen zu tun haben muss. Mann kann auch mit Positionen in Euler-Winkel-Darstellung rechnen, dass Umrechnen in Matrizen und zurück kriegt man da in der Regel gar nicht zu sehen. Ob das auf den alten Kisten genauso ist, kann ich nicht sagen. Wahrscheinlich ist die Programmierung mit Adept Robotern verwandt, da kenne ich mich nicht aus.


    Sollen die Positionen denn händisch von irgendwelchen CAD-Daten in den Roboter übertragen werden, oder sind es sehr viele und sie müssen durch ein Programm konvertiert werden ?


    Grüße


    Urmel

    Einmal editiert, zuletzt von Urmel ()

  • Das letzte Mal hatte ich Matrizen in "Flugregelung"... shame on me! Da hatte ich u.a. "Transformationsmatrizen" aber ich muß zugeben, dass ist auch schon fast sechs Jahre her nie wieder benutzt.
    Aber davon genug...


    Die Auskunft von Stäubli (habe lange und häufig mit denen telefoniert... SEHR NETTE LEUTE!!!)) ist, dass die CS8C auch mit Winkeln zu einem feststehenden Koordinatensystem, ähnlich Kuka mit A,B,C , rechnet. Ich hatte auch schon Kontakt zur HS-Osnabrück aufgenommen aber leider wurde das Projekt gekippt und nun versuche ich auf eigene Faust ein kleines Ergebnis zu erzielen.


    Es soll immer nur eine Positionen händisch eingegeben und dann angefahren werden. Die Umrechnung in die Eulerdrehung zyz kann entweder durch ein Programm in der Steuerung erfolgen oder eben zuvor mit Excel oder VB. Mein primäres Problem ist hier auch eher das Aufstellen der Gleichung. :(

  • Also bei der CS8C, also dem aktuellen Modell, ist das kein so großes Problem.


    Man kann

    Code
    p1 + p2


    oder auch

    Code
    p1 * {0, 0, 100, 0, 0, 0}


    schreiben, was intern als Matrizenaddition oder -multiplikation behandelt wird.


    Auch gibt es z.B. Funktionen, um aus den X,Y,Z-Koordinaten von drei Punkten eine orientierte Position zu erzeugen.


    Die Frage ist, ob das bei der CS7B auch schon so geht. Technisch ist das ja eine alte Adept-Steuerung ...

  • Die Koordinaten werden bei der CS 7 in der gleichen Reihenfolge eingegeben, nur mit dem Unterschied, dass sich die Winkelangaben auf eine zy'z'' Drehung beziehen. Die CS 8 macht diese über eine xyz-Drehung ähnlich Kuka.
    Und genau da ist ja das Problem.
    Ich muss die Winkelangaben auf die Steuerung anpassen/umrechnen.

    Einmal editiert, zuletzt von istderfix ()

  • Da müsste man in der Tat wissen, ob die alte Programmiersprache so was hergibt.


    Ansonsten könntest du versuchen, ob die Demoversion eines Offline-Programmiertools dafür ausreicht.


    In Easy-Rob gibt es z.B. diesen schönen Positionsbearbeitungsdialog, den kann man wie einen Taschenrechner für Positionen verwenden. Auf eine andere Eulerwinkeldarstellung schaltet man einfach mit einer Combobox um.

  • Schau dir mal die V+ Befehle RX, RY und RZ an.


    Ich würde es folgendermaßen machen, sind aber nur Beispielwerte:
    x=100
    y=200
    z=300
    rx=75
    ry=83
    rz=90
    SET pos = TRANS(x,y,z)
    SET pos = pos:RX(rx):RY(ry):RZ(rz)


    Viele Grüße,


    -Pitl


  • Ich habe gerade mal ein tool gefunden...
    Ist zwar noch nicht ganz das was ich gern hätte (umrechnung in excel oder VB) aber so kann ich zumindest schon mal mein Vorhaben ausprobieren...


    http://www.s-cubic.com/index.php?ID=50


    Das ist eine APP für Android...
    Auf der Seite kann man auch online rechnen.


    In der Hilfe der APP steht:


    Mathematisch müsste das bedeuten:


    ZYX (ABC): KUKA®, Reis® - z-y-x Euler angles
    ZYZ (AER): Comau® - z-y-z Euler angles
    XYZ (YPR): Fanuc® - x-y-z fixed angles
    XYZ (RPY): OLP - x-y-z Euler angles??? (Müsste die Umkehrung zu XYZ (YPR) sein) (OLP Onlineprogrammierung?)


    Zumindest nach dieser Doku:

    Code
    Euler Angles vs. Fixed Angles
    
    
    * One point of clarification
    * Euler angle - rotates around local axes
    * Fixed angle - rotates around world axes
    * Rotations are reversed
      - x-y-z Euler angles == z-y-x fixed angles


    Quelle: http://www.essentialmath.com/Quaternions.pps


    Die alte Stäubli VAL2 (V+) Steuerung von Adept müsste auch nach der Konvention ZYZ (AER) drehen, wie Comau®.
    Der (neue) Stäubli CS8 dreht nach Konvention "x-y-z Euler angles", sowie ich das herausgefunden habe.


    In welcher Konvention liegen eigentlich die CAD-Winkelwerte vor, wenn der Konstrukteur in den einzelnen Ebenen die Winkel ausmisst, also klassisch so wie auf dem Reißbrett früher?
    Ist das "x-y-z fixed angles" oder "x-y-z Euler angles"?


    Hier wurde früher mal, lange vor Android und vor CS8, ein kleines Programm gepostet, mit dem man die Winkel in das Format der alten Stäublis konvertieren konnte:
    http://www.roboterforum.de/rob…teingabe/msg4484/#msg4484

    CONTINUOUS ALWAYS

  • Die Winkel liegen als "x-y-z fixed angles" vor. Ich werde mal die .txt aus dem anderen post ausprobieren.


    Ich habe mir auch mal die app zur Brust genommen und mal in java umgewandelt.
    Bin nur noch nicht dazu gekommen, es mir gründlich anzuschauen.


    Nochmal Danke für die Hinweise.

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