Skip to main content
Easy Tracker is a streamlined version of PointTracker with a simplified interface and flexible model configurations. It tracks bright points (typically IR LEDs) arranged in 3, 4, or 5-point models, making it versatile for different hardware setups.

How It Works

Easy Tracker detects bright blobs in the camera image and matches them to a predefined 3D point model. Using OpenCV’s PnP (Perspective-n-Point) solver, it calculates the head’s 6DOF pose. The tracker includes a Kalman filter for smooth, jitter-free output.
Easy Tracker offers multiple PnP solver options and supports custom 3, 4, and 5-point models, making it more flexible than the standard PointTracker.

Requirements

Hardware

  • Camera: PS3 Eye camera or webcam with IR filter removed
  • IR LEDs: 3-5 infrared LEDs (850nm or 940nm)
  • Power source: Battery pack for LEDs (3-5V)
  • LED mounting: Cap, clip, or headset for LEDs

Software

  • OpenCV (included with OpenTrack)
  • Camera drivers
Same hardware requirements as PointTracker, but with more flexibility in LED arrangement.

Setup Instructions

1

Choose Your Model Type

Easy Tracker supports multiple LED configurations:
  • 3-point model: Standard triangle (cap or clip style)
  • 4-point model: Quad configuration for better stability
  • 5-point model: Maximum accuracy and rotation range
  • Clip model: Specialized 3-point clip configuration
Select your model type in tracker settings.
2

Build LED Array

Create your LED array according to chosen model:For 3-point model:
  • Arrange 3 LEDs in asymmetric triangle
  • Measure positions relative to center point
  • Record X, Y, Z coordinates in millimeters
For 4-point model:
  • Arrange 4 LEDs with at least one out of plane
  • Ensure no 3 points are collinear
  • Measure all positions
For 5-point model:
  • Create extended configuration
  • Use widely spaced points for best results
  • Measure positions carefully
3

Configure Camera

Set camera parameters:
Camera: Select your device
Resolution X: 640
Resolution Y: 480
FPS: 30-60
Field of View: 56 degrees
4

Set Blob Detection Parameters

Adjust blob detection for your LEDs:
Min Blob Size: 4 pixels
Max Blob Size: 15 pixels
View the preview to verify only LEDs are detected.
5

Enter Model Coordinates

Input your measured LED positions:For 3-point custom:
Vertex Top (X, Y, Z): e.g., (0, 50, 0)
Vertex Right (X, Y, Z): e.g., (40, -30, -20)
Vertex Left (X, Y, Z): e.g., (-40, -30, -20)
For 4-point:
Vertex Top (X, Y, Z)
Vertex Right (X, Y, Z)
Vertex Left (X, Y, Z)
Vertex Center (X, Y, Z)
Coordinates are in millimeters, origin is at one reference point.
6

Select PnP Solver

Choose pose estimation algorithm:
  • SOLVEPNP_P3P: Fast, requires exactly 3 points
  • SOLVEPNP_ITERATIVE: Robust, works with any number of points
  • SOLVEPNP_EPNP: Efficient for 4+ points
  • SOLVEPNP_IPPE: Good for planar configurations
Default P3P works well for 3-point models.
7

Configure Deadzone

Set deadzone for steady aiming:
Deadzone Half Edge Size: 1-5 pixels
Larger values reduce jitter but may feel less responsive.
8

Enable Auto-Center (Optional)

Configure automatic centering:
Auto Center: true
Auto Center Timeout: 1000ms
Automatically centers view when you stop moving for the timeout period.

Configuration Options

Camera Settings

OptionDefaultDescription
Camera Name-Select camera device
Resolution X640Width in pixels
Resolution Y480Height in pixels
FPS30Target framerate
FOV56°Camera field of view

Blob Detection

OptionDefaultDescription
Min Blob Size4Minimum blob diameter in pixels
Max Blob Size15Maximum blob diameter in pixels

Model Configuration

OptionDefaultDescription
Custom Model ThreetrueEnable 3-point custom model
Custom Model FourfalseEnable 4-point model
Custom Model FivefalseEnable 5-point model
Clip Model ThreefalseEnable clip-style 3-point model

Model Vertices (Example for 3-point)

VertexXYZDescription
Top000Top/front LED position
Right000Right LED position
Left000Left LED position
All coordinates in millimeters from origin point.

