1. Dashboard
    1. Dashboard
    2. Suche
  2. Forum
    1. Unresolved Threads
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Search Members
  4. Jobs
  5. Articles
  6. Calendar
    1. Upcoming Events
    2. Map
  7. Shop
    1. Orders
    2. Shipping Costs
  • Login or register
  • Search
Roboterprogrammierer finden
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Events
  • Files
  • Products
  • More Options
  1. Roboterforum.de - die Industrieroboter und Cobot Community
  2. Forum
  3. Industrieroboter Support
  4. KUKA Roboter
Your browser does not support videos Handwerk automatisieren - ich schaffs mit KUKA
besuche unseren Partner
Roboterprogrammierer
Robot Support Forum
Advertise in Robotics
Der Roboterkanal
Deutscher Robotikverband
Werben in Robotik
Werben für Robotik

KUKA Roboter TCP-Koordinaten im Roboter einem Tool zuweisen bzw. umrechnen?

  • privet199
  • November 28, 2024 at 6:46 AM
  • Thread is Resolved
  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • November 28, 2024 at 6:46 AM
    • #1

    Hallo Roboleutz,

    ich habe ein Problem mit der Kamera und einem KUKA-Roboter. Ich habe die Kamera-Basis relativ zum Roboter vermessen, was bedeutet, dass die Kamera und der Roboter das gleiche Ursprungskoordinatensystem verwenden. Die Korrektur der Basis funktioniert soweit gut.

    Der Roboter hat am Greifer ein Bauteil, das aus Aluminium besteht und biegsam ist. Dadurch ergibt sich ein Problem: Das Ende des Bauteils, welches eingeführt werden soll, ist jedes Mal anders ausgerichtet, und auch der Winkel zum Greifer ändert sich bei jedem Zyklus.

    Für unsere Anwendung reicht die Basiskorrektur allein nicht aus, da es Probleme bei Winkeländerungen gibt. Der TCP (Tool Center Point) stimmt nicht mit dem aktuellen Bauteil überein. Das bedeutet, dass ich jedes Mal sowohl den TCP als auch die Basis neu vermessen muss.

    Die Kamera kann die TCP-Koordinaten (X, Y, Z, A, B, C) relativ zu ihrem Ursprungskoordinatensystem messen und an den Roboter senden.

    Die beiden TCPs, die vermessen werden sollen, links und rechts am Greifer befinden. Sie sind jeweils fast 1 Meter von der Mitte des Roboterflansches entfernt – einmal links und einmal rechts.

    Das bedeutet, dass die gemessenen TCP-Koordinaten zunächst auf den Ursprung des Roboterflansches umgerechnet werden müssen. Wie könnte man das machen?

    Meine Frage ist:
    Wie kann ich diese TCP-Koordinaten im Roboter einem Tool zuweisen bzw. umrechnen? Da wir den gleichen Ursprung für die Basis im Roboter und in der Kamera definiert haben, sollte das theoretisch funktionieren.

    Ich komme hier nicht weiter. Hat jemand einen Tipp?

    Edited once, last by privet199 (November 28, 2024 at 8:34 AM).

  • Schritt für Schritt zum Roboterprofi!
  • Kevin97
    Reactions Received
    5
    Points
    270
    Posts
    48
    • November 28, 2024 at 8:07 AM
    • #2

    Vielleicht ist die Lösung auch zu simple gedacht aber schreib doch einfach jedes mal die entsprechenden Tool Daten um ?

    In die Config:
    DECL REAL TD_Kamera_X=0.0
    DECL REAL TD_Kamera_Y=0.0
    DECL REAL TD_Kamera_Z=0.0
    DECL REAL TD_Kamera_A=0.0
    DECL REAL TD_Kamera_B=0.0
    DECL REAL TD_Kamera_C=0.0

    ;Die Signale der Kamera einmal auswerten und jeweils beschreiben:
    TD_Kamera_X=giTD_Kamera_X
    TD_Kamera_Y=giTD_Kamera_Y
    TD_Kamera_Z=giTD_Kamera_Z
    TD_Kamera_A=giTD_Kamera_A
    TD_Kamera_B=giTD_Kamera_B
    TD_Kamera_C=giTD_Kamera_C

    ;Werkzeugdaten beschreiben:
    TOOL_DATA[1].X=TD_Kamera_X
    TOOL_DATA[1].Y=TD_Kamera_Y
    TOOL_DATA[1].Z=TD_Kamera_Z
    TOOL_DATA[1].A=TD_Kamera_A
    TOOL_DATA[1].B=TD_Kamera_B
    TOOL_DATA[1].C=TD_Kamera_C

  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • November 28, 2024 at 8:33 AM
    • #3
    Quote from Kevin97

    Vielleicht ist die Lösung auch zu simple gedacht aber schreib doch einfach jedes mal die entsprechenden Tool Daten um ?

    In die Config:
    DECL REAL TD_Kamera_X=0.0
    DECL REAL TD_Kamera_Y=0.0
    DECL REAL TD_Kamera_Z=0.0
    DECL REAL TD_Kamera_A=0.0
    DECL REAL TD_Kamera_B=0.0
    DECL REAL TD_Kamera_C=0.0

    ;Die Signale der Kamera einmal auswerten und jeweils beschreiben:
    TD_Kamera_X=giTD_Kamera_X
    TD_Kamera_Y=giTD_Kamera_Y
    TD_Kamera_Z=giTD_Kamera_Z
    TD_Kamera_A=giTD_Kamera_A
    TD_Kamera_B=giTD_Kamera_B
    TD_Kamera_C=giTD_Kamera_C

    ;Werkzeugdaten beschreiben:
    TOOL_DATA[1].X=TD_Kamera_X
    TOOL_DATA[1].Y=TD_Kamera_Y
    TOOL_DATA[1].Z=TD_Kamera_Z
    TOOL_DATA[1].A=TD_Kamera_A
    TOOL_DATA[1].B=TD_Kamera_B
    TOOL_DATA[1].C=TD_Kamera_C

    Display More


    So habe ich zuerst gedacht und wollte es auch so umsetzen. Aber es wird nicht funktionieren, weil sich die beiden TCPs, die vermessen werden sollen, links und rechts am Greifer befinden. Sie sind jeweils fast 1 Meter von der Mitte des Roboterflansches entfernt – einmal links und einmal rechts.

    Das bedeutet, dass die gemessenen TCP-Koordinaten zunächst auf den Ursprung des Roboterflansches umgerechnet werden müssen. Wie könnte man das machen?

  • Online
    Sliwka
    Reactions Received
    27
    Points
    662
    Posts
    126
    • November 28, 2024 at 10:33 AM
    • #4

    Hi Privet,

    ich habe bei solchen Aufgaben den Offset von X,Y,Z in die Base mit einbezogen und die A,B,C Offsets in das Tool. Danach funktionierte die Verschiebung per Kamera.

  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • November 28, 2024 at 12:24 PM
    • #5
    Quote from Sliwka

    Hi Privet,

    ich habe bei solchen Aufgaben den Offset von X,Y,Z in die Base mit einbezogen und die A,B,C Offsets in das Tool. Danach funktionierte die Verschiebung per Kamera.

    Interessant, Werde ausprobieren.

  • Programmiersklave
    Reactions Received
    100
    Points
    6,420
    Posts
    1,192
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • November 28, 2024 at 7:13 PM
    • #6
    Quote from privet199

    Das bedeutet, dass die gemessenen TCP-Koordinaten zunächst auf den Ursprung des Roboterflansches umgerechnet werden müssen. Wie könnte man das machen?

    Auch das geht, man muss dazu die Frames passend invertieren oder eben nicht und verknüpfen.

    Invertieren geht mit INV_POS() (Suchfunktion verwenden), verknüpfen mit ":".

    Und 'ne Menge Grübelei... ne Menge!

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • November 29, 2024 at 6:47 AM
    • #7
    Quote from Programmiersklave

    Auch das geht, man muss dazu die Frames passend invertieren oder eben nicht und verknüpfen.

    Invertieren geht mit INV_POS() (Suchfunktion verwenden), verknüpfen mit ":".

    Und 'ne Menge Grübelei... ne Menge!

    Vielen Dank, oh mächtiger Programmiersklave! 🙏 Ich werde mich gleich an das Studium der INV_POS-Funktion machen – klingt ja fast schon mystisch. 😄

    Mein aktuelles Problem habe ich aber pragmatisch gelöst: Ich habe das Tool mit der Spitze vermessen. Bis jetzt läuft die Korrektur mit der Kamera reibungslos, zumindest im kleinen Maßstab. Wir testen es gerade bei größeren Stückzahlen.

    Natürlich ist klar, dass die Kamera angeblich nur einen Fehler von 0,00001 mm liefert (ein Traum!). Aber der Roboter? Bei der Base-Vermessung kommen locker 1 mm dazu, plus nochmal 1 mm durch die Tool-Vermessung. Und dann gibt’s noch die Unterschiede beim Bauteil selbst... Das Ganze fühlt sich an, als würde ich mit einem Neandertaler-Messer gegen ein High-Precision-Gerät antreten. 🗿🔪

    Unsere Einkaufsexperten sehen das natürlich anders. Die denken: „Hey, die Kamera kostet 50 Teuronen, das muss reichen.“ Dass dazu aber auch ein entsprechend genau vermessener Roboter und Greifer gehören, ist für sie wohl... naja, Zukunftsmusik. 🎻

    Habe bei Greifervermessen 10mm Fehler gemessen :)

  • Programmiersklave
    Reactions Received
    100
    Points
    6,420
    Posts
    1,192
    About Me

    neuerdings freigelassen

    Location
    märk. Sauerland
    Occupation
    Roboter- und SPS-Programmierer
    • November 29, 2024 at 11:30 AM
    • #8

    So geht's auch, als pragmatische Lösung und vor allem als bessere Lösung, denn hier spielt ja dann noch nicht einmal eine Rolle, was der Roboter glaubt.

    Wird aber ein Problem wenn man nicht "wir" sagen kann, d. h. der Roboter nicht in der eigenen Firma steht und man eine lückenlose und idiotensichere Kalibrierkette einrichten muss. Sobald der Schlosser den Greifer wechselt, läuft einem das Problem hinterher.

    Hab' aktuell 'nen Kunden, der betreibt 25 Jahre alte Anlagen mit dem originalen Roboter und dem originalen Bildverarbeitungssystem, der letzte, der sich auskannte, ist seit Jahren in Rente. Da stellste ALLES in Frage....

    Automatisierung mit dem geflügelten Walross aus dem Sauerland

  • Hermann
    Reactions Received
    164
    Points
    12,629
    Trophies
    8
    Posts
    2,371
    Location
    Baden-Württemberg
    • November 29, 2024 at 5:57 PM
    • #9
    Quote from privet199

    Habe bei Greifervermessen 10mm Fehler gemessen :)

    Da stimmt was nicht. Wenn Du da einfach einen TCP mit der 4-Punktemethode vermessen hast und 10mm Fehler rausbekommst, dann mach das nochmal, und zwar so lange bis ein Fehler unter 1mm rauskommt! Wenn das absolut nicht machbar ist, dann ist der Roboter falsch justiert, oder die Maschinendaten stimmen nicht. Mit sowas kann man keine Vision-Anwendung realisieren.

  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • December 1, 2024 at 9:50 AM
    • #10
    Quote from Hermann

    Da stimmt was nicht. Wenn Du da einfach einen TCP mit der 4-Punktemethode vermessen hast und 10mm Fehler rausbekommst, dann mach das nochmal, und zwar so lange bis ein Fehler unter 1mm rauskommt! Wenn das absolut nicht machbar ist, dann ist der Roboter falsch justiert, oder die Maschinendaten stimmen nicht. Mit sowas kann man keine Vision-Anwendung realisieren.


    Ich meinte, dass es Unterschiede beim Vergleich zwischen dem Greifer im CAD-Modell und dem Greifer in der Realität gibt. Der gemessene Messfehler an der Spitze beträgt etwa 1 mm.

  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • December 2, 2024 at 8:44 AM
    • #11
    Quote from Programmiersklave

    Auch das geht, man muss dazu die Frames passend invertieren oder eben nicht und verknüpfen.

    Invertieren geht mit INV_POS() (Suchfunktion verwenden), verknüpfen mit ":".

    Und 'ne Menge Grübelei... ne Menge!

    Ich habe folgende Lösung entwickelt: Die Kamera positioniert den Roboter mithilfe der Korrekturen. Der Roboter justiert sich entsprechend. Ich übernehme die Kamerabasis als Tool, indem ich INV_POS() nutze, und werde dieses Tool als korrigierendes Tool einsetzen. Ich werde ausprobieren, ob das wie erwartet funktioniert.

    Hier ist mein Code:

    Code

    Code
    $base = base_Data[1]  
    $tool = $NULLFRAME  
    Tool_Data[10] = INV_POS($POS_ACT)  

    Freue mich auf Feedback und Anregungen!

  • Sebastian T
    Reactions Received
    7
    Points
    182
    Posts
    31
    • December 2, 2024 at 1:20 PM
    • #12
    Quote from privet199

    Ich meinte, dass es Unterschiede beim Vergleich zwischen dem Greifer im CAD-Modell und dem Greifer in der Realität gibt. Der gemessene Messfehler an der Spitze beträgt etwa 1 mm.

    Da hat der Einkäufer gespart. Wenn du einen Roboter mit Absolutvermessung/Positioniergenau nimmst, dann hast du das Problem nicht. Ich glaube selbst bei den Roboter zwischen 90-300Kg bist du dann bei 0,6 mm.

    Für sämtliche korrekturen bietet sich bei KUKA immer der geometrische Operator an:

    Code
    $config.dat:
    Signal X_verschiebung $in[100] to $in[115]
    ..
    DECL Frame corr_frame
    ;der Roboter mach direkt nen Dezimalwert da draus

    danach in deinem jeweiligen Programm dir nen Korrektur Frame basteln:

    Code
    corr_frame = $nullframe
    corr_frame.x = X_verschiebung

    dann etwas später die temporären Tooldaten modifizieren:

    Code
    $tool=tool_data[1]:corr_frame
    SLIN zielpos

    wenn es ein geteachter Zielpunkt ist, solltest du den mit "temporären" Tooldaten anfahren:
    ;werkzeug 1 hast du vermessen (mit etwas mühe schafft man da 0,3 mm)

    Code
    tool_data[31] = tool_data[1] : corr_frame
    slin xteach with .... [31]

    Edited once, last by Sebastian T (December 3, 2024 at 1:45 PM).

  • privet199
    Reactions Received
    2
    Points
    1,077
    Trophies
    2
    Posts
    161
    • December 2, 2024 at 2:42 PM
    • #13
    Quote from Sebastian T

    Da hat der Einkäufer gespart. Wenn du einen Roboter mit Absolutvermessung/Positioniergenau nimmst, dann hast du das Problem nicht. Ich glaube selbst bei den Roboter zwischen 90-300Kg bist du dann bei 0,6 mm.

    Für sämtliche korrekturen bietet sich bei KUKA immer der geometrische Operator an:

    Code
    $config.dat:
    Signal X_verschiebung $in[100] to $in[115]
    ..
    DECL Fram corr_frame
    ;der Roboter mach direkt nen Dezimalwert da draus

    danach in deinem jeweiligen Programm dir nen Korrektur Frame basteln:

    Code
    corr_frame = $nullframe
    corr_frame.x = X_verschiebung

    dann etwas später die temporären Tooldaten modifizieren:

    Code
    $tool=tool_data[1]:corr_frame
    SLIN zielpos

    wenn es ein geteachter Zielpunkt ist, solltest du den mit "temporären" Tooldaten anfahren:
    ;werkzeug 1 hast du vermessen (mit etwas mühe schafft man da 0,3 mm)

    Code
    tool_data[31] = tool_data[1] : corr_frame
    slin xteach with .... [31]


    Sebastian T, vielen Dank für deinen hilfreichen Tipp!

    Im ersten Schritt habe ich das Tool mithilfe der Kamera ausgerichtet und für das Schweißen positioniert. Dabei war eine Genauigkeit von etwa 0,2 mm erforderlich, die ich durch einen Teach-Punkt-Versatz erreicht habe.

    Der Roboter soll danach auch andere Aufgaben, wie das Einführen von Bauteilen, präzise, aber ohne Kamera ausführen. Daher plane ich, wie von dir vorgeschlagen, die Toolkorrektur im ersten Schritt anzuwenden. Mit dem korrigierten Tool werde ich die weiteren Aufgaben lösen.


    Hoffentlich klappt es!

  • Sebastian T
    Reactions Received
    7
    Points
    182
    Posts
    31
    • December 3, 2024 at 1:45 PM
    • #14

    ein Hinweis noch


    da es bei dir auf dir auf die Nachkommastelle ankommt wirst du irgendwann eine Division brauchen:

    Code
    corr_frame.x = X_verschiebung / 10.0

    ;Durch einen Real Wert teilen, sonst werden Nachkommastellen einfach abgeschnitten

