Coder Social home page Coder Social logo

Comments (4)

psigen avatar psigen commented on April 19, 2024 2

From @DavidB-CMU's analysis at the PRL:

Spurious detections
Our apriltags module detects phantom tags.

So I compared:

  1. apriltags (swatbotics / PRL) (old quad method)
  2. apriltags (swatbotics / PRL) (with CGAL)
  3. apriltags (M.Kaess / RIVeR-Lab)

Conclusions:

  • In our current setup, the tags "flash" (one type of jitter) due to using CGAL. However it is better at detecting tags that are almost perpendicular to the camera.
  • The "old method" gives smoother detections, but lots of crazy false detections.
  • #3 gives the best overall performance.

You can see that by watching these two videos together:
https://vimeo.com/161911999
https://vimeo.com/161911998

...and for more amusing false detections:
https://vimeo.com/161912000

from apriltags.

psigen avatar psigen commented on April 19, 2024

From @DavidB-CMU's analysis at the PRL:

Flipped poses (another type of jitter)
To solve the PNP problem, the apriltags module uses an OpenCV function that iteratively solves the homography using LM. It converges to a single solution.

  • I added an improved PNP method, being RPP (also called SP) by Schweighofer & Pinz.
    It does give more robust post detection (videos to come) but it's not perfect. There are still flipped/mirrored poses.
  • I noticed that the majority of the ambiguous poses are not adhering to a right-hand coordinate system w.r.t. to the tag. Maybe we can detect that situation?

@mkoval this is the problem we were discussing yesterday afternoon. The 4 corners of the tag are identified, but the z-axis is projected onto the 2D image plane in the wrong direction.

This video shows the pose flipping problem for one tag, and the result of filtering by enforcing the right-hand rule:
https://vimeo.com/161912001

Here's the numbers from this tag's detection from two successive frames, where one detection is good, one is ambiguous due to only a 1 pixel difference.

image_pts = [577.5, 286.5; 606.5, 279.5; 584.5, 268.5; 556.5, 275.5]
rvec = [1.891421797227909; -0.4864662962491383; 0.2845612347145944]
x axis vector (normalized) = [0.971307, -0.23783]
y axis vector (normalized) = [-0.890488, -0.455006]
z axis vector (normalized) = [0.0339748, -0.999423]
--> axes are good
image_pts = [577.5, 286.5; 605.5, 279.5; 584.5, 268.5; 556.5, 275.5]
rvec = [-1.868579525379146; 0.7279747000248998; 0.6225501111304514]
x axis vector (normalized) = [0.970317, -0.241838]
y axis vector (normalized) = [-0.886224, -0.463257]
z axis vector (normalized) = [-0.0325935, 0.999469]
--> this violates the right-hand rule

Another video with multiple tags, showing 3 or 4 tags where the pose keeps flipping:
https://vimeo.com/161912002

Lastly in this video I am trying to show that some tags appear to be more robust to large amounts of skew:
https://vimeo.com/161914003

from apriltags.

psigen avatar psigen commented on April 19, 2024

@DavidB-CMU: I think I extracted most of your experiments, did I miss anything?

from apriltags.

YuehChuan avatar YuehChuan commented on April 19, 2024

Thanks, the link is out of date. I am interested in this.

from apriltags.

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.