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. Industrial Robot Support and Discussion Center
  4. KUKA Robot Forum
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

Determining TCP of a stylus with sphere

  • panic mode
  • June 12, 2023 at 8:53 PM
  • Thread is Unresolved
  • panic mode
    Reactions Received
    1,280
    Trophies
    11
    Posts
    13,083
    • June 12, 2023 at 8:53 PM
    • #1

    hello everyone,

    i am trying to think of an efficient way to measure TCP of a tool that has a sphere at the tip.

    so far i am considering using stationary sphere and with a small program approach it by the tool sphere at couple of points then do the math.

    any other ideas would be welcome

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Online
    SkyeFire
    Reactions Received
    1,052
    Trophies
    12
    Posts
    9,427
    • June 12, 2023 at 10:19 PM
    • #2

    With a spherical TCP and a stationary sphere, wouldn't you have to determine the center of the stationary sphere first with a pointy tool, then do the whole thing again with the TCP sphere?

    This is where it's tempting to break out a laser tracker, but I assume you don't have one in your back pocket. :pfeif:

    If you have a regular dial indicator, my first thought is to just write best-estimate values into the TCP (maybe 3-point a TCP on a mark on the sphere), then keep touching-off the sphere at 0deg and 180deg rotation around the TCP on the two axes that have 180deg contact available, tweaking the TCP value until the deltas are minimized. Then tweak in the axis that's along the shaft using small rotation angles.

    IIRC, there's a thread where we once discussed using the intersection-of-spheres method to work out the center of a spherical TCP by touching it to a fixed pointer at multiple angles, but I've never actually tried it. It should work mathematically.

  • Hes
    Reactions Received
    42
    Trophies
    2
    Posts
    243
    • June 13, 2023 at 12:06 AM
    • #3

    i was not long ago planning to do something similar.

    I found this and figured this would be a good starting point.

    Circle, Cylinder, Sphere

    I have not gotten around to implement it yet but i planned to measure the ball tip with a micrometer to get the diameter. As the tip in my case was a measuring probe i was aiming to get the points required by using a "fixed tool" or just a flat known surface (calibrated as a base) to touch the probe.

  • panic mode
    Reactions Received
    1,280
    Trophies
    11
    Posts
    13,083
    • June 13, 2023 at 12:21 AM
    • #4

    i would like to make this automated to a large degree so that anyone can do it conveniently using just robot (and exclude humans from the process as much as possible). user is supposed to just place the reference sphere (datum sphere) within robot reach, jog robot till it is couple of mm above it and run program. then robot would use interrupt to sense contact and from few measurements determine TCP.

    i am gradually solving some of the parts of the problem and will get there but wonder if this can be simplified.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Hes
    Reactions Received
    42
    Trophies
    2
    Posts
    243
    • June 13, 2023 at 9:07 AM
    • #5

    Do you know roughly where the tcp should be?

    Could you use a fiber fork sensor and get the X & Y of the tool by passing the tool with diffrent sides against the beam. This assuming the tool the stylus has somekind of shaft that you know the orientation of. if the tool orientation is unknown you would need to do this at atleast 2 diffrent heights.


    To get the length could you use a Tool length sensor, even crappy ones usually obtain a precision of 1/100ths of millimeters.

    Fork sensor: Buy Fork light barrier SOOF online | Festo FI

    Tool length sensor: Sorotec Online-Shop - Tool Length Sensor Sorotec WLS 1 (8 mm)

    Images

    • pasted-from-clipboard.png
      • 15.96 kB
      • 614 × 502
      • 0
  • panic mode
    Reactions Received
    1,280
    Trophies
    11
    Posts
    13,083
    • June 13, 2023 at 3:52 PM
    • #6

    yes, i will have the data from the CAD. this should be pretty close to start with - the only errors would be machining tolerances and stack on tolerances during assembly. so the goal is to correct for them by using calibration program. the idea is to manually select program, follow the prompt and bring the tool manually close above some known feature (perhaps sphere or bore or flat surface etc.), then run the program to do the rest (free of anomalous influence known as human).

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Solideon
    Trophies
    1
    Posts
    3
    • June 13, 2023 at 6:40 PM
    • #7

    you can create a machined ring that is just slightly larger than the diameter of the sphere. You can then touch off the inside of the ring and get a good TCP depending on the amount of error you can allow in your process.

  • Online
    SkyeFire
    Reactions Received
    1,052
    Trophies
    12
    Posts
    9,427
    • June 13, 2023 at 6:46 PM
    • #8
    Quote from panic mode

    user is supposed to just place the reference sphere (datum sphere) within robot reach, jog robot till it is couple of mm above it and run program. then robot would use interrupt to sense contact and from few measurements determine TCP.

    Mmm... should be doable. Just spitballing, but if the program started with a search pattern to find the top center of the stationary sphere, then moved off to do a horizontal search from X+, X-, Y+, and Y-, generating the position of the center of the stationary sphere should be possible. From there, it should be possible to extrapolate the TCP of the carried sphere. Obviously, both spheres need to be near-perfect spherically and of known diameter.

  • panic mode
    Reactions Received
    1,280
    Trophies
    11
    Posts
    13,083
    • June 13, 2023 at 8:17 PM
    • #9
    Quote from Solideon

    you can create a machined ring that is just slightly larger than the diameter of the sphere. You can then touch off the inside of the ring and get a good TCP depending on the amount of error you can allow in your process.

    i hear you. in fact the 'ring thing' does not need to me machined. it would be enough to drive hot metal sphere into a piece of thermoplastic or produce cast (plastic for example). then one has really tight fitting block.

    regardless...

    not sure how would that work without previous knowledge of the

    precise location of it. and i would like to avoid need for CMM/laser tracker measurement or similar. i would prefer to make it completely standalone (robot only). sort of like placing a reference pin in any location, then measuring TCP of a tool using XYZ method. the placement of the reference object (pin in this case) was completely arbitrary and its precise location is not known - or needed.

    using optical sensor was one of the first ideas. after all this is something that was tried and true, used on previous projects the past to locate things, measure tool etc. but for this case, ultimately decision was made to not use that in this case. we want to use tool (already a sphere on a stem) make a mechanical contact to some reference object or jig during calibration. and having the reference object in arbitrary place would be a bonus.

    i suppose one of my questions is what shape of the reference object would be better suited for semiautomatic TCP determination? sphere? three touching spheres? hole? cylinder? square block?

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Hes
    Reactions Received
    42
    Trophies
    2
    Posts
    243
    • June 13, 2023 at 9:54 PM
    • #10

    just spitballing but assuming you can detect when the stylus ball is touching something and using a sphere as the reference object.

    one could make a function to find the center of a sphere from 4 or more points. If more than 4 points somekind of error minimization or "fitting" of the points would be required.

    I imagine if you peck at the reference sphere from one orientation at a time and use $TOOL=$NULLFRAME and $BASE=$NULLFRAME get the flange position for the pecked point in relation to the world coordinate of the sphere.

    E.g.

    Pecking 4 points from above (world Z) and calculating the sphere center from those points. These points would be floating above the sphere at an unknown height so the Z coordinate of the ref sphere is still unknown.

    Then..

    Pecking at the ref sphere 4 points in the direction of world X. Calculating the sphere center from these points would yield the correct ref sphere Z but the wrong coordinate in world X

    You get the idea. Combining the results will give an accurate coordinate for the ref sphere.

    Knowing that neither tool or ref sphere changed during the course of measurements one could make an optimization function that finds (or rather minimizes the error) the tool that would make the above 2 measurements yield the same ref sphere center coordinates. I imagine looping thru the tool x,y,z values at incrementally smaller values to obtain a decent result.

    Edit: the pecking must be done with the tool pointing in the pecking direction otherwise the above is useless

    Edited once, last by Hes (June 13, 2023 at 10:11 PM).

  • Solideon
    Trophies
    1
    Posts
    3
    • June 14, 2023 at 8:16 PM
    • #11
    Quote from panic mode

    regardless...

    not sure how would that work without previous knowledge of the

    precise location of it. and i would like to avoid need for CMM/laser tracker measurement or similar. i would prefer to make it completely standalone (robot only).

    I'm not sure what you're getting at? You can do an XYZ 4-point with any arbitrary addressable point within the robot reach on the pendant. No fancy lasers or feedbcak needed. In this case you are using a ring, or as you mentioned better yet a dome that is the exact imprint of your tool, To act as a sharp point to find the center of your spherical tool.

    Place your Ring/hemispherical divot tool on your work surface. perform XYZ-4 point, get the spherical tool to fit snug in the hole, take a point, repeat 4x and check your error on your calibration. You're done. Next time you calibrate you can tape it to the wall, the floor it doesn't matter you're still performing a 4 point calibration the same.

    The other way to do this, is if you had a tool holder (I'm thinking like a ball nose end mill or CMM probe) you could make a tool that had the same length but was machined to a sharp point you could touch up there and transfer over or measure the difference between the points and offset/input your TCP. Assuming the tool isn't easily removable or they won't give you the budget to have a custom insert made the ring/divot method would work just fine.

  • panic mode
    Reactions Received
    1,280
    Trophies
    11
    Posts
    13,083
    • June 14, 2023 at 9:49 PM
    • #12

    feel free to check the thread again.

    i do not need or want to measure TCP using XYZ 4 point method. XYZ method was only mentioned as an example where reference object can be placed arbitrarily, rather than being at some known fixed position. that is it.

    and as also stated, i do not want human to play any role during actual calibration.

    human is only expected to guide robot to initial position (within few 2-10mm) and that is the end of it. after this they can (and should) just walk away. program should take over and determine TCP fully autonomously - without human.

    using block with a known size bore may be the simplest to use:

    1. place the block somewhere (anywhere)

    2. let operator guide the tool with sphere into the bore. precise positioning is not required.

    3. let the program move the tool size to side to find the walls of the bore.

    4. change the height and do it again (so we have at least points in two planes)

    5. calculate center axis of the bore as well as diameter of the tool sphere

    6. retract the tool then touch couple of points around the bore

    7. confirm that calculations obtained in 5 and plane obtained in 6 are perpendicular (just sanity check) and calculate TCP (intersection of bore center axis determined in step 5 and plane obtained in step 6).

    the same could be done with cylinder - the contacts would be outside rather than inside of the cylindrical feature.

    with this one can change tool at random (different sphere and length of the "neck"/stem) and same procedure would work - always. and it would work even if the reference object (block with the bore) is tilted for example (just need to be fixed rigidly enough to not move during sampling of points).

    another idea is to use machined block (cube). again, it does not need to be placed precisely or in specific place - just need to be fixed. then operator would bring the tool just above it (like in previous example) then program would take over and sample few points on different faces of the block (at least 3 points per face and at least 4 faces means 12 points). from this one can also determine same

    this is just some of the ideas. hope this clarifies things and helps with suggestions. so thank you all who have or plan on chiming in

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • hermann
    Reactions Received
    407
    Trophies
    9
    Posts
    2,611
    • June 16, 2023 at 6:49 AM
    • #13

    There exist a commercial solution that works like your idea.https://www.ims4robot.com/en/

    They use two probes with spherical tips (think that's not necessary for only measuring the TCP, the fixed probe is used for some more things to measure).

    For measuring the TCP you have to teach 8 (iirc) starting points with different orientations, where the TCP probe sphere touches the fixed sphere, and for each of that point also a point some mm away from the fixed sphere, I the direction of the probe axis.

    Think you really need more than just one position above the fixed sphere, as there are too much unknown parameters in the resulting equations.

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

  • calibration
  • probe
  • tcp
  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