AXIS und E6POS: Wie bringe ich die zusammen?

  • Hallo zusammen, folgendes Problem (KRC2, KR180-2PA (Palettierer, 4 Achsen)):


    Ich habe 3 Aufnahmepositionen


    Code
    XPOS1={x -477,y 1868,z -620,a 88.6426163,b -4.11080505E-15,c -180.0,s 2,t 3}
    XPOS2={x -1967,y 16,z -615,a 88.686142,b 1.43653003E-16,c -180.0,s 2,t 2}
    XPOS3={x -1529,y -1683,z -636,a 88.677417,b 6.88447204E-15,c -180.0,s 2,t 2}


    mit gleicher Orientierung des Werkzeuges (a=88.6) --> die Winkel der Achse 6 sind unterschiedlich, da die Positionen im Halbkreis um den Roboter liegen.


    Die Positionen werden über eine berechnete Vorposition auf sichere Höhe (z.B. XPOSx.z=500) angefahren. --> Nun möchte ich für diese Vorpositionen einen festen Achswinkel für die 6. Achse vorgeben.


    Wie kann ich das machen? Wie kann ich aus einem festen Achswinkel Achse 6 den korrekten den dazugehörigen a-Wert berechnen? Oder umgekehrt ausgedrückt: Wie kann ich aus vorgegebenen a-Werten den dazugehörigen Achswinkel Achse 6 berechnen?


    Bis jetzt mache ich es so, das ich die Vorposition anfahre


    Code
    XPOS1.z=500
    PTP XPOS1


    und dann die Achse 6 korrigiere


    Code
    PTP {A6 45}


    Ich möchte aber in meiner Vorposition schon den vorgegebenen Achswinkel Achse 6 haben!


    Gruß HarryH

  • Schritt für Schritt zum Roboterprofi!
  • Also, ich verstehe überhaupt nicht was du da vorhast... :huh:


    Wenn ich dich richtig verstehe, ist die Werkzeugorientierung bei der Vorposition egal. Du willst nur bei der Vorposition A6 auf 45 Grad haben.
    Warum? Beschreib doch mal dein Problem genauer. Vielleicht gibt's ja eine andere Lösung...


    Ansonsten kannst du ja mal schauen, ob du Teile aus dem Programm KUEWEG (Unter UTIL) zum errechnen nehmen kannst. Habe ich mich aber nie genau mit befasst...

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Die Werkzeugorientierung an der Vorposition ist gerade nicht egal.


    Also, ich möchte mit meinem Werkzeug Paletten aufnehmen. Dafür gibt es die beschriebenen Positionen. Diese Positionen fahre ich in einer sicheren Höhe an. D.h. ich schwenke zu einer Vorposition und fahre dann senkrecht runter zur Aufnahmeposition. Nun ist es so, das ich die Greifarme des Werkzeuges nicht bei jeder Achsstellung Achse 6 bewegen kann, wegen Kollision mit Roboterarm. D.h. ich muss in der Vorposition auf einen festen Achswert für Achse 6 fahren (z.B. 45°) um die Arme zu bewegen. Sind die Arme ausgefahren, kann ich zur Aufnahmeposition runterfahren.


    --> Die Vorposition errechnet sich wie folgt:
    x-/ y- Wert von der Greifposition XPOSx
    z-Wert zugewiesen z.B. 500
    a-Wert ??? --> Ich habe ja nur den Achswinkel von 45°


    Das ist das Problem, wie bekomme ich meinen Achswinkel 45° in die entsprechende Orientierung a?


    Wie unten beschrieben, kann ich erstmal die Vorposition (wie XPOS1 nur mit z=500) anfahren und dann die Achse 6 korrigieren. Das möchte ich aber nicht. Sondern ich möchte in meiner Vorposition den Achswinkel 45° gleich berücksichtigen.


    Gruß HarryH

  • Muss das denn eine berechnete Position sein? Sonst kannst Du die ja einmalig anfahren und die Achskoordinaten dann fest ablegen.

    If you and DEAD people can read Hex, how many people can read Hex?

  • Gibt es denn ein nachzuvollzeihendes Muster?
    pos1.z= -500 A6=30 Grad
    pos1.z=-250 A6=60 Grad
    pos1.z=0 A6=90 Grad


    Dann kannst du das doch mit einfach 3 Satz errechnen. Kann das jetzt leider nicht ausprobieren. Habe gerade keinen Robi zu Hand.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hallo HarryH,


    fuer die Umrechung von E6POS in E6AXIS gibt es die Transformation "Inverse" andersrum die Funktion "Forward".


    Fuer dein Problem gibt es einfachere und elegantere Loessungen.
    Ich denke es ist sinnvoller ueber jedem Pallettenstapel auf einen E6Axis zu fahren und nicht auf einen berechnetet Punkt - das kann beim Nachteachen zu Problemen mit Status und Turn fuehren.


    Gruss Stefan

  • @Alle
    Es muss nicht unbedingt eine berechnete Position sein.
    Aber bisher habe ich es immer so gemacht, das alle Vorpositionen sich aus den Ablage-/Aufnahmepositionen berechnet haben. Das erleichtert auch die IBN beim Kunden. --> Aber für diese Vorpositionen werde ich wohl um geteachte Positionen nicht herumkommen. Dann bin ich auf der sicheren Seite.


    stefanM

    Zitat


    ... fuer die Umrechung von E6POS in E6AXIS gibt es die Transformation "Inverse" andersrum die Funktion "Forward".


    Würde mich mal interessieren wie ich die beiden Befehle programmieren muss. So vielleicht?


    E6AXIS=Inverse(E6POS) ???
    E6POS=Forward(E6AXIS) ???


    Hab übrigens noch nie in den Handbüchern darüber was gefunden, ist das überhaupt beschrieben?


    Gruß HarryH

  • So müsste es gehen:


    Habe es nicht ausprobiert, aber ich erinnere mich dunkel daran das mal so gemacht zu haben.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hallo,
    die Funktionen Inverse und Forward sind von KUKA nicht offiziell dokumentiert (es gibt aber eine Doku).


    Beispiel:
    Achskoordinaten = inverse(Roboterkoordinaten, Startpunkt, Fehler)


    - Roboterkoordinaten ist e6pos
    - Startpunkt ist e6axis und wird nur benoetigt, wenn "Roboterkkordinaten" ein Frame uebergeben wird
    - Fehler ist ein Call by Reference und prueft, ob der Punkt innerhalb der Softwarelimits ist
    Ich wuerds einfach mal pruefen und einmal auf den E6Axis, dann auf den E6POS fahren - wenn sich was bewegt stimmt was nicht.


    IrrerPolterer:
    Inverse und Forward arbeiten immer mit $Tool und $Base, die Umrechnerei kann mann sich daher sparen (zumal was falsches dabei rauskommt).


    "epos1=$base:testpos" transformiert den Punkt ins Nullframe
    "epos1=epos1:$tool" kommt nur was vernuenftiges raus, wenn $Tool=$nullframe ist.
    Erlag auch schon mal dem Trugschluss, dass das mit der Tooltrafo so geht.


    Gruss Stefan

  • Inverse und Forward arbeiten immer mit $Tool und $Base, die Umrechnerei kann mann sich daher sparen (zumal was falsches dabei rauskommt).


    "epos1=$base:testpos" transformiert den Punkt ins Nullframe
    "epos1=epos1:$tool" kommt nur was vernuenftiges raus, wenn $Tool=$nullframe ist.


    Ich sagte ja, bin mir nicht mehr sicher, wie das war. Werde mal heute abend im Robi-Archiv nachschauen.


    Also werten INVERSE und FORWARD die aktuellen Base und Tool aus?
    Vielleicht habe ich das bei meinen Versuchen später rasugefunden und die Einrechnung, dann wieder rausgeschmissen.
    Als ich das gemacht habe war das so Try and Error, da die Funktionen ja nicht dokumentiert sind. Eigentlich schade!

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Nur der Vollständigkeit halber, die internen Deklarationen:


    Code
    EXTFCTP E6POS FORWARD (E6AXIS AXVAL : IN, INT STATUS : OUT)
    EXTFCTP E6AXIS INVERSE (E6POS TOOLPOS : IN, E6AXIS START_AXIS : IN, INT STATUS : OUT)


    Hartmut

  • Hallo,


    eben weil diese Funktionen nicht dokumentiert sind, sollte man sich genau ueberlegen, ob man diese an einer Produktionsanlage einsetzen will.


    Das Probolem hier laesst sich auch durch geteachte Punkte umgehen, oder indem mann Frame Punkte (ohne Status und Turn) verwendet, oder (nicht wirklich toll) mit Linearsaetzen arbeitet.


    Gruss Stefan

  • eben weil diese Funktionen nicht dokumentiert sind, sollte man sich genau ueberlegen, ob man diese an einer Produktionsanlage einsetzen will.


    Nun ja, wenn man genug Zeit hat das auszuprobieren und das 99x funktioniert, sollte man schon davon ausgehen, daß es auch beim 100sten Mal klappt.
    Als Programmierer sollte man immer die Möglichkeit nutzen weiter zu denken und nicht auf dem Standard stehen zu bleiben.
    Sicher muß man abwägen, ob es nicht einfacherer Lösungen gibt. Dazu muß man aber Erfahrungen sammeln und nicht immer alles nach 08/15!

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

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