MAVLink Telemetry Bridge¶
Phase 25B adds a read-only telemetry bridge that normalizes replayed or future live MAVLink-style telemetry into the existing AI1SAD drone telemetry ingestion endpoint.
This bridge does not control aircraft.
Supported Modes¶
- deterministic JSONL fixture replay
- local
.tlogreplay placeholder, guarded until a reviewed parser is added - optional UDP listen placeholder, disabled by default
No MAVLink dependency is loaded in this phase. The bridge uses standard Python libraries and normalizes telemetry-shaped records only.
Configuration¶
MAVLINK_BRIDGE_ENABLED=false
MAVLINK_CONNECTION=
AI1SAD_BASE_URL=http://localhost:8000
AI1SAD_DRONE_API_KEY=
MISSION_ID=mission-mavlink-demo
DRONE_ID=drone-mavlink-demo
BATCH_SIZE=25
FLUSH_INTERVAL_SECONDS=2
SOURCE_TYPE=fixture_replay
MAVLINK_UDP_LISTEN_ENABLED=false
The bridge is disabled unless MAVLINK_BRIDGE_ENABLED=true.
The AI1SAD backend must also allow drone writes with DRONE_INGEST_ENABLED=true.
Normalized Telemetry Fields¶
mission_iddrone_idtimestamplatitudelongitudealtitude_mheading_deggroundspeed_mpsbattery_percentgps_fix_qualitycamera_heading_degcamera_pitch_degsource: mavlink_bridgesource_type: fixture_replay | tlog_replay | udp_live
Unavailable values remain null. The bridge does not invent telemetry.
Validation¶
- latitude:
-90to90 - longitude:
-180to180 - altitude:
-20to1000meters - heading/camera heading:
0to360 - camera pitch:
-180to180 - battery:
0to100 - batch size:
1to100 - timestamp is required and parseable
Telemetry alone never creates a shark sighting or species observation.
Operator Console Relationship¶
The Phase 25C Drone Operator Console can display mission context that was populated by the read-only bridge when such telemetry is available through existing mission/feed workflows.
The console does not connect to MAVLink, does not transmit MAVLink messages, and does not create sightings from telemetry alone. Human-entered observations remain separate from telemetry records.