I'm having a hard time estimating the positions of the Aruco markers with the camera. In my tests with the DICT_6X6_250 dictionary and the board with 4 markers of 20x20 cm on it, I measured at 6 meters with an error of 20-30 cm. I need more precise measurements.
Is this error rate normal? What can I do to increase accuracy?
In general there are ambiguity issues with Aruco, which you can find here.
I am doing abit of research on Fiducial Markers and this error rate is pretty normal. The Pose estimation of the markers tend to have errors in x and y rotation and z Translation.
However, there are some factors that can influence the accuracy of Aruco Pose estimation. Here are some points, that can help improve Pose estimation accuracy, which you should take into consideration:
cv2.aruco.estimatePoseSingleMarkers()
cv2.SolvePnP()
as it allows you to use different Perspective N Point algorithms to calculate the Pose. You can read more about SolvePnP here and the different methods herecv2.detectMarkers()
use a SubPixel Corner refinement method.