8

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.

Glorfindel
  • 297
  • 1
  • 4
  • 10
  • Welcome to Robotics NandanBanerjee, but I'm afraid that it is not clear what you are asking. We prefer practical, answerable questions based on actual problems that you face, so it's a good idea to include details of what you want to achieve, what you tried, what you saw & what you expected to see. Please take a look at [ask] & [about] for more information on how stack exchange works and work through the Robotics question checklist to edit your question to make it clearer. – Chuck Jul 06 '16 at 13:25
  • Specifically, what is your test setup? What test did you perform? Did you include rotation? What are your outputs? How are you calculating the "actual transform"? – Chuck Jul 06 '16 at 13:27
  • For those that come across this I answered a similar question in great detail at https://robotics.stackexchange.com/questions/7163/hand-eye-calibration and a ROS solver can be found at at https://github.com/jhu-lcsr/handeye_calib_camodocal – Andrew Hundt Sep 14 '16 at 00:24

1 Answers1

0

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?

SpamBot
  • 121
  • 3