# Position Calibration & Movement Limits

Use **Position Calibration** to align individual moving heads after hanging them, then narrow the group's movement without changing those alignment corrections. Settings belong to each physical device and each independent Pan/Tilt head.

<img src="https://unilighter.cc/info/user/pages/02.docs/position-calibration/position_calibration_439f462c.png" alt="Position Calibration with independent Pan and Tilt offsets, inversion, movement limits, and separate reset actions" width="808" height="443" style="width: 808px; max-width: 100%; height: auto;" />

## Align a group

1. Open a fixture's individual control page from **[Device Patch](https://unilighter.cc/info/for-ai/docs/device-patch.md)** and expand **Position Calibration**, alongside **Color Calibration**. Group pages do not expose these individual fixture settings.
2. Start with **Minimum** at `0%` and **Maximum** at `100%`. **Reset Range** restores those values without removing alignment.
3. Give the group a common position using its **[XY Pad](https://unilighter.cc/info/for-ai/docs/controls/xy-pad.md)**. Choose one fixture as your reference.
4. Adjust **Offset** on **Pan (X)** and **Tilt (Y)** for the other fixtures until they aim as intended. Offsets are signed percentage points of the full axis travel, not percentages of the narrowed range.
5. If an axis moves in the opposite direction, enable **Invert Pan** or **Invert Tilt** and refine its offset. Test a few group positions before saving the project.
6. Narrow the common trajectory using **Minimum** and **Maximum** on each axis. Use matching ranges across fixtures when you want them to follow the same trajectory.

Changes take effect immediately while preserving the scene, animation, or other source currently controlling the fixture. **Reset Alignment** clears offsets and inversion while keeping your ranges. Numeric fields accept fractional percentages; the faders provide fine adjustments. Only axes supported by the fixture appear.

## How ranges preserve alignment

The full logical XY range is mapped into the selected common trajectory. The fixture's inversion and full-travel offset then determine its individual output. Narrowing the trajectory never scales down the alignment offset.

For example, with a `20–80%` Pan trajectory:

| Group Pan | Reference fixture, no offset | Fixture with `+5%` offset |
| --- | --- | --- |
| `0%` | `20%` | `25%` |
| `50%` | `50%` | `55%` |
| `100%` | `80%` | `85%` |

These limits describe the aligned trajectory, rather than hard physical percentages for every fixture. The actual output can be shifted by its calibration. A minimum equal to the maximum fixes an axis at one point of that trajectory.

## Saved settings and control sources

- Offsets, inversion, and ranges are saved with the project and retained when changing a fixture's address, universe, or mode. Settings for temporarily absent heads remain available when that head returns.
- **[Multi-head fixtures](https://unilighter.cc/info/for-ai/docs/multi-head.md)** have independent settings for each Pan/Tilt head, with head names or numbered badges in the panel titles.
- Group controls, scenes, animations, node graphs, bindings, widgets, and remote fixture controls all use the same device calibration. Scenes and position presets keep their logical coordinates; they do not replace alignment settings.
- Releasing control returns to the fixture profile's default position with the same calibration applied. If a channel switches between position and another function such as Zoom, releasing its last active source immediately restores that calibrated position default.
- The 3D visualizer and selected fixture's angle readout use the profile's physical movement ranges unless you explicitly override them in visualizer settings. Standard Pan/Tilt ranges are used only when physical range information is absent.
- High-resolution DMX keeps its configured precision. Correction is applied to the full position before conversion to coarse and finer channels.

## Limits of calibration

Offsets and inversion compensate for constant aiming differences and reversed axes. They do not perform a full geometric solution for a tilted or rotated mounting across every beam direction. At the physical `0–100%` endpoints, a fixture may stop before the rest of the group because it cannot travel farther.

**[Simple Desk](https://unilighter.cc/info/for-ai/docs/simple-desk.md)** and other raw DMX channel writes bypass these settings. Movement limits apply to fixture position controls, rather than acting as a global physical output interlock.

