- PVSM.RU - https://www.pvsm.ru -

Выбор платформы для экспериментов с БПЛА

Выбрать платформу для экспериментов с БПЛА сейчас есть из чего. Автопилотов на рынке много, поэтому прежде всего последует небольшой обзор доступных устройств, а затем рассмотрим победителя — Pixhawk (да да, вот так, сразу, никакой интриги).
Выбор платформы для экспериментов с БПЛА - 1
Критерии выбора:

  • открытая архитектура (software & hardware);
  • современная элементная база (отпадает все по шаблону *avr*);
  • грамотная, красивая архитектура (отпадают шаблоны *ardu*o и *Rasberi*);
  • механизмы SIL/HIL симуляции;
  • наличие открытого ПО наземной станции.

Посмотрим, что осталось:

  1. Проект Paparazzi [1]
    • Classix
    • Lisa/MX V2.1
    • NavStik

  2. Проект OpenPilot [2]
    • CCD3
    • Revo

  3. Макетные платы с IMU
    • Gumstix
    • Beagleboard
    • MiniPC

  4. Pixhawk Autopilot [3]
    • Аппаратная часть
    • Программная часть

Список не полный, а дальнейший обзор весьма субъективен.

1.Проект Paparazzi [1]

Выбор платформы для экспериментов с БПЛА - 2

Проект с самой долгой историей (первые AVR версии железа датируются 2003 годом) поэтому начнем с него. В 2010 году погиб основной разработчик проекта Pascal Brisset, но сообщество выжило. К настоящему времени существует более десятка автопилотов на базе Paparazzi.

В исходных кодах много чего накопилось: есть реализация интегрирования кинематических уравнений Эйлера через матрицу направляющий косинусов, углы Эйлера, кватернионы; в float и целых числах. Есть реализация фильтра простого Калмана с 6тью переменными для определения ориентации, а в экспериментальные ветки затесался даже UKF — в общем, есть на что посмотреть. Все это богатство конфигурируется под конкретный аппарат при помощи xml файлов перед компиляцией.

Неполный список устройств на базе проекта есть здесь [4]. Перечислю из него несколько, на мой взгляд, наиболее интересных устройств:

Paparazzi Classix [5]

Выбор платформы для экспериментов с БПЛА - 3

Концепт 2008года на основе двух LPC2148, чем и интересен. На одном из МК выполняется код автопилота, другой же обеспечивает связь с сервоприводами и приемником ручного управления. Подход уменьшает риск потерять аппарат при отработке автопилота. Канал ручного управления независим, и отказ автопилота не грозит потерей управления.

Paparazzi Lisa/MX V2.1 [6]

Современное устройство на безе STM32F4.Содержит полный набор датчиков, за исключением GPS. Цена около 200$.

Выбор платформы для экспериментов с БПЛА - 4

Paparazzi NavStik [7]

Интересный вариант с модульной структурой. Состоит из очень плотно скомпонованной основной платы с STM32F4 и полным набором датчиков (в том числе GPS и датчика динамического давления) и набора интерфейсных плат.

Выбор платформы для экспериментов с БПЛА - 5

Набор датчиков уточняется при заказе. Цена основной платы в полной конфигурации 212$.

Выбор платформы для экспериментов с БПЛА - 6

На интерфейсных платах нет ничего такого что нельзя было бы разместить на основной (разъемы, предохранители). А вот возможность стыковки с Gumstix (с тем что на OMAP3530) очень интересна:

Выбор платформы для экспериментов с БПЛА - 7

На фотографии этажерка из Gumstix + NavStik + интерфейсная плата.Получается очень серьезное по потенциалу устройство в миниатюрном исполнении.

2.Проект OpenPilot [2]

Выбор платформы для экспериментов с БПЛА - 8

Проект имеет две аппаратные платформы: CC3D и Revo.

OpenPilot CCD3 (STM32F1) [8]

Выбор платформы для экспериментов с БПЛА - 9
Малогабаритная платка на базе датчика MPU-6000 и МК Cortex-M3. Имеет 6 выходов (ШИМ), 2 UART входа, вход для подключения RC приемника. Обвязки минимум, защиты по интерфейсам нет вообще.

Математика БИНС реализована через EKF [9] на 13/16 переменных состояния. Фильтр написан на чистом c с использованием float. Код в отдельных моментах оптимизирован (матричные вычисления), в других нет (нормализации кватерниона стоит 4 деления вместо умножения на обратное значение). Непонятно для чего настройки фильтра прописаны прямо в коде (непросто будет под новые датчики настроить).

