- Robotdyn Mega2560 Pro в качестве полетного контроллера гексакоптера

ИСПОЛЬЗОВАНИЕ ПЛАТЫ ROBOTDYN MEGA2560 PRO ДЛЯ ПОСТРОЕНИЯ ПОЛЕТНОГО КОНТРОЛЛЕРА ГЕКСАКОПТЕРА

Практика для студентов. Мясищев А.А.

В настоящее время большой интерес представляют беспилотные летающие роботы, построенные на базе мультироторов. Среди них наибольшее распространение имеют квадрокоптеры (4 мотора). В меньшей степени распространены гексакоптеры (6 моторов) и октокоптеры (8 моторов), которые по сравнению с квадрокоптерами имеют большую подъемную силу и устойчивость. Например, при выходе из строя одного мотора они в состоянии дальше следовать по маршруту полета. Сейчас эти мультироторные беспилотные летательные аппараты используются для исследования местности, для проведения спасательных операций МЧС, в работе пожарных служб, военной разведки. Они могут быть использованы для доставки небольших грузов на расстояние не более 5-7км со скоростью 30-40км/час. Применяются фотографами и операторами для съемок пейзажей, архитектуры, видеороликов. Ниже показано фото северной части г. Хмельницкого(высота ~300м), которое было получено с описанного ниже гексакоптера камерой Firefly Q6:

Пример видео здесь: https://youtu.be/Yl-sDo9gmP0

Целью работы является построение БПЛА, который способен выполнять следующие основные полетные режимы:

1. Stabilize — в этом режиме выполняется взлет и посадка. Задействованы гироскоп и акселерометр для удержания горизонта. Компас используется дополнительно для контроля и коррекции.

2. AltHold — режим удержания высоты. В данном режиме добавляется использование барометра, который способствует удержанию высоты по давлению воздуха.

3. Land — режим автоматической посадки в текущем положении. Используется барометр для контроля высоты.

4. Simple — режим, который позволяет «забыть» об ориентации БПЛА относительно пилота. В данном режиме самым важным является компас.

5. Loiter — режим удержания точки (по координате и высоте). Использует GPS. Режим хорошо подходит для фото и видеосъемки.

6. RTL (Return To Launch) — возврат домой, в точку взлета. Контроллер запоминает точку, где произведен Arming и позволяет вернуть БПЛА в эту точку.

7. Auto — полет по точкам миссии. Миссия должна создаваться вручную с помощью программного обеспечения наземной станции перед полетом.

8. Failsafe — режим спасения, который отправляет БПЛА домой (в точку, где произведен запуск двигателей - Arming). Например, в случае потери связи с наземной станцией.

БПЛА должен быть построен на базе мультиротора с 6-ю двигателями и рамой типоразмера F550 с расположением моторов X-FRAME.

В настоящее время разработано большое количество полетных контроллеров с программным обеспечением. Это Multiwii, ArduCopter (APM 2.6, APM 2.8, PixHawk), контроллеры DJI (Naza-M Lite, DJI Naza-M V2, DJI Wookong), MicroKopter, Zero UAV X4/X6, AutoQuad, KK., XAircraft и др. Однако далеко не все они отвечают поставленной задаче.

Для решения поставленной задачи необходим правильный выбор полетного контроллера совместно с программным обеспечением для его функционирования. В работе полетный контроллер построен на основе микроконтроллера Atmega2560 в составе платы RobotDyn Mega2560 Pro, 6-ти осевого гироскопа-акселерометра MPU6050, 3-х осевого компаса HMC5883L, барометра/высотомера MS5611/BMP180, GPS приемника u-blox NEO-6M. Плата RobotDyn Mega2560 Pro представляет собой уменьшенную версию Arduino Mega2560 R3 при аналогичных характеристиках, производительности и наличии всех портов, которые имеет Arduino Mega2560 R3 (рис.1).

Рис.3. Подключение датчиков к микроконтроллеру

