Technical Reference

Architecture

The driver is asynchronous, using asyncio to manage the INDI state machine and AUX protocol communication.

  • celestron_indi_driver.py: INDI state machine and property mapping.

  • celestron_aux_driver.py: AUX protocol handling and packet management.

  • alignment.py: SVD-based coordinate transformations.

Tracking Logic

The driver uses an active tracking loop.

Velocity Estimation

The first derivative of Alt/Az positions is estimated using a central difference: $\(\omega = \frac{P(T + dt) - P(T - dt)}{2 \cdot dt}\)$

Noise Reduction

To reduce quantization noise from the 24-bit encoder steps, the driver employs:

  1. 30-second window: Used for sidereal rates.

  2. Floating-Point Encoders: Internal transforms use floats to maintain precision between physical steps.

  3. Sub-step Rate Estimation: Velocity is calculated using floating-point values before conversion to 24-bit hardware commands.

Drift Analysis

A larger time window (up to 30s) reduces the impact of rounding errors, maintaining stability during tracking.