Design - ju1ce/April-Tag-VR-FullBody-Tracker GitHub Wiki
Tasks
The most basic set of tasks to fully produce the expected output. In this case, reading images from one or more cameras, to a set of tracker poses sent to a driver.
Main Tasks
Capture Image
- Blocking
Blocks until an image is ready, synced to FPS of camera.
Post-Process Image
- Depends: Capture Image
Convert to single channel.
Get Tracker Pose
- Blocking
Get a tracker pose from the BridgeDriver for the previous frame. Once smoothing and multi-cam are moved to ATT, this won't be needed.
Mask Image Search Area
- Depends: Post-Process Image, Get Tracker Pose
Using last frame's detections, black out areas of the image that a tracker is not expected to be found.
Detect Tags In Image
- Depends: Mask Image Search Area
- Slow
Calls apriltag_detector_detect on the image and returns a list of detections.
Draw Preview
- Depends: Capture Image, Calculate Tracker Pose
Calculate Tracker Pose
- Depends: Detect Tags In Image,
Send Tracker Pose
- Depends: Calculate Tracker Pose
- Blocking
Support Tasks
Start Camera
Start OpenVR Client
Connect BridgeDriver
Station Calibration
Refine Station Calibration
Events
Update Preview
UI Input
Update Status
Update Config
Terminology
pose
Position and rotation of an object.
tag
Unique pattern for computer vision recognition, with enough information/calibration, pose can be calculated. AKA fiducial tag.
AprilTag
Fiducial tag specification for a set of patterns, and implementation for detecting tags in an image. One of the most accurate tags for realtime applications. github.
tracker
Provides pose to a VR application, could be vive tracker, or in our case, one or more tags.
detection
One or more tags found in an image. Made of the 2d pixel coordinates of the corners and center, and the unique Id.