Initial travler-rotor library scaffolding

Extract Gabe Emerson's Trav'ler rotor scripts into a proper Python
library with firmware protocol abstraction (HAL 2.05 + HAL 0.0.00),
Hamlib rotctld TCP server, Click CLI, and isolated leap-frog algorithm
with the elevation copy-paste bug fixed.
This commit is contained in:
Ryan Malloy 2026-02-11 04:10:17 -07:00
commit c93bbef26d
17 changed files with 1374 additions and 0 deletions

41
docs/bugs.md Normal file
View file

@ -0,0 +1,41 @@
# Known Bugs in Original Code
## Leap-Frog Elevation Bug
**Location:** `Trav-ler-Rotor-For-HAL-2.05/travler_rotor.py` lines 98-105
**Issue:** The elevation delta section of the leap-frog algorithm modifies
`target_az` instead of `target_el`. This is a copy-paste error from the
azimuth section above it.
**Original code (lines 90-105):**
```python
# Azimuth compensation (correct)
if target_az - current_az > 2:
target_az+=1
elif target_az - current_az < -2:
target_az-=1
elif target_az - current_az > 1:
target_az+=0.5
elif target_az - current_az < -1:
target_az-=0.5
# Elevation compensation (BUG: modifies target_az instead of target_el)
if target_el - current_el > 2:
target_az+=1 # <-- should be target_el
elif target_el - current_el < -2:
target_az-=1 # <-- should be target_el
elif target_el - current_el > 1:
target_az+=0.5 # <-- should be target_el
elif target_el - current_el < -1:
target_az-=0.5 # <-- should be target_el
```
**Impact:**
- Elevation leap-frog compensation was never applied, so the dish would
lag behind in elevation during fast satellite passes
- Azimuth received double compensation (its own delta + the elevation delta),
causing over-correction on the azimuth axis
**Fix:** In `travler_rotor.leapfrog.apply_leapfrog()`, the elevation
compensation correctly modifies `target_el`.