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:- Optical
- Inertial
- Network
- VR/AR
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 neededTracker 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:Common Tracker Settings
Video Feed Display
Optical trackers can display camera feed:Exposure and Gain
For optical trackers, proper camera settings are critical:Point Extraction
Optical trackers typically use threshold-based point extraction:- Apply brightness threshold
- Find connected components (blobs)
- Calculate blob centroids
- 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
Tracking is jittery
Tracking is jittery
- Check tracker update rate (should be stable)
- Verify lighting conditions (for optical trackers)
- Enable filtering (see Filters guide)
- Check for USB bandwidth issues
Tracking drifts over time
Tracking drifts over time
- Inertial drift is normal for IMU trackers
- Enable fusion with optical tracking if possible
- Periodically recenter
- Check for magnetic interference (IMU trackers)
Tracker not detected
Tracker not detected
- Verify hardware is connected
- Check device drivers are installed
- Try different USB ports
- Check OpenTrack logs for error messages
Data is inverted or swapped
Data is inverted or swapped
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