Между автопилотом и железом лежит собственный HAL который, теоретически, можно реализовать через FreeRTOS, но практически написано куча собственно кода под STM32Fx/win/posix. Главный плюс платформы — цена 30$. Доступна, как в официальном магазине, так и на alli [10], и даже на hk [11] (признание!!!).

Про официальный магазин надо сказать особо. При доступе из РФ Вас встречает пустая страница с приветливой фразой «You cannot access this store from your country.», как-то не хорошо, особенно с учетом того что в команде есть русскоязычные разработчики. Столь же приветливо ведет себя и администрация на форуме (когда-то схватил бан за размещение объявление о профильной вакансии в русской ветке, причем не просто пользователя заблокировали, а ip в черный список внесли, т.е. а)люди не ленивые; б)какой-то триггер на тему РФ срабатывает).

OpenPilot Revo (STM32F4) [12]

Выбор платформы для экспериментов с БПЛА - 10

Устройство на базе STM32F4. На борту датчик давления и модем на 433МГц (для приема помех прямо от контроллера т.к. экран не земечен). Устройство разрабатывали долго, но наконец выпустили. Документация не опубликована, поэтому у китайцев клонов еще нет, у официальных продавцов цена 100-130$ (см. замечание про родной магазин выше).

Ввиду мощного контроллера (168МГц с FPU) для экспериментов устройство подходит значительно больше чем первое.

3.Макетные платы с IMU

Выбор платформы для экспериментов с БПЛА - 11

Для ряда применений небольшого ARM на борту недостаточно (даже если это М4). Чуть выше уже упоминалась плата Gumstix на OMAP3530 (Cortex-A8) в связке с NavStik. Было бы странно ели бы Gumstix сам не сделал что-то подобное самостоятельно.

Выбор платформы для экспериментов с БПЛА - 12

Плата расширения Gumstix AeroCore [13]. Другая популярная «макетка» BeagleBone [14] c SOC от TI. Под неё тоже есть подходящая платка:

Выбор платформы для экспериментов с БПЛА - 13

На фотографии BeagleBone IMU Cape [15]

И, наконец, Intel со своим Edison [16]. Под него платы расширения пока нет, но кто-то сомневается, что будет?

Следует заметить, что перечисленные платформы с трудом проходят по критерию «открытости», вся надежда была на I.MX6 [17], ввиду полноты документации, но его родной SabreLight не подходит по форм фактору, а остальные реализации не имеют должной популярности (сугубо моё мнение). Так что ждем обещанного I.MX6 cо встроенным Cortex-M4 и новой подходящей макеткой.

К отряду макетных плат отнесу так же различные MiniPC на базе Android. Привлекательные, прежде всего, своей ценой. На примере Mk808 за 40$ имеем:

  1. RK3066 2 x Cortex-A9 1.6GHz;
  2. 1Гб ОЗУ;
  3. 8Гб Flash;
  4. WiFi;
  5. SD разъем;
  6. UART на плате;

Есть и более современные устройства на RK3288, но вопросс наличия порта Linux требует дополнительного изучения.
Подобный miniPC прикрученный через UART к любому описанному здесь автопилоту расширяет его возможности вплоть до VSLAM.

Становится возможным вместо описанных здесь «микро ОС» для МК использовать полноценные ОС
с надстройками в виде ROS [18] или даже Simulink [19].

4.Pixhawk Autopilot [20]

Наконец добрались до Pixhawk. Многие видели красивые ролики с квадрокоптерами играющими с мячиком для настольного тенниса, выполняющими акробатические трюки, стаей дружно что-то стоящие. Основной поставщик этого Контента — ETH Zurich (Swiss Federal Institute of Technology Zurich). Pixhawk это их разработка pixhawk.ethz.ch [21]. Благодаря академичности проект имеет красивую архитектуру, как в аппаратной части, так и программной. С аппаратной и начнем. Благодаря открытости приобрести клон можно на Alliexpress, что я и сделал:
Выбор платформы для экспериментов с БПЛА - 14
Комплектность:

  1. сам автопилот;
  2. GPS модуль с антенной, батарейкой и магнитометром;
  3. кнопка со встроенным светодиодом;
  4. DC/DC преобразователь с датчиком тока;
  5. переходник USB->UART/I2C;
  6. разветвитель I2C.

