1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. General Category - Robot Forum
  4. Robot Geometry, Linear Algebra, Forward and Inverse Kinematics
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

TCP Correction based on proximity sensors

  • kamstu
  • June 4, 2025 at 10:04 PM
  • Thread is Unresolved
  • kamstu
    Trophies
    1
    • June 4, 2025 at 10:04 PM
    • New
    • #1

    Hello,

    I have this application where I pick up MDF from a stack and put it on the conveyor with precision.

    Mdfs on the stack can be displaced in X, Y axis and around Z. I have 3 proximity sensors on gripper, one to the short side in Y direction and 2 to the long side in X direction, sensors look from outside to mdf inside measuring the displacements. I know the base ideal distances and measurements of mdf.

    Its kind fo mathematical question how to correct tcp on the fly, becasue i measure while mdf is already on the gripper.

    Can somebody give any tips for that? (sorry for my english)

  • 95devils June 4, 2025 at 11:52 PM

    Approved the thread.
  • Hamish Lucas
    Trophies
    1
    Posts
    5
    • June 5, 2025 at 4:15 AM
    • New
    • #2

    I have done something similar before. But I don't mess with the TCP.

    We used offset positions to alter how the final position is achieved.

    It's done like this:

    DAT File:

    Code
    DECL FRAME OffsetFrame ; 

    SRC file:

    Code
    OffsetFrame =$Nullframe
    OffsetFrame.X = SensorXOffset
    OffsetFrame.Y = SensorYOffset
    OffsetFrame.A = AngleOffset
    PTP XPlacePos:OffsetFrame

    Now it drives to the assigned placePos but with the offset you have specified above

    I hope this helps.

  • kamstu
    Trophies
    1
    • June 5, 2025 at 9:02 AM
    • New
    • #3

    Thank you for your answer.

    The main problem here is to calculate the offsets, because all of them needs to be somehow related to each other, X and Y is easy but when the angle is different then it all changes, X and Y becomes related to any rotation because we measure it in different point of mdf side and it can be symetrical but it dosnet need to. I cant correct the grip, I need to calculate it all at once at fly.

  • Online
    SkyeFire
    Reactions Received
    1,051
    Trophies
    12
    Posts
    9,424
    • June 5, 2025 at 5:08 PM
    • New
    • #4

    If the MDF isn't consistently sized, this won't work. However, assuming the MDF is consistently sized, something like this might.

    First, place a "perfect" piece of MDF on the end effector in a "perfect" location, and record the output of all the sensors. This will become your "zero reference." Ideally, you should have 2 sensors on a line parallel to one axis (I'll assume X for this example), and the 3rd located 90deg from the first two.

    For doing a TCP shift, you will need to determine the Z rotation first using the two sensors on the parallel-to-X axis. The difference between each sensor's reading and it's "zero reference" reading will show how much the distance has changed for each sensor. Adding those deltas (say, Sensor 1 changed by -10mm, and Sensor 2 changed by +15mm, so a total of 35mm) will give you one side of a right triangle. The distance between the two sensors will give you the second leg. That will be enough data to perform an inverse sine or inverse cosine calculation to determine the rotation delta around Z. Apply that rotation to the TCP, around its own Z axis.

    After rotating the TCP around its own Z axis, it should be possible to simply shift the TCP along its own new X axis by whatever the delta of the 3rd sensor is.

  • kamstu
    Trophies
    1
    • June 5, 2025 at 7:54 PM
    • New
    • #5

    Yes MDF is consistently sized.

    But I'm afraid that this problem is more complex, because we measure MDF while its held by the gripper, so the measurements are going to be the same all the time, even when we shift the TCP, sensors are on gripper, so we need to take into consideration all the shifts at once only by readings from sensors.

  • Online
    SkyeFire
    Reactions Received
    1,051
    Trophies
    12
    Posts
    9,424
    • June 5, 2025 at 11:16 PM
    • New
    • #6
    Quote from kamstu

    even when we shift the TCP, sensors are on gripper, so we need to take into consideration all the shifts at once only by readings from sensors.

    Yes, that's what I was aiming for. After picking the MDF, the measurements would be used to change the TCP, such that when the MDF was set down (using the same Drop position), the TCP shift would correct for the difference between the picked MDF and the "zero reference" MDF.

    Of course, this means that all the path points need to be programmed with the zero reference MDF.

    The intent is to pick up MDF whose positions are inconsistent, measure the X,Y,Rz on the gripper, then perform a TCP offset that will make the Drop location the same for all MDFs.

  • kamstu
    Trophies
    1
    • June 6, 2025 at 5:40 PM
    • New
    • #7

    Yes, thats the point of this application. I meant that the mathematical problem is more complex because when correcting the shifts along the x and y axes, we also have to take the angular displacement into account. We can't first correct the angle and then adjust x and y, because the x and y measurements depend on the angle. For example if we catch MDF, measure it, put it back, correct the angle and catch it again, measurements on x an y axis are going to be different

  • Online
    SkyeFire
    Reactions Received
    1,051
    Trophies
    12
    Posts
    9,424
    • June 6, 2025 at 10:26 PM
    • New
    • #8
    Quote from kamstu

    Yes, thats the point of this application. I meant that the mathematical problem is more complex because when correcting the shifts along the x and y axes, we also have to take the angular displacement into account. We can't first correct the angle and then adjust x and y, because the x and y measurements depend on the angle. For example if we catch MDF, measure it, put it back, correct the angle and catch it again, measurements on x an y axis are going to be different

    That should be address by applying the Rz rotation first, then shifting along the new Y. Once the Rz rotation has been applied, the new Y axis should be parallel to one edge of the MDF, allowing a simple Y shift.

    ...however, I now see that I failed to account for MDF offsets in X. That would have to be determined and applied as well.

    The key element here is that we want to make the "0 reference" TCP perfectly on the center of the "0 reference" MDF, with the X and Y axes aligned with the edges of the MDF. Then, in production, move to the same Pick location, get the sensor feedback, and offset the TCP such that the new TCP is at the center of the current MDF, with the X and Y axes again aligned with the edges.

    As this all involves Euler 6DOF math, it will be necessary to use the robot's built-in frame offset tools. Simple multiplication and addition will not be sufficient.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Tags

  • tcp
  • correction
  • geometry

Users Viewing This Thread

  • 1 Guest
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download