Werkzeug vermessen - ScaraRoboter

  • Hey,


    ich würde gerne ein Werkzeug an meinem Scara-Roboter vermessen. Das mache ich momentan nach der XYZ-Referenzmethode. Das heißt am Ursprungs-TCP (unteres Ende der Spindel) ist ein Referenzwerkzeug montiert, von dem die Abmaße bekannt sind. Mit diesem fahre ich auf ein Referenzobjekt und anschließend montiere ich es wieder ab und montiere das zu vermessene Werkzeug an den Flansch. Mit dem zu vermessenen Werkzeug fahre ich dann auch zu dem Referenzobjekt.
    Diese Methode scheint zu funktionieren, obwohl in der Kuka Doku steht, dass die XYZ- und ABC-Methoden für einen Palettierroboter mit vier Achsen nicht verwendet werden können.


    Jetzt kann es aber sein, dass sich das neu vermessene Werkzeug im Laufe der Zeit ein bisschen "verbiegt". Daher möchte ich regelmäßig nachkorrigieren. Doch dann wäre es zu aufwändig immer das vermessene Werkzeug abzubauen, ein Referenzwerkezug anzubringen usw.


    Gibt es da auch eine andere Möglichkeit, sodass ich ohne das Referenzwerkzeug an der Spindel auskomme?


    Ich hatte schon mal überlegt ein feststehenden Werkzeug zu vermessen und dann dieses als Referenzwerkzeug und Referenzobjekt in einem bei der XYZ-Methode zu verwenden. Aber das scheint auch nicht zu klappen, da dieses als Basis-System geteached wird.


    Gibt es noch andere Möglichkeiten?


    Viele Grüße

  • Schritt für Schritt zum Roboterprofi!
  • Der Ansatz mit dem ortsfesten Werkzeug ist wohl schon mal in die richtige Richtung gedacht.
    Allerdings geht es dann nicht mehr mit dem Standard-Vermessungsverfahren weiter. :wallbash:


    Ich würde mir da ein Programm schreiben, das so was ähnliches leistet:
    Ein Teachpunkt mit dem korrekt vermessenen TCP auf einer ortsfesten Spitze. Der muss konstant bleiben, dazu den dort gültigen TCP in einer separaten Variablen merken.
    Für das Vermessen einen zweiten Punkt anlegen und teachen, dann aus den gemerkten Werten, und dem neuen Teachpunkt die Differenzen auf den TCP aufschlagen, dann sollte der TCP wieder stimmen.
    Es gab da mal so ein Beispielprogramm auf den alten Robotern Cor_T1, oder so ähnlich.

  • Gute Idee, Hermann!


    Wenn man die Koordinaten des feststehenden Punktes in World-Koordinaten abspeichert, dann könnte man auch einfach den Punkt mit $BASE= $TOOL=$NULLFRAME anfahren. So hätte man sogleich aus der Differenz zu $POS_ACT die Abmessungen des Werkzeugs. Oder?


    Schöne Grüße,
    Tilman/Frankreich


  • Ich bin mir nicht ganz sicher, ob ich dich richtig verstanden habe:


    Ich vermesse einmal am Anfang mein zu vermessenes Werkzeug mit der xyz-Referenzmethode.
    Wenn es vermessen wurde zeige ich mir die Istposition mit ausgewähltem vermessenen Tool an und merke sie mir (I1).
    Dann verbiegt sich irgendwann das Werkzeug und um zu korrigieren fahre ich wieder an den feststehenden Referenzpunkt und zeige mir wieder die aktuelle Istposition (I2).
    Jetzt bilde ich die Differenzen:
    I1.x-I2.x
    I1.y-I2.y
    I1.z-I2.z


    Die Differenz rechne ich dann mit "Werkzeug - Vermessen - Numerische Eingabe" auf die Tooldaten drauf.
    Was ist denn mit der Orientierung C?

  • Hallo Johanna,


    Zitat


    Was ist denn mit der Orientierung C?


    Aber die konntest Du doch mit der XYZ-Referenz Methode auch nicht bestimmen. Wie hast Du das denn gemacht?


    Schöne Grüße,
    Tilman/Frankreich

  • hm die Orientierung ist eigentlich egal oder?
    Was mir einfach wichtig ist, dass ich das Tool später um die Achse C drehen kann und es bleibt genau am gleichen Punkt, ohne dass es eiert. Deswgen auch das Nachkorrigieren, damit das immer gewährleistet ist.



    Zitat

    Wenn man die Koordinaten des feststehenden Punktes in World-Koordinaten abspeichert,


    Meinst du, dass man mit dem Referenzwerkzeug zum feststehenden Punkt fährt und dann $BASE= $TOOL=$NULLFRAME auswählt und sich die aktuelle Position anzeigen lässt. Da sich das Referenzwerkzeug nur um eine Translation in Z-Richtung vom Ursprungs-TCP (Ende der Spindel) unterscheidet, muss diese noch abgezogen werden. Diese Werte merkt man sich dann.
    Dann fährt man mit dem neuen Werkzeug zum Punkt und lässt sich ebenfalls die Istposition anzeigen mit $BASE= $TOOL=$NULLFRAME und erhält die Maße des Werkzeuges?

    Einmal editiert, zuletzt von Johanna ()

  • Johanna,



    Die Idee ist einfach: man muß die Koordinaten eines Punkts in Raum kennst. Den kannst du vorher vermessen, mit Tool, ohne Tool, mit bekanntem Tool, egal...


    Wenn Du dann ein Tool befestigst, und mit dem Tool diesen Referenzpunkt anfährst, so kennt ja der Roboter die Position des Roboterflansch. Und dadurch, als Differenz zwischen dem Referenzpunkt und dem Roboterflansch, die Abmessung des Tools.


    Oder die Idee von Herman, falls Du noch als $TOOL das vorherige, jetzt verbogene Werkzeug hast, als Differenz die Ungenauigkeit (also die Verbiegung).



    Viele Grüße,
    Tilman/Frankreich

    Einmal editiert, zuletzt von Tilman ()

  • Hatte meine letzten Post korrigiert. Wenn das stimmt was da steht, hab ichs denke ich verstanden =)) Danke


    Wichtig ist halt dass ich den feststehenden Punkt in der Welt kenne ($BASE= $TOOL=$NULLFRAME).

  • Ich bin mir doch noch unsicher bei einem Aspekt:


    Die gemerkte Position des feststehenden Punktes ist auch wenn ich um C drehe die gleiche.
    Aber wenn ich jetzt mit dem stark verbogenen Werkzeug zu dem feststehenden Punkt fahre, kommt es darauf an welchen Winkel ich bei dem C ausgewählt habe, denn das C dreht ja um den ausgewählten TCP. Das ist in dem Fall $TOOL = 0. Also um die Spindel.
    Man kann sich das ganze als Kreis vorstellen: Der Mittelpunkt ist der feststehende Punkt, auf den die Spitze des zu vermessenen Werkzeuges zeigt. Die Kontur des Kreises entspricht der Position des Ursprungs-TCPs, dessen Position ich angezeigt haben möchte.
    Es gibt also 360 verschiedene Positionsmöglichkeiten.. und damit bekomme ich wenn ich die Differenz zum feststehenden Punkt bekommen will, nicht die Maße des Werkzeuges raus.
    Ich bekomme höchstens die direkte Distanz zwischen Werkzeugspitze und UrsprungsTCP raus. Aber nicht den X-, Y- und Z-Wert, den ich bei numerische Eingabe eingeben müsste. Der hängt ja von dem C ab.. :huh:

    Einmal editiert, zuletzt von Johanna ()

  • Hallo zusammen


    was ist wenn das feststehende werkzeug ne base hat du stellst das werkzeug auf den ursprung mit den rictigen winkel zu der base
    dann variablen -> einzeln -> tool_data[x] -> neuer wert = INV_POS($POS_ACT) in aktueller base und tool nullframe.


    damit wird die Position bezogen auf die base und dem handflansch invertiert was dann die tooldaten sind. die winkel sollten dann auch drin sein



    Gruß Loipe

  • Sorry, ich verstehe überhaupt nicht, was du meinst. Ich denke du meinst mit feststehendes Werkzeug das feststehende Objekt?!
    Warum soll ich mir variablen -> einzeln -> tool_data anzeigen lassen, wenn ich damit nichts berechne? Meinst du vielleicht die aktuelle Istposition bei gewähltem $Tool = 0 anzeigen lassen?


    Reicht es nicht doch einfach, wenn ich auch noch die Differenz der beiden C-Werte nehme?! Das müsste doch genau die Verdrehung zum UrsprungsTCP sein.

  • mit dem tool an eine gemessene base. und du brauchst nichts rechnen das kann der roboter mit inv_pos machen damit bekommst du direkt tooldaten raus.
    du beschreibst die tool_data mit inv_pos der Pos_Act in Base und tool $nullframe

  • Hallo,


    Die Methode von Loipe ist neu für mich... die habe ich gerade erst einmal gründlich studiert :denk:


    Für die Abmessungen bekommst Du, Johanna, genau dieselben Ergebnisse wie bei der Methode von Hermann und meiner Abwandlung. Sie wird, und das ist der Vorteil, direkt mit $POS_ACT angezeigt (in negativer Richtung), da ja $BASE dem Referenzpunkt entspricht.


    Der Vorteil ist jedoch, das gleichzeitig die A,B,C Werte bestimmt werden, da Du ja das Werkzeug immer gleich orientiert an den Referenzpunkt heranfährst.


    Rechnerisch funktioniert das so (das steht zu mindestens inzwischen auf meinem Schmierblatt) :


    Code
    REFERENCE=X,Y,Z,A,B,C für den Referenzpunkt in $WORLD Koordinaten
    PAW=$POS_ACT for $BASE=$NULLFRAME
    PAB=$POS_ACT for $BASE=REFERENCE
    also PAW=REFERENCE:PAB


    nach Anfahren des Punktes

    Code
    PAW:WertFürTool=REFERENCE
    -> REFERENCE:PAB:WertFürTool=REFERENCE
    -> PAB:WertFürTool=Inv_Pos(REFERENCE):REFERENCE=$NULLFRAME
    -> WertFürTool=Inv_Pos(PAB)


    Super, Loipe, habe wieder was dazu gelernt. :merci: !!!


    Viele Grüße,
    Tilman/Frankreich

  • INV_POS() ist net mehr als invertieren einer POSE. Translatorische Teil wird negiert und der rotatorische in ner homogenen 3x3 matrix konsolidiert.


    passt halt weil das gegenteil der Position ist.

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