Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Hand-eye calibration

#1
Some info about the project: 

Procedure/Algorithm overview
1. Note the position of the board in the robot base frame. Use the robot to touch three corner points of the board (origin, x-axis, y-axis).
2. For N robot poses, record the camera images and robot *flange* pose. Angles should be in angle-axis format using `Pose_2_UR()` in RoboDK.
3. Detect board points in each frame.
4. Perform intrinsic camera calibration.
5. Perform extrinsic calibration based on detected boards, recorded flange poses and intrinsic camera calibration.

Sources of error
1. For step 1, the TCP used to touch the points must be properly teached.
2. For step 2, the recorded flange pose must be recorded correctly.
3. For step 3, the physical size of the board markers and separation between markers must be input correctly.
4. For step 4, it is important that the board covers the whole area of the camera sensor across all images.

Potential improvements
1. Increase camera resolution. As of now we are using 640x480 px.


Problem:

According to the results the camera is always a few centimeter above the flange when in reality it is a few centimeters beneath (only the z-coordinate is wrong). The x- and y-coordinate are not perfect (but close), but I believe the main error/root cause is the z-coordinate. 

What I have already tried:
I have already controlled that the position of the flange is correct (same with the robot base, so not an incorrect pose from the robot) and the axis on the checkerboard also seems right (by eye). I have also ensured that the dimensions regarding the aruco board are correct (aruco side length and separation). 

I am running out of solutions to solve this problem was wondering if anyone has encountered a similar problem or know a good way to find the potential sources of error?
#2
I'm not sure if you trying to find a way to perform the Hand-Eye Camera calibration or you want to understand the source of errors.

If you are trying to find the source of errors I recommend you to double check the following:
  • TCP calibration: Do you define your TCP in RoboDK or are you doing it on the robot? Do you have some information regarding robot errors? In any case, I don't understand the TCP is important for Hand Eye calibration.
  • Robot kinematics: Do you rely on the robot kinematics to get the pose flange or RoboDK kinematics?
  • Robot accuracy: Some robots are more accurate than others. What robot are you using?
  




Users browsing this thread:
1 Guest(s)