Werkzeug um die Z-Achse eines Punktkoordinatensystems drehen

  • Hallo Zusammen,


    ich bin relativ neu hier im Forum und bräuchte mal einen Tipp vom Profi.


    Ich möchte meinen Werkzeug TCP um die Z-Achse des Punktkoordinatensystems eines beliebig orientierten Punktes drehen, bekomme dies aber nicht hin.


    Die Z-Achse des Werkzeugs zeigt dabei in den Werkzeugflansch hinein (TOOL_DATA[1]: X=0, Y = 0, Z = 200, A = -90, B = 0, C = 180), Werkzeug ist in meinem Fall ein Stift.


    Die Z-Achse der BASE zeigt in den Himmel (BASE_DATA[1]: X=1000, Y=0, Z=500, A = -90, B = 0, C = 0).


    Vielen Dank voraus.

    Einmal editiert, zuletzt von twin ()

  • Schritt für Schritt zum Roboterprofi!
  • Erklär doch bitte mal was Du unter dem 'Punktkoordinatensystem' verstehst. Ich kenne Base- und Toolkoordinatensystem, aber Punktkoordinatensystem?
    Oder mach besser eine Skizze mit Erläuterung.

  • Hallo Hermann,


    anbei die Skizze.


    - Nullframe entspricht World-KS
    - Base entspricht dem vermessenen Werkstück-KS
    - Tool1 entspricht dem vermessenen Werkzeug-KS
    - Pos1 entspricht einem geteachten Punkt der angefahren werden soll (bezug auf Base)


    Pos1= {FRAME: X 200.000000,Y 200.000000,Z 100.000000,A 0,B 45,C 0.000000 }(Koordinaten bezogen auf Base)


    Wenn der Roboter auf Pos1 steht dann soll dieser als nächstes das Werkzeug um 180° um die z-Achse des Pos1-KS drehen und sich damit neu orientieren (wäre dann Pos2).


    Funktioniert das evtl. so?

    Code
    DECL FRAME FORI
    ...
    LIN Pos1 C_DIS
    FORI=$NULLFRAME 
    FORI.A = 180.0 ; 
    LIN $POS_ACT:FORI C_DIS ; Pos2
    ...
  • Servus twin,
    soweit ich deine Problemstellung verstanden habe sollte dies so umsetzbar sein:

    Code
    LIN Pos1 C_DIS ;faehrt deinen Punkt Pos1 an
    LIN_REL {A 180} #TOOL ;dreht dein Werkzeug relativ um 180° um die Z-Achse des Werkzeugkoordinatensystems
    ;Roboter sollte nun auf gewuenschter Pos2 stehen


    oder wie du es schon probiert hast mittels Geometrischem Operator (Doppelpunktoperator):





    Erklärung: Jeder Punkt wird so angefahren, dass das Werkzeugkoordinatensystem mit dem "Punktkoordinatensystem" deckungsgleich ist. Deshalb drehst du dein Werkzeug wenn du an deinem Punkt stehst auch um das "Punktkoordinatensystem", wenn du um dein Werkzeugkoordinatensystem drehst.


    LG dax

    Always look on the bright side of life!<br /><br />Verlass dich nicht auf andere. Mach deine eigenen Fehler! - Manfred Hinrich

    Einmal editiert, zuletzt von dax ()

  • "Die letzte Antwort auf dieses Thema liegt mehr als 500 Tage zurück. Das Thema ist womöglich bereits veraltet." ... Ja, Ja .. vllt liest es ja doch jemand :zwink:


    Das Thema reißt mein aktuelles Problem ziemlich gut an, nur mit dem Unterschied, ich habe an A6 zwei Greifer im 45°-Winkel, ergo 90° auseinander und es soll nun in 120°-Schritten um die Stoßrichtung gedreht werden, dass das gegriffene Teil fotografiert werden kann und bei NIO-Befund aus dem Kamerabild auf ein NIO-Teile-Band abgelegt werden soll. Alles absolute Beta.


    Die Grundfunktion des Moduls passt Greifer 1 oder 2 abfangen und die jeweilige Position für Greifer 1 oder 2 anfahren (je nach Ablauf nimmt er 1 oder 2), aktuellen Greifer an die SPS zurück liefern, Testlauf war OK, Auftraggeber zahlte nen Kaffee und kam dann eben mit der Idee, das Teil doch 3 mal fotografieren zu wollen.


    Hier ein Bild, er legt recht weit aus, wird sich aber noch ändern, der Aufbau der Kamera gibt mir mehr Freiheit in den Achsen.



    So und nun dreh mal um die Achse des Greifer's. Ich bin BASE_frei in diesem Modul. Mit den A-B-C-Parametern hatte ich noch nicht so oft das Vergnügen, ich weiß dass es um die Orientierung/Ausrichtung geht. Ideen, Lösungen, Vorschläge wie immer extrem willkommen und

    wünsche mit allerhöchstem Respekt denjenigen ggü, die sowas aus dem Ärmel schütteln, ein schönes (Rest)Wochenende.

    ... ein Nicht_Programmierer ... (glaub ich ändere meinen Nick hier :liebe029:)

    Mein Name ist Hase. Ich weiß von nix.

  • wow, das ging schnell ..

    "Lin $pos_act : {x 0, y 0,z 0,a 120, b 0,c 0}" ist für mich leichter nachvollziehbar, verdrehe um TCP-Achse Z 120° :denk:

    Ich vergas die Schwierigkeit, der Robbi fährt beim ersten Mal einen Initiator an, durch den die Cam ausgelöst wird (wie gesagt alles beta, I/O's sind noch weite Zukunft), ich muss zurück um den Ini zu löschen, wieder hin und 120° verdreht den Ini auslösen, neues Foto .. usw ... ich müsste also den ersten Punkt dann in A um 120° verdrehen und anfahren, den zweiten verdrehen usw ... Also pos_act .. hmm .. Außer der Ini wird auf die Greiferbacken ausgerichtet, wenn der Robbi dreht, Greiferbacke weg, 120° , neue Greiferbacke ... ha :zwink: .. sollte gehen :biggrins:

    Probieren geht über Studieren ...


    Danke :supi:

    Mein Name ist Hase. Ich weiß von nix.

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