Solver Settings

OptionDefaultDescription
PnP SolverSOLVEPNP_P3PPose estimation algorithm
Deadzone Half Edge1Deadzone size in pixels
Auto CentertrueEnable automatic centering
Auto Center Timeout1000msTime before auto-center triggers
DebugfalseShow debug information
SolverPointsSpeedAccuracyUse Case
P3PExactly 3Very FastGoodStandard 3-point tracking
ITERATIVEAnyMediumGoodGeneral purpose
EPNP4+FastVery Good4 or 5 point models
IPPE4+FastGoodPlanar arrangements
SQPNPAnyMediumVery GoodWhen accuracy critical

Advanced Features

Kalman Filter

Easy Tracker includes a built-in Kalman filter that:
  • Smooths position and rotation outputs
  • Predicts pose during brief point occlusions
  • Reduces jitter from blob detection noise
  • Automatically adapts to movement speed
The filter is always enabled and tuned for responsive yet smooth tracking.

Multiple Point Models

Support for different point counts provides flexibility: 3-point models:
  • Simplest to build
  • Lowest computational cost
  • Good for most use cases
  • May have pose ambiguity at extreme angles
4-point models:
  • Eliminates most pose ambiguity
  • More robust tracking
  • Better for extreme head rotations
  • Slightly more complex to build
5-point models:
  • Maximum tracking stability
  • Best rotation range
  • Most robust to point occlusion
  • Requires careful LED placement

Vertex Matching

The tracker uses sophisticated vertex matching to identify which detected blob corresponds to which model point:
  1. Distance-based matching: Compares blob positions to expected positions
  2. Geometry validation: Ensures detected points form valid configuration
  3. Temporal consistency: Uses previous frame to resolve ambiguities
  4. Fallback strategies: Multiple matching algorithms for robustness

Troubleshooting

  • Adjust min/max blob size to filter out false detections
  • Check for reflections in camera view
  • Increase LED brightness relative to background
  • Reduce threshold if LEDs too dim
  • Block windows/lights causing reflections
  • Verify model coordinates are accurate
  • Check that model is asymmetric (not symmetric triangle)
  • Try different PnP solver (ITERATIVE more robust)
  • Increase blob size constraints
  • Ensure LEDs are rigidly mounted
  • Increase deadzone size
  • Verify LEDs are securely mounted
  • Check for camera focus issues
  • Use higher camera resolution
  • Ensure consistent LED brightness
  • Check mounting stability
  • Verify at least minimum points detected (3 for P3P)
  • Check model coordinates are entered correctly
  • Try different PnP solver
  • Ensure model points aren’t collinear
  • Check that model scale is reasonable
  • Verify auto-center is enabled
  • Check timeout setting (try increasing)
  • Ensure you’re actually stopping movement
  • Debug mode shows center status

Performance Tips

Optimize Speed

  • Use P3P solver for 3-point models (fastest)
  • Lower camera resolution (640x480 sufficient)
  • Reduce FPS if CPU limited
  • Minimize blob size range

Improve Accuracy

  • Use 4 or 5-point model
  • Increase camera resolution
  • Larger LED spacing in model
  • Use EPNP or SQPNP solver

Better Stability

  • Increase deadzone size
  • Use 4+ point model
  • Ensure rigid LED mounting
  • Use consistent LED brightness

Wider Range

  • Use 5-point model
  • Space LEDs widely
  • Use ITERATIVE solver
  • Increase max blob size

Comparison with PointTracker

FeatureEasy TrackerPointTracker
Point models3, 4, or 53 only
PnP solvers5+ optionsFixed
Kalman filterAlways onOptional
Auto-centerBuilt-inNo
Setup complexitySlightly easierStandard
PerformanceVery similarVery similar
FlexibilityMore flexibleMore mature

Tips for Best Results

  1. Model Design: Use asymmetric arrangements - avoid regular triangles or rectangles
  2. LED Spacing: Wider spacing = better accuracy, aim for 80-120mm between points
  3. Solver Selection: Start with P3P, switch to ITERATIVE if you get pose flips
  4. Calibration: Measure LED positions accurately - 1mm error affects results
  5. Mounting: Ensure LEDs don’t flex or move relative to each other
  6. Testing: Use debug mode to verify point detection before finalizing setup

See Also