ethz-asl / hand_eye_calibration

Python tools to perform time-synchronization and hand-eye calibration.
BSD 3-Clause "New" or "Revised" License
438 stars 114 forks source link

calibration FAILED in pure rotation scenarios #75

Open ChristieLin opened 6 years ago

ChristieLin commented 6 years ago

Hello,

I'm trying to use the hand-eye calibration to calculate the transformation between two trajectories. These two trajectories are pure rotation, that is, the translation part are all zeros.

When I run "compute_hand_eye_calibration.py", the calibration FAILED. Then I modified the "all-zero" translation with non-zero value, this still occur, but just sometimes.

While debugging, I learnt that the dual-quaternion based calibration algorithm you implemented has a precondition as " assert a != 0.0, "This would involve division by zero." " When I set "all translations = zero", the value "a" exactly equals 0. When I set "all translations = a non-zero value", the value "a" sometimes becomes very small (e.g., 1.0e-15). This seems to be the reason of the failure.

I found a temporary solution as image

but I am not sure whether this is a right way. Or, maybe this " calibration FAILED" is just because of my improper understanding. I will appreciate any of your help.