# PX4 ULog

Import PX4 flight logs (.ulg)

- Category: Robotics
- Capabilities: Streams, History, Entities
- Runs on: Linux x64, Linux ARM64, macOS Apple silicon, macOS Intel, Windows x64

Import a PX4 flight log, the `.ulg` file the autopilot writes to its SD card.
You get every logged topic as channels, the flight path on a map, and the
autopilot's messages next to the charts.

## What you get

- **Every logged topic and instance.** A field shows as
  `/ulog/<topic>_<instance>/<field>`, such as
  `/ulog/vehicle_attitude_0/q[0]` or `/ulog/battery_status_0/voltage_v`.
  Arrays get one channel per element. Nested fields show as `<field>/<inner>`.
  A raw-message view shows each topic together.
- **Position as a track on the map.** From `vehicle_global_position` (the
  fused estimate) and raw GPS, at `…/fix`. Both older (`vehicle_gps_position`,
  1e-7 degrees) and newer (`sensor_gps`, degrees) PX4 topics work. Positions
  before the first fix are skipped.
- **The autopilot's messages** (`Low battery`, `Takeoff detected`, …) at
  `/ulog/log`, with their severity.
- **Logger dropouts** show as gaps, so a hole in a chart is explained.
- **Damaged logs.** A log cut off by power loss is read up to the last whole
  message. Damage in the middle is skipped and counted, and the rest is read.

## Setup

1. Browse to a `.ulg` file. The table lists its topics, their message counts,
   and which ones draw on the map.
2. Tick the topics to bring in, or leave them all ticked.
3. Check the flight's start time, shown before you import.
4. The import runs as fast as the machine allows. To replay in real time, set
   **Speed** to 1.

## When the flight happened

A ULog stores time since the autopilot booted, not a date. Phloem dates the
flight from the log's own GPS time, using every GPS message with a 3D fix.

A log with no GPS time, such as a bench run or indoor flight, needs a start
time. Enter **Logging started at** with a date, time and timezone offset, such
as `2026-09-20T10:15:00+05:30`. The file's modified time is never used, because
copying a log off an SD card changes it.

## Supports

- PX4 ULog files, every logged uORB topic and instance, nested and array fields
- Placed on the calendar by the log's own GPS time, or a start time you state
- Vehicle position (fused estimate and raw GPS) as a track on the map
- Autopilot log lines as a log channel; logger dropouts stated as gaps
- Damaged logs: crossed at the next sync marker, a torn tail or append point skipped and counted

## Connection fields

| Field | Type | Required | Notes |
|---|---|---|---|
| Flight log | Path | Yes |  |
| Topics | Text | No |  |
| Logging started at | Text | No | Only for logs without GPS time. Date, time and timezone offset. |
| Speed | Number | No |  |
