MAVProxy

Pause

MAVProxy — свободная консольная наземная станция для управления беспилотными летательными аппаратами по протоколу MAVLink[1]. Программа написана на Python, распространяется по лицензии GNU GPL версии 3 или новее и развивается в составе экосистемы открытого автопилота ArduPilot[2]. Она спроектирована как минималистичный, портируемый и расширяемый модулями инструмент разработчика: работает из командной строки, маршрутизирует телеметрию между бортом и несколькими потребителями и дополняет собой графические станции Mission Planner, APM Planner 2 и QGroundControl[1].

MAVProxy занимает среди наземных станций ArduPilot нишу «станции разработчика»: графические оболочки вроде Mission Planner и QGroundControl ориентированы на оператора, тогда как консольная станция обслуживает отладку, автоматизацию и маршрутизацию потоков MAVLink[1]. MAVProxy была создана командой CanberraUAV для участия в австралийских соревнованиях беспилотных систем Outback Challenge и выложена на GitHub в мае 2012 года[2]. Ведущими разработчиками являются Эндрю Триджелл — автор утилиты rsync и пакета Samba — и Питер Баркер[2]. За годы развития программа стала одним из самых гибких инструментов экосистемы ArduPilot: ряд функций современных наземных станций берёт начало в модулях MAVProxy[1].

Общие сведения
Что важно знать
MAVProxy
Область использования разработка и эксплуатация беспилотных летательных аппаратов, тестирование автопилотов, воздушный мониторинг
Дата появления 2012
Место появления Канберра
Автор понятия Andrew Tridgell
Ключевые слова наземная станция, MAVLink, телеметрия, модуль, консоль
Базовые понятия беспилотный летательный аппарат, наземная станция, телеметрия, автопилот

История

Предпосылки и создание (2009—2012)

В конце 2000-х годов распространение недорогих микроконтроллеров и готовых автопилотов сделало доступной сборку небольших квадрокоптеров и самолётов с автономным полетом[3]. Для настройки, планирования заданий и наблюдения за полетом такой аппарат требует наземной станции управления — компьютера с программой, принимающей телеметрию и отправляющей команды[4]. Австралийская команда CanberraUAV готовила к соревнованиям беспилотных систем Outback Challenge аппарат на базе открытого автопилота ArduPilot и параллельного вычислителя Pandaboard; для его обслуживания была написана консольная станция MAVProxy, умевшая работать с несколькими каналами связи одновременно[1][5].

undefined

В октябре 2012 года CanberraUAV выиграла соревнования Outback Challenge с аппаратом на плате APM2 и вычислителе Pandaboard, продемонстрировав связку автопилота, бортового компьютера и наземной станции в дальнем полете[5]. К этому моменту исходный код станции уже был открыт: репозиторий MAVProxy на GitHub создан 2 мая 2012 года[6], проект распространялся на условиях GNU GPL версии 3 и новее[2]. Название программы отражает первоначальный замысел — «прокси» протокола MAVLink, посредник между бортом и потребителями телеметрии[2]. В сентябре 2014 года Триджелл и CanberraUAV выиграли Outback Challenge второй раз — уже с самолётом на базе ArduPilot, что закрепило за связкой автопилота и консольной станции репутацию решения для дальних автономных полетов[5]. Открытая прошивка с платами APM к этому времени стала массовой основой самодельных аппаратов: второе поколение платы вышло в 2011 году, версии APM2.5/2.6 — в 2012-м, а энтузиасты публиковали автотестеры прошивок и сторонние наземные станции[5].

Развитие в экосистеме ArduPilot (2013 — настоящее время)

После соревнований MAVProxy сохранила самостоятельную жизнь в составе экосистемы ArduPilot: документация проекта описывает её как полнофункциональную наземную станцию для любой автономной системы с поддержкой MAVLink[1]. Развитие самой экосистемы совпало по времени с ростом станции: в январе 2013 года код ArduPilot был перенесён с Google Code на GitHub, в октябре 2014 года сложилась ассоциация Dronecode, объединившая разработчиков MAVLink-проектов под эгидой Linux Foundation[5]. MAVProxy при этом осталась проектом сообщества: мейнтейнеры координируют работу через публичный чат, а ведущие направления закреплены за конкретными разработчиками — от ядра под Windows до сборок под macOS[2]. Ведущими разработчиками после Эндрю Триджелла и Питера Баркера стали мейнтейнер Windows Стивен Дейд и мейнтейнер macOS Рис Майнваринг; обсуждение разработки ведётся в канале проекта на сервере Discord[2]. Документация отмечает, что многие функции, которые пользователи видят сегодня в других наземных станциях, берут начало в MAVProxy[1].

Программа выросла из средства соревновательной команды в универсальный инструмент: она включена в штатную документацию ArduPilot, поставляется готовыми сборками для основных операционных систем и применяется как отладочный хаб при разработке прошивок и бортовых вычислителей[1]. Отдельным направлением стало использование станции в учебных проектах по сборке дронов: литература по любительскому дроностроению описывает MAVLink-инструменты как стандартный способ наблюдения за телеметрией самодельного аппарата[7].

Принцип работы

MAVProxy общается с бортовой аппаратурой по протоколу MAVLink — бинарному протоколу информационного взаимодействия между аппаратом (MAV) и станцией наземного управления (GCS)[8][9]. Базовой сущностью протокола является пакет длиной от 8 до 263 байт[10][8]. В нём передаются признак начала сообщения (STX), длина полезной нагрузки (LEN), счётчик пакетов (SEQ), идентификаторы отправляющей системы (SYS) и компонента (COMP), тип сообщения (MSG), полезная нагрузка (PAYLOAD) и два байта контрольной суммы (CKA, CKB). Счётчик пакетов помогает выявлять потери сообщений в канале, а идентификатор системы у станций наземного управления по обычаю сообщества равен 255[10]. Протокол допускает обмен между несколькими системами и компонентами: каждая станция и каждое бортовое устройство получают собственные идентификаторы[9]. Служебное сообщение heartbeat подтверждает присутствие участника в сети: по регулярности этих сообщений участники узнают о появлении и отключении систем, а на радиотелеметрии их рассылают с частотой около одного герца[9][11]. MAVLink развивается в двух мажорных версиях — v1.0 и v2.0, причём вторая обратно совместима с первой: реализации v2.0 читают и посылают пакеты обоих форматов[9]. Потоки телеметрии передаются в групповом режиме без подтверждений, а операции, требующие гарантированной доставки, — загрузка заданий, обмен параметрами, команды — выделены в отдельные протоколы-«микросервисы»: миссии, параметров, команд, ручного управления, камеры и стабилизатора камеры[9]. Протокол создан Лоренцем Майером и впервые выпущен в 2009 году; сеть MAVLink допускает до 255 одновременных систем — аппаратов, станций и бортовых устройств[12]. Пакеты защищаются контрольной суммой, а разбор потока удобно вести в анализаторе сетевых пакетов Wireshark[10].

undefined

Новые сообщения протокола описываются на языке XML в файлах-диалектах, из которых генераторы mavgen и mavgenerate собирают библиотеки для конкретных языков программирования[8]. Словарь сообщений разделён на наборы: минимальный каркас, общий набор common, набор development для экспериментальных сообщений и сводные файлы всех диалектов[9]. Такой подход позволяет добавить в протокол собственные команды, не ломая совместимость со стандартным словарём сообщений[8].

Связь с беспилотником

Станция запускается командой mavproxy.py из командной строки и подключается к полетному контроллеру через последовательный порт, USB, сеть UDP или TCP[13]. Список опций запуска охватывает выбор источника данных (--master) и его скорость (--baudrate), адресатов телеметрии (--out), подключение к симулятору (--sitl)[13]. Отдельные опции задают частоту запроса телеметрических потоков (--streamrate), идентификаторы станции в сети MAVLink (--source-system, --target-system), файл журнала и каталог проекта (--aircraft)[13]. Повторяемую конфигурацию сохраняют в файле mavinit.py: он выполняется при каждом старте станции и задаёт привычные модули и настройки[13]. Если к компьютеру подключён один автопилот, опцию --master можно опустить: станция сама обнаружит порт, а поток можно вещать широковещательным UDP на всю локальную сеть[14]. Типовой запуск выглядит так: mavproxy.py --master=/dev/ttyUSB0 --baudrate=57600 --out=udp:192.168.1.10:14550 — станция открывает последовательный порт телеметрического модема и дублирует поток в сеть[13]. В полете станция принимает поток телеметрии — координаты, высоту, скорость, состояние бортовых систем, — а также отправляет команды: переключение режимов полета, загрузку заданий, запросы параметров[1][4].

undefined

Для управления БПЛА, помимо аппаратуры радиоуправления частотой 2,4 ГГц, применяется и телеметрия MAVLink: через станцию оператор подает команды и получает данные с борта, а полетный контроллер объединяет сигналы приемника и телеметрического канала[3].

Телеметрия и форвардинг

