mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-22 04:21:12 +00:00
5e52779056bc0ce939579be456d71b2550255880
First building block of Epic AZ-835. Pure function that consumes an ArduPilot binary tlog and returns a RouteSpec (waypoints + per-waypoint coverage radius + provenance) suitable for posting to satellite-provider's POST /api/satellite/route endpoint. Pipeline: - Load GPS fixes via existing load_tlog_ground_truth (AZ-697). - Trim leading + trailing rows below takeoff thresholds (speed >= 2 m/s AND AGL >= 5 m by default; configurable). - Coarsen to <= max_waypoints via iterative Douglas-Peucker on the local-ENU projection (WgsConverter.latlonalt_to_local_enu, AZ-279). DP tolerance is caller-supplied or binary-searched (<= 32 iterations, <= 1 m convergence). Public surface (re-exported from replay_input/__init__.py): - RouteSpec (frozen, slots, with provenance fields). - RouteExtractionError (subclass of ReplayInputAdapterError). - extract_route_from_tlog(). Tests: 14 unit tests cover AC-1..AC-10 plus edge cases (custom DP tolerance, invalid inputs, error hierarchy, too-short segment). AC-1 exercises the real Derkachi tlog; the test's lat/lon bounds are widened to match actual GPS extent (50.0800..50.0840 / 36.1070..36.1145) — the AZ-836 spec's tighter IMU-derived bounds (50.0808..50.0832 / 36.1070..36.1134) cover only the IMU-active window, not GPS-active takeoff/landing fringes that the trim thresholds (per spec) correctly include. See _docs/03_implementation/batch_106_cycle3_report.md "Spec drift surfaced" for the full note. Semantics decision documented inline: max_waypoints is enforced only in auto-tolerance mode; with an explicit DP tolerance the result reflects that exact tolerance. AZ-836 moved to done/. Co-authored-by: Cursor <cursoragent@cursor.com>
gps-denied-onboard
Companion onboard system for GPS-denied UAV navigation. Detailed design and architecture documentation lives under _docs/.
Quick links
- Problem statement:
_docs/00_problem/problem.md - Architecture:
_docs/02_document/architecture.md - Module layout (file ownership):
_docs/02_document/module-layout.md - Component docs:
_docs/02_document/components/ - Test specs:
_docs/02_document/tests/ - Deployment:
_docs/02_document/deployment/
Local development
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest -q tests/unit/
For full Tier-1 integration via Docker, see _docs/02_document/deployment/containerization.md.
Build matrix
Four binaries built from this codebase: airborne, research, operator-orchestrator, replay-cli. CMake BUILD_* flags gate component inclusion per binary — see cmake/build_options.cmake and _docs/02_document/module-layout.md § Build-Time Exclusion Map.
Description
Languages
Markdown
100%