Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tag bundle calibration #151

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

jack-slip
Copy link
Contributor

Summary of Solution

Created a node called apriltag_ros_tag_bundle_calibration_node that consumes a remap-able ~tag_detections feed until it reaches max_detections. You can set the master tag with param master_tag_id. It then averages the observed transforms to the master tag id over the duration of the observations and writes the generated config file to config_file_path. We average the transforms' quats using tf2::Quaternion::slerp() which seems to perform adequately.

Open questions

  • License headers on new files
  • Unable to test against matlab script as ground truth (namely to compare slerp() to the home-brewed quat averaging solution)

Successive Work

  • I would like to modify the code to allow transform chaining, so that the master tag id doesn't always have to be in frame

Demo

In the attached demo, we run a tag detector on a 3 x 3 tag grid with tag sizes 3cm and spacing between tags 4.5cm center to center along x and y. Camera is running at 15hz 720p rectified. 500 max detections. Would likely get better results at a higher resolution and higher max detections. This demo had largest errors on the z axis (max error was 7mm for tag 8) Whereas x and y errors were all sub mm. I will likely do some more testing with more detections and higher resolution (and flatter targets i.e not tags taped to the wall).

tag_bundle_calib_rosnode_demo-2023-04-21_09.51.16.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant