MAVLink

Кратко

MAVLink (Micro Air Vehicle Link) — открытый бинарный протокол обмена сообщениями между БПЛА и наземной станцией управления, а также между бортовыми компонентами аппарата. Де-факто стандарт открытой экосистемы: на нём взаимодействуют автопилоты ArduPilot и PX4 с наземными станциями QGroundControl и Mission Planner.

Для чего используется

  • Телеметрия: борт передаёт на землю координаты, высоту, скорости, ориентацию, напряжение батареи, состояние навигационного решения.
  • Команды: взлёт, полёт в точку, возврат домой — стандартизованные сообщения с подтверждением исполнения.
  • Миссии: загрузка на борт полётного задания — последовательности точек и действий (съёмка, сброс, ожидание).
  • Конфигурация: чтение и запись параметров автопилота.
  • Бортовой обмен: сопроцессор (companion computer) с системой технического зрения передаёт автопилоту управляющие команды по тому же протоколу.

Как работает

MAVLink рассчитан на медленные каналы связи — телеметрийные радиомодемы, — поэтому пакеты предельно компактны: сообщение упаковывается в пакет с заголовком (в MAVLink 2 — 10 байт) и контрольной суммой. Заголовок содержит номер типа сообщения, порядковый номер и адрес отправителя; по номеру типа получатель точно знает, как читать содержимое, — как по номеру бланка понятно, какие в нём поля.

Ключевые механизмы протокола:

  • Словарь сообщений в XML. Типы сообщений описываются XML-файлами («диалектами»; базовый — common.xml), из которых генерируется код библиотек для C, Python и других языков. Это гарантирует согласованность реализации на борту и на земле.
  • Адресация. Каждая система (аппарат, станция) и каждый компонент (автопилот, камера, подвес) имеют собственные идентификаторы (system ID, component ID), что допускает работу нескольких аппаратов и устройств в одном канале и маршрутизацию сообщений.
  • MAVLink 2 ввёл криптографическую подпись пакетов (защита от подмены команд) и расширил диапазон идентификаторов сообщений, сохранив обратную совместимость с MAVLink 1.
  • Микросервисы. Поверх отдельных сообщений описаны типовые диалоги — протоколы миссий, параметров, команд с подтверждением (ACK) — с заданным порядком сообщений и повторами при потерях.

Физический канал может быть любым: радиомодем, последовательный порт, USB, Wi-Fi/UDP.

Основные компоненты

  • XML-диалекты — словарь сообщений (базовый common.xml);
  • генератор кода и библиотеки (для Python — pymavlink);
  • MAVSDK — высокоуровневый SDK для прикладных программ;
  • инструментарий разработчика: MAVProxy, анализатор пакетов для Wireshark.

Примеры

  • QGroundControl отображает телеметрию и загружает миссии в PX4 по MAVLink.
  • Mission Planner выполняет те же функции для ArduPilot.
  • Программа на pymavlink с наземного компьютера отправляет аппарату команду взлёта несколькими строками кода — основа автоматизации полётов.

Связанные темы

Источники

  • MAVLink Developer Guide — формат пакетов, версии протокола, микросервисы, генерация библиотек.
  • ArduPilot Documentation — MAVLink как протокол связи с наземными станциями.
  • PX4 User Guide — MAVLink в экосистеме PX4, QGroundControl.

Обновлено: 2026-07-05