Skip to content

Repository files navigation

DeLOG

DéLOG

DéLOG is a fast, GPU-accelerated drone flight-log and live-telemetry analyzer. It supports PX4 ULog, ArduPilot BIN, and MAVLink telemetry logs from QGroundControl or Mission Planner, and when a format or a derived signal isn't built in, you extend it in Python - both file parsers and analysis scripts - without recompiling.

Log analysis

DéLOG log analysis

Live telemetry

DéLOG live telemetry

Features

  • Drag-and-drop UI - drop a log file anywhere on the window to load it; arrange plots in a tiling workspace that persists across sessions.
  • Multiple log formats - PX4 ULog (.ulg), ArduPilot (.BIN), MAVLink telemetry logs (.tlog) from QGroundControl or Mission Planner, and Parquet files, with automatic format sniffing and a manual-override picker. Structured DéLOG Parquet files open automatically; generic Parquet files prompt for a timestamp field and unit.
  • Live MAVLink telemetry - stream from a vehicle over UDP, TCP, or serial through the same ingest path as files, and record incoming frames to a .tlog.
  • Custom parsers - add Python parsers for formats DéLOG doesn't ship, defining a single Parse(raw_data) function. See docs/custom_parsers.md.
  • Custom scripts - embedded CPython + NumPy for derived fields and live transforms; results plot exactly like parsed data. See docs/scripting.md.
  • Visual data flows - build and save derived numeric signals with a node graph, no Python required. See docs/data_flow.md.
  • Fast WGPU visualization - GPU-rendered line/scatter/step plots with automatic decimation for million-point series, plus a 3D trajectory view with vehicle models.

Noteworthy

  • Live and offline share one path. A live MAVLink stream and a recorded .tlog round-trip through identical decoding code, so what you see live is what you replay.
  • Structured Parquet preserves native topics. DéLOG exports retain each topic's own timestamps and supported integer, floating-point, boolean, and UTF-8 fields, then reopen automatically without a timestamp prompt. Columns are named TOPIC.field and carry unit, description, and multiplier metadata, so pandas or DuckDB read the file without decoding the DéLOG manifest.
  • Export sampling is format-aware. Parquet writes each selected topic's native samples, while CSV retains uniform resampling.
  • Extend it in Python, no rebuild. Custom parsers and analysis scripts are plain .py files in your config directory - edit them in any editor and they appear in the menus.
  • Real CPython, not a sandboxed subset. Scripts get the full interpreter with NumPy (and SciPy/Bottleneck/CFFI when installed), so derived-field math is just NumPy.
  • Single binary. Shaders, 3D models, and the color palette are embedded at build time; a stripped binary always renders.

Quickstart

# Build and run (embedded Python scripting is on by default)
cargo run -p delog-app

# Build without Python - no interpreter or dev headers required
cargo run -p delog-app --no-default-features

Scripting embeds CPython via pyo3, so the default build needs Python 3.12.3 plus the matching development headers. Disabling the default feature drops that requirement entirely. See docs/scripting.md for interpreter-pinning tips.

Scripting (overview)

DéLOG runs Python scripts that read the loaded dataset and emit new fields and topics - derived signals that flow through the normal ingestion path and plot like log data. There are two modes: snapshot scripts that run once against the current data, and live transforms (@delog.live_transform) that append derived fields as telemetry arrives. A Console window provides an editor and a persistent REPL.

Bundled examples live in scripts/: one-shot examples are in scripts/snapshot/ and future-batch examples are in scripts/live/. Each declarative example sets its mode explicitly, so its filename and directory match when it runs. Full API reference and examples: docs/scripting.md.

Custom parsers (overview)

When DéLOG's built-in parsers don't cover a format, add a Python parser under Tools ▸ Parsers. The file receives the raw bytes as a NumPy float32 array and returns (field_name, values, tooltip) triples that become topics and fields. Full guide: docs/custom_parsers.md.

Documentation

  • Data Flow editor - visual derived signals, timeline alignment, and publishing.
  • Scripting - embedded-Python derived fields, the delog API, live transforms.
  • Custom parsers - Python file parsers via Parse(raw_data).

License

DéLOG is released under the MIT License.

About

GPU-accelerated flight log and live telemetry analyzer for ArduPilot, PX4, and custom drone data

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages