ethz-asl/hand_eye_calibration

Wrong Hand-Eye Calibration Results

Closed this issue · 3 comments

Thanks a lot for making the code / work publicly available !

After installing the packages I followed the Step-by-Step Calibration Tutorial.

I am using a UR5 Robot together with this ur driver, driving at various positions, recording the published transformations between the base link and the end-effector in a ros bag.
At the same time I have an aprilgrid board mounted at the robot and a camera placed next to the robot, recording frames in a ros bag ( the board looks a bit weird since it is truncated ).

From a camera viewpoint:

setup_calibration

Both transformation ( Base <-> Hand and World <-> Eye ) seem to be correct. However, performing the dual-quaternion-based hand-eye calibration results in a completely wrong calibration ( does not make any sense at all ).
I tried the same procedure with a camera mounted on the robot and the grid being fixed somewhere in the world, however the calibration does not make any sense either.

Am I using the calibration procedure as intended or am I missing something crucial ?
Thanks for your help !


All tests do pass.
When building the repository I had some linker issues:

linker_error

Which resolved after I added

target_link_libraries(${PROJECT_NAME} -lblas -llapack -lsuitesparseconfig)

to the CMakeLists.txt file in

[...]/workspace_calibration/src/aslam_optimizer/aslam_backend_expressions

Seems to be more of an issue in the tf-data from the controller rather than something in the calibration code.

smauq commented

FYI, linker issues are related to this issue ethz-asl/suitesparse#29
A more clean solution is to revert to this commit of suiteparse until it's fixed https://github.com/ethz-asl/suitesparse/tree/df17ac067de83f9a126ac4c121e0fd245bbf8ad1 (don't know how it might affect the results, probably not though)

Update: Issue ethz-asl/suitesparse#29 has been solved in the meantime. There should be no need for an explicit -lblas -llapack -lsuitesparseconfig anymore.