ethz-asl / hand_eye_calibration

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

Wrong Hand-Eye Calibration Results #78

Closed SebNag closed 6 years ago

SebNag commented 6 years ago

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

SebNag commented 6 years ago

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

smauq commented 6 years ago

FYI, linker issues are related to this issue https://github.com/ethz-asl/suitesparse/issues/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)

HannesSommer commented 6 years ago

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