Professional Documents
Culture Documents
Hand-Eye Calibration
Hand-Eye Calibration is the simulataneous computation of two unknown
spatial relationships in a circle of spatial relationships.
The Problem
Application
Robot-Camera-Calibration (also Tracker-Camera Calibration)
Tracker Alignment
Wrong Uses
Possible Solutions from the Literature
Determining first the Rotation then the Translation
Determining Rotation and Translation simultaneously
Other Works on Hand-Eye Calibration
Implementation
MATLAB
Mathematica
Tips & Tricks
The Problem
The hand-eye calibration problem first appeared and got its name from the robotics community, where a camera ("eye") was
mounted on the gripper ("hand") of a robot. The cameras was calibrated using a calibration pattern. Then the unknown
transformation from the robot coordinate system to the calibration pattern coordinate system as well as the transformation
from the camera to the hand coordinate system need to be estimated simultaneously.
Application
Robot-Camera-Calibration (also Tracker-Camera Calibration)
This is the standard "hand-eye calibration" problem: Calculate the camera-sensor transformation X by using several
measurements Ai, Bi (that give you A,B).
Robot Arm with Camera
Outside-In Tracking System with Inside-Out Tracking System
Camera with Gyroscope
Tracker Alignment
First estimate hand-eye calibration using standard algorithms, then calculate Y from the estimated parameters. Note that the
problem is symetric in X and Y.
http://campar.in.tum.de/Chair/HandEyeCalibration
2015-08-28
HandEyeCalibration
We then can either use the Hand-Eye-Calibration methods to estimate X and then Y independently, or use the estimated x to
calculate y by closing the loop.
Here we see the collected poses of the eye (left) and the hand (middle) as well as the combined poses after calibration (right)
Wrong Uses
Hand-Eye calibration algorithms should not be used when we have a possibility to directly measure one of the two unknown
spatial relationships.
http://campar.in.tum.de/Chair/HandEyeCalibration
2015-08-28
HandEyeCalibration
http://campar.in.tum.de/Chair/HandEyeCalibration
2015-08-28
HandEyeCalibration
Implementation
If you knw of any other (free) implementation of one of the hand-eye calibration algorithms, feel free to add the link here.
MATLAB
An implementation for MATLAB based on the Camera Calibration Toolbox is available from Christian Wengert, who did his PhD
at ETH Zrich.
Another implementation based on the Tsai-Lenz papers you can find on Zoran Lazarevic's homepage.
Mathematica
Assume that the poses of the "hand" and the "eye" are given in the following coordinate system (as seen in the figure above):
hand poses are given as pose of the hand relative to the tracker coordinate system
eye poses are given as pose of the calibration pattern relative to the camera coordinate system
First compute the relative motions
Hc = Flatten[Table[Table[Ait[[j]].Inverse[Ait[[i]]], {j, i+1, Length[Ait]}], {i, Length[Ait]}], 1];
Hg = Flatten[Table[Table[Inverse[Bit[[j]]].Bit[[i]], {j, i+1, Length[Bit]}], {i, Length[Bit]}], 1];
and from that the matrix X as
X = HandEyeTsaiLenz[Hg, Hc]
with (Tsai-Lenz 1988)
Skew[{x_, y_, z_}] := {{0, -z, y}, {z, 0, -x}, {-y, x, 0}}
HandEyeTsaiLenz[Hg_, Hc_] := Module[{Pg, Pc, lefthand, righthand},
Pg = Drop[MatrixToQuaternion[#1], 1] & /@ Hg;
Pc = Drop[MatrixToQuaternion[#1], 1] & /@ Hc;
(* Solve for the rotational part *)
lefthand = Flatten[Skew /@ (Pc + Pg), 1];
righthand = Flatten[Pc - Pg, 1];
Pcg = PseudoInverse[lefthand].righthand;
Pcg = 2/Sqrt[1 + Pcg.Pcg] Pcg;
Rcg = (1 - 0.5 (Pcg.Pcg))IdentityMatrix[3] + 0.5 *( (Transpose[{Pcg}].{Pcg}) + Sqrt[4 - Pcg.Pcg] Skew[Pcg]);
(* Solve for the translational part *)
lefthand = Flatten[ (#[[Range[3], Range[3]]] IdentityMatrix[3]) & /@ Hg, 1];
righthand = Flatten[(Rcg.(#[[Range[3], 4]]) & /@ Hc), 1] - Flatten[(#[[Range[3], 4]]) & /@ Hg, 1];
(* Print[lefthand, ". x =", Transpose[{righthand}]]; *)
Tcg = PseudoInverse[lefthand].righthand;
Append[Transpose[Append[Transpose[Rcg], Tcg]], {0, 0, 0, 1}]
]
http://campar.in.tum.de/Chair/HandEyeCalibration
2015-08-28
HandEyeCalibration
http://campar.in.tum.de/Chair/HandEyeCalibration
2015-08-28