Vorposition über Greifposition berechnen

  • Guten Abend!
    Ich habe gerade ein Problem, dass mich fast in den Wahnsinn treibt :uglyhammer_2:.


    Ablauf der funktioniert:
    - Eine Werkstückbasis (Base[4]) wird bei jedem Robotertakt über den Geometrischen Operator neu berechnet (Kamerasystem).
    - In dieser Base sind eine Vorposition und eine Nachposition fest geteacht.
    - Bei jedem Robotertakt ändert sich die Werkstückbasis und somit auch die geteachten Punkte.
    - Der Roboter kann das Werkstück greifen.


    Da ich das Werkstück je nach Orientierung mit 0 bzw. 180 Grad aufnehmen muss, gibt es diesen Ablauf 2 mal.


    Mein Problem ist, dass ich nur noch Greifposition teachen und die anderen in abhängigkeit von der Greifpos berechnen möchte.
    (20 unterschiedliche Werkstücke mal oben genannten Ablauf = 80 Punkte zu teachen bei Inbetriebnahme => Mein Grund)


    Wie kann ich also eine Greifposition, die aufgrund des Kamerasysstems in E6POS geteacht ist, mit 0 oder 180 Grad genau anfahren und eine Vorposition und Nachposition
    in Abhängigkeit dieser berechnen?


    Mein Versuch:



    Die Rechnerrei funktioniert soweit, aber im 2 Roboterzyklus wird der selbe Greifpunkt angefahren,
    obwohl die Basis [4] (Werkstück) verschoben wurde. :denk:



    Oder gibt es eine einfachere Möglichkeit???
    Problem ist halt, dass Greifpos als E6POS geteacht ist und diese mit 0 oder 180 Grad angefahren werden muss.


    Danke schon mal!

    Einmal editiert, zuletzt von cando_o ()

  • Schritt für Schritt zum Roboterprofi!
  • Achspositionen sind nicht von Tool oder Base Abhängig. Da wird NUR die geforderte Achsstellung erreicht. Fertig.


    Dein Freund ist der Inhalt von T in der E6Pos: Bit 5 stellt die Stellung der sechsten Achse dar.
    A6>=0 wird Bit5 auf 0 setzen, A6<0 ergibt dort ne 1.


    Es hilft, diese Variable binär darzustellen:


    Ich hab sowas mal so gemacht:



    Hier wird Bit 1 jeweils IMMER auf 0 oder 1 geschoben. Das ging halt auf die erste Achse


    Bei Dir wärs
    XP1.t = 'B011111' B_AND XP1.t um die sechste Achse immer auf ne Zahl >=0° zu fahren und
    XP1.t = 'B100000' B_OR XP1.t um sie immer auf eine negative Gradzahl zu fahren.
    Musst möglicherweise Deinen Greifer anders montieren.



    ALLES OHNE GEWÄHR


    WH

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • WolfHenk hat auf alle Fälle schon mal Recht: ein mit E6AXIS geteachter Punkt ist im Raum gesehen immer der selbe, da kann man hin und herrechnen wie man will.


    Keine Ahnung warum der geteachte Punkt als E6AXIS deklariert ist, das wird so nie funktionieren.
    Wenn eine Kamera im Spiel ist, dann darf man Punkte, die sich auf die Kameraergebnisse beziehen nur als FRAME, POS oder E6POS verwenden.
    hier mal ein Konzept, wie ich das lösen würde:



    Aber Achtung: Wenn GRUNDPOS genau 180 Grad zu einer der Greifpositionen steht, dann fährt der Roboter mit ziemlicher Wahrscheinlichkeit eine sehr seltsame Bewegung auf dem Weg zur Vorpos. In dem Fall entweder aus LIN Vorpos ein PTP Vorpos machen, oder die GRUNDPOS etwas verdrehen. (Diesen seltsamen Bahnverlauf bei 180-Grad Drehungen beim Linearfahren halte ich für einen eklatanten Fehler in der Bahnplanung seitens KUKA, der aber scheinbar niemanden interessiert, denn den gibt's schon immer).


    Das ganze kann überhaupt nur funktionieren, wenn der Greifer symmetrisch ist und das Tool auch genau symmetrisch eingerichtet ist (würde auch für die Version mit E6AXIS.A6 + 180 gelten). Mir ist nicht ganz klar, warum das Base über die Kamera verschoben wird, und nicht gleich der Greifpunkt komplett mit Winkel ermittelt wird :denk:

  • Guten Abend!


    Tool und Werkstück sind symetrisch. Und das mit der Berechnung mit der ständigen verschiebung der Base wurde so von einem KUKA-Programmierer gelöst.


    (Greifpos war ursprünglich eine E6POS habe, habe mir aber gedacht ich kann daraus eine AXIS machen, A6 auf 0 oder 180 Grad rechnen und die Vorpos durch den Forwardbefehl
    über die dann erhaltene E6 Greif POS berechnen.



    Aber... Dann werde ich morgen den unten stehenden Code probieren.




    Und noch was:


    Was haltet Ihr von dem Befehl?


    lin $pos_act: {x 0,y 0,z 190,a 0,b 0,c 0} c_dis


    Bei Programm-Abbruch und Wiedereinstieg werden, doch die 190 wieder von vorne begonnen, obwohl (sagen wir mal) 50 schon gefahren wurden?


    Danke schon mal!

    Einmal editiert, zuletzt von cando_o ()

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