Perception and Sensors
Hand-Eye Calibration: How Much Error Is Acceptable
Hand-eye calibration ties the camera frame to the robot frame. What error is achievable, what causes the rest, and the procedure that gets it right the first time.

A careful hand-eye calibration reaches 0.2 to 0.8 mm of residual error on a mid-size arm. Anything above 1.5 mm usually means the procedure was wrong rather than the equipment. The dominant error source is almost never the algorithm; it is too few poses, too little rotation diversity, or a robot whose absolute accuracy was never calibrated.
What is being solved
Two configurations exist and they are frequently confused. In eye-in-hand, the camera is mounted on the robot and the unknown is the fixed transform from the tool flange to the camera. In eye-to-hand, the camera is fixed in the cell and the unknown is the transform from the robot base to the camera. Both are solved by moving the robot to a set of poses while observing a known target and solving the resulting equations.
| Property | Eye-in-hand | Eye-to-hand |
|---|---|---|
| Camera location | On the arm | Fixed in the cell |
| Unknown transform | Flange to camera | Base to camera |
| Field of view | Moves with the tool, can inspect closely | Fixed, sees the whole scene |
| Cable routing | Through the dress pack, a wear item | Static, no wear |
| Sensitive to | Robot repeatability, mounting stiffness | Robot absolute accuracy across the workspace |
| Typical residual | 0.2 to 0.6 mm | 0.3 to 1.0 mm |
Where the error comes from
| Source | Contribution | Fix |
|---|---|---|
| Robot absolute accuracy | 0.3 to 3.0 mm | Kinematic calibration before hand-eye |
| Insufficient rotation diversity | 0.5 to 5.0 mm | Vary orientation by at least 30 degrees between poses |
| Too few poses | 0.3 to 2.0 mm | Use 15 to 30, spread across the workspace |
| Target detection error | 0.05 to 0.4 mm | Larger target, better lighting, subpixel detection |
| Camera intrinsic error | 0.1 to 1.0 mm | Separate intrinsic calibration first |
| Mounting flex | 0.1 to 2.0 mm | Rigid bracket, no cantilevered plastic |
| Thermal drift | 0.05 to 0.5 mm | Warm up before calibrating and before production |
A procedure that works
- Calibrate camera intrinsics separately with the same lens, focus and aperture that production will use. Touching the focus afterwards invalidates everything downstream.
- Warm up the robot for 20 to 60 minutes. Cold-start drift of 0.05 mm to 0.2 mm is normal and it will otherwise be baked into the result.
- Mount the target rigidly. A target that flexes or slips between poses corrupts the whole set silently.
- Collect 15 to 30 poses spread across the workspace, each differing by at least 30 degrees in orientation from its neighbours.
- Verify on a held-out set. Reserve five poses, compute the error against them, and report that number rather than the fit residual.
- Verify with a physical test. Command the robot to a point identified by the camera and measure where the tool actually lands. That figure is the one that matters.
Step five is the discipline that separates a real calibration from a satisfying number. A fit residual describes how well the solution explains the data it was fitted to, which is not the same as how accurately it will place the tool.
When to recalibrate
A calibration is valid for a configuration, and several ordinary events invalidate it silently.
| Event | Typical error introduced | Action |
|---|---|---|
| Camera bumped or remounted | 1 to 20 mm | Full recalibration |
| Lens focus or aperture changed | 0.5 to 5 mm | Intrinsics then hand-eye |
| Tool changed or crashed | 0.5 to 10 mm | Tool centre point at minimum |
| Robot collision | 0.1 to 3 mm | Verify, then kinematic recalibration if needed |
| Fixture moved | as moved | Workpiece frame only |
| Seasonal temperature change | 0.05 to 0.5 mm | Verification check, recalibrate if out of tolerance |
| Nothing, after 12 months | 0.1 to 0.5 mm | Scheduled verification |
The practical policy is a five-minute verification test scheduled monthly, comparing a commanded pick against a measured landing point. It catches drift long before it becomes scrap, and it takes less time than investigating the first bad batch would.
Frequently asked questions
What hand-eye calibration error is acceptable?
0.2 mm to 0.8 mm residual on a mid-size arm is good. Above roughly 1.5 mm the cause is usually procedural: too few poses, insufficient rotation diversity, or an uncalibrated robot.
How many poses are needed?
Fifteen to thirty, spread across the workspace, with at least 30 degrees of orientation difference between neighbouring poses. Pure translations do not condition the problem properly.
Should I calibrate the robot first?
Yes where accuracy matters. Robot absolute error of 0.5 mm to 3 mm propagates directly into the hand-eye result, so kinematic calibration first improves everything downstream.
Eye-in-hand or eye-to-hand?
Eye-in-hand for close inspection and where the camera must follow the tool, at the cost of a cable in the dress pack. Eye-to-hand for whole-scene views and where cable wear must be avoided, at the cost of greater sensitivity to robot absolute accuracy.
How do I verify the calibration?
Hold out five poses from the fit and compute error against them, then perform a physical test: have the camera identify a point, command the robot there, and measure where the tool lands. The fit residual alone proves nothing.
Sources
- ISO 9283, manipulating industrial robots, performance criteria and test methodsPose accuracy and repeatability definitions used throughout
- Robotics at NISTNational Institute of Standards and Technology, robot performance measurement and test methods
- arXiv robotics preprints, hand-eye calibrationPrimary literature on formulation and pose selection