В случае использования более дешевого и менее точного барометрического датчика BMP180 (плата GY-68), подключение его выполняется аналогично GY-63 В работе управление гексакоптером выполняется с помощью шестиканальной аппаратуры FlySky FS-I6 и десятиканального приемника FS IA10. С целью расширения возможности управления аппаратура FlySky FS-I6 была перепрограммирована на 10 каналов[4]. В частности это позволило использовать два переключателя для установки шести режимов работы гексакоптера. На рисунке 4 показан приемник FS IA10 и его подключение к MEGA2560 PRO.

Рис.2. Датчики, используемые для построения полетного контроллера

На все рассматриваемые здесь датчики подается напряжение 5В. Подключение GY-521, GY-63/GY-68, GY-273 к Mega2560 Pro выполняется по шине I2C. Модуль GY-GPS6MV2(GY-NEO6MV2) подключается к второму последовательному интерфейсу RX2TX2. Датчик компаса должен находится на расстоянии более 25 см от моторов и не менее 15 см выше плоскости, в которой расположены моторы. Экспериментально определено, что это приводит к отклонению показаний компаса при максимальной нагрузке моторов не более 2.0-2.5 градуса. Установка магнитометра в плоскости работы моторов приводит к отклонению до 25 градусов при отдалении от них на расстояние 25 см. На рисунке 3 показано подключение датчиков к плате Mega2560 Pro.

Рис.1. Сопоставление плат Arduino Mega2560 R3 и Mega2560 Pro

Из рисунка 1 видно, что из-за значительно меньших размеров при сходных характеристиках для полетного контроллера целесообразно использовать меньшую по размеру плату Mega2560 Pro. Для сборки полетного контроллера необходимо выполнить подключение плат Mega2560 Pro, GY-521 - 6-ти осевого гироскопа-акселерометра MPU6050, GY-273 - 3-х осевого компаса HMC5883L, GY-63/GY-68 - барометра/высотомера MS5611/BMP180, модуля GY-NEO6MV2 - GPS приемника u-blox NEO-6M (рис.2).

Рис.4. Подключение каналов приемника FS IA10 к аналоговым выводам Ардуино (MEGA2560 PRO)

Подключение моторов к полетному контроллеру выполняется через ESC регуляторы. В регуляторы встроены стабилизаторы напряжения на 5в, которые используются для отдельного питания полетного контроллера и приемника. На рисунке 5 показано подключение шестого мотора к полетному контроллеру через ESC.

Рис. 5. Подключение шестого мотора к полетному контроллеру

К выводам D2, D3, D5, D6, D7, D8 подключаются моторы M1, M2, M3, M4, M5, M6 соответственно. В работе используется шесть моторов модели А2212/13Т 1000V, каждый из которых с пропеллерами 10"х4.5" развивает тягу до 0.8кг. Моторы подключены через регуляторы моделей Hobbypower ESC-30A или Readytosky ESC-30A. Было замечено, что у этих регуляторов с их собственными прошивками наблюдаются срывы синхронизации при оборотах ниже средних. Поэтому при резком сбросе оборотов возможна остановка двигателя, что приведет к аварии коптера. Следует также отметить ненадежную работу регуляторов Hobbypower ESC-30A и Readytosky ESC-30A китайского производителя, которые способны самопроизвольно сбрасывать настройки после программирования его через пульт управления БПЛА, а также они является очень ненадежными в случае запуска при температуре ниже +15 град. Поэтому при подключении батареи перед запуском коптера необходимо внимательное прослушивание мелодии регулятора ESC о его готовности. Перечисленные выше замечания требуют выполнения перепрошивки перечисленных выше регуляторов. Опыт показал, что лучшей прошивкой для них при использовании преимущественно в коптере является прошивка Simonk [2]. На рисунке 6 представлено фото регулятора Hobbypower ESC-30A со снятой термоусадкой и показаны места для подключения программатора. Программирование ESC представлено в работе [3].

Рис.6. Фото регулятора Hobbypower ESC-30A со снятой термоусадкой

Расположение моторов на гексакоптере, их нумерация и направление вращения показаны на рисунке7.

Рис.7. Нумерация моторов на гексакоптере

