> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/opentrack/opentrack/llms.txt
> Use this file to discover all available pages before exploring further.

# Easy Tracker

> Simplified point tracking with flexible model configurations

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.

<Info>
  Easy Tracker offers multiple PnP solver options and supports custom 3, 4, and 5-point models, making it more flexible than the standard PointTracker.
</Info>

## 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

<Note>
  Same hardware requirements as PointTracker, but with more flexibility in LED arrangement.
</Note>

## Setup Instructions

<Steps>
  <Step title="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.
  </Step>

  <Step title="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
  </Step>

  <Step title="Configure Camera">
    Set camera parameters:

    ```yaml theme={null}
    Camera: Select your device
    Resolution X: 640
    Resolution Y: 480
    FPS: 30-60
    Field of View: 56 degrees
    ```
  </Step>

  <Step title="Set Blob Detection Parameters">
    Adjust blob detection for your LEDs:

    ```yaml theme={null}
    Min Blob Size: 4 pixels
    Max Blob Size: 15 pixels
    ```

    View the preview to verify only LEDs are detected.
  </Step>

  <Step title="Enter Model Coordinates">
    Input your measured LED positions:

    **For 3-point custom:**

    ```yaml theme={null}
    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:**

    ```yaml theme={null}
    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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Configure Deadzone">
    Set deadzone for steady aiming:

    ```yaml theme={null}
    Deadzone Half Edge Size: 1-5 pixels
    ```

    Larger values reduce jitter but may feel less responsive.
  </Step>

  <Step title="Enable Auto-Center (Optional)">
    Configure automatic centering:

    ```yaml theme={null}
    Auto Center: true
    Auto Center Timeout: 1000ms
    ```

    Automatically centers view when you stop moving for the timeout period.
  </Step>
</Steps>

## Configuration Options

### Camera Settings

| Option           | Default | Description          |
| ---------------- | ------- | -------------------- |
| **Camera Name**  | -       | Select camera device |
| **Resolution X** | 640     | Width in pixels      |
| **Resolution Y** | 480     | Height in pixels     |
| **FPS**          | 30      | Target framerate     |
| **FOV**          | 56°     | Camera field of view |

### Blob Detection

| Option            | Default | Description                     |
| ----------------- | ------- | ------------------------------- |
| **Min Blob Size** | 4       | Minimum blob diameter in pixels |
| **Max Blob Size** | 15      | Maximum blob diameter in pixels |

### Model Configuration

| Option                 | Default | Description                     |
| ---------------------- | ------- | ------------------------------- |
| **Custom Model Three** | true    | Enable 3-point custom model     |
| **Custom Model Four**  | false   | Enable 4-point model            |
| **Custom Model Five**  | false   | Enable 5-point model            |
| **Clip Model Three**   | false   | Enable clip-style 3-point model |

### Model Vertices (Example for 3-point)

| Vertex    | X | Y | Z | Description            |
| --------- | - | - | - | ---------------------- |
| **Top**   | 0 | 0 | 0 | Top/front LED position |
| **Right** | 0 | 0 | 0 | Right LED position     |
| **Left**  | 0 | 0 | 0 | Left LED position      |

All coordinates in millimeters from origin point.

### Solver Settings

| Option                  | Default       | Description                      |
| ----------------------- | ------------- | -------------------------------- |
| **PnP Solver**          | SOLVEPNP\_P3P | Pose estimation algorithm        |
| **Deadzone Half Edge**  | 1             | Deadzone size in pixels          |
| **Auto Center**         | true          | Enable automatic centering       |
| **Auto Center Timeout** | 1000ms        | Time before auto-center triggers |
| **Debug**               | false         | Show debug information           |

<Accordion title="PnP Solver Comparison">
  | Solver    | Points    | Speed     | Accuracy  | Use Case                  |
  | --------- | --------- | --------- | --------- | ------------------------- |
  | P3P       | Exactly 3 | Very Fast | Good      | Standard 3-point tracking |
  | ITERATIVE | Any       | Medium    | Good      | General purpose           |
  | EPNP      | 4+        | Fast      | Very Good | 4 or 5 point models       |
  | IPPE      | 4+        | Fast      | Good      | Planar arrangements       |
  | SQPNP     | Any       | Medium    | Very Good | When accuracy critical    |
</Accordion>

## 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

<AccordionGroup>
  <Accordion title="Wrong points detected">
    * 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
  </Accordion>

  <Accordion title="Pose jumps or flips">
    * 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
  </Accordion>

  <Accordion title="Tracking unstable or jittery">
    * Increase deadzone size
    * Verify LEDs are securely mounted
    * Check for camera focus issues
    * Use higher camera resolution
    * Ensure consistent LED brightness
    * Check mounting stability
  </Accordion>

  <Accordion title="Solver fails / No pose solution">
    * 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
  </Accordion>

  <Accordion title="Auto-center not working">
    * Verify auto-center is enabled
    * Check timeout setting (try increasing)
    * Ensure you're actually stopping movement
    * Debug mode shows center status
  </Accordion>
</AccordionGroup>

## Performance Tips

<CardGroup cols={2}>
  <Card title="Optimize Speed" icon="gauge-high">
    * Use P3P solver for 3-point models (fastest)
    * Lower camera resolution (640x480 sufficient)
    * Reduce FPS if CPU limited
    * Minimize blob size range
  </Card>

  <Card title="Improve Accuracy" icon="crosshairs">
    * Use 4 or 5-point model
    * Increase camera resolution
    * Larger LED spacing in model
    * Use EPNP or SQPNP solver
  </Card>

  <Card title="Better Stability" icon="mountain">
    * Increase deadzone size
    * Use 4+ point model
    * Ensure rigid LED mounting
    * Use consistent LED brightness
  </Card>

  <Card title="Wider Range" icon="expand">
    * Use 5-point model
    * Space LEDs widely
    * Use ITERATIVE solver
    * Increase max blob size
  </Card>
</CardGroup>

## Comparison with PointTracker

| Feature          | Easy Tracker    | PointTracker |
| ---------------- | --------------- | ------------ |
| Point models     | 3, 4, or 5      | 3 only       |
| PnP solvers      | 5+ options      | Fixed        |
| Kalman filter    | Always on       | Optional     |
| Auto-center      | Built-in        | No           |
| Setup complexity | Slightly easier | Standard     |
| Performance      | Very similar    | Very similar |
| Flexibility      | More flexible   | More 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

* [PointTracker](/trackers/pointtracker) - Alternative 3-point tracker
* [Hardware Guide](/trackers/hardware) - Building LED arrays
* [Wiimote Tracker](/trackers/wiimote) - Alternative IR tracking hardware
