Bahnplanung auslesen

  • Hallo,


    ich bin noch relativ neu im Kuka Universum unterwegs und hoffe das mir hier vielleicht jemand weiterhelfen kann.


    Ich versuche von einem KR 6 R900 Sixx Roboter mit KR C4 Compact Steuerung KSS 8.2 die geplante Bahnbewegung zu ermitteln. Also ich gebe dem Roboter ein Programm und will wissen wie der Roboter (Achspositionen) das Programm verfährt. Das ganze möglichst während das Programm gefahren wird im Vorlauf.


    Der Kuka Support sagte mir ich solle dies über $PRO_IP1 versuchen und dann die Achspositionen über INVERSE. Allerdings erhalte ich über $PRO_IP1 irgendwie nur die Zeiger vom Roboter Interpreter etc (das funktioniert auch alles) aber die Bewegungssätze im Vorlauf nicht.


    Ich habe die Vermutung das diese im Call_Stack S101-S110 liegen auf den ich stand jetzt aber irgendwie nicht zugreifen kann.


    Ich wäre für jede Hilfe oder Anregung sehr dankbar :)

  • Schritt für Schritt zum Roboterprofi!
  • Während die Bewegung noch im Vorlauf ist kannst du das nicht irgendwie abfragen. Die Bewegung ist ja da gerade erst in der Planung. Du kommst maximal an Daten wie den Zielpunkt der Bewegung. Am einfachsten geht das über den pro_ip und der darin enthaltenen Satznummer des Vorlaufs wie es auch schon der Support mitgeteilt hat.


    Fubini

  • Hab da auch keine Lösung, aber bei solchen Fragen frage ich mich immer wieder: wozu braucht man das?

    Wir wollen in einer Zelle in der mehrere Roboter Programme abfahren, rechnerisch ermitteln wo Bewegungen kritisch nah an anderen Robotern in der Zelle stehen und diese Bewegungssätze korrigieren. Das ganze ohne Sensorik, rein über die geplanten Achspositionen der Roboter.


    Irgendwie hilft mir das bisher alles noch nicht wirklich weiter. $AXIS_ACT ist leider zu wenig vorlaufend.


    Wenn ich mir die Position des Roboterinterpreters ausgeben lasse, verstehe ich nicht ganz wie mir das helfen soll zu erfahren wie der Roboter zu diesen Positionen verfahren würde. Ich meine klar, ich kann mir die Programmzeilen zwischen aktueller Bewegungssatz und dem Bewegungssatz wo der Interpreter steht holen aber dann habe ich immer noch keine Ahnung wie der Roboter seine Achsen zu diesen Bewegungssätzen verfahren würde.


    Vielen Dank für die Antworten bis hier her!

  • Ptp sind Geraden im Achsraum, d.h. du kannst es selbst ausrechnen. Außerdem sind die Achsen dabei gemeinsam parametrisiert, d.h. wenn Achse 1 10% ihres Gesamtwegs gemacht hat haben auch alle anderen Achsen genau 10 % ihres Wegs hinter sich.


    Bei Lin/circ musst du dir die kartesische Sollgeometrie über Inverse selbst in kleine Teile zerlegen.


    Aber das ist alles aufwendig und komplex zu programmieren. Warum besorgt ihr euch kein offline simulationstool? Oder verriegelt Arbeitsräume gegeneinander?

  • Fubini hat schon das meiste dazu gesagt.

    So wie ich das jetzt verstehe wollt Ihr in Echtzeit auf einem Roboter evtl. Kollisionen mit anderen Robotern (mehr als nur ein anderer?) verhindern.

    Nur mal ein paar Gedanken dazu:

    - Welche Geometrie soll da kontrolliert werden? Die komplette Roboterkinematik mit Greifer/Werkzeug, (zumindest alles ab Achse 4, was m.M. das einzige Sinnvolle wäre)? Oder nur der Greifer/Werkzeug? Oder etwa nur der TCP?

    Wenn da zumindest Teile der Geometrie (Greifer, Achse 4,5,6) betrachtet werden sollen, da ist dermassen viel komplizierte Mathematik nötig: wie langsam schleichen denn die Roboter da in der Gegend rum? Das dürfte nicht in Echtzeit zu schaffen sein.

    - Es müsste dann doch auch noch die Position des anderen Roboters bekannt sein, also müsste die noch von einem Roboter auf den anderen übertragen werden, natürlich ebenfalls die Vorlaufposition, kostet auch Zeit, die von den Berechnungen abgeht. Dann müsste auch noch die Geomtrie des anderen Roboters dazu berechnet werden.

    Kann mir beim besten Willen nicht vorstellen wie das online in Echtzeit gehen sollte.


    Wenn es nicht in Echtzeit geschehen soll, sondern "irgendwie" offline oder nachträglich, dann macht die Forderung nach "vorlaufend" m.M. keinen Sinn.

  • Alles klar, dann schon mal besten Dank für die Hilfe! War mir tatsächlich bis zu diesem Zeitpunkt in diesem Ausmaß nicht bewusst. Wir werden das ganze jetzt über die vorgeschlagene Offline Simulation vorher berechnen. Ich schau dafür mal ob es in Kuka Sim Pro möglich ist die Interpolationspunkte zwischen zwei Bewegungssätzen zu tracken.


    Damit hätte ich dann eigentlich alles was ich brauche.


    Danke schön!

  • Wir haben mal eine Echtzeit-Kollisionsüberwachung geschrieben. Mit genug potenter Hardware (dicke GPU) geht da schon was.


    Kommt aber, wie Hermann bereits gesagt hat, auf die zu überwachenden Geometrien an.


    In unserem Fall war es zum Beispiel nur ein Roboter, welcher selbst nicht betrachtet wurde, mit relativ komplexem Greifer gegen eine Zelle mit ein paar Störkonturen. Die Überwachung lief nur auf einer externen CPU, war aber extrem optimiert und hat ca. 12ms für eine Position gebraucht.


    Die Entwicklung hat aber bestimmt ein Mann-Jahr gedauert.


    Ich würde mir erstmal anschauen, ob man das nicht einfacher lösen kann.

  • Hmm,

    wenn du die Roboter in einem Roboteam hast kannst du sie in den Simulationsmodus stellen und ihre Bahnen ablaufen lassen.

    In der SPS.SUB kannst du dir die aktuellen Achspositionen ausgeben lassen.


    Mit den Daten kannst du dir dann gegenüberstellen wann welcher Roboter welche Achspositionen hat.

    Mit Hilfe der DH Parameter kannst du dir dann die Punkte der Achsübergänge im Raum ermitteln und die Abstände zueinander.


    Das wäre ein Weg um sich zumindest die Kettenpunkte voneinander abzutrennen.


    Aber wirklich in Laufzeit sich die Roboter gegenseitig abzufragen und das dann auch noch im Vorlauf?

    Abgesehen davon, dass ich nicht wüsste, dass Kuka die Position ausgibt, die er in x Sekunden hat, gibt Kuka sicherlich nicht die Bahnplanung raus die sie verwenden. Und dann musst du das ganze noch berechnen lassen. Ein normaler PC wird damit sicherlich überfordert sein. Und das wenn er 2 gegen rechnen muss. Um das abzukürzen müsstest du dir die einzelnen Glieder in Punkte aufteilen, die du alle über die DH Parameter bestimmst und dann definierte Kugeln darüber legen. Dann kannst du es vllt rechnen, sitzt aber auch lange an der Programmierung.


    LG

  • Moin TomTom,


    vielleicht hilft dir das weiter - KUKA.FastSendDriver - ich weiss allerdings nicht obs das für deine SW-Version gibt.

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

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