Для построения полноценного беспилотного летательного аппарата (БПЛА) необходимо выполнить правильное конфигурирование GPS модуля. Благодаря этому модулю БПЛА может выполнять в автоматическом режиме полет по заданной траектории, удерживать заданную позицию, выполнять автоматический возврат в точку старта, выполнять заданные действия при достижении точки с заданными координатами и т.д. Настройка в работе рассмотрена для распространенного GPS модуля u-blox NEO-6M (модуль GY-GPSM6V2), который подключен к полетному контроллеру на базе Arduino Mega256 с прошивками MegapirateNG, Ardupilot, Multiwii. Согласно литературным источникам[6] возможны два способа настройки модуля. Первый способ использует конфигурационный файл, который используется для прошивки flash памяти GPS модуля u-blox NEO-6M, а второй способ основан на конфигурировании этого модуля с помощью программы u-center [5] с последующим формированием конфигурационного файла. На рисунке 8 показан конфигурируемый модуль с подключенным к нему конвертером USB TO TTL на основе микросхемы CH340. Конвертер необходим для подключения GPS модуля к компьютеру.

Рис.8. Конфигурируемый GPS модуль с помощью программы u-center

Для конфигурирования в программе U-center (ver. 8.21) необходимо перейти к Message view (View => messages view). При дальнейшей работе с программой после каждого изменения параметров в окне необходимо в нижнем левом угле окна нажимать на кнопку Send (обведена красным на рисунке 9):

Рис. 9. Конфигурирование в программе u-center

Далее выполняются следующие действия:

1. Необходимо щелкнуть правой кнопкой мыши на слове NMEA в верхней части дерева и выбрать Disable Child Message. Слово NMEA должно поменять черный цвет на серый.

2. Выбрать UBX=>CFG=>NAV5 и установить модель динамической платформы для использования: 3 - Pedestrian, также установить Fix Mode 2 - 3D only. В этом случае приемник GPS начнет функционировать в трехмерной системе координат. Нажать внизу на кнопку Send.

3. UBX=>CFG=>PRT – установить USART1 на скорость 38400бит/с и установить все протоколы UBX+NMEA!! Нажать внизу на кнопку Send.

4. Изменить скорость порта программы U-center на 38400бит/с. Нажать внизу на кнопку Send.

5. UBX=>CFG=>RATE(Rates) – изменить период определения координат на 200мсек. Это позволит определять позицию с частотой 5Гц, т.е. 5 раз в секунду. Нажать внизу на кнопку Send.

6. UBX=>CFG=>SBAS: Disable (SBAS перевести в состояние выключено, так как это вызывает серьезные случайные ошибки вычисления высоты). Нажать внизу на кнопку Send.

7. UBX=>NAV (но не UBX=>CFG=>NAV): здесь необходимо два раза кликнуть клавишей мыши на POSLLH, STATUS, VELNED. После этого их цвет должен измениться с серого на черный. Нажать внизу на кнопку Send.

8. UBX=>CFG=>CFG: выбрать save current config, нажать “send” в нижнем левом угле для постоянного сохранения настроек в приемнике.

9. Перейти в общем меню Receiver=> Action=> Save Config. Если этого не сделать приемник после следующего включения перейдет к первоначальным настройкам.

После этих настроек модуль GPS может быть использован на гексакоптере. На рисунке 10 показано фото собранного полетного контроллера, который установлен на гексакоптере с рамой F550.

Рис.10. Фото полетного контроллера

