Comments (4)
From @DavidB-CMU's analysis at the PRL:
Spurious detections
Our apriltags module detects phantom tags.So I compared:
- apriltags (swatbotics / PRL) (old quad method)
- apriltags (swatbotics / PRL) (with CGAL)
- 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.
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/161912001Here'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/161912002Lastly 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.
@DavidB-CMU: I think I extracted most of your experiments, did I miss anything?
from apriltags.
Thanks, the link is out of date. I am interested in this.
from apriltags.
Related Issues (20)
- does not support 36h10 HOT 1
- Remove manifest.xml file
- Unused 'tf_frame' parameter HOT 2
- Break out messages into their own package
- April Tags Runs Constantly, Using Much CPU HOT 4
- Detects spurious "phantom" tags HOT 1
- Compilation on 14.04 has problems HOT 3
- Lack of Nodelet Support HOT 1
- CMakeLists.txt file modification HOT 1
- Explanation of how to use `apriltags` for beginners. HOT 5
- Problems with ROS Kinetic and OpenCV3 HOT 11
- Is there a way to test a video rather than a live stream off a camera? HOT 1
- image_pipeline: issue with the decimation
- Exclude the github download HOT 4
- Unable to load msg HOT 2
- Use optical center from camera_info HOT 2
- AprilTags crashes everytime it detects a tag HOT 1
- CMake warning on compilation on Ubuntu 14.04
- Apriltags-cpp should be checked out at clone, not at build time HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apriltags.