Ключевая функция MAVProxy — пересылка полученных MAVLink-сообщений другим потребителям[1]. Станция принимает поток с борта и дублирует его по сети UDP или TCP на несколько адресов: так к одному аппарату одновременно подключаются графическая станция на ноутбуке, карта на планшете и другие инструменты[15]. Один и тот же поток направляется нескольким получателям сразу — резервной станции, планшету пилота, системе протоколирования. Возможна и обратная ситуация: несколько каналов связи с бортом — радиомодем, Wi-Fi, бортовой канал сотовой сети — сходятся в MAVProxy, которая объединяет их в один логический линк[1].

Подобная архитектура повторяет организацию наземного пункта управления БПЛА, описанную в инженерной литературе: станция управления собирает телеметрическую информацию, вырабатывает команды и распределяет данные между потребителями[4][16]. Вся принятая телеметрия автоматически записывается в журнал mav.tlog: файлы используются для разбора полёта после посадки и повторного проигрывания, а опция --aircraft раскладывает журналы по именным папкам с датами[17].

Интерфейс и модули

Консоль и графические надстройки

Основной интерфейс MAVProxy — текстовая консоль: команды набираются в командной строке, телеметрия выводится в текстовом виде, а модуль консоли дополняет ввод подсказками по клавише табуляции[1]. Такой формат считается «станцией разработчика»: он ориентирован на отладку, автоматизацию и повторяемые сценарии, а не на наблюдение за полетом глазами оператора[1]. При этом MAVProxy рассчитана на совместную работу с графическими наземными станциями — Mission Planner, APM Planner 2, QGroundControl: станция-прокси предоставляет им поток данных, а графическая оболочка отображает его оператору[1].

undefined

Модули

Возможности станции расширяются загружаемыми модулями на Python[18]. Часть модулей стартует вместе со станцией по умолчанию[18]. Это обработка данных ADS-B, армирование и дезармирование двигателя, контроль батареи, калибровка, управление геозоной (fence), передача файлов по FTP, построение графиков, управление каналами связи, журнал и режимы полета[18]. Отдельные модули ведут вывод MAVLink, параметры, точки ожидания (rally), обработку команд пульта, реле, подписание сообщений, рельеф местности и работу с путевыми точками[18]. Галерея подключаемых модулей шире[18]: слежение за воздушными и морскими целями, наведение антенны, просмотр камеры, чат, контрольные списки, журналы DataFlash, прямая работа с шинами SPI и I²C, дифференциальный GPS[18]. Дополнительно доступны управление прошивкой, «ложный GPS» и режим следования за оператором[18]. В комплект входят также модули текстовой консоли, движущейся карты, поддержки джойстика и слежения антенны[1]. Модуль загружается командой module load прямо во время работы станции, а собственные модули пишутся на том же языке, что и ядро программы, — это делает MAVProxy типовой платформой для экспериментов с телеметрией[18]. Вспомогательные модули вынесены в отдельный каталог и работают через общий интерфейс очередей сообщений: фильтрация команд, управление питанием, мультиплексирование потоков[18]. Набор загружаемых модулей задается в файле mavinit.py, поэтому при каждом запуске станция восстанавливает привычную конфигурацию[13]. Архитектурно такой подход соответствует модульному программированию: ядро отвечает за связь и маршрутизацию сообщений, модули — за конкретные функции[1].

Применение

Разработка и симуляция

MAVProxy — стандартный инструмент при разработке прошивок ArduPilot: новые сборки автопилота испытываются в симуляторе SITL (software in the loop), который имитирует полет без реального аппарата, а станция выступает отладочной консолью симулятора[1]. Симулятор собирается обычным компилятором C++ в исполняемый файл и позволяет запускать Plane, Copter и Rover без аппаратуры[19]. Опция --sitl превращает подключение в локальное: станция и симулятор обмениваются пакетами на той же машине, что ускоряет цикл «правка кода — сборка — полет» до секунд[13]. Документация прямо называет MAVProxy «станцией разработчика»: с неё начинаются и проверка новых сборок, и отладка бортовых вычислителей, и прогон заданий перед выездом в поле[1]. В той же конфигурации отлаживаются модули самой станции: автор проверяет новую обработку телеметрии на симуляторном потоке, не рискуя аппаратом[18][13]. Разработчик подключается к симулятору так же, как к настоящему борту, меняет параметры, отдает команды и смотрит телеметрию, поэтому один и тот же набор команд проверяет и виртуальный, и реальный аппарат[1]. Генераторы протокола MAVLink дополняют цепочку: новая команда описывается в XML-диалекте, из него собирается библиотека, после чего станция и автопилот проверяются в связке[8].

undefined

Полевая эксплуатация