Рассмотрим установку прошивки на полетный контроллер. В работе используется прошивка MegapirateNG ver.3.1.5R2. Прошивка будет сконфигурирована в зависимости от используемых датчиков и рамы коптера. Прошивка сгенерирована на компьютере с Windows ver.10. В работе используется следующая последовательность действий. Вначале создается папка на диске D: для размещения прошивки, например 2018_megapirate. С адреса https://github.com/MegaPirateNG/ardupilot-mpng/tree/mpng-3.1-beta копируется прошивка в созданный каталог. После разархивирования автоматически создается каталог ardupilot-mpng-mpng-3.1-beta в котором находится текст программ для компиляции в среде Arduino IDE ver. 1.0.3. С адреса http://firmware.ardupilot.org/Tools/Arduino/ копируется измененный Arduino IDE (файл ArduPilot-Arduino-1.0.3-gcc-4.8.2-windows.zip) под ардукоптер. Распаковываем этот файл в папке для прошивки. Так как этот измененный Arduino IDE пропатчен, кроме ардукоптера ничего компилироваться не будет. С адреса http://firmware.ardupilot.org/Tools/Arduino/ копируется MHV_AVR_Tools_20131101.exe, что представляет собой набор инструментов, которые будет использовать Arduino IDE для сборки и заливки прошивки. Здесь находится новый компилятор GCC, программатор avrdude. Этот файл запускается как обычная программа. Из корня папки с тексом программ ардукоптера ardupilot-mpng-mpng-3.1-beta копируется файл pde.jar в каталог ArduPilot-Arduino-1.0.3-windows\lib. Далее запускается Arduino IDE из папки ArduPilot-Arduino-1.0.3-windows. Устанавливается целевая платформа - компиляция для прошивки MegaPirateNG (рисунок 11).

Рис.11.Установка целевой платформы компиляции

В меню файл->настройки устанавливаются опции "показывать подробный вывод при компиляции и загрузке", а также должна быть установлена опция "проверка кода после загрузки". Должна быть удалена опция "обновлять расширение скетчей на новое". Для копирования прошивки в микроконтроллер без ошибок целесообразно скопировать файл avrdude.conf из папки с установленным в Program files AVRtools, к примеру:

C:\Program Files (x86)\MHV AVR Tools\bin в папку:

C:\2018_megapirate\ArduPilot-Arduino-1.0.3-gcc-4.8.2-windows\-Arduino-1.0.3-windows\hardware\tools\avr\etc

Далее необходимо запустить Arduino IDE из папки C:\2018_megapirate\ArduPilot-Arduino-1.0.3-gcc-4.8.2-windows\ArduPilot -Arduino-1.0.3-windows. Открываем Arduino IDE. Выбираем скетч ардукоптера: Файл->Папка со скетчами->ArduCopter. Появится новое окно с исходниками, старое пустое окно закрываем. Проверяем тип контроллера в Arduino IDE: Сервис->Плата->Arduino Mega 2560 or Mega ADK. Проверяем в правом нижнем углу Arduino IDE надпись "Arduino Mega 2560 or Mega ADK on COM5", если порт не тот, или его нет, выставляем COM порт платки: Сервис->Последовательный порт.

Переходим к настройке прошивки. Для этого необходимо расскомментировать и изменять строки кода. Все файлы, которые открыты в Arduino IDE, можно менять здесь же. Другие файлы нужно изменять только сторонним редактором. Вначале редактируется файл APM_Config.h который открыт во второй вкладке. Выбираем плату:

#define MPNG_BOARD_TYPE CRIUS_V1

Вводим параметры GPS устройства:

// GPS port speed (Serial2) 38400 by default

#define SERIAL2_BAUD 38400

// GPS driver selection

#define GPS_PROTOCOL GPS_PROTOCOL_AUTO

При отсутствии GPS, можно поставить GPS_PROTOCOL_NONE. В этом случае гексакоптер не будет возвращаться домой и летать по точкам в автоматическом режиме.

Конфигурируем раму коптера - гексакоптер:

#define FRAME_CONFIG HEXA_FRAME

Запрещаем некоторые режимы работы прошивки:

#define CLI_ENABLED DISABLED // disable the CLI (command-line-interface) to save 21K of flash space

#define LOGGING_ENABLED DISABLED // disable dataflash logging to save 11K of flash space

#define OPTFLOW DISABLED // disable optical flow sensor to save 5K of flash space

#define CONFIG_SONAR DISABLED // disable sonar to save 1k of flash

Представленные выше изменения справедливы в случае использования относительно дорогого и высокоточного барометра MS5611. Если используется барометр BMP180 необходимо дополнительно к вышеперечисленным изменениям сделать изменения в файле config.h в среде Arduino IDE, закомментировав две строки:

#if MPNG_BOARD_TYPE == HK_RED_MULTIWII_PRO || MPNG_BOARD_TYPE == BLACK_VORTEX

# define CONFIG_IMU_TYPE CONFIG_IMU_ITG3200