Итого: 185$ (6500р… эх, было время).
Первый вопрос который возникает: насколько китайский клон «китайский». Что же, вскроем и посмотрим.

Аппаратная часть

Основной блок устройства представляет собой небольшую коробочку со множеством разъемов.

Выбор платформы для экспериментов с БПЛА - 15

Материал корпуса — полупрозрачный темный поликарбонат.

Выбор платформы для экспериментов с БПЛА - 16

Корпус состоит из двух половин. Половинки корпуса скрепляются при помощи четырех саморезов ввинчивающихся в пенечки на верхней половинке корпуса. Для упрощения сборочно/разборочных операций саморезы были сразу заменены на кусок черной изоленты видимый на первой фотографии. В левом нижнем углу виден небольшой отсек охватывающий датчик давления на плате. До самой платы стенки отсека не доходят, но, надеюсь, положительный эффект есть.

Выбор платформы для экспериментов с БПЛА - 17

Основные компоненты смонтированны снизу платы.

Выбор платформы для экспериментов с БПЛА - 18

Сверху располагаются интерфейсные разъемы, разъем microSD и несколько индикаторных светодиодов.
К качеству монтажа претензий нет — все ровно, флюс отмыт (кроме батарейки, она, очевидно, паялась вручную после печки). Кстати, у конкурентов батарейки нет (значит нет и часов реального времени, точнее нет пока не пойман GPS).
Пластиковые разъемы имеют соответствующие отверстия в верхней половинке корпуса. Возле каждого разъема есть подпись. Ответные разъемы входят с некоторым усилием. Для отключения категорически нельзя тянуть за провод (оторвется), а следует использовать тонкий пинцет или острые кусачки.

Выбор платформы для экспериментов с БПЛА - 19

На столе операция не вызывает затруднений, а в поле в -15С будут сложности. Имеет смысл сразу запастись запасными кабелями.

GPS модуль идущий в комплекте совмещает в себе приемник СНС с батарейкой и антенной и магнитометр.

Выбор платформы для экспериментов с БПЛА - 20

Необходимость выносить магнитометр вместе с GPS антенной возникает так как его желательно располагать подальше от силовых проводников и магнитных материалов. Для примера на DJI это сделано так:

Выбор платформы для экспериментов с БПЛА - 21

Все входы/выходы выведенные на разъемы имеют защиту от статики, ограничительные резисторы. По цепям питания установлены проходные конденсаторы и защитные диоды.

Выбор платформы для экспериментов с БПЛА - 22

Для наглядности вот фотография с разметкой части деталей обеспечивающих защиту.

Выбор платформы для экспериментов с БПЛА - 23

В итоге: к китайскому производству претензий нет, плату можно осторожно покрыть лаком и в полет! А если дополнить металлическим корпусом с выведенными разъемами то устройство будет смотреться и на фоне гораздо более дорогих коммерческих автопилотов.

А теперь вспомним конкурентов из начала статьи у которых ноги МК напрямую подключены к разъемам. Самые крупные детали на плате это два МК. Большой STM32F427 (168МГц, 256КБ ОЗУ, 2МБ FLASH) и поменьше STM32F103 выполняющий функции failsafe контроллера (управление аппаратом при отказе основного алгоритма автопилота). Т.е. Мы видим ту же архитектуру что и в Paparazzi 2008года, но на современной элементной базе. Здесь можно отметить что в современных SOC есть тенденция встраивать небольшие МК (ядра) для решения вспомогательных задач (а также задач жесткого реального времени), но здесь поступили проще — поставили отдельный МК. Установленные датчики/выведенные интерфейсы подробно расписывать не буду, все есть на странице проекта [22].

Программная часть

Проект базируется на NuttX RTOS [23]. NuttX представляет собой небольшую posix ОС. Система имеет поддержку ROMFS что позволяет часть настроек производить через конфигурационные файлы при работе системы (сравните со сборкой через конфигурационные xml у paparazzi).

Алгоритмы БИНС основаны на EKF и доступны в виде отдельного проекта InertialNav [24]. Есть варианты реализации под различные наборы датчиков: на 21, 22, 23 и 24 переменных состояния. Код фильтра хорошо документирован и частично получен автоматической генерацией из MATLAB. В проекте имеются исходные MATLAB файлы, архивы с данными — полный набор для опытов.

