Hi! I have a micro robot with about height of 2.5cm and radius of 4cm.

On the top of the robot, I put a Aruco mark on it, and also at the bottom, there are two photoresistors which are very close to the ground.

From

`cv::aruco::estimatePoseSingleMarkers(corners, length, cameraMatrix, distCoeffs, rvecs, tvecs)`

I get rotation vector `rvecs`

and translation vector `tvecs`

of the maker.

However `tvecs`

is translation vector of the center of maker (in world coordinate).

Then,I use

```
axesPoints.push_back(Point3f(left_x, left_y,0))
axesPoints.push_back(Point3f(right_x, right_y,0))
```

Here `left_x`

and `left_y`

are *X-* and *Y-* axis coordinate of left photoresistor about center of maker, and `right_x`

and `right_y`

are coordinates of right photoresistor.

I use

`cv::projectPoints(axesPoints, rvecs, tvecs, camera_matrix, distortion_coefficients, imagePoints)`

to get the coordinates of two photoresistors in the image/pixel coordinate system. I can get

accurate coordinates of the two photoresistors just when the marker is directly below the camera, but in other positions, it’s a little bad.

Even if I take into account the height difference between the photoresistors and the marker,

```
axesPoints.push_back(Point3f(left_x, left_y,h))
axesPoints.push_back(Point3f(right_x, right_y,h))
```

**it did not improve.**

If I can get the translation and rotation of the plane where the photoresistors are located instead of the marker plane, I will get the exact coordinates of the photoresistors in the pixel coordinate system. However I don’t konw how to do it.

Or how can I get the accurate coordinates in the image/pixel coordinate system of two photoresistors by the maker on the top of robot.

Any hints would be appreciated

Best regards.