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.