В полевых условиях MAVProxy используется как легкая станция на маломощном компьютере: минималистичная программа запускается даже на нетбуках, а потребность в ресурсах снижается за счет отсутствия тяжелого графического интерфейса[1]. Станция обслуживает наземный пункт управления: собирает телеметрию, отображает карту полета при подключенном модуле карты, следит за направлением антенны с помощью модуля слежения, дублирует поток на дополнительные устройства операторов[18][16]. Одна станция может обслуживать сразу несколько аппаратов: благодаря маршрутизации MAVLink оператор видит в одном окне телеметрию группы БПЛА, различая их по идентификаторам систем[15][16]. Модули геозоны и точек ожидания ограничивают пространство полета и держат резервные позиции, рельеф местности помогает автопилоту обходить подстилающую поверхность, а подпись MAVLink-пакетов защищает канал от посторонних станций[18]. Режим следования за оператором и просмотр камеры на борту делают станцию удобной для воздушного наблюдения и съемки[18]. Сфера применения совпадает с задачами гражданских БПЛА: аэрофотосъемка, мониторинг территории и объектов, дистанционное зондирование[16]. Инженерная литература описывает наземный пункт управления БПЛА как совокупность систем управления, связи и навигации, работающих с бортовой подсистемой по радиолиниям передачи данных[4]. Консольные станции вроде MAVProxy берут на себя программную часть такой инфраструктуры — обработку телеметрии, журналирование и автоматизацию, — оставляя аппаратную сторону специализированным средствам[4][16]. В учебных проектах MAVLink-станции служат первым знакомством с телеметрией самодельного аппарата: литература по дроностроению описывает сборку дрона как единый контур из полетного контроллера, каналов связи и наземной станции наблюдения[20]. Начинающим разработчикам такие эксперименты дают целостное представление о взаимодействии борта и земли — от микроконтроллера и датчиков до вывода телеметрии на экране[7].

Сравнение с другими наземными станциями

Экосистема ArduPilot включает несколько наземных станций, рассчитанных на разные сценарии; выбор зависит от задачи: наблюдение за полетом, автоматизация испытаний или работа серверной части наземного пункта[1]. Mission Planner — полнофункциональная графическая станция с настройкой, планированием заданий и анализом журналов; APM Planner 2 — упрощенная кроссплатформенная оболочка; QGroundControl — независимая графическая станция для широкого круга MAVLink-совместимых автопилотов[1][9]. MAVProxy занимает среди них отдельную нишу: она не претендует на графический интерфейс, зато работает как маршрутизатор телеметрии и консоль автоматизации, объединяя графические станции, модули и скрипты в один контур[1][15]. На практике станции не конкурируют, а дополняют друг друга: графическая оболочка отображает полет, консольная станция маршрутизирует потоки между несколькими компьютерами и записывает журнал; при отказе одного из клиентов поток продолжает поступать остальным[15]. Независимость от рабочего стола позволяет запускать станцию там, где графическая оболочка недоступна, — на одноплатных компьютерах в составе наземного пункта[1]. Тем самым MAVProxy закрывает нижний слой стека управления — сбор телеметрии, маршрутизацию и автоматизацию, — а верхний слой отображения остаётся за графическими станциями и самописными инструментами оператора[1][15]. Для инженерных комплексов управления БПЛА такая связка соответствует классической структуре наземного пункта: средства отображения отделены от средств сбора телеметрии и могут наращиваться независимо[4].

undefined

Ограничения

MAVProxy работает только с системами, поддерживающими протокол MAVLink: автопилоты с иными протоколами телеметрии требуют собственных станций[1][10]. Консольный интерфейс предъявляет требования к квалификации оператора: без модулей карты и графических оболочек станция показывает телеметрию текстом, что непригодно для оперативного наблюдения за полетом[1]. Документация по установке предполагает знакомство с командной строкой и сетевыми настройками: оператору нужно выбрать источник данных, скорость порта и адресатов пересылки до первого запуска[13]. Модульная система и скрипты автоматизации завязаны на окружение Python и требуют установки интерпретатора и зависимостей, а готовые сборки отстают от текущего кода репозитория[18][2]. Наконец, станция не заменяет сертифицированные комплексы управления, которые требуются в задачах с повышенными требованиями к надежности канала и автономности[16]. Вопросы сопровождения решает сообщество: ошибки регистрируются в репозитории GitHub, обсуждение идет в чате проекта, а справочное руководство обновляется вместе с кодом[2][1].

Связь с другими технологиями

Экосистема ArduPilot

