Skip to content

feat(analysis): add driver ghost-track gate validator and A/B/AB radar interference check - #232

Open
dieterolson wants to merge 1 commit into
open-flight:mainfrom
dieterolson:feat/truth-data-gate-and-interference-check
Open

feat(analysis): add driver ghost-track gate validator and A/B/AB radar interference check#232
dieterolson wants to merge 1 commit into
open-flight:mainfrom
dieterolson:feat/truth-data-gate-and-interference-check

Conversation

@dieterolson

Copy link
Copy Markdown
Contributor

Summary

This PR implements truth-data validation tooling for driver launch angles and mutual RF radar interference testing as outlined in Issues #21 and #10:

1. Driver Ghost-Track Gate Validator (scripts/analysis/validate_ghost_track_gate.py)

  • Problem: In high-speed driver shots (140-180 mph ball speed on OPS243), the 60 GHz radar tracker can occasionally lock onto slower clubhead or reflection artifacts (50-65 mph), yielding severe launch angle bias (+3.39° bias, 3.55° MAE).
  • Solution: Implements the ghost-track rejection gate (track_speed < min_speed_ratio * ops_ball_speed) and OPS-guided fast-track recovery algorithm.
  • Evaluates gating accuracy, false positive rejection, fast-track recovery rate, and launch angle error improvements before vs after gating.
  • Includes synthetic truth dataset generator, CLI interface, and Markdown/JSON reporting.
  • Comprehensive unit tests in tests/test_validate_ghost_track_gate.py (10 tests).

2. Radar Interference Protocol Analysis (scripts/analysis/radar_interference_check.py)

  • Protocol: Implements the A/B/AB test protocol to evaluate mutual RF interference between OpenFlight (OPS243-A 24 GHz CW Doppler) and reference launch monitor radars (e.g. Rapsodo MLM2 Pro K-band radar) in the same enclosure:
    • Phase A: OpenFlight only baseline
    • Phase B: Reference device only baseline
    • Phase AB: Simultaneous joint operation
  • Computes spin SNR degradation, read rate deltas, ball speed variance, and trigger jitter.
  • Automated severity classification (clean, mild, moderate, severe) and protocol recommendations (e.g. separation distance or alternating-shot capture).
  • Comprehensive unit tests in tests/test_radar_interference_check.py (6 tests).

Verification

  • uv run pytest tests/test_validate_ghost_track_gate.py tests/test_radar_interference_check.py -v (16 passed in 2.51s)
  • uv run ruff check scripts/analysis/validate_ghost_track_gate.py scripts/analysis/radar_interference_check.py tests/test_validate_ghost_track_gate.py tests/test_radar_interference_check.py (all passed)
  • uv run ruff format --check scripts/analysis/validate_ghost_track_gate.py scripts/analysis/radar_interference_check.py tests/test_validate_ghost_track_gate.py tests/test_radar_interference_check.py (100% formatted)

@dieterolson
dieterolson requested a review from jewbetcha as a code owner August 21, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant