"Unvorhersehbares" Verhalten bei Fahrt auf E6AXIS (6-Achs Roboter, Palettierung)

  • Hallo Community,


    ich habe ein Problem bei einer Palettieranwendung. Und zwar kommt es vor dass der Roboter bei einer PTP Fahrt auf eine E6AXIS manchmal ein "ungewolltes" Drehverhalten zeigt. Genauer gesagt beim Fahren auf die "Zwischen-Position" nach den Absetzvorgängen (etwa bei Absetzvorgang 4-10). Schematisch ist das Programm wie folgt aufgebaut:



    Bei dem letzten Fahrbefehl bekomme ich manchmal ungewollte Drehungen... dabei möchte ich im Prinzip genau umgekehrtes Drehverhalten wie bei der Fahrt PTP vorpos_setzen
    Bin etwas perplex dass da überhaupt Status und Turn bei PTP E6AXIS ne Rolle spielen ? Achse 4 und Achse 6 sind bei dem Roboter endlos drehend eingestellt weil wir starke Singularitätsprobleme bei dem Anlagenlayout hatten.
    Kann es denn vorkommen das bei der PTP E6AXIS statt auf A4 = 20° einfach auf A4 = -340° gefahren wird ?
    Lässt sich das mit der Variable $TARGET_STATUS irgendwie zu 100% beheben oder sicherstellen ? Oder was sollte ich da tun, dass der Roboter immer auf eine "gleiche" Zwischenposition zurückfährt. Oder mache ich hier eventuell einen Gedankenfehler an ganz anderer Stelle (weil ich selbst fast nicht glaube dass PTP E6AXIS sich so merkwürdig verhält... ?)

    Gruss,

    Robin 8)

  • Schritt für Schritt zum Roboterprofi!
  • Mal versucht, Palettiermodus ($PAL_MODE) zu nutzen ?

    Wäre der einfachste Weg, Handachsensingularität (A4-A6) beim Palettieren in den Griff zu kriegen.

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

  • Die Variable $Pal_Mode ist mir erstmal neu!

    Laut KUKA-Beschreibung:

    Zitat

    In the case of palletizing robots with 6 axes, palletizing mode is deactivated

    by default and must be activated. If palletizing mode is active, axis A4

    may be locked at 0° and the mounting flange is held parallel to the floor by

    keeping A5 at a suitable angle. For a 6-axis robot, active palletizing mode

    is deactivated again after a cold restart of the robot controller.

    Also wenn das Tool parallel zum "Floor" gehalten wird und die Achse 4 eventuell "gelockt" wird, dann heisst das für mich die A6 muss noch mehr "Ausgleicharbeit" in der Singularität leisten. Aber würde ich auch mal ausprobieren wollen...

    Also Lösungsideen bisher:
    - $TARGET_STATUS = #BEST (statt Default mässig #SOURCE)

    - Spielen mit den Befehlen FORWARD()/INVERSE(), in etwa sowas wie:


    mit der Erwartung, dass mir die Berechnung mittels FORWARD auch den "gewünschten" Status und Turn ausspuckt, der für alle berechneten vorpos_setzen (sind ja variabel) zum "selben" Rückdrehen führen würde.



    - oder eben $PAL_MODE = TRUE


    Was könnte hier am zielführendsten/elegantesten sein ? :kopfkratz:
    Das Problem ist wie gesagt das Drehverhalten nach dem Setzen nach der Fahrt auf die Vorpos zurück (genaugenommen die unvorhersehbare Drehung auf die Zwischenposition) - Also nicht die Singularität als solches...

    Gruss,

    Robin

  • Nich das Tool sondern der Flansch! Kannst dann eigentlich nicht mehr in die Singularität kommen.

    Hallo Fubini,

    Danke für deinen Hinweis!
    Jetzt ist bei uns das Anlagenlayout tatsächlich knallhart so, dass der Roboter (6-Achs KUKA KR3900 Ultra irgendwas..) auf ner relativ hohen Konsole steht und etwa darunter die Palette liegt, dass der beim Absetzen vorne "überbeugt" und dann eben bei Parallelität von Flansch und Paletten-BASE die Achse 4 und A6 ziemlich genau übereinander liegen :pfeif: Ist eben ein altes vom Kunden so "übernommenes" Layout


    Also Singularität bekomme ich nur schwer weg. Macht uns auch erstmal nichts aus solange das Verhalten danach in den Griff zu bekommen wär :mrgreen:

  • Gibt es einen speziellen Grund, wieso keine 4 (5)-Achsen-Palettiermechanik hier verwendet wird ?


    Palettiermodus würde Dir exakt die Vorteile so einer Mechanik bieten.

    Meistens erreichst Du damit auch eine schnellere Zykluszeit, weil Du mehr PTP Bewegungen fahren kannst und eben das gegenseitige Verdrehen Achse 4 / 6 nicht mehr hast.

    Würde darum auch Dein Programm sehr vereinfachen. (z.B. Positionen nur noch als Frame handeln)

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

  • Gibt es einen speziellen Grund, wieso keine 4 (5)-Achsen-Palettiermechanik hier verwendet wird ?


    Palettiermodus würde Dir exakt die Vorteile so einer Mechanik bieten.

    Meistens erreichst Du damit auch eine schnellere Zykluszeit, weil Du mehr PTP Bewegungen fahren kannst und eben das gegenseitige Verdrehen Achse 4 / 6 nicht mehr hast.

    Würde darum auch Dein Programm sehr vereinfachen. (z.B. Positionen nur noch als Frame handeln)


    Ich kann es mir momentan noch nicht genau vorstellen...
    Wenn bei der Fahrt nahe der Singularität ab sofort nur noch Achse drehen sollte, dann würde das doch bedeuten, dass das Tool stark vor- und zurück rotieren würde ? Und wenn nun die A6 ständig am drehen ist, dann komme ich doch genau so in Situationen rein bei der nach einer PTP Fahrt auf ein 360°-Modulo Wert statt auf den "Urpsrungswert" gefahren wird, oder sehe ich hier etwas falsch ? Bedeutet $PAL_MODE vorneweg einfach "gemindertes" Drehverhalten ?

    Mich beschäftigt momentan die Frage ob ich bei der Systemvariablen $TARGET_STATUS von #SOURCE auf #BEST potentiell den Fehler wegbekomme. Alternativ würde mich auch interessieren ob ich bei dem Befehl

    e6zielpos = FORWARD(axis, err_status)


    irgendwo "einbringen" kann dass er sich nicht über den Modulo 360° drehen soll für die berechnete Position.. irgendwo hatte ich gelesen dass err_status IN/OUT Parameter ist.. also Hoffnung wenn ich da z.B. err_status = 2 setze, dass mir das Programm den für mich "richtigen" Turn ausgibt ? Oder welche Variable wird hier ausgegeben falls so ein Modulo Sprung auftritt (Software Endschalter A4 A6 sind ja deaktiviert durch "endlosdrehen".

  • Zitat

    Mich beschäftigt momentan die Frage ob ich bei der Systemvariablen $TARGET_STATUS von #SOURCE auf #BEST potentiell den Fehler wegbekomme.

    Eher nein. Ob die Achse links oder rechts rum dreht hat nichts mit dem Status zu tun, sondern ist erstmal ein Turnproblem, d.h. in deinem Problemfall müsstest du das Turnbit für die Problemachse flippen. Nachdem der Turn aber für endlos drehende Achsen keine Bedeutung hat muss du auf alle Fälle erstmal das "endlos drehend" wieder abstellen. Danach kannst du über INVERSE und durch Vorgabe von Status und verschiedenen Turns dir denjenigen Achswinkel raussuchen den du haben willst und dann entsprechend die kartesische Position für den SPTP kommandieren.


    Fubini

  • Vieleicht hilft es Dir die Achse 6 über Einzelachsbewegung vorzupositionierren:


    Z.B.:

    PTP {A6 90}


    Oder in einer Schleife in mehreren Schritten...

    Repeat

    E6AXIS.A6 = E6AXIS.A6 - 10

    PTP E6AXIS

    Until E6AXIS < XY


    Eine einfache mechanische Lösung wäre eine schräge Adapterplatte zwischen Roboterflansch und Werkzeug. So bekommst Du dein Singularitätsproblem weg...

  • Eher nein. Ob die Achse links oder rechts rum dreht hat nichts mit dem Status zu tun, sondern ist erstmal ein Turnproblem, d.h. in deinem Problemfall müsstest du das Turnbit für die Problemachse flippen. Nachdem der Turn aber für endlos drehende Achsen keine Bedeutung hat muss du auf alle Fälle erstmal das "endlos drehend" wieder abstellen. Danach kannst du über INVERSE und durch Vorgabe von Status und verschiedenen Turns dir denjenigen Achswinkel raussuchen den du haben willst und dann entsprechend die kartesische Position für den SPTP kommandieren.


    Fubini


    Hallo Fubini,

    danke für den Tipp. Mir gefällt das mit den endlos drehenden Achsen sowieso nicht so wirklich..
    Hast du eine Beschreibung zu den Funktionen Forward/Inverse() ? Habe schon in anderen Themen danach gesucht, aber habe keine aktuelle Verlinkung dazu mehr gefunden.


    Ja die Adapterplatte gibt es sogar schon.. man ist hier nur etwas "gutmütig" rangegangen und hat Sie erstmal weggelassen. Danke für den Hinweis.
    Und eine Schleife haben wir bereits drin.. die war nur etwas "unschön" weil Sie den eigentlich Prozess irgendwo etwas verlangsamt.

  • Hast du eine Beschreibung zu den Funktionen Forward/Inverse() ?

    Meines Wissens nach ist die inzwischen über das KUKA Portal zugänglich http://my.kuka.com/.


    Ansonsten hab ich mal im englischen Forum eine grausame Übersetzung gepostet


    https://www.robot-forum.com/ro…n/?postID=48148#post48148


    Vielleicht nicht mehr ganz aktuell.


    Fubini

    Einmal editiert, zuletzt von fubini ()

  • fubini
    Danke für den Link!
    Würde ich auch genau so übersetzen.

    Habe die Beschreibung von Inverse() und Forward() jetzt in der "KUKA System Software 8.7" ab Seite 676 ausfindig gemacht. Die PDF gibts wie du sagst im Kuka MyExpert Portal unter Bedien- und Programmieranleitungen - Suchbegriff "KUKA System Software".

    Da ich die die Funktion Forward() als "Diagnose" in mein Programm einbinden will frage ich mich ob mir die Variable err_status auch eine 1 rausgeben würde ( Verletzung Softwareendschalter ) wenn die Achse 4 und Achse 6 weiterhin endlosdrehend eingestellt wären. Sprich wenn die sozusagen >360 bzw. <-360 drehen.
    Wohl eher nicht oder ?


    Beziehungsweise falls ich die Achse 4 und Achse 6 wieder beschränke...
    Wäre es ratsam aus meiner E6AXIS Rückzugsposition mittels Inverse eine E6POS zu berechnen und für den Fall, dass err_status = 1 (SWES Verletzung) meldet "von Hand" den Turn der Achse 4 bzw. Achse 6 anzupassen ?

    Also z.B. aus Turn = 35 = "100011"
    den Turn = 34 = "100010"
    zu basteln ? Gibt es da eventuell eine Funktion die einem das unter Angabe der Achse umrechnet beziehungweise den Turn einer Achse invertiert ?

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