# define CONFIG_BARO AP_BARO_BMP085

#elif MPNG_BOARD_TYPE == PARIS_V5_OSD

# define CONFIG_IMU_TYPE CONFIG_IMU_ITG3200

# define CONFIG_BARO AP_BARO_MS5611

# define CONFIG_MS5611_SERIAL AP_BARO_MS5611_I2C

#else

# define CONFIG_IMU_TYPE CONFIG_IMU_MPU6000_I2C

// # define CONFIG_BARO AP_BARO_MS5611

// # define CONFIG_MS5611_SERIAL AP_BARO_MS5611_I2C

#endif

По умолчанию будет использован барометр BMP085 (устаревший аналог BMP180). Доступ к файлу config.h можно получить из верхней строки среды Arduino IDE.

Далее настраиваются каналы управления с пульта управления-приемника. Для этого необходим файл ardupilot-mpng-mpng-3.1-beta\libraries\AP_HAL_MPNG\RCInput_MPNG.cpp. Редактирование выполняется только из стороннего редактора. Например NotePad++. Если приёмник выдаёт PPM сигнал, то редактирование не выполняется. Если приёмник выдаёт PWM сигнал, то выполняется следующее:

меняется строчка файла RCInput_MPNG.cpp

#define SERIAL_PPM SERIAL_PPM_ENABLED

на

#define SERIAL_PPM SERIAL_PPM_DISABLED

После перечисленных выше изменений выполняется компиляция прошивки с последующим копированием ее в микроконтроллер.

Дальнейшая настройка прошивки полетного контроллера выполняется с помощью программы Mission Planner, например версии 1.3.15[7]. Производится калибровка акселерометра, компаса, радиоаппаратуры[8,9]. Обязательно настраивается Failsafe, иначе при потере связи с аппаратурой управления коптер улетает в соответствии с сохранившимися параметрами радиоприемника. На рисунке 12 представлен маршрут полета гексакоптера в автоматическом режиме по путевым точкам, сформированный в Mission Planer.

Рис.12. Маршрут полета гексакоптера в автоматическом режиме.

На рисунке 13 представлено фото собранного гексакоптера.

Рис.15. Установка камеры на двухъярусном подвесе с двумя промежуточными массами

Выводы

1. Практически показана возможность построения БПЛА, который способен выполнять заданные в работе полетные режимы.

2. Показана возможность использования более компактной платы RobotDyn Mega2560 Pro вместо Arduino Mega2560 R3 для построения полетного контроллера.

3. Представлена конфигурация модуля GY-GPSM6V2 в программе u-center для корректного полета гексакоптера по путевым точкам.

4. Показана необходимость перепрошивки регуляторов моторов ESC прошивкой Simonk для устойчивой работы гексакоптера.

5. Рассмотрена возможность использования прошивки MegapirateNG 3.1.5R2 и ее корректировка при использовании разных датчиков в полетном контроллере (на примере барометров MS5611 и BMP180).

6. Экспериментально показана не существенная разница в использовании барометров MS5611 и BMP180 в режиме удержания высоты для прошивки megapirateNG 3.1.5R2.

7. Гексакоптер с прошивкой ver.3.2.1. более стабильно удерживает высоту с помощью барометра MS5611 и более точно возвращается в исходную позицию по приемнику GPS.

Литература

1. Ardupilot. [Electronic resource]. - Mode of access: http://ardupilot.org/, 2018

2. Simon Kirby. TGY -- Open Source Firmware for ATmega-based Brushless ESCs. [Electronic resource]. - Mode of access: https://github.com/sim-/tgy, 2017

3. Мясищев А.А. Перепрошивка регуляторов Hobbypower ESC-30A, Readytosky ESC-30A и Simonk 30A прошивкой Simonk. [Electronic resource]. - Mode of access: https://sites.google.com/site/webstm32/esc_reg, 2017.

4. FlySky-i6-Mod-10ch. [Electronic resource]. - Mode of access: https://github.com/benb0jangles/FlySky-i6-Mod- , 2017.

5. U-center Windows. GNSS evaluation software for Windows. [Electronic resource]. - Mode of access: https://www.u-blox.com/en/product/u-center-windows, 2018

