Touch Test Fails (Poor Robot Positioning Accuracy) after Good Hand-Eye Calibration (Incorrect TCP)

Problem

Your hand-eye calibration results look good, but the touch test fails.

Hand-eye matrix

Calibration residuals

Projection verification

Touch test

Reasonable

Good

Good

Bad

Example of good hand-eye results

Hand-Eye Calibration Matrix

0.999

-0.002

0.0412

-55.598

0.001

0.999

0.0283

-90.654

-0.041

-0.028

0.998

129.044

0

0

0

1

The Hand-Eye Calibration Matrix appears reasonable and is consistent with what one would expect from rough manual measurements (see image below).

../_images/eye_in_hand_approximate_hand_eye_matrix.png

Residuals

The calibration residuals are within an acceptable range, indicating that the optimization has converged successfully. For smaller robots, we expect the residuals to in the sub-millimeter range, while for larger robots, the residuals can be in the millimeter range. As for the rotational component of the residuals, we expect them to be in the sub-degree range.

N (Poses)

Rotation avg (deg)

Rotation max (deg)

Translation avg (mm)

Translation max (mm)

10

0.021

0.042

0.109

0.172

Pose

Rotation (deg)

Translation (mm)

1

0.017292

0.163

2

0.008218

0.135

3

0.028

0.172

4

0.009

0.053

5

0.042

0.080

6

0.008

0.098

7

0.022

0.138

8

0.025

0.077

9

0.036

0.125

10

0.013

0.048

Verification using projection also passes, indicating that the hand-eye transformation is correct and accurate.

../_images/projection_verification_good.png

Immediately after running a successful hand-eye calibration, you observe one or more of the following:

  • The Touch Test fails (does not land on the expected point).

  • Robot positioning appears inaccurate (e.g., object picking/placement is consistently offset).

  • Robot tip “drifts” or sweeps in a small arc during rotation in TCP frame.

Potential Cause

The Tool Center Point (TCP) is incorrect (miss-measured or miss-aligned).

Even if hand-eye residuals look good, an incorrect TCP means the robot’s assumed tool tip location does not match the physical tip. This leads to:

  • Good hand-eye calibration math

  • Bad physical accuracy

  • Touch tests missing their target

  • Rotation in TCP frame causing visible drift at the tool tip (the most reliable indicator)

This mismatch is the most common cause of failed touch tests after an otherwise correct hand-eye calibration.

How to Verify TCP if Touch Test Fails

This is the recommended and safest TCP validation method. It requires no contact, only rotations, and clearly reveals TCP errors.

참고

It is recommended to use the integrated TCP calibration and verification tools provided by your robot manufacturer.

Prerequisites:

  • Teach/slow mode enabled.

  • A rigid, fixed pointed object (e.g., a screw standing vertically on a flat surface).

  • Robot equipped with a pointed tool.

Procedure:

  1. Position tool tip: Move the robot so that the very tip of the tool coincides exactly with the tip of the reference object. (no contact force, just alignment.)

  2. Switch to TCP Frame: On the robot pendant, select the TCP coordinate system.

  3. Rotate around TCP: Perform small rotations (±10-30°) around X, Y, and Z. Do not translate.

  4. Observe the tool tip:

    • If TCP is correct: the tool tip remains exactly on the reference point throughout the rotation.

    • If TCP is incorrect: the tip visibly sweeps an arc or moves relative to the reference point during rotation. This drift is the definitive sign of a bad or miss-measured TCP.

  5. Re-measure the TCP if drift is observed.

Potential Solution

  1. Recalibrate the TCP, using a pointed reference and the robot’s built-in TCP estimation procedure.

  2. Repeat the TCP verification rotation test.

  3. Once TCP is confirmed correct, re-run the touch test.

참고

  • It is normal for hand-eye calibration residuals to look good even if TCP is wrong. Calibration solves the transformation between frames, not the tool tip’s physical location.

  • When in doubt, verifying TCP via the rotation method is faster than re-running a calibration.