Universal Robots Forum

UR rotation matrix for handEye calibration

Hi there!
I am working with a camera mounted to a UR10e gripper. The application requires very high precision, so I am performing a handEye calibration to measure the relatives angles between the TCP and the camera. They are suppose to be [0, 0, 180], but because the mounting is not precise, I know that the error is around 1° in each coordinate.
To do the calibration I need to get the UR rotation matrix from the axis-angle notation. I created a Polyscope program to extract the robot poses. It gets them in axis-angle notation, in radians. However, If you check the axis-angle notation on the Polyscope (under move) and you compare with the script values of that same point, you will see a difference. From another post, I understood that the Polyscope values are scaled following the next formula:

p[x,y,z] - script values
scale = 1 - 2PI/length(p[x,y,x])
polyscope_values = [scale
x, scaley, scalez]

I took 5 different poses on the UR and realized, that this formula is correct.
But, which one should I use to get the rotation matrix?

Hello Daniel,

This scaling seems weird. Using the proper conversion routines from rotation matrix to angle axis gives polyscope results. Can you give the link to were you’ve read about this scaling? But as general advise, use the unscaled version of the data.