Skip to main content
Trackers are input modules that provide 6DOF (degrees of freedom) head position and rotation data. OpenTrack supports a wide variety of tracking technologies.

Tracker Module System

OpenTrack uses a plugin-based tracker system:

Module Selection

Trackers are selected through the module settings:

Available Trackers

OpenTrack includes support for many tracking technologies:

PointTracker (pt)

Uses webcam to track LEDs or reflective markers.Best for: DIY LED tracking setups, TrackIR alternativesRequirements:
  • Webcam (higher resolution = better accuracy)
  • 3 LED or reflective points on headset
  • Good lighting conditions

Aruco Markers

Tracks printed ArUco fiducial markers.Best for: Quick testing without special hardwareRequirements:
  • Webcam
  • Printed ArUco marker attached to headset

Easy Tracker

Face tracking using computer vision.Best for: No additional hardware needed

Tracker Initialization

When a tracker starts, it goes through this initialization sequence:
1

Module Loading

The tracker plugin is loaded from the shared library:
2

Initialization

The tracker’s start_tracker method is called:
3

Data Streaming

The data() method is called at ~250Hz:

Data Format

All trackers must provide data in OpenTrack’s standard format:
Translation units: Centimeters Rotation units: Degrees Coordinate system: Right-handed

Axis Definitions

  • TX: Left (-) / Right (+)
  • TY: Down (-) / Up (+)
  • TZ: Forward (-) / Backward (+)
  • Yaw: Left (-) / Right (+)
  • Pitch: Down (-) / Up (+)
  • Roll: Left (-) / Right (+)

Centering Support

Trackers can optionally handle centering internally:

Centering Flow

Tracker Dialog

Each tracker can provide a configuration dialog:
The dialog receives a pointer to the active tracker instance for live configuration updates.

Common Tracker Settings

Video Feed Display

Optical trackers can display camera feed:

Exposure and Gain

For optical trackers, proper camera settings are critical:
Low exposure (1-5ms) and high gain provide best results for LED tracking. Automatic exposure often causes tracking issues.

Point Extraction

Optical trackers typically use threshold-based point extraction:
  1. Apply brightness threshold
  2. Find connected components (blobs)
  3. Calculate blob centroids
  4. Match points to 3D model

Tracker Performance

The pipeline runs at ~250Hz (4ms interval):
Trackers should not block in the data() method. Use a separate thread for computation and return the latest data.

Error Handling

Trackers can report errors during initialization:

Creating Custom Trackers

To implement a custom tracker:
1

Implement ITracker interface

2

Implement dialog (optional)

3

Implement metadata

4

Register plugin

Troubleshooting

  1. Check tracker update rate (should be stable)
  2. Verify lighting conditions (for optical trackers)
  3. Enable filtering (see Filters guide)
  4. Check for USB bandwidth issues
  1. Inertial drift is normal for IMU trackers
  2. Enable fusion with optical tracking if possible
  3. Periodically recenter
  4. Check for magnetic interference (IMU trackers)
  1. Verify hardware is connected
  2. Check device drivers are installed
  3. Try different USB ports
  4. Check OpenTrack logs for error messages
Use axis mapping and inversion in Configuration:

Next Steps

Output Setup

Configure game/simulator output protocols

Filters

Add smoothing and noise reduction

Mapping Curves

Fine-tune tracking response