Code Monkey home page Code Monkey logo

Comments (12)

s-trinh avatar s-trinh commented on July 24, 2024 8

Some information I have gathered about the planar pose ambiguity:

image

image

from apriltag.

mkrogius avatar mkrogius commented on July 24, 2024 6

Yes, it is a fundamentally ambiguous problem, if the tag's apparent size in the image is small enough. As you can see, the apriltag pose estimation code attempts to calculate both solutions and then return whichever solution is better. The pose estimation code is an implementation of Lu et. al. (2000) and the ambiguity code uses the method of Schweighofer and Pinz (2006). I chose this combination of methods because the Infinitesimal Plane-based Pose Estimation paper you linked states that this combination has the best performance when you have only 4 matched feature points, which is the case for fiducial detection (FYI, that paper refers to this combination of methods as RPP-SP).

from apriltag.

antithing avatar antithing commented on July 24, 2024

This issue is related to using the tagStandard41h12 dictionary.
Switching to the 36h11 markers has improved my results across the board. They are faster, more robust and less prone to the flipping.

Thanks!

from apriltag.

suraj2596 avatar suraj2596 commented on July 24, 2024

Hey @antithing, I faced the same issue with 36h11 today. Turns out if the tags are parellel to the the image plane, this issue occurs. Can you please try this out and let me know if you are having the same issue.

Also, do you think decimate will affect this flipping issue?

Thank you!

from apriltag.

lzyplayer avatar lzyplayer commented on July 24, 2024

Hey @antithing, I faced the same issue with 36h11 today. Turns out if the tags are parellel to the the image plane, this issue occurs. Can you please try this out and let me know if you are having the same issue.

Also, do you think decimate will affect this flipping issue?

Thank you!

same issues happened in gazebo enviroment. I'm testing apriltag alongside with others.
However, whenever the tags are parellel to the the image plane, estimated pose keep fliping
image
heres are the error compared with ground turth provided by gazebo get_model_state_srv.
with a 2mx2m tag, x-axis indicate distance in meter, y-axis indicate error in degree of three axis of estimate pose with ground turth.
image
error grows to 30 degree above when flipping

from apriltag.

mkrogius avatar mkrogius commented on July 24, 2024

This sounds like it might be a bug, there shouldn't be any noticeable difference in pose accuracy between 36h11 and Standard41h12 families. I will take a look at this.Can anyone on this thread provide images where this bug happens?

Also, is the problem that the detected corner locations are moving around or that the pose that is inferred from the corner locations is unreliable?

from apriltag.

lzyplayer avatar lzyplayer commented on July 24, 2024

Thanks for your reply!
Actullay I'm not sure it is a bug or not. It's more like an ambiguity problem. I place the model with those flipping pose by set_model_state srv in gazebo;
here is what I got,

image
image
It's seems It's really hard to tell which pose is correct from camera view(left).
gazebo client(right)

from apriltag.

Harsharma2308 avatar Harsharma2308 commented on July 24, 2024

Any updates on this? Facing the same issue with the Standard41h12 family.

from apriltag.

mkrogius avatar mkrogius commented on July 24, 2024

There are some conditions in which ambiguity is expected, basically if the object is far enough away from the camera and the resolution of the camera is low enough. It looks like the example posted on Jun 22 is low enough resolution that it will be fundamentally ambiguous and there is nothing our algorithm can do about it.

@lzyplayer Are the examples you gave rendered at the same resolution your camera is seeing them at? If so, these should not be ambiguous and I will investigate.

@Harsharma2308 Please post examples of your issue for me to investigate.

from apriltag.

lzyplayer avatar lzyplayer commented on July 24, 2024

Hi @mkrogius ,
Thanks for the reply!
Both examples provided are within gazebo simulation enviroment, in which a 2m x 2m tag is wanding around about 70 meters to camera. Camera has exactly the same parameter as Azure kinect RGB camera, that is

  • resolution: 1280x720
  • FOV: 75°x65°
  • FPS: 30
  • tag_size: 2 meters
  • distance from tag to camera: about 70 meters

Example given on 22 Jun shows the error function's output. And example given on 27 Jun tells at which point it's flipping. The image on the left is exactly the image processed by Apriltag, while images on the right is screenshot from gazebo.

from apriltag.

maxschommer avatar maxschommer commented on July 24, 2024

I notice the same issue with 16h5 family. It is an ambiguity issue, but I believe the ambiguity should be resolvable by the assumption that you should never be able to see the "back" of an april tag, and thus always get z-values which are towards the camera.

from apriltag.

maxschommer avatar maxschommer commented on July 24, 2024

Actually, after looking into the problem more, I think the ambiguity is fundamental. Both solutions you see (when it flips, it's another solution of the perspective n point problem) are valid, and there's no way to resolve it other than more points, or 4 non-planar points.

from apriltag.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.