Toolberechnung bei undefinierter Lage des Bauteils

  • Hallo Freakz!


    Achtung! Verbale Inkontinenz!
    Habe da folgendes vor (Bilder im Anhang):


    Bild 1: Ein Vakuumsauger ist mit einem Federstössel ausgerüstet. Welcher per Sensor abgefragt wird.
    Bild 2: Das zu greifende Produkt liegt undefiniert in der Entnahmeposition. Ein Kamerasystem übergibt die Koordinaten für Pickup_Position (Greifposition) und Product_Center (Produktmitte) bezogen auf BASE_DATA[1] zurück. Die Winkel von Pickup_Position und Product_Center sind nicht identisch!


    Bild 3: Der Vakuumgreifer soll auf Pickup_position aufsetzen. Hierzu errechne ich eine neue Base aus Pickup_position.


    Code
    BASE_DATA[2]=BASE_DATA[1]:PICKUP_POS
    $BASE=BASE_DATA[2]
    $TOOL=TOOL_DATA[1]
    LIN {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}


    Bild 4: Nach einer Interrupt-Suchfahrt in Z- löst der Initator am Federstössel aus. Dadurch liegt der eigentliche TCP unter der Greifposition.


    Bild 5:
    Nun möchte ich Tool_Data[2] in Product_Center verschieben, damit ich damit in eine Vorrichtung einfahren kann.


    Das sollte irgendwie gehen mit:

    Code
    $BASE=BASE_DATA[1]:PRODUCT_CENTER
    $TOOL=TOOL_DATA[1]
    TOOL_DATA[2]=$POS_ACT


    Das scheint aber nicht korrekt zu sein. Vermutlich muss ich erst X,Y,Z berechnen und dann die Winkel einbeziehen...
    Wir würdet ihr da verfahren, stehe gerade gedanklich etwas auf dem Schlauch...

    Bilder

    Dateien

    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.

  • Schritt für Schritt zum Roboterprofi!
  • Hallo


    tool_data[2] = $pos_act kommt mir spanisch vor.


    Aber wenn ich mir Abbildung 3 anschaue faellt mir was auf:
    Du willst das Base 2 in den Punkt legen,


    da waere richtig: base_data[2] = $pos_act.


    Gruss Stefan

  • tool_data[2] = $pos_act kommt mir spanisch vor.


    Ich habe ja als aktuelle Base PRODUCT_CENTER gesetzt und frage nun die Position des Greifers zu PRODUCT_CENTER ab und das ist $POS_ACT. Allerdings hast du recht es muss heißen:


    Code
    tool_data[2]=TOOL_DATA[1]:$pos_act




    Aber wenn ich mir Abbildung 3 anschaue faellt mir was auf:
    Du willst das Base 2 in den Punkt legen,


    Nein, ich möchte wissen, wo sich Product_Center nach dem Greifen am Roboter befindet.

    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.

  • Servus,


    der Wert von Product_Center bezieht sich ja noch auf Base_data[1].
    Du musst noch die beiden Vektoren subtrahieren (Pickup_Position - Product_Center)


    Hmm was mir jetz nich klar ist wenn du das Teil gegriffen hast und der Federstössel wieder in seiner Ausgangslage ist dann müsste Tool_Data[2]=Tool_Data[1]:Vektor_Differenz sein
    ansonsten Tool_Data[1]=Tool_data[1] - Suchweg_in_Stoßrichtung und dann Tool_Data[2]=Tool_Data[1]:Vektor_Differenz



    so oder so ähnlich ;)


    HTH


    Tobi

  • hmm jetzt steh ich aufm Schlauch...
    warum $TOOL=$NULLFRAME und nicht tool_data[1]????


    Im Prinzip macht ihr ja nix anderes als die Vektor-Subtraktion (nur nich mit Tool_Data[1])
    In TOOL_DATA[fTcpCenter]=INV_POS($POS_ACT) steht dann doch die Differenz, also der Abstand der beiden Vektoren, dies wäre ja dann wieder Tool_Data[2]=Tool_Data[1]:Vektor_Differenz


    hab kein Handbuch zur Hand: was macht INV_POS()???


    Tobi

  • Hmm was mir jetz nich klar ist wenn du das Teil gegriffen hast und der Federstössel wieder in seiner Ausgangslage ist


    Hätte vielleicht noch schreiben sollen, dass der Federstössel nicht wieder in die Ausgangslage zurückkehrt, sondern in der Position verriegelt wird. :oops:


    $BASE=BASE_DATA[1]:PRODUCT_CENTER
    $TOOL=$NULLFRAME
    TOOL_DATA[fTcpCenter]=INV_POS($POS_ACT)


    INV_POS - Da habe ich noch nicht dran gedacht...werde das sobald wie möglich ausprobieren! :ylsuper:

    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.

  • Bei


    $BASE=BASE_DATA[1]:PRODUCT_CENTER
    $TOOL=$NULLFRAME


    jetzt ist $POS_ACT die Distanz und Rotation von Handflansch zum Product_Center, aus der Sicht des Product_Centers, allerdings brauchen wir es vom Flansch zum Center, deswegen INV_POS


    TOOL_DATA[fTcpCenter]=INV_POS($POS_ACT)

  • Ich möchte an dieser Stelle Loipe bitten, die Funktion:


    E6POS SchroederTransformation(PosIn,ToolAlt,ToolNeu,BaseAlt,BaseNeu)


    mit Beschreibung zu posten - sie ist hier sicher hilfreich - auch für andere Programmierer.

  • Hallo zusammen,


    hiermit könnt ihr Basedaten oder Tooldaten aus Punkten rausrechnen und sie auf andere Basiskoordinaten Tooldaten umrechen oder halt die Base/Tooldaten ganz rausrechen.


    hatte noch keine weitere Abweichung der verechneten Positionen über 0.0002 Grad wer das nicht glaubt meldet sich bei mir und kann das Testprogramm haben ;)


    Viel Spass


    Loipe

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