MAVProxy входит в набор инструментов экосистемы ArduPilot наряду с прошивками Copter, Plane, Rover и Sub для полетных контроллеров и симулятором SITL[1][5]. Полетный контроллер строится на микроконтроллере семейства ARM с датчиками ориентации и приемниками GPS-сигнала; обмен со станцией идет через последовательный порт или телеметрический модем[3]. Бортовой вычислитель — «companion computer» вроде Pandaboard — подключается к тому же MAVLink-обмену и выполняет задачи машинного зрения и управления полезной нагрузкой; MAVProxy исторически создавалась именно для таких связок[5].

Открытый протокол и свободное программное обеспечение

MAVLink — открытый протокол, принятый множеством автопилотов и наземных станций; словарь его сообщений описывается теми же XML-диалектами, которые обслуживают MAVProxy[9][8]. Благодаря общей спецификации станция работает и с аппаратами других производителей, чьи прошивки говорят на MAVLink, — совместимость не ограничивается экосистемой ArduPilot[9]. Сама станция развивается как свободное программное обеспечение под лицензией GNU GPL v3+: исходный код опубликован на GitHub, допускается любое использование с сохранением лицензии[2]. Автор MAVProxy Эндрю Триджелл известен и другими свободными проектами — утилитой rsync и сервером Samba; преподавание и разработка связывают его с Австралийским национальным университетом[2]. Программа написана на Python и использует библиотеку pyserial для работы с последовательными портами и стандартные средства мультиплексирования ввода-вывода[1][2]. Благодаря этому станция работает на любой POSIX-совместимой платформе с интерпретатором — в Linux, macOS, Windows, на нетбуках и одноплатных машинах. Станция распространяется через пакетный индекс PyPI: под Windows выпускается готовый установщик, а в Debian-совместимых системах пакет ставится средствами pip[21]. По классификации свободных лицензий MAVProxy относится к свободному программному обеспечению с копилефт-условиями: производные работы обязаны сохранять ту же лицензию[2].

Примечания

  1. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 MAVProxy — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  2. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 ArduPilot/MAVProxy: MAVLink proxy and command line ground station (англ.). GitHub (2 мая 2012). Дата обращения: 9 октября 2026.
  3. ↑ 1 2 3 Бобылев Ф. А., Маркелов М. К. Пример создания полетного контроллера беспилотного летательного аппарата на базе МК STM32 // Вестник Пензенского государственного университета. — 2023.
  4. ↑ 1 2 3 4 5 6 Токарев Ю. П., Макеев М. И., Юмаев К. Р. Построение комплекса управления беспилотными летательными аппаратами с использованием стандартных компонент // Информатика, телекоммуникации и управление. — 2010.
  5. ↑ 1 2 3 4 5 6 7 History of ArduPilot — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  6. ↑ GitHub API: ArduPilot/MAVProxy (англ.). GitHub. Дата обращения: 9 октября 2026.
  7. ↑ 1 2 Kilby T., Kilby B. Getting Started with Drones (англ.). — Maker Media, 2015. — ISBN 9781457183300.
  8. ↑ 1 2 3 4 5 6 Бизюк А. В. Генерация протокола информационного взаимодействия с дронами, на базе библиотеки MAVLink // Вестник науки. — 2024.
  9. ↑ 1 2 3 4 Разбираемся в MAVLink. Часть 1. Хабр. Дата обращения: 9 октября 2026.
  10. ↑ Heartbeat/Connection Protocol (англ.). MAVLink Guide. Дата обращения: 9 октября 2026.
  11. ↑ MAVLink Developer Guide (англ.). MAVLink Guide. Дата обращения: 9 октября 2026.
  12. ↑ 1 2 3 4 5 6 7 8 9 Startup Options — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  13. ↑ Quickstart — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  14. ↑ 1 2 3 4 5 Telemetry Forwarding — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  15. ↑ 1 2 3 4 5 6 Макаров К. С. Структурная схема комплекса с беспилотным летательным аппаратом, предназначенного для мониторинга территории и объектов в условиях низкой доступности каналов связи // Auditorium. — 2019.
  16. ↑ Logfiles — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  17. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Modules — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  18. ↑ SITL Simulator (Software in the Loop) (англ.). ArduPilot Dev documentation. ArduPilot Dev Team. Дата обращения: 9 октября 2026.
  19. ↑ McGriffy D. Make: Drones (англ.). — Maker Media, 2016. — ISBN 9781680451719.
  20. ↑ Download and Installation — MAVProxy documentation (англ.). ArduPilot. ArduPilot Dev Team. Дата обращения: 9 октября 2026.

Литература

Дополнительно по теме

© Правообладателем данного материала является АНО «Интернет-энциклопедия «РУВИКИ».
Использование данного материала на других сайтах возможно только с согласия АНО «Интернет-энциклопедия «РУВИКИ».
Pause