Ablage durch Offset in Kreisbahn

  • Hallo,


    ich habe einen IRB 1600, welcher Artikel mit einem Greifer auf 15 verschiedene Stationen ablegen soll.

    Die Ablagen befinden sich mit 8,5° Abstand in einer Kreisbahn nebeneinander (siehe Anhang).


    Es soll nur die erste Ablage ganz links geteacht werden.

    Wie kann ich alle anderen Positionen per Offset berechnen?


    Werkobjekt funktioniert meines Wissens nicht, da hier nur linear verrechnet werden kann.

    Theoretisch müsste immer nur die 1. Achse um 8,5° mal Ablage-Nr verdreht werden,

    bei Robtarget können aber die einzelnen Achsen nicht manipuliert werden.


    Bin für jeden Tipp dankbar.

  • ANZEIGE
  • 1.) Die Funktion OrientZYX kann Euler-Winkel in Quaternionen umrechnen. Damit kannst Du eine ABB-Winkelangabe machen.

    2.) Mit PoseMult kannst Du diese Orientierung Deinem Werkobjekt unterschieben. Oder, wenn Dein Roboter auch gleichzeitig WELT ist, dann kannst Du die Orientierung direkt in den UFrame des Werkobjekts schieben, während der OFrame den Rest macht.


    Kommt auf den Aufwand an, den man damit treiben will. Programmiertechnisch wäre es am einfachsten, die Bewegung in einem Werkobjekt zu teachen, was genau wie Wobj0 im Roboterfußpunkt liegt, und dann einfach nur die Orientierung mit OrientZYX in eines der beiden Werkobjekt-Frames zu laden. Dazu musst Du aber sicher sein, dass die Drehachse der Ablagen und des Roboters exakt identisch sind.


    Etwas aufwändiger, aber deutlich zukunftssicherer, wäre die Sache, erst die Lage der Mittelachse der Ablagen zu ermitteln (Stichwort: Umkreis eines Dreieckes). Deren Position und Ausrichtung käme dann in den UFrame eines Werkobjekts, und die Winkelangabe in den OFrame. Oder eben mit PoseMult in einer beliebig komplizierteren Verkettung, z. B. Roboter:Achsenlage:Drehung:Teilwerkobjekt oder sowas.


    Grüße,

    Michael

  • Du kannst die RelTool-Funktion auch für den Versatz von Positionen Verwenden.

    Nimm die Daten deiner Werkobjektes in eine robtarget-Variable. Die Daten kannst du normal anschließend wieder zuweisen, kann auch sein das du es direkt verwenden kannst.


    pNeu:=Reltool(pAlt,0,0,0\Rz:=8.5)


    So in etwa sollte das gehen. Setzt natürlich voraus das dein Kreis seinen Ursprung in dem Ursprung deines Werkobjektes hat! ;)


    Gruß

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Habs gerade einmal im RobStudio getestet.


    pNeu:=RelTool(pAlt,0,0,0\Rz:=8.5);

    wNeu.uframe.trans:=pNeu.trans;

    wNeu.uframe.rot:=pNeu.rot;


    So kannst du dir die Daten von robtarget auf wobjdata transferieren, Den translatorischen Teil benötigst du ja dann nicht.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hmm, ich hätte die Station als wobUserframe gemacht und den Objektframe um die Z-Achse gedreht. Hat den Vorteil, dass die Station zu Welt versetzt sein kann.
    ...aber bekanntlich führen ja viele Wege nach Rom.

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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