Recently, I was working with navigation system based on aruco, I need the most accurate possible value of Z axis from aruco marker.
I was built simple measuring system with few aruco marker (type cv2.aruco.DICT_5X5_50) and usb web camera 640x480. I made calibrate for this camera with chessboard and standard opencv method.
I know that if I want to get camera pose data, I must rotate rvec and tvec data fromcv2.aruco.estimatePoseSingleMarkers
and I realized this by this code: https://stackoverflow.com/a/58112142.
Now we come to the heart of the problem, if I hold the camera at a relatively sharp angle let's say ~ 20 degrees or more (in the yaw angle) algorithm results are probably correct and consistent. If I approach the right angle of the camera in relation to the marker, I notice that the indications start to be much noisy (for a right angle the values oscillate between 0-10 degrees for the yaw angle).
What could it be caused by? Wrong method of transformation, or maybe the aruco tags have such a defect?
Greetings