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.