> 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/vehicle-integration/mechanical-installation.md).

# Mechanical Installation

There are 2 steps to mounting Cyclops on your aircraft:

1. Properly [#mounting-your-camera](#mounting-your-camera "mention")
2. Calculating your [#mounting-calibration](#mounting-calibration "mention")

## Mounting your camera

Your camera should be mounted under the wings or on the belly of your aircraft. The ideal mounting solution has the camera **parallel to the ground** during normal flight.

Our test flights have demonstrated that Cyclops can tolerate some amount of obstruction, but performance will degrade. Ideally your camera can see **as much of the ground as possible.**

{% hint style="warning" %}
Add vibration isolation to your mounting solution if you are mounting near a source of vibration or on a rigid surface.
{% endhint %}

### Example mounting solutions

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

Once you've settled on your mounting solution, proceed to measuring the orientation and translation of the sensor relative to your flight controller.

## Mounting Calibration

Here's a calibration walk through with a camera setup on our internal test VTOL plane (named Songbird).&#x20;

Cyclops uses attitude and relative position data from the flight controller. It is crucial to calibrate the camera relative to the flight controller for Cyclops to perform as expected.

### Measurement steps

1. Measure the **translation** between the camera and the flight controller
   1. Measure the distance on the **X axis (forward/backward)**. The camera is mounted 10 cm **behind** the flight controller.
   2. Measure the distance on the **Y axis (left/right)**. The camera and flight controller are aligned, so we have 0 m of translation.
   3. Measure the distance on the **Z axis (down/up).** The camera is mounted 12 cm **below** the flight controller.
2. Measure the orientation of the camera relative to the flight controller. *Our camera is aligned with the flight controller (pointing straight down, no rotation). We have 0 degrees of pitch, roll or yaw.*

<figure><img src="/files/JLM8xlvmtsoI8P6tXQg2" alt=""><figcaption></figcaption></figure>

### Configuration steps

{% hint style="info" %}
For those using Vozilla 2.0+ refer to [Creating a new vehicle](/gcs-software/vozilla/vehicles/creating-a-new-vehicle.md) for instructions on how to save your custom vehicle preset.
{% endhint %}

Once I have all my measurements, I use the **Vehicle Calibration** page on Vozilla to generate the calibration file for my vehicle. Our vehicle frame is in North East Down frame.

1. Select the **Custom** preset in the Vehicle Preset drop down. This gives us a blank configuration.
2. Give a name to my vehicle configuration in the Configuration Name box: *Songbird*.
3. Configure the translation:
   1. The camera is 10 cm behind the flight controller, so I **input -0.1 in the X (Forward) box**.
   2. The camera is aligned with the FC, I leave the Y input box at 0.
   3. The camera is 12 cm below the FC, so I **input 0.12 in the Z (Down) box.**
4. Configure the rotation. *We don't have any rotation, so I leave all the rotation fields at zero.*
5. Visually inspect the position of the VPS (green) relative to the flight controller (red). The translation and rotation should match with your setup on your vehicle.
6. Once everything looks correct, **click the Save to Cloud button**.

{% hint style="info" %}
You need to save the vehicle configuration. If your vehicle is connected to Vozilla, the configuration will be uploaded automatically.&#x20;
{% endhint %}

<figure><img src="/files/kbt9fllRMdMDJZ4PDh6N" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Before flying, verify that the correct vehicle configuration is selected in the dropdown menu.

<p align="center"><img src="/files/mZzx77MM66b9hWXSEfKx" alt=""></p>
{% endhint %}
