MAVLink
Live telemetry from PX4 and ArduPilot vehicles
- Category
- Vehicles
- Kind
- source
- Capabilities
- StreamsEntitiesOperations
- Runs on
- Linux x64Linux ARM64macOS Apple siliconmacOS IntelWindows x64
Stream live telemetry from PX4 and ArduPilot vehicles over UDP, TCP or serial (a USB cable or a telemetry radio). Plug a flight controller in over USB and Phloem offers it on Inputs.
What you get
- Every message the vehicle sends, not a fixed list. That covers the
whole ArduPilot dialect, which includes the common MAVLink set. A field
shows as
/mav/<system>/<component>/<message>/<field>, such as/mav/1/1/attitude/rollor/mav/1/1/battery_status/voltages[0]. - Several vehicles and components on one link. The system id separates vehicles. The component id separates an autopilot from its gimbal or camera.
- Real units. Latitude in degrees, altitude in metres, speed in m/s, temperature in °C, battery in volts and amps. Every channel declares its unit.
- "Not measured" stays empty. A field the vehicle marks as no reading, such as an absent battery cell, shows as no reading, never as 65.535 V.
- Position as a track on the map, from the fused position and from raw GPS once it has a 3D fix.
Setup
Enter the Connection:
| Connection | Means |
|---|---|
udpin:0.0.0.0:14550 | listen for a vehicle (a simulator sends here by default) |
udpout:192.168.1.10:14555 | send to a vehicle at that address |
tcpout:192.168.1.20:5760 | connect to a vehicle, or a simulator on another computer, over TCP |
serial:/dev/ttyACM0:115200, COM3 | a flight controller or radio on a serial port |
Press Test connection. It waits for the vehicle's heartbeat and names what answered, such as "PX4 QUADROTOR (system 1, component 1)".
Time
Each sample carries the moment the vehicle measured it, in UTC, not the moment
it arrived. Phloem asks the vehicle for SYSTEM_TIME once a second to line up
its clock.
- Until the first
SYSTEM_TIMEarrives, or for a message with no time of its own, the arrival time is used. The channel records that. - A vehicle reboot is detected and handled.
- The servo outputs' clock rolls over every 71.6 minutes. Samples still land at their true time.
The full PX4 log, live
Telemetry is a few dozen messages at a few hertz. The log is every sensor,
estimator and controller topic at full rate. Turn on Stream the full log
(PX4) to stream it live. It lands on the same /ulog/<topic>_<instance>/<field>
channels as an imported .ulg file, so live and imported flights line up.
- It needs a link of at least 5 KB/s: a USB cable or Ethernet, not a telemetry radio.
- PX4 does not stream its log while a simulator runs in lockstep.
- When PX4 refuses, the input says why.
- A lost packet shows as a gap on every log channel.
#Supports
- PX4 and ArduPilot over UDP, TCP or serial (USB or a telemetry radio)
- Every message in the ardupilotmega dialect (a superset of common), not a fixed list
- Units from the dialect: scaled encodings (degE7, mm, cm/s, cdegC, mV, cA) landed as degrees, metres, m/s, °C, V, A
- A field's 'no reading' value (an unmeasured current, an absent cell) landed as no reading
- Several vehicles and components on one link, each on its own channels
- Vehicle time placed on UTC from the vehicle's SYSTEM_TIME; the vehicle's position as a track on the map
- PX4's full log streamed live over USB or Ethernet, decoded exactly as an imported .ulg; lost packets stated as gaps
#Connection fields
Every field the Add input form shows for this connector.
| Field | Type | Required | Default |
|---|---|---|---|
| Connection udpin:host:port (listen), udpout:host:port, tcpout:host:port, serial:port[:baud], or a serial port such as /dev/ttyACM0 or COM3. udpin:0.0.0.0:14550 | Text | Yes | — |
| Stream the full log (PX4) Every topic the autopilot logs, live, on the same channels an imported .ulg lands on. PX4 streams its log only over USB or Ethernet (at least 5 KB/s), not a telemetry radio. | On / off | — | false |
Updated