6. Мясищев А.А. Два способа настройки GPS модуля u-blox NEO-6M для полетного контроллера БПЛА на базе Arduino с прошивкой MegapirateNG. [Electronic resource]. - Mode of access: https://sites.google.com/site/webstm32/config_gps

7. Mission Planner Home. [Electronic resource]. - Mode of access: http://ardupilot.org/planner/ , 2018.

8. Полетный контроллер ArduPilot Mega (APM 2.6). [Electronic resource]. - Mode of access: http://ardupilot-mega.ru, 2017.

9. Подключение, прошивка и настройка полетного контроллера APM 2.6. [Electronic resource]. - Mode of access: https://www.youtube.com/watch?v=rqCS6YDE7KI&t=1645s , 2014.

10. Калибровка регуляторов скорости моторов ESC. [Electronic resource]. - Mode of access: http://ardupilot-mega.ru/wiki/arducopter/esc-motor.html, 2016.

11. Полётный контроллер. [Electronic resource]. - Mode of access: https://ru.wikipedia.org/wiki/Полётный_контроллер , 2018

12. Planning a Mission with Waypoints and Events. [Electronic resource]. - Mode of access: http://ardupilot.org/copter/docs/common-planning-a-mission-with-waypoints-and-events.html, 2016

13. Autopilot Hardware Options. [Electronic resource]. - Mode of access: http://ardupilot.org/copter/docs/common-autopilots.html#common-autopilots, 2016

14. Mega2560 Pro Mini. [Electronic resource]. -Mode of access: http://wiki.epalsite.com/index.php?title=Mega2560_Pro_Mini, 2015

15. А. А. Мясищев, Е. С. Ленков, В. М. Полозова. Настройка PID регуляторов и GPS модуля для прошивки MegapirateNG полетного контроллера на базе Arduino mega2560 // Збірник наукових праць Військового інституту Київського національного університету імені Тараса Шевченка. – Київ : ВІКНУ, 2017. – Вип. 57. – С. 143-152.

16. Мясищев А.А. Построение БПЛА на базе полетного контроллера apm 2.6. //Вісник Хмельницького національного університету. Технічні науки. – 2016. – № 5. – С. 225-230

17. Мясищев А.А. О ВОЗМОЖНОСТИ ПОСТРОЕНИЯ БПЛА ДЛИТЕЛЬНОГО ПОЛЕТА С ИСПОЛЬЗОВАНИЕМ СОЛНЕЧНЫХ ЭЛЕМЕНТОВ. NEWS OF SCIENCE AND EDUCATION. PUBLISHING HOUSE «EDUCATION AND SCIENCE» S.R.O. Прага. 2017. - Том 4, №11, с. 48-55.

18. Мясіщев, О.А. Система навігації безпілотного наземного апарата на Аrduino / О. А. Мясіщев, А. П. Фарина // Вісник Хмельницького національного університету. Технічні науки. – 2018. – № 4. – С. 173-176.

19. МясіщевО, А. Режими польоту контролерів польоту АРМ 2.6 і Pixhawk БПЛА [Текст] / А. МясіщевО, В. В. Швець // Вісник Хмельницького національного університету. Технічні науки. – 2018. – № 1. – С. 78-82.

20. Мясищев А.А. Использование BLHeliSuite для прошивки ESC регуляторов SimonK 30A и EMAX Simon-12A прошивками SimonK и BLHeli. [Electronic resource]. - Mode of access: https://sites.google.com/site/webstm32/blhelisuite, 2018

06.05.2018г.

Рис.14. Гексакоптер с полетным контроллеров APM 2.6

Для устранения вибрации камеры при высокочастотных колебаниях коптера, что приводит к появлению эффекта "желе", камера установлена на "двухъярусном" подвесе с двумя массами (одногривневые монеты), как показано на рисунке 15.

Рис.13. Фото спроектированного гексакоптера на базе Arduino mega2560

На рисунке 14 показан усовершенствованный гексакоптер с полетным контроллером APM 2.6, видеокамерой Firefly q6, видео передатчиком TS832 и прошивкой ArduCopter 3.2.1 released.