Basis auf einer Linearachse

  • Hallo zusammen,
    Ich habe einen Roboter, der auf einer Linearachse fährt. Am Roboter hängt einen Werkzeugmagzin, das mit dem Roboter auf der Linearachse mitfährt. Der Roboter soll seine Werkzeuge aus dem Magazin holen.
    Mich würde interessieren, ob es eine Möglichkeit gibt, eine Basis am Magazin zu definieren, die dann sich mit dem Roboter bewegt. Ich würde nämlich die Bewegungen für den Werkzeugwechsel kartesich programmieren.
    Gruß,
    Zicorob

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Zicorob,


    da dein Magazin mitfährt kannst du das eigentlich wie eine normale Base behandeln, der Bezug Roboter zum Magazin bleibt ja immer gleich.

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung


  • Hallo Zicorob,


    da dein Magazin mitfährt kannst du das eigentlich wie eine normale Base behandeln, der Bezug Roboter zum Magazin bleibt ja immer gleich.


    Hallo Martin,
    ich hätte gedacht, dass eine Basis sich immer auf dem Welt-KS bezieht, das sich am fest Fußpunkt der LA befindet. Wenn ich nun eine Basis am Magazin vermesse und da einen Punkt teache. und dann die LA um 1m verfahre (X+) und dann Punkt anfahren will, würde sich der Roboter nicht zu einem Punkt bewegen, der eine 1m in X- liegt und damit nicht mehr am Magazin?
    oder habe ich das Prinzip missverstanden?


  • Hallo Martin,
    ich hätte gedacht, dass eine Basis sich immer auf dem Welt-KS bezieht, das sich am fest Fußpunkt der LA befindet. Wenn ich nun eine Basis am Magazin vermesse und da einen Punkt teache. und dann die LA um 1m verfahre (X+) und dann Punkt anfahren will, würde sich der Roboter nicht zu einem Punkt bewegen, der eine 1m in X- liegt und damit nicht mehr am Magazin?
    oder habe ich das Prinzip missverstanden?


    Hast du richtig verstanden ;)


    Ich habe so was auch mal gebraucht. Von Haus aus kann Kuka das nicht. Ich habe mir das damals selbst gebastelt und in einer Sub die Base dem Robi hinterher geschoben.


  • ...und dann die LA um 1m verfahre (X+) und dann Punkt anfahren will, würde sich der Roboter nicht zu einem Punkt bewegen, der eine 1m in X- liegt und damit nicht mehr am Magazin?
    oder habe ich das Prinzip missverstanden?


    Hallo,


    Wenn du aber dann bei den Koordinaten die Externe Achse E1... löschst, müsste es doch Funktionieren ?
    oder hab ich da auch einen Gedankenfehler ? Teachen darf man dann nur an der 1. Station.


    Mfg


  • Wenn du aber dann bei den Koordinaten die Externe Achse E1... löschst, müsste es doch Funktionieren ?


    Achsspezifisch ja, kartesisch nein.



    oder hab ich da auch einen Gedankenfehler ? Teachen darf man dann nur an der 1. Station.


    Über das geführte Teachen aus dem Menü würde das dann nicht mehr funktionieren. Du müsstest die Base-Verschiebung und das Teachen selbst programmieren.


    Beim Teachen musst du sicherstellen, dass die Achse an allen drei Positionen an der gleichen Stelle steht (macht's zumindest einfacher) und die errechnete Base noch entsprechend der aktuellen Postion der Linearachse verschieben.


    So viel Aufwand war das nicht, wenn ich mich recht entsinne. Sollte in weniger als 100 Zeilen erledigt sein.

  • .... warum sollte das nicht gehen, du kannst doch deine Base um den Betrag deiner Lineareinheit verschieben... Stichwort Doppelpunktoperator

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Natürlich kann man das mit der KRC machen. Man muss zugegeben aber ein bißchen tricksen. Wenn ich das Problem richtig verstehe willst du eine Base, die sich mit der KL mitbewegt, ähnlich einem Base auf z.B. einem Dreh-Kipptisch und dann auf diesem Base verfahren. Nun hast du ja schon eine Konfiguration bei der die Zusatzachskinematik konfiguriert ist als Robroot-Kinematik (vom Typ $EX_KIN = ERSYS laut R1/$machine.dat), d.h. der Roboter steht auf dieser Kinematik. Du kannst nun eine zweite Zusatzachskinematik anlegen, die exakt wie deine KL konfiguriert ist, nur eben vom Typ $EX_KIN = EASYS, also wie ein Dreh-Kipp-Tisch als Basekinematik. Wichtig ist hier nur, dass diese Kinematik wieder die Achswinkel wie die KL bekommt, d.h. falls die KL die E1 ist, musst du nur dieser zweiter Kinematik auch sagen dein Achswinkel ist E1.


    Beispielauszug aus der R1/$machine.dat:


    DECL EX_KIN $EX_KIN={ET1 #ERSYS,ET2 #EASYS,ET3 #NONE,ET4 #NONE,ET5 #NONE,ET6 #NONE} ;Die erste Zusatzachskinematik ist vom Typ #ERSYS (Robroot-Kinematik), die zweite vom Typ #EASYS (Base-Kinematik)


    KL als RobRoot-Konfiguration:
    DECL ET_AX $ET1_AX={TR_A1 #E1,TR_A2 #NONE,TR_A3 #NONE} ;KL ist in der ersten Zusatzachskinematik die E1
    CHAR $ET1_NAME[20] ;NAME DER TRANSFORMATION ET2 MAX. 20 ZEICHEN
    $ET1_NAME[]="KL4000S_Q_64"
    FRAME $ET1_TA1KR={X 0.0,Y 0.0,Z 689.000,A 0.0,B -90.0000,C 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET1
    FRAME $ET1_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1
    FRAME $ET1_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2
    FRAME $ET1_TFLA3={X 0.0,Y 0.0,Z 0.0,A -90.0000,B 0.0,C -90.0000} ;ZWISCHEN FL UND A3
    FRAME $ET1_TPINFL={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL


    KL als Externe Basekinematik:
    DECL ET_AX $ET2_AX={TR_A1 #E1,TR_A2 #NONE,TR_A3 #NONE} ;;Wieder ist die E1 der Zusatzachskinematik zugewiesen
    CHAR $ET2_NAME[20] ;NAME DER TRANSFORMATION ET2 MAX. 20 ZEICHEN
    $ET2_NAME[]="KL4000S_Q_64"
    FRAME $ET2_TA1KR={X 0.0,Y 0.0,Z 689.000,A 0.0,B -90.0000,C 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET2
    FRAME $ET2_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1
    FRAME $ET2_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2
    FRAME $ET2_TFLA3={X 0.0,Y 0.0,Z 0.0,A -90.0000,B 0.0,C -90.0000} ;ZWISCHEN FL UND A3
    FRAME $ET2_TPINFL={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL


    Mit etwas Glück kannst du deinem Workvisual Projekt auch einfach nochmal die KL reinziehen aber eben den Roboter nicht auf den Flansch der KL ziehen und dieser zweiten KL dann als Achse die E1 zuweisen. Ich weiß aber nicht ob WorkVisual damit zurechtkommt, falls auf dem Katalogelement einer KL kein Roboter platziert wird und ob man eine Zusatzachse mehreren Zusatzachskinematiken zuweisen kann. Die eigentliche Steuerungssoftware hat damit kein Problem.


    Hat diese Konfiguration soweit geklappt, kannst du die KL genauso wie einen Dreh-Kipptisch behandeln und darauf Bases vermessen.


    Fubini

    Einmal editiert, zuletzt von fubini ()

  • Hallo,


    ich habe zu der 7. Achse und den Werten in der machine.dat eine Frage:
    Die Transformation von der A1 zum Fußpunkt der Kinematik verändert ja das Robroot des Roboters zur 7. Achse.
    Warum wird dort um B 90° gedreht? Nach meinem Kenntnisstand wäre doch die Drehung um A korrekt?
    Ist dann der z-Wert die Translation vom Boden zum Roboterfuß?
    Wenn die Fahrtrichtung geändert werden soll, wird dann dort die Orientierung um 180° geändert?


    Danke

  • Hallo Church90,
    sieh mal hier ins Attachment:
    https://www.roboterforum.de/ro…n/14872/msg70961#msg70961


    Zum Prinzip:
    1. Lege fest, wie Du das Weltkoordinatensystem im Raum festlegen willst.
    2. Verdrehe es im $ETx_TA1KR so, dass die Z-Achse des Koordinatensystems in Laufrichtung der Kinematik schaut.
    3. Verdrehe mit $ETx_TFLA3 das Koordinatensystem, dass es passt mit dem Robroot der Robotermechanik.


    Wenn man frei ist, wie Weltkoordinatensystem liegen soll, macht es Sinn, es parallel zu Robroot auszurichten, ausser Robi ist im 45 Grad Winkel montiert. So sind auch die Werte in der Doku entstanden.


    Antwort zu Z-Wert und Laufrichtung haste auch im Dokument.


    Gruss SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Hallo fubini


    ich habe hier 18 Base Koordinatensysteme, die ich auf einer KL mitnehmen muss, und probiere gerade deinen Vorschlag aus.


    Hier der Ausschnitt aus der Mada:


    INT $EX_AX_NUM=1 ;ANZAHL EXTERNER ACHSEN (0-6)


    INT $EX_AX_ASYNC='B0000' ;EXTERNE ACHSEN ASYNCHRON


    INT $ASYNC_T1_FAST='B0000' ;GESCHW.-RED. DEAKTIVIERT ( T1 )


    DECL EX_KIN $EX_KIN={ET1 #ERSYS,ET2 #EASYS,ET3 #NONE,ET4 #NONE,ET5 #NONE,ET6 #NONE} ;EXTERNE KINEMATIKEN #NONE,#EASYS,#EBSYS,#ECSYS,#EDSYS,#EESYS,#EFSYS,#ERSYS


    DECL ET_AX $ET1_AX={TR_A1 #E1,TR_A2 #NONE,TR_A3 #NONE} ;EXTERNE ACHSEN #NONE, #E1, #E2, #E3, #E4, #E5, #E6


    CHAR $ET1_NAME[20] ;NAME DER TRANSFORMATION ET1 MAXIMAL 20 ZEICHEN


    $ET1_NAME[]="KL4000_Q_40"


    FRAME $ET1_TA1KR={X 0.0,Y 0.0,Z 1089.00,A 0.0,B -90.0000,C 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET1


    FRAME $ET1_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1


    FRAME $ET1_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2


    FRAME $ET1_TFLA3={X 0.0,Y 0.0,Z 0.0,A -90.0000,B 90.0000,C -90.0000} ;ZWISCHEN FL UND A3


    FRAME $ET1_TPINFL={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL


    DECL ET_AX $ET2_AX={TR_A1 #E1,TR_A2 #NONE,TR_A3 #NONE} ;EXTERNE ACHSEN #NONE, #E1, #E2, #E3, #E4, #E5, #E6


    CHAR $ET2_NAME[20] ;NAME DER TRANSFORMATION ET2 MAX. 20 ZEICHEN


    $ET2_NAME[]="mitfahrende_Basis"


    FRAME $ET2_TA1KR={X 0.0,Y 0.0,Z 1089.00,A 0.0,B -90.0000,C 0.0} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET2


    FRAME $ET2_TA2A1={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A2 UND A1


    FRAME $ET2_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2


    FRAME $ET2_TFLA3={X 0.0,Y 0.0,Z 0.0,A -90.0000,B 90.0000,C -90.0000} ;ZWISCHEN FL UND A3


    FRAME $ET2_TPINFL={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL



    Nun meine Fragen:

    -Muss ich die Anzahl der externen Achsen von 1 auf 2 erhöhen?


    -Ich habe den Fußpunkt der #EASYS gleich gewählt, wie die Linearachse, ist das korrekt?


    -Wie kann ich nun meine 18 Bases auf der #EASYS definieren? Sonst haben wir das immer geführt bei der Fußpunktvermessung zugewiesen, was hier ja nicht der Fall ist.


    Ich bin morgen wieder an der Anlage und werde testen.


    Vielen Dank schonmal!


    lg

  • ok, Problem scheint gelöst zu sein, mit der "neuen" Funktion EO Treiber klappt das über Workvisual.

    Siehe Doku:

    "Konfiguration von Kinematiken

    Für KUKA System Software 8.5

    Montage- und Betriebsanleitung

    KUKA Roboter GmbH

    Stand: 05.04.2017"


    ab Seite 24.


    Muss es zwar erst testen, aber ich glaub das passt :)


    lg

  • Hallo zusammen,


    ich habe genau dasselbe vor wie Zicorob und doc_rob.


    Umgesetzt wird das mit einer KUKA System Software 8.6, einem KR60, und einer KL 4000.


    Die Funktion EO-Traiber habe ich ausprobiert. Mit einem statischen Koordinatensystem hat das soweit funktioniert. Man kann sich die aktuelle TCP Position in einem fixen Koordinatensystem anzeigen lassen.


    Mit einem dynamischen Koordinatensystem scheint es aber nicht so wirklich zuklappen (habe ich den Eindruck). Wenn die KL begt wird (als Einzelachse und nicht in World oder Base) und die dynamische Base (die die mit KL mitfahren soll) ausgewäht ist ändert sich der x-Wert. Ist das normal?


    Hat es bei dir Funktioniert?




    Viele Grüße

  • Beim achspezifischen Handverfahren ist das wenn ich mich recht erinnere normal. Nur beim kartesischen Handverfahren sollte die Kopplung über den EO an sein bzw berücksichtigt werden. Ist auch bei externen Basekinematiken so.


    Fubini

  • Leider konnten wir die dynamischen Bases trotz Kuka Support (D) nicht zum Laufen bekommen.

    Die Kuka Techniker aus AT haben uns folgenden Weg vorgeschlagen:


    Code
    BASE_DATA[32] = BASE_DATA[12] ;geteachte Basis auf freien Platz kopieren
    BASE_DATA[32].X = BASE_DATA[12].X + $ROBROOT_C.X ;geteachte Basis um die Position des Roboters auf der Linearachse verschieben


    hierbei muss man jedoch drauf achten, dass man die Base Verschiebung zum richtigen Zeitpunkt durchführt. Eine echte dynmische Base ist das meines erachtens nicht.

    Wir haben dafür wirklich Zeit investiert und ich denke, ich habe alle Kombinationen durchgetestet.

    War da etwas enttäuscht, dass auch Kuka selbst uns nicht wirklich helfen konnte, obwohl das Tool für die Lösung ja eigentlich vorhanden ist (EO Treiber).


    lg

  • Hallo doc_rob,


    vielen Dank für deine Rückmeldung. Ich habe seit Mittwoch verzweifelt alle Möglichkeiten getestet. Gut zu wissen, dass es nicht funktioniert.


    Viele Grüße

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