Accurancy on robot arm

Hi everyone,

I’m using a ZED2i on a UR15 with hand–eye calibration (OpenCV reprojection error < 0.1 px, 2.5 cm checkerboard).

I’m detecting AprilTags (Isaac ROS) and trying to position the robot at the center of the marker (~70 cm distance). The distance estimation is mostly fine, but I consistently see an offset of ~2 cm in the y-axis (sometimes also x-axis).

Is this expected accuracy at that distance, or does it indicate an issue?

I also notice some pose instability (marker “flashing”), so I’m averaging multiple detections even with 8cm marker size of April tag.

Any tips to improve lateral accuracy? What precision can I realistically expect from the ZED2i in this setup?

Thanks!

What is the reference system? Can you add a diagram?
If the offset is stable, then it’s possible that you are using the wrong reference points with your calibration setup.

Thank you here is the image.
frames_2026-04-24_11.12.42.pdf (20.3 KB)
handeye_calibration_20260426_183236.yaml (35.8 KB)

I attached everything in this document. My base frame is ur15_base and my goal was to calibrate the wpg_tcp to the left optical frame. Therefore I placed it in the tree like this directly connected with the TCP

Do I also have to calibrate the Camera itself? It has been done at your factory I read and therefore I did not change anything.

How accurate is the Camera normaly with Marker and the pointcloud assuming a distance of 80cm?

This is not required. The factory calibration is always more precise than any manual calibration.
Manual calibration is required only if the optics setup changes.

Regarding the offset… is it possible that you are performing the hand-eye calibration with respect to the optical frame, while considering the camera base link as the origin?

I looked it up and changed it to optical frame. But that frame is 90 degree tilted or?
joint name=“zed2i_calibration_joint” type=“fixed”
parent link=“wpg_tcp”/
child link=“zed2i_left_camera_frame_optical”/
origin xyz=“${cam_x} ${cam_y} ${cam_z}” rpy=“${cam_roll} ${cam_pitch} ${cam_yaw}”/
/joint

Which camera Frame should I use for calibration? But now i saw when I put there optical frame the camera tree is broken.

Is it intended to be calibrated to the camera link? I often faced there a angle error and therefore went to the optical frame

Yes, this is expected. I meant the left camera frame, not specifically the optical frame which is normally used to perform computation in “OpenCV-like” reference frame.

This depends on your setup and how you perform the processing.

Yes I normally now have used the optical frame for extracting Informations.But when the camera frame is calibrated automatically the optical frame also has to be right calibrated too when I understand the internal coordinate systems right. So I can keep the rest as it is and only calibrate the camera frame I think. The otherer internal transformations are known.

Ok for openCV I thought it was also optical but due to the mountage I will calibrate it with reference to the camera frame.