Tags

  • 1
  • 33
  • 2
  • ABB
  • ABB Roboter
  • ABS
  • base
  • constant
  • CP_PARAMS
  • Dialog
  • EX
  • EXT
  • fanuc
  • Fehler
  • FRAMES
  • INIT
  • INITIALIZED
  • INITMOV
  • IRC5
  • joint
  • KRC2
  • KRC4
  • kuka
  • new
  • NONE
  • notify
  • PATH
  • PGNO_GET
  • profinet
  • PTP_DAT
  • PTP_PARAMS
  • P_ACTIVE
  • P_FREE
  • P_RESET
  • P_STOP
  • Quit
  • Roboter
  • RobotStudio
  • Schweißen
  • Sps
  • Sync
  • T1
  • t2
  • tcp
  • Tool
  • VALUE
  • VAR
  • vel_cp
  • vel_ptp
  • Yaskawa
AD
Your browser does not support videos autonome mobile Roboter von KUKA
Einloggen für weniger Werbung

gesponserte Artikel

  • Gebrauchtroboter kaufen - Was ist zu beachten. Die Checkliste zum kauf von gebrauchten Robotern

    August 11, 2019 at 7:02 PM
  • Was macht ein Roboterprogrammierer genau und was verdient er?

    August 21, 2019 at 8:17 AM
  • Vernetzen, referenzieren, kollaborieren: Das B2B Portal für die Produktionsautomatisierung

    June 2, 2021 at 11:29 AM

Job Offer

  • Sie wollen Ihr Stellenangebot im Roboterforum schalten? Ab 149€

    Werner Hampel June 17, 2021 at 9:52 AM
  • Werde Roboterprogrammierer bei ROBTEC GmbH in Mainburg / Bayern

    Werner Hampel April 5, 2023 at 7:13 PM
Werbung auf Roboterseite
Roboter programmieren lernen
Banner Robotik

Wieviele Mitglieder waren heute eingeloggt?

Logge Dich ein, um hier zu lesen wer in den letzten 24h Online war und um weniger Werbung zu sehen.

  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™ 6.0.22
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on Google Play
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on the App Store
Download