I'd like to get the object pose based on the attached AR marker to the object. I believe I only need one tag to get the 6D pose. However, I sometimes see more than one AR markers are used in the research papers or the demos by Boston Dynamics (https://boygeniusreport.files.wordpress.com/2016/02/screenshot-76.png) or by the team at Amazon Robotics Challenge.

Do I need to use more than one marker? If so, how can I calculate the 6D pose from more than one marker's information?


Without knowing exactly what type of AR marker you are interested in, I'll talk about two types that I am familiar with: ArUco and April Tags. Both are AR markers that have open source libraries with stripped down (and possibly outdated) versions implemented in OpenCV.

These libraries will give you the full pose of the camera based on the marker in the field-of-view. The library uses the physical marker size and camera calibration parameters to estimate the pose of the camera w.r.t an individual marker or set of markers. You may use multiple markers in the form of a marker map to enhance the estimate of the camera pose. I imagine when people use multiple markers as in the Boston Dynamics example it is to ensure track continuity as markers enter/leave the field-of-view or to mark specific aspects of a scene.

If you are interested in using ROS, perhaps this aruco_localization repo will be of use. It was set up to localize a mini-quadrotor with an upwards facing camera, as seen here.

  • $\begingroup$ Thank you for the answer. Basically, I don't need to use more than one marker, right? You said "You may use multiple markers in the form of a marker map to enhance the estimate of the camera pose." Could you elaborate this in detail? I'd like to know how I could utilize the multiple markers. Do I just need to take the average? Or use the result from the marker which has the better accuracy in the moment? $\endgroup$
    – kangaroo
    Sep 12 '17 at 18:22
  • $\begingroup$ By the way, I'm using ArUco markers. $\endgroup$
    – kangaroo
    Sep 13 '17 at 1:25
  • $\begingroup$ Correct, you can get the information you need with one ArUco marker. We have performed automatic landing of multirotors using a large single marker. If you would like to utilize a marker map with rigidly defined 3D geometry, you can just use the library, which uses OpenCV's solvePnPRansac under the hood. If you want to use disparate markers like in the Boston Dynamics image, you will have to do some sort of averaging, which is simple for translation but requires more finesse for the orientation. $\endgroup$ Sep 13 '17 at 4:02
  • $\begingroup$ I'm using solvePnP. Do you think solvePnPRansac is better for the pose estimation from an ArUco marker rather than solvePnP? $\endgroup$
    – kangaroo
    Sep 13 '17 at 19:59
  • $\begingroup$ It depends on your geometry and exactly what you are trying to do. Use solvePnPRansac if you have noisy points / possibly incorrect 2d to 3d correspondences. $\endgroup$ Sep 13 '17 at 23:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.