SkyTrace
In ProgressOct 2026 – Present· Apache 2.0
Drone flight-log analysis — parses PX4/ArduPilot logs, detects anomalies and answers questions with a LangGraph agent whose every claim is checked against tool outputs.



Problem
Drone flight logs are large and hard to read. SkyTrace turns a PX4 or ArduPilot log into a clear report, flags what went wrong, and lets you ask questions about the flight — with answers that never invent numbers.
Architecture
flowchart TD L1[PX4 .ulg - pyulog] --> M[Unified flight log model - pandas] L2[ArduPilot .bin - pymavlink] --> M M --> D[Anomaly detectors] D --> R[HTML / JSON / CLI reports] M --> AG[LangGraph Q&A agent - 6 tools] DOC[(Docs RAG - 3,369 chunks, bge-m3, Qdrant)] --> AG AG --> V[Answer verifier] V --> UI[FastAPI web UI - SSE chat]
What I built
- Log parsing: PX4 (
.ulg, pyulog) and ArduPilot DataFlash (.bin, pymavlink) into a unified pandas-based flight log model (attitude, GPS, battery, vibration, motors, position, flight events) - Anomaly detection: rule-based detectors (vibration, GPS quality and dropouts, battery sag, attitude tracking error, motor saturation/imbalance) plus a rolling robust z-score detector per signal and flight mode, calibrated on a SITL fault-injected labeled log set
- LangGraph Q&A agent with 6 tools (LiteLLM; local qwen2.5:7b via Ollama) and RAG over 3,369 PX4/ArduPilot documentation chunks (bge-m3 embeddings, Qdrant) with source links
- Answer verification: every number, finding ID and link in an answer is checked against tool outputs and unsupported content is flagged
- Offline single-file HTML reports (Plotly), JSON and CLI output (Typer, Rich), and a FastAPI web UI with SSE chat streaming
Results
- The local model passes 9 of 11 eval questions
- 301 pytest tests, strict mypy, ruff and GitHub Actions CI
Status
In progress. Open source under Apache 2.0.
Tech
- Python
- pandas
- LangGraph
- LiteLLM
- Ollama
- Qdrant
- bge-m3
- FastAPI
- pytest