Работа с устройством «на столе» крайне проста: при подключении к USB в системе появляется новый виртуальный COM порт который можно использовать для связи с автопилотом (в реальном устройстве вместо USB будет подключаемый по UART радиоканал).

Проект совместим с кодом наземной станции управления QgroundControl [25]. Взаимодействи происходит через открытый протокол MAVLink [26].

Выбор платформы для экспериментов с БПЛА - 24

Станция управления позволяет настроить автопилот под конкретный летательный аппарат, задать полетное задние и управлять ходом его выполнения, т. е. все что нужно пользователю.

Для пользователя достаточно, но мы пойдем дальше…

Установка среды разработки и загрузка проекта осуществляется в два клика даже из-под windows:

  1. качаем toolchain [27]
  2. запускаем PX4_Software_download.bat — происходит скачивание проекта;
  3. импортируем проект в Eclipse.

Все, имеем Eclipse c проектом:

Выбор платформы для экспериментов с БПЛА - 25

Кому приходилось настраивать Eclipse для работы с ARM оценит простоту.

Теперь остается прикрутить ST-LINK и можно начинать отладку… но будет это в следующей статье которая появится только после накопления и осознания соответствующего опыта.

Ссылки:

  1. www.pixhawk.org [28] – проект открытой платформы для БПЛА;
  2. www.paparazziuav.org [29] – проект открытой платформы для БПЛА;
  3. www.openpilot.org [30] – проект открытой платформы для БПЛА;
  4. www.qgroundcontrol.org [31] – открытое ПО наземной станции управления;
  5. www.gumstix.com [32] – производитель миниатюрных SBC;
  6. www.beagleboard.org/bone [33] – дешевый SBC на базе SOC от TI.

Автор: pdkdrp

Источник [34]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/robototehnika/78870

Ссылки в тексте:

[1] Проект Paparazzi: http://wiki.paparazziuav.org/wiki/Main_Page

[2] Проект OpenPilot: http://openpilot.org/

[3] Pixhawk Autopilot: https://pixhawk.org/

[4] здесь: http://wiki.paparazziuav.org/wiki/Autopilots

[5] Paparazzi Classix: http://wiki.paparazziuav.org/wiki/Classix

[6] Paparazzi Lisa/MX V2.1: http://1bitsquared.com/collections/autopilots/products/lisa-mx-autopilot

[7] Paparazzi NavStik: http://navstik.org/home/

[8] OpenPilot CCD3 (STM32F1): http://www.openpilot.org/product/coptercontrol/

[9] EKF: http://en.wikipedia.org/wiki/Extended_Kalman_filter

[10] alli: http://www.aliexpress.com

[11] hk: http://www.hobbyking.com/

[12] OpenPilot Revo (STM32F4): http://www.openpilot.org/products/openpilot-Revolution-platform/

[13] AeroCore: https://store.gumstix.com/index.php/products/585/

[14] BeagleBone: http://beagleboard.org/bone

[15] BeagleBone IMU Cape: http://andicelabs.com/beaglebone-imu-cape/

[16] Edison: http://www.intel.ru/content/www/ru/ru/do-it-yourself/edison.html

[17] I.MX6: http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=IMX6X_SERIES&cof=0&am=0

[18] ROS: http://www.ros.org/

[19] Simulink: http://matlab.ru/products/simulink

[20] 4.Pixhawk Autopilot: https://pixhawk.org

[21] pixhawk.ethz.ch: https://pixhawk.ethz.ch

[22] странице проекта: https://pixhawk.org/modules/pixhawk

[23] NuttX RTOS: http://www.nuttx.org

[24] InertialNav: https://github.com/priseborough/InertialNav

[25] QgroundControl: http://www.qgroundcontrol.org/

[26] MAVLink: http://en.wikipedia.org/wiki/MAVLink

[27] toolchain: https://pixhawk.org/dev/quickstart

[28] www.pixhawk.org: http://www.pixhawk.org

[29] www.paparazziuav.org: http://www.paparazziuav.org

[30] www.openpilot.org: http://www.openpilot.org

[31] www.qgroundcontrol.org: http://www.qgroundcontrol.org

[32] www.gumstix.com: https://www.gumstix.com

[33] www.beagleboard.org/bone: http://www.beagleboard.org/bone

[34] Источник: http://geektimes.ru/post/243917/