Перейти к содержимому

Статья

Редакция WARPflyТеория FPV

MAVLink: message rates, бюджет телеметрии и основы связи с GCS

Как распределить пропускную способность MAVLink, выбрать частоты сообщений, не перегрузить радиоканал и диагностировать потери связи с GCS.

Редакция WARPfly2 мин чтения0 просмотров

MAVLink рассчитан на каналы с ограниченной пропускной способностью, но сам протокол не выбирает полезную частоту каждого сообщения за пилота. Автопилот, GCS, companion computer и радио могут одновременно запрашивать потоки. Если суммарная нагрузка приближается к реальной скорости линии, задерживаются важные данные, растёт packet loss и интерфейс начинает выглядеть «тормозным».

MAVLink: message rates, бюджет телеметрии и основы связи с GCS — обложка WARPfly
MAVLink: message rates, бюджет телеметрии и основы связи с GCS — обложка WARPfly. Оригинальная графика WARPfly.

Считай полезный бюджет, а не номинальную скорость

Номинальный baudrate UART или рекламная скорость радиомодема не равны полезной скорости MAVLink. Часть канала занимают заголовки пакетов, подтверждения, коррекция ошибок и служебный обмен самого модема. Добавь запас для команд, параметров и миссий; постоянная телеметрия не должна заполнять линию полностью.

Начни с минимального набора: HEARTBEAT, состояние системы, позиция, высота, батарея и качество радиолинии. Attitude полезен чаще, чем GPS и BATTERY_STATUS, но 20–50 Hz нужны далеко не каждому наземному интерфейсу. Диагностические и расширенные сообщения включай временно либо с низкой частотой.

MAVLink: message rates, бюджет телеметрии и основы связи с GCS — карта материала
MAVLink: message rates, бюджет телеметрии и основы связи с GCS — карта материала. Оригинальная графика WARPfly.

Управляй интервалом сообщений

Современный способ запросить поток — команда MAV_CMD_SET_MESSAGE_INTERVAL: message ID передаётся отдельно, интервал задаётся в микросекундах. Например, интервал 1 000 000 мкс означает 1 Hz. После команды проверь COMMAND_ACK; отсутствие ошибки в интерфейсе GCS ещё не подтверждает, что автопилот принял запрос.

Сообщение MESSAGE_INTERVAL позволяет узнать применённый интервал. Значение −1 означает выключенный поток, 0 — недоступный, положительное число — период между сообщениями. Старые DATA_STREAM могут встречаться ради совместимости, но не должны быть единственным механизмом новой интеграции.

Как искать перегрузку

  1. Запиши baudrate каждого физического участка: FC–радио, радиоэфир, приёмный модем–GCS.
  2. Отключи второстепенные потоки и проверь HEARTBEAT, команды и обновление основных приборов.
  3. Добавляй группы сообщений по одной, наблюдая задержку и packet loss.
  4. Проверь, не запрашивают ли разные клиенты один поток с разной частотой.
  5. Сравни входящие и исходящие потери: проблема может быть только в одном направлении.

Потеря пакетов оценивается по 8-битному sequence number отправителя. Счётчик естественно переходит через 255, поэтому анализатор должен учитывать переполнение. В сети с маршрутизаторами и несколькими источниками сравнивай последовательность отдельно для каждого system/component, иначе получишь ложную картину.

Если параметры читаются, но команды выполняются с задержкой, уменьши частоты attitude, position и отладочных потоков. Если даже HEARTBEAT нестабилен, ищи питание, UART, антенны и уровень сигнала, а не оптимизируй список сообщений. Для CAN-устройств используй отдельную диагностику DroneCAN.

#MAVLink#GCS#телеметрия#message interval#packet loss#Mission Planner#QGroundControl

Примените знания на практике

Подберите совместимые комплектующие или изучите готовые сборки пилотов.