I have a rig for which I have a pretty good estimate of the static transformation between the camera and a joint based off of the CAD. It has some errors though and I was hoping to fix it by doing a hand eye calibration. So, I started off with generating some data based off of the transformation that I have already. From the papers that I have been reading, they all want to solve the $$AX = XB$$ problem by either converting $A$, $B$ to dual quaternions or simplifying the equation to something like $$ n_A = Xn_B $$ where $n_A$, $n_B$ are the eigenvectors corresponding to the eigenvalue of 1 for the $A$ and $B$ rotations.

After generating the data, I tested if my data collection was correct and I validated it by checking if $AX = XB$ for all of the $A$s and $B$s that I generated. I used the CamOdoCal library to try and solve the problem but I got this -

/hand_eye_calib_node    : 
[ 0.00196822,   -0.457069,    0.889429,    0.143463;
   -0.999965, -0.00813605, -0.00196822,    -1.74257;
  0.00813605,   -0.889394,   -0.457069,   0.0270069;
           0,           0,           0,           1]


/hand_eye_calib_node    : Actual transform
    0         0         1   0.08891
   -1         0         0 -0.070465
    0        -1         0   0.07541
    0         0         0         1

The actual transform is the one that I had based my $A$ and $B$ data on. Then I tried implementing the Tsai-Lenz and Horaud and Dornaika's Nonlinear optimization techniques using LM solver but to no avail. I do not get the correct transformation out of any of the solvers.

So, I was wondering if you could point me to a hand eye calibration library or paper that has worked.


closed as unclear what you're asking by Chuck Jul 6 '16 at 13:28

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.


From your data, it is not obvious where the issue is. Can you give more details?

Here is a commonly used hand eye calibration routine written in Matlab: http://lazax.com/www.cs.columbia.edu/~laza/html/Stewart/matlab/handEye.m

(Note that you also need to download the helper function quat2rot.m from the same directory.)

It implements the Tsai-Lenz method.

Generally, a common mistake in hand eye calibration is to provide inverse transformations. Maybe you re-run your routine with one set of transformations inverted?


Not the answer you're looking for? Browse other questions tagged or ask your own question.