> For the complete documentation index, see [llms.txt](https://docs.theseus.us/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.theseus.us/cyclops/uav-integration/camera-calibration.md).

# Camera calibration

This page cover the two methods for calibrating your Cyclops camera module.

## Vozilla calibration tool

The Camera page in Vozilla lets you generate a calibration file (camera intrinsics) for your camera. A good calibration improves Cyclops tracking accuracy and reduces distortion, especially at the edges of the image.

{% hint style="warning" %}
**Required accuracy:** the focal length (fx, fy) and the principal point (cx, cy) must each be within 3 px of their true values.
{% endhint %}

#### Calibration grid

We use a 7×8 asymmetric circle grid as a calibration target. We have included a .png file of this geometry below.

{% file src="/files/8HKHIV0rFIk4vmsDu3Dv" %}

For thermal cameras, we’ve found it works best to 3D print or laser cut the grid and place it on a uniform, warm surface so the pattern is clearly visible. A .STEP file for this grid is included below.

{% file src="/files/YUxFEpZH5geflfCvGavu" %}

{% hint style="info" %}
Placing the 3D print against a monitor works well for thermal cameras, providing a consistent warm background.
{% endhint %}

{% stepper %}
{% step %}

### Start a new calibration

Connect your camera. In Vozilla, navigate to the *Camera* page and click **+ New Calibration.** Confirm that the information is correct for your camera module and click **CONTINUE**.

<figure><img src="https://2060891120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhzvlBbeiwnrjdGDAaBcQ%2Fuploads%2FhkYPnpuRuA3vX6qlepiO%2FScreenshot%202026-09-03%20133734.png?alt=media&amp;token=4cc2e7e6-b370-4e26-b4e4-cc3811f70449" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Capture frames

Position the calibration grid beneath the camera. Move the camera through a variety of:

* Angles (tilt and rotate)
* Positions (across the full frame, including corners)
* Distances (close, medium, far)

For best results, capture 20+ frames where the pattern is cleanly detected.

<figure><img src="https://2060891120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhzvlBbeiwnrjdGDAaBcQ%2Fuploads%2FtO7u5GP7p6erHeHrJOBB%2FCamCal.gif?alt=media&amp;token=5202e655-3c60-4cec-a1d6-e4237a1a41fb" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="warning" %}
If your target is white dots on a black background, enable **Inverted Pattern** so detection works correctly.
{% endhint %}
{% endstep %}

{% step %}

### Compute and save

After capturing enough frames, Vozilla will prompt you to save the calibration. We recommend using a descriptive name (helpful if you switch cameras or lenses). The saved calibration will automatically become the active calibration on your device.
{% endstep %}

{% step %}

### Verify quality

After saving, use the **Distortion** toggle (bottom-right of the camera view) to preview the effect of the calibration. A good calibration reduces warping and keeps lines and features looking consistent across the frame.
{% endstep %}
{% endstepper %}

## Camera calibration script

Alternatively, you can create a camera calibration using the script below:

{% content-ref url="/pages/bXCUgw6AgZEN1J1MFX05" %}
[Camera calibration script](/cyclops/developers/camera-calibration-script.md)
{% endcontent-ref %}

We don’t recommend manually editing calibration values or entering custom intrinsics unless you’re an advanced user. If needed, you can also create a calibration by selecting a starting point from the Camera Presets dropdown.

{% hint style="success" %}
Your Cyclops camera is calibrated and the calibration file is active.
{% endhint %}
