mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-22 14:21:14 +00:00
[AZ-219] Scaffold onboard runtime project
Add the initial source, test, infrastructure, CI, configuration, and evidence-path scaffold so dependent implementation tasks have stable package and runtime boundaries. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1 @@
|
||||
"""Source-root package marker for editable installs."""
|
||||
@@ -0,0 +1 @@
|
||||
"""Anchor verification component."""
|
||||
@@ -0,0 +1,10 @@
|
||||
"""Public anchor verification interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class AnchorVerifier(Protocol):
|
||||
"""Verifies retrieved candidates against camera observations."""
|
||||
|
||||
def verify(self, frame: Any, candidate: Any) -> Any:
|
||||
"""Return an anchor decision for one candidate."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public anchor verification type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
AnchorDecisionLike = Any
|
||||
@@ -0,0 +1 @@
|
||||
"""BASALT VIO adapter component."""
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Public BASALT VIO adapter interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class VioAdapter(Protocol):
|
||||
"""Processes frame and telemetry inputs into relative VIO state."""
|
||||
|
||||
def initialize(self) -> None:
|
||||
"""Initialize adapter resources."""
|
||||
|
||||
def process(self, frame: Any, telemetry: Any) -> Any:
|
||||
"""Process one synchronized frame/telemetry pair."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public BASALT VIO type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
VioStatePacketLike = Any
|
||||
@@ -0,0 +1 @@
|
||||
"""Camera ingest and calibration component."""
|
||||
@@ -0,0 +1,10 @@
|
||||
"""Public camera ingest interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class FrameProvider(Protocol):
|
||||
"""Source of navigation frames for downstream localization components."""
|
||||
|
||||
def next_frame(self) -> Any:
|
||||
"""Return the next frame packet."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public camera ingest type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
FramePacketLike = Any
|
||||
@@ -0,0 +1 @@
|
||||
"""Flight data recorder and observability component."""
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Public flight recorder interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class FlightRecorder(Protocol):
|
||||
"""Append-only event recorder for runtime evidence."""
|
||||
|
||||
def append_event(self, event: Any) -> None:
|
||||
"""Persist one FDR event."""
|
||||
|
||||
def export(self) -> Any:
|
||||
"""Export recorded evidence for post-flight analysis."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public FDR type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
FdrEventLike = Any
|
||||
@@ -0,0 +1 @@
|
||||
"""MAVLink and GCS integration component."""
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Public MAVLink gateway interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class MavlinkGateway(Protocol):
|
||||
"""Bridges FC telemetry inputs and localization GPS_INPUT outputs."""
|
||||
|
||||
def subscribe_telemetry(self) -> Any:
|
||||
"""Subscribe to flight-controller telemetry."""
|
||||
|
||||
def emit_gps_input(self, estimate: Any) -> None:
|
||||
"""Emit one localization estimate to the flight controller."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public MAVLink/GCS type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
TelemetrySampleLike = Any
|
||||
@@ -0,0 +1,3 @@
|
||||
# BASALT Bridge
|
||||
|
||||
Reserved for native BASALT integration code wrapped by `basalt_vio_adapter`.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Feature Matching Bridge
|
||||
|
||||
Reserved for native feature extraction, matching, and RANSAC acceleration code.
|
||||
@@ -0,0 +1,3 @@
|
||||
# TensorRT Bridge
|
||||
|
||||
Reserved for Jetson/TensorRT descriptor inference integrations.
|
||||
@@ -0,0 +1 @@
|
||||
"""Safety and anchor wrapper component."""
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Public localization state-machine interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class LocalizationStateMachine(Protocol):
|
||||
"""Coordinates VIO propagation and anchor promotion decisions."""
|
||||
|
||||
def update_vio(self, vio_state: Any) -> Any:
|
||||
"""Update the state machine with a VIO state packet."""
|
||||
|
||||
def consider_anchor(self, anchor_decision: Any) -> Any:
|
||||
"""Evaluate a verified anchor decision."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public safety wrapper type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
PositionEstimateLike = Any
|
||||
@@ -0,0 +1 @@
|
||||
"""Offline satellite retrieval and synchronization component."""
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Public satellite service interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class SatelliteService(Protocol):
|
||||
"""Retrieves offline VPR candidates from mission cache data."""
|
||||
|
||||
def load_index(self) -> None:
|
||||
"""Load the local descriptor index."""
|
||||
|
||||
def retrieve(self, frame: Any) -> list[Any]:
|
||||
"""Return candidate anchor records for one frame."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public satellite service type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
VprCandidateLike = Any
|
||||
@@ -0,0 +1 @@
|
||||
"""Shared runtime foundation packages."""
|
||||
@@ -0,0 +1 @@
|
||||
"""Runtime configuration helper namespace."""
|
||||
@@ -0,0 +1,3 @@
|
||||
"""Shared DTO and interface contract namespace."""
|
||||
|
||||
CONTRACT_VERSION = "0.1.0"
|
||||
@@ -0,0 +1 @@
|
||||
"""Shared error envelope namespace."""
|
||||
@@ -0,0 +1 @@
|
||||
"""Geospatial geometry helper namespace."""
|
||||
@@ -0,0 +1 @@
|
||||
"""Structured telemetry and health metadata namespace."""
|
||||
@@ -0,0 +1 @@
|
||||
"""Clock-domain and timestamp helper namespace."""
|
||||
@@ -0,0 +1 @@
|
||||
"""Tile cache and generated tile lifecycle component."""
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Public tile manager interfaces."""
|
||||
|
||||
from typing import Any, Protocol
|
||||
|
||||
|
||||
class TileManager(Protocol):
|
||||
"""Validates and serves local cache tile records."""
|
||||
|
||||
def validate_cache(self) -> None:
|
||||
"""Validate local cache metadata and signatures."""
|
||||
|
||||
def get_tile_window(self, footprint: Any) -> list[Any]:
|
||||
"""Return tiles intersecting a requested footprint."""
|
||||
@@ -0,0 +1,5 @@
|
||||
"""Public tile manager type aliases."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
CacheTileRecordLike = Any
|
||||
Reference in New Issue
Block a user