Skip to content
← all projects

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.

SkyTrace analysis view: a timeline of flight modes and findings, a list of motor and vibration findings, and the motor-output plot behind one saturation warning.
SkyTrace upload page: drop a PX4 .ulg or ArduPilot .bin log, or open one of four sample flights (GPS loss, weak motor, low battery, short VTOL hop).
SkyTrace report for a short VTOL log: flight data summary, findings timeline, and a panel explaining that chat about your own logs runs locally with Ollama.

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]
Architecture diagram

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