APM-ARDUPLANE

Испытания производились при поддержке ООО "Авиар" г.Пенза

Установка, прошивка, настройка контроллера Ardupilot mega на модели самолета.

Актуально для прошивок:

Arduplane 2.4

Arduplane 2.5

Arduplane 2.6

Некоторые аспекты использования 2.7.1

(для других версий могут быть некоторые отличия)

Где можно еще почитать и получить советы по настройке?

оф сайт http://plane.ardupilot.com/

обсуждение в рускоязычном форуме самолетной версии прошивки для этого контроллера Автопилот ArduPilot с открытым программным обеспечением

Прошивка и начальная настройка

1.Обновление прошивки

Подключаем контроллер по USB, скачиваем и запускаем программу Mission Planner (для работы с ранними прошивками с протоколом Mavlink 0.9 используем ArdupilotMegaPlanner.exe которую можно скачать тут,)

Выбираем появившийся после подключения USB номер COM - port, скорость роли не играет. Кнопку подключение нажимать не надо.

Телеметрию xbee или 3DR следует отключать на стадии заливки прошивки.

Нажимаем firmware, выбираем синий самолетик arduplane v X.XX (v X.XX - версия прошивки)

должна начаться загрузка

2. Настройка Радиоуправления - расходов и реверсов по каналам

Предварительно рекомендую убедиться что расходы не выходят из диапазона 1000-2000 ms (Если это не так, отрегулируйте приемник и перерегулируйте приводы на модели)

Подключаем 1-4 и 8 входные каналы и питание и общий к радиоприемнику, на апм 1 переводим слайдерный переключатель CLI в позицию "от штырьков подключения сервомашинок". (в современных прошивках этот переключатель всегда должен быть в этом положении, в APM2 и выше этот переключатель отсутствует)

Выбираем появившийся после подключения USB номер COM - port, скорость 115200 и подключиться.

Нажимаем настройка автопилота, настройка радио.

В некоторых прошивках по умолчанию включен элевонный режим (чекбоксы ниже индикаторов радиоканалов) - если модель классического типа - снимаем эти чекбоксы, и обязательно перезапускаем ардупилот (отключаем и подключаем провод usb если нет другого питания платы) - иначе калибровка будет неверной и только после этого настраиваем радиоканалы. Устанавливаем триммера каналов радиопередатчика в положение - соответствующее нормальному полету, жмем калибровка и перемещаем стики по всем крайним положениям, отклонения индикаторов радиоканалов должно соответствовать направлению стиков, за исключением стика тангажа (руля высоты) руль высоты от себя - индикатор вверх руль на себя индикатор вниз. в случае несоответствия установить чекбокс "REV" в нужном канале. незабываем переключить на все положения переключатель режима. перемещаем газ в нижнюю позицию, а остальные стики в среднюю и нажимаем завершить (complete)

3 Настройка логгирования - записи полетных данных в "черный ящик"

После первого полета, если вы не используете телеметрию, скорее всего вам понадобятся логи для оценки полета, необходимо их включить. Нажимаем терминал и набираем logs. если в терминале уже активен setup] то вводим exit и ввод, набираем logs

erase и ввод - чистка памяти где хранятся логи

enable all - включение полного логгирования

4 Включение и калибровка компаса

На APM1 компас- отдельно устанавливаемый модуль, на APM2 и APM2.5 он уже установлен

Заходим в настройки (Settings), оборудование (Hardware options), включаем компас (если чекбокс был отключен потребуется перезагрузка контроллера до проведения калибровки) и выполняем калибровку. Для калибровки плавно вращаем контроллер по всем осям не забывая про курс, в конце калибровки вы увидите результирующие значения offsets.

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

Проверка: после того как компас откалиброван, уберите подальше от стола магнитные предметы в том числе отвертки и ножницы, положите лист бумаги на стол и положите плату на него, направьте плату передом на север - чтобы индикатор в "Flight data" показывал точно на "N" (соответствие реальной стороне света на этом этапе не важно, на вашем рабочем месте все равно могут быть магнитные аномалии, их легко выявить механическим туристическим компасом)

затем проведите черту параллельно плате - и не двигая лист бумаги разверните плату на 180 и положите вдоль черты.

сначала курс будет показывать "S" - юг в любом случае т.к. это значение определяется по гироскопу, затем со скоростью порядка градуса в секунду показания гироскопа будут подтянуты к показаниям компаса, итак если после 30 секунд если вы видите тот же юг, с небольшим допуском - значит компас откалиброван верно.

5. Включение датчика воздушной скорости

Заходим в настройки, оборудование, включите галку датчик воздушной скорости (при этом параметр ARSPD_ENABLE будет уснановлен в 1), если он у вас есть и вы планируете его использовать. (на этой стадии его показания не будут использованы автопилотом, будут лишь накапливаться данные для калибровки и отображаться измеренная воздушная скорость в программе при соединении по телеметрии или USB, после того как он откалиброван и готов к использованию его можно начать использовать задав ARSPD_USE=1 в полном перечне параметров)

6 Настройка режимов автопилота

Заходим в настройки, Flight modes - настройте режимы которые вы будете использовать - для начала рекомендую manual - ручной stabilize - автоматическое выравнивание модели с ручным газом и возможностью управлять rtl - возврат к точке запуска. Для настройки режима необходимо подключить канал приемника связанный с многопозиционным переключателем передатчика на канал контроллера № 8 (у вертолетной прошивки "arducopter" используется канал №5 ) Весьма часто случается что небрежная настройка режима приводит неполадкам при пилотировании - для обеспечения надежности фиксации нужного режима постарайтесь чтобы значение PPM канала управления попадало ровно в середину диапазона отведенного для режима, более подробно как это сделать тут.

Установка в модель:

Устанавливать контроллер следует в место отвечающее следующим условием:

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

- обеспечение защиты от влаги в том числе конденсата росы и тумана

- отсутствие вихревых потоков приводящих к изменению давления в движении - в автопилоте используется барометр для определения высоты

- отсутствие магнитных полей (не используйте магнитные защелки кабины и устанавливайте вдали от мотора) магнитные поля могут повлиять на показание компаса

Подключение радиоприемника, регулятора, сервоприводов к APM1

В случае если расположение штырьков это позволяет - подключение приемника можно производить двумя вилками четырех контактной - соединить сигнальные пины приемника 1-4 и автопилота и трех контактной (для соединения канала 8 autopiot control, +5v и общий питания приемника)

контроллер APM2 имеет 8 входов для подключения радиоприемника расположенных на передней кромке и 8 выходов для подключения регулятора оборотов и сервоприводов на задней кромке, выходы пронумерованы, подключение осуществляется аналогично APM1, однако контроллер APM2 не имеет встроенного регулятора 5V и более требователен по электропитанию. В обеих случаях настоятельно рекомендую использовать отдельный внешний высокоточный линейный регулятор напряжения.

Контроллер АПМ 2.5 имеет гнездо PM для подключения "Power Module" этот модуль включает в себя источник питания автопилота, датчик напряжения, датчик тока

Требования к надежному источнику питания:

  • Питание от силовой батареи (7,4 - 20 вольт)

  • Дополнительный вход питания от резервной (маломощной) батареи

  • Выходное напряжение 5V +-5%

  • Выходной ток не менее 300 ма (с учетом телеметрии и minimosd)

  • Максимально допустимый импульсный выходной ток не менее 500 ма

  • соединение с контроллером "ардупилот" пайка или надежный разъем с фиксацией

От источника питания автопилота не должны быть запитаны посторонние устройства, особенно механические - например сервоприводы. Известны многочисленные случаи серьезных отказов в случае заклинивания сервоприводов использующих общее питание с бортовым контроллером.

Включение батареи

Всегда до подключения силовой батареи - убедитесь что радиопередатчик включен, выбрана нужная модель и выбран ручной режим на переключателе.

после включения батареи удерживайте модель в полетном горизонтальном положении (именно параллельно оси движения самолета а не оси фюзеляжа которая обычно порядка 3-5 градусов на кабрирование и соосна с плоскостью стабилизатора ) до тех пор пока не загорится желтый светодиод - в это время выполняется калибровка сенсоров горизонта. Если откалибровать не точно модель будет грубо удерживать высоту и двигаться "волнами" по высоте.

до начала полета дождитесь постоянного свечения красного светодиода - это будет означать что спутники захвачены и самолет запомнил точку запуска - куда он должен будет вернуться по команде rtl

Предполетная проверка:

проверяем правильность отклонения рулей в ручном режиме

переключаем в режим стабилизация наклоняем модель и убеждаемся что плоскости элеронов и руля высоты отклоняются в положение парирующее крен и пикирование на достаточные углы необходимые модели для парирования отклонения от горизонта, величина углов определяется настройками SERVO_ROLL_P и SERVO_PITCH_P, Первичная настройка может быть сделана "на глазок"

Настройка модели в первых полетах и проверка режимов

Первые взлеты осуществляются в ручном режиме.

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

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

Если самолет летит ровно при отпущенных стиках в ручном режиме - можно начать проверку режима стабилизации - наберите высоту достаточную для переключения в ручной режим и восстановления положения самолета. включите стабилизацию и попробуйте стиками помешать горизонтальному полету - модель должна быстро восстанавливать горизонтальное положение. для проверки режима rtl следует занять безопасную высоту отлететь на 20- 30м и переключить rtl модель должна развернуться в сторону точки запуска, достичь ее и начать кружение вокруг нее.

Демонстрация первого взлета модели в ручном режиме, пролета и фрагментов автоматической посадки

контроллер: APM1 + gps quectell mt3329 + компас + Airspeed sensor

http://www.youtube.com/watch?v=1_ChbpM5Dyg&feature=youtu.be

После того как механика и аэродинамика модели приведена в оптимально состояние - следует оптимизировать настройки ардупилота. На первом этапе следует настроить PID отвечающие за стабилизацию.

Принцип настройки следующий:

  1. Единовременно настраивается только один параметр

  2. сначала настраивается параметр P каждого из пидов (параметры I и D отложите на самый последний этап)

  3. единовременно изменяйте значение P не более чем на 10%

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

Во вторую очередь следует настроить стабилизацию пикирования/кабрирования, которая осуществляется аналогично но с параметром SERVO_PITCH_P

Выполняя полеты по настройке стабилизации обратите внимание на положение стика газа при котором самолет поддерживает нормальную скорость в горизонтальном полете, значение по умолчанию = 45%, но в используемых мною моделях обычно требуется порядка 60-70% газа. Без регулировки этого параметра модель будет интенсивно терять высоту при попытке использования режима "авто". параметр отвечающий за среднее положение газа для автоматических режимов THROTTLE_CRUISE

Параметры I и D каждого из пидов предназначены для тонкой настройки для получения максимума эффективности.

Параметр D на единовременную, краткосрочную дозу энергии прибавляемую к P требуемую в момент возникновения ситуации - например на преодоление вращательной инерции.

Параметр I позволяет автоматически сдвигать среднее положение дозировки энергии долгосрочно адаптируясь к условиям полета. Например если невозможно механически исправить "кривизну" модели то увеличивают I составляющую. Негативным следствием большого значения I является изменение полетных обстоятельств, к примеру если накоплена ошибка по крену на левое крыло, но впоследствии груз переместился на правую сторону то силы этой составляющей еще некоторое время будут препятствовать составляющим P и I поддерживать горизонтальный полет.

До окончания настройки P составляющих всех коэффициентов настройку D и I лучше отложить

Настройка параметров навигации для автоматических режимов

На данном этапе следует внести в память автопилота 5-10 точек на параллельных курсах на расстоянии 200 - 300м друг от друга, на относительной (от уровня земли) высоте порядка 100м, с размером радиуса точки 20м желательно в соответствии с наземными ориентирами.

на данной иллюстрации отрезок 1-2 лежит на земляной дороге по которой будет осуществлен контроль точности следования при анализе данных полученных с телеметрии.

Перед запуском помимо процедуры установки полетного уровня модели следует дождаться захвата спутников о чем будет свидетельствовать постоянное свечение светодиода "C" красного цвета. При первом захвате после включения сохраняется "домашняя точка" которая используется в последствии при использовании режима RTL

Цель испытаний - настроить PID навигации

NAV_ROLL_P - управление креном в целях достижения курса к очередной маршрутной точке, если параметр мал то модель будет слишком вяло менять курс к нужной точке, и идти к ней по дуге. На интенсивность поворота, особенно пилотажных моделей с центром тяжести по центру подъемной силы, существенно влияет коэффициент KFF_PTCHCOMP - он определяет зависимость положения руля высоты на кабрирование в зависимости от актуального угла крена.

NAV_PITCH_ALT_P - управление пикированием - регулировка интенсивности воздействия на руль высоты для достижения высоты указанной для маршрутной точки. Если это значение слишком мало то модель летает в одной плоскости не достигая требуемой высоты проходя над очередной маршрутной точкой.

в моем случае пришлось увеличить оба эти коэффициента приблизительно на столько же как и соответствующие коэффициенты отвечающие за стабилизацию.

THROTTLE_TE_P - коэффициент задающий зависимость изменения газа от "точки нормального значения" заданного в THROTTLE_CRUISE при необходимости набора высоты в большую сторону, при необходимости снижения в меньшую.

Примечание:

в прошивках по 2.6 NAV_PITCH_ALT (PID) не используется если в навигации задействован датчик воздушной скорости (ARSPD_USE = 1, не путайте с ARSPD_ENABLE который лишь разрешает наблюдать показание датчика воздушной скорости), я полагаю это исправят впоследствии и управление высотой с датчиком воздушной скорости будет комбинированным от скорости и потребности в снижении / наборе высоты.

Использование телеметрии для настройки, контроля полета, записи полетных данных и последующего анализа

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

  1. Комплект XBEE-900Pro

  2. 3DR telemetry set

любой из комплектов состоит из адаптера подключаемого к USB компьютера и адаптера с serial uart интерфейсом,

для лучшего приема желательно разместить компьютерный модуль повыше, для чего можно использовать USB - удлинитель

для подключения к Ardupilot Mega 1 и 2 на этих платах предусмотрен порт телеметрии, на котором имеются сигнальные выводы, общий и питание. Однако следует понимать что в режиме передачи данных приемо-передатчик может потреблять значительный ток и использование питания от ардупилота может привести к перегрузке встроенного в APM1 стабилизатора или внешнего для APM2. Для обеспечения надежности системы я бы рекомендовал использовать внешний источник (см. выше)

установка связи через беспроводной комплект подключенный к порту телеметрии осуществляется на скорости 57600 (если не указано иное в соответствующем параметре), в качестве номера порта следует выбрать тот, который появился после подключения USB адаптера. Процедура подключения и отключения может быть осуществлена в любом состоянии - на земле и или в полете, процедура подключения и пропадание связи не сказывается на полете, однако поскольку скорость передачи данных зависит от качества сигнала - подключение следует осуществлять в зоне уверенного приема, в противном случае может не хватит времени отведенного на процедуру передачи начальных параметров и случится таймаут. Через порт телеметрии доступны не все данные, консоль (настройки, тестирование, работа с логами) будет недоступна

Для удобства, после захвата спутников, когда на высотомере отобразится высота над уровнем моря - установите в mission planner высоту домашней точки в "0"

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

Все полетные данные полученные в ходе сеанса связи записываются в два файла .rlog и .tlog

Впоследствии для анализа полета эти данные можно воспроизвести. Для того чтобы посмотреть полет даже не потребуется подключенный контроллер - скачайте Mission Planner, и архив с файлами телеметрии приложенный в конце страницы, разархивируйте вложенные файлы в одну папку, откройте файл .tlog из Mission Planner и нажмите кнопку "Play" В конкретной записи в начале модель неподвижна, ведется ее наземная подготовка и проверка.

Анализ полетных данных в целях выявления ошибок настройки.

На примере данных телеметрии "полеты_4_08_2012_6кругов.rar" (архив внизу страницы)

Обнаружены недочеты:

  1. из кривой движения в режиме "авто" от точки 1 к точке 2 возникает предположение что модель имеет склонность к уклонению вправо порядка 5 градусов, это может являться следствием неверной установкой руля направления или отсутствия выкоса установки двигателя.

    1. решение: в следующем испытании попробовать установить небольшое отклонение руля направления влево.

  2. исходя из части маршрута "6 кругов с радиусом 50 метров вокруг точки №8" в виражах наблюдается просадка на 2-3 метра. Возможно недостаточен коэффициент зависимости кабрирования от крена Решение: попробовать увеличить значение KFF_PTCHCOMP

  3. После прохождения 6 кругов на высоте 30 метров следующая точка №9 (предпосадочная) находилась на удалении 40 метров с высотой 5 метров - что оптимально для вхожения в глиссаду, радиус маршрутной точки был задан 20 метров. Логика ардупилота (версии 2.50) такова что войдя в радиус маршрутной точки - точка считается достигнутой и предпринимается очередное маршрутное действие - в результате пройдя из 40 метров только 20 - случилось вхождение в радиус маршрутной точки и как следствие прекращено снижение, в следствие чего на дистанции от точки 8 к точке 9 модель снизила высоту не до 5 метров а на отметке 15 приняла горизонтальное положение и зафиксировала курс - как и следовало в начале посадки

на иллюстрации указана высота от уровня моря т.к. не была сделана установка высоты перед полетом (следует считать за вычетом 135м) показан момент вхождения в радиус 9 маршрутной точки с ошибкой +15м. Решение: по идее это ошибка логики автопилота - моментом прохождения маршрутной точки следовало бы считать не вхождение в радиус а момент минимальной дистанции и это особенно актуально в момент посадки. поскольку переписывание кода достаточно трудоемкая операция то в следующих испытаниях следует сделать точку вхождения в глиссаду дальше от кромки, а предшествующую ей точку на той же высоте что и точка вхождения в глиссаду или уменьшить радиус маршрутной точки с типовых 20 метров до 5, т.к. GPS приемник показал достаточно высокую точность.

Дополнительные задачи для последующих полетов:

  1. Поскольку в первом полете при значении по умолчанию TRIM_TROTTLE (TROTTLE_CRUISE) 45% модель слишком интенсивно теряла скорость, а после увеличения до 70% оказалось, что это немного превышает реальные потребности в мощности - снизить уровень до 65%

  2. уменьшить WP_LOITER_RAD с 50 до 20 метров, так как не позволяет летное поле и долго ждать пока он наматывает такие круги

  3. Уменьшить число кругов, пары кругов достаточно чтобы вычислить просадку в повороте

  4. Оказалось что при резком увеличении газа регулятор не всегда успевает раскрутить мотор и может произойти срыв вращения, для предотвращения этой ситуации следует установить параметр регулятора "мягкий старт", альтернатива в коде автопилота для автоматического режима THR_SLEWRATE, попробовать установить в 50% - насколько сможет измениться значение газа за секунду.

  5. После того как автокалибрвка датчика воздушной скорости после нескольких полетов будет завершена, и его средние показания при движении по кругу будут соответствовать наземной скорости - включить ARSPD_USE - возможность использования датчика воздушной скорости для целей управления полетом.

Использование телеметрии для изменения настроек

Тестирование производилось командой из двух человек пилот + оператор-пк ходе первых полетов мы опасались изменять какие либо параметры в полете - сначала приземлялись - настраивали, затем попробовали "на лету" - перевели модель в ручной режим - получилось настраивать ПИДы, затем обнаглели и стали заливать новые настройки в том числе маршрут не переходя из авто режима (правда после заливки нового маршрута давали из телеметрии команду на сброс миссии) В результате убедились что все достаточно хорошо работает "на лету" (в прямом смысле) что позволило существенно ускорить испытания.

Особенности планирования маршрута

После того как датчик воздушной скорости был откалиброван и включен параметр ARSPD_USE = 1 практика показала основным параметром определяющим маневренность модели при неизменных NAV_ROLL ПИДах является воздушная скорость модели, причем эта зависимость нелинейная например при скорости 12 м/с наша модель делала разворот на 180 градусов с радиусом 5-7м а при воздушной скорости 15м/с радиус достиг 20м

поэтому предварительные выводы таковы:

  • сначала следует определить скорость при которой начинается "сваливание" модели, и увеличив полученное значение в 2 раза задать его в качестве "круизной скорости", затем под эту скорость настраивать параметры навигации по наклону и пикированию

  • при планировании маршрута, в случае наличия даже минимального ветра для достижения четкого прохождения маршрута точки следует располагать так чтобы "сложные" участки (близко расположенные точки) находились в положении когда модель идет против ветра (и при этом она показывает чудеса маневренности)

  • бесполезно устанавливать точки ближе одна к другой чем это позволяет маневренность модели

Планирование посадки

В случае если в маршрут включена автоматическая посадка то посадочную точку с высотой 0 следует ставить в предполагаем месте касания полосы, предшествующую посадке точку следует ставить на высоте порядка 5 метров - на удалении достаточном для снижения на эту высоту при соблюдении круизной скорости. это будет точка входа в глиссаду, в ней самолет отключит мотор и будет снижаться за счет установки пикирования в зависимости от воздушной скорости если включен параметр ARSPD_USE = 1 (или будет удерживать заданный в переменной land_pitch_cd в сотых долях градуса если ARSPD_USE = 0), помимо точки захода на посадку в прямой от посадочной точки и точки входа в посадку следует поставить еще одну точку с высотой безопасной для маневрирования (для нашей модели это высота 15 метров на удалении 40м от точки входа в посадку) то что эта точка находится на посадочной прямой и безопасной высоте позволит обеспечить отсутствие резких маневров приводящих к невосполнимой потере скорости на малых высотах.

С тем чтобы обеспечить гарантированное снижение с большой высоты без набора скорости разумно перед точками посадки установить точку кружения с 1-2 кругами (для сброса высоты 70м в нашем случае хватило одного круга на высоте 30м )

Основные типы маршрутных точек

WP - маршрутная точка с указанием широты долготы и высоты (высота отностительно точки старта или уровня моря задается отдельной опцией)

TAKEOFF - точка в которой актуальным параметром является высота. Например если установить высоту 15 метров то запуская модель в этом режиме до этой высоты газ будет максимальный (для первых прошивок: газ работал в ручном режиме), автоматически будет удерживаться взлетное кабрирование, и курс. при достижении моделью указанной высоты включится автоматический газ и навигация к первой WP

LANDING - планируемая к посадке точка, при ее наличии при прохождении предыдущей точки выключается двигатель, включается удержание текущего курса и удержание скорости если включен параметр ARSPD_USE = 1 (или будет удерживать заданный тангаж, указанный в параметре land_pitch_cd в сотых долях градуса если ARSPD_USE = 0),

в прошивке Arduplane 2.6 изменен алгоритм посадки- используется удержание угла указанного в параметре land_pitch_cd независимо от значения ARSPD_USE

для всех типов точек задается WP_radius - радиус зоны попадая в которую автопилот считает что достиг точки и берет курс к следующей. Соответственно если GPS приемник достаточно точный и модель попадет от предыдущей точки по определенной траектории то имеет смысл планировать точки таким образом что точкой прохождения будет пересечение траектории от предыдущей точки и радиуса. При уменьшении радиуса менее 10 метров возможны интенсивные "доруливания" вблизи точек даже при слабых PID навигации - специфика PID навигации - они дают коррекцию курса от угловой ошибки а вблизи маршрутных точек угловая ошибка даже при небольших разбросах показаний GPS может дать большой угол. Следственно задавать радиус точки меньше 10 метров - чревато резкими рывками при их прохождении. Задавать радиус более 20 метров чревато что точка будет достигнута на этом радиусе, и если это не предусмотрено в плане то может быть "срезан угол", кроме того если между двумя точками планируется изменение высоты то при достижении радиуса этой точки изменение высоты будет не таким как ожидалось на величину отношения удаления между точками к радиусу точки. это особенно важно учитывать при планировании захода на посадку. При достаточно больших значениях пидов навигации не следует задавать радиус точки меньше 20м

Автоматизация нанесения точек на карту

В Mission Planner есть возможности автоматического создания точек для полета по кругу и для облета заданного квадрата. Для второго случая предварительно понадобится нанести на карту периметр облета при помощи специального инструмента. Это весьма полезный инструмент для создания маршрута для целей аэрофотосъемки или опыления плантаций.

Создание точек по кругу: ставим курсор в центр предполагаемого круга на карте и вызываем контекстное меню ПРАВОЙ кнопкой мыши.

Создание "полигона" для полетов - ставим указатель мыши в нужное место и вызываем контекстное меню

заполнение полигона "сеткой" маршрутных точек

Есть еще одна крайне важная функция о которой нельзя не упомянуть говоря о планировании маршрута - для того чтобы Карта нужного вам региона была доступна в отсутствии соединения с интернетом необходимо выбрать нужный квадрат и вызвать функцию Map Tools -> Prefethch после чего Mission Planner загрузит фрагмент карты на диск

Настройка Точности следования маршруту и парирования воздействия ветра

Для возврата на планируемую траекторию при сносе ветром или всилу кривизны модели используется два параметра

XTRK_ANGLE_CD - максимальный угол который может корректировать эта система коррекции, например задавать свыше 90 (90000 в сотых градуса) бессмысленно т.к. при столь сильном ветре модель будет висеть на месте чтобы удержать курс. а вот значения 30 - 45 градусов вполне оптимальны.

XTRK_GAIN_SC - коэффициент воздействия ошибки отклонения от линии маршрута на угол поворота, для модели которой требуется идти точно по линии маршрута для геодезической фотосъемки я остановился на значении 150

В моем случае увеличение XTRK_GAIN_SC с 100 до 150 потребовало также увеличения NAV_ROLL_P на 15% для компенсации потери точности навигации по курсу.

На рисунке показано что на пути от точки 0 к точке 1 Xtrack подтянул модель к линии планируемой траектрории но при выходе из точки 1 образовалась дуга, красными стрелками показано как XTRK_GAIN_SC пытается притянуть фактическое положение к требуемой трассе, а красные черточки после пересечения желтой линии трассы, воздействие по парированию бокового ветра.

собственно уменьшение диаметра дуги после увеличения NAV_ROLL_P на 15%

Проблемы точного соблюдения высоты.

Контроль высоты в режиме соблюдения воздушной скорости

при использовании Airspeed_use = 1 самолет старается выдерживать заданную воздушную скорость в том числе удерживая необходимый для этого тангаж, в этом случае крайне сложно проогнозировать высоту фактического прохода точки. Для соблюдения безопасной воздушной скорости и точного следования заданной высоте предлагается решение - принимать меры по коррекции тангажа для удержания воздушной скорости лишь при достижении ею критических значений. Для этого следует модифицировть функцию в модуле altitude.pde

static void calc_nav_pitch() { // Calculate the Pitch of the plane // fine altitude control and prevent crash when excess airspeed limits // -------------------------------- if (airspeed.use() && airspeed_iscritical()) { nav_pitch_cd = -g.pidNavPitchAirspeed.get_pid(airspeed_error_cm); } else { nav_pitch_cd = g.pidNavPitchAltitude.get_pid(altitude_error_cm); } nav_pitch_cd = constrain(nav_pitch_cd, g.pitch_limit_min_cd.get(), g.pitch_limit_max_cd.get()); }

и добавить функцию определения "критической скорости" в конец altitude.pde

static bool airspeed_iscritical() { int aspeed_cm = airspeed.get_airspeed_cm(); // use fbw limits parameters if (aspeed_cm <= (int)g.flybywire_airspeed_min * 100 || aspeed_cm >= (int)g.flybywire_airspeed_max * 100) return true; else return false; }

при этом управление высотой будет зависить от коэффициента NAV_PITCH_ALT_P

в случае если воздушная скорость находится в диапазоне минимальной и максимальной скоростей определенных для flybywire Тестирование данного решения намечено на ближайшие испытания.

Проблема снижения в повороте

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

Решением этой проблемы может быть использование избыточного крена вместо руля высоты для "бокового соскальзывания" в случае если высота полета безопасно велика.

Другим решением может быть использование руля напрявления вместо крена в случае необходимости одновременного снижения.

Для опробования этих алгоритмов будут подготовлены и опубликованы модификации программного кода.

Полетные Испытания 21.10.2012

Цели:

  • проверка эффективности патча "точного контроля высоты"

  • проверка прошивки 2.6.5

  • проверка запуска со "Стартовой тележки"

Условия:

  • Без осадков

  • Низкая облачность,

  • Порывистый ветер в приземном слое до 6 м/с на высоте 100м до 12 м/с

  • относительная влажность 83%

  • температура 9°С

  • время начала испытаний 9:20

Программа испытаний:

взлет со стартовой тележки в ручном режиме управления, переход в автоматический режим, первая точка на высоте 100м, левый поворот на 90, снижение ко второй точке, 1 оборот вокруг второй точки левый поворот на 90, в 3 точке левый поворот на 90 к глиссаде, снижение к 4 точке до 4 метров, посадка.

Конструкция тележки

тележка для старта модели с грубой поверхности, например с газона

вид спереди

наклонный стержень фиксирует хвостовую балку до момента подъема носовой части

Результаты.

Взлет с тележки происходит успешно, руление килем достаточно и эффективно , сваливания изза неровностей "газона" не происходит, в обеих попытках для разбега была израсходована вся длина полосы.

Выработано мнение: это происходит изза недостаточности угла установки модели на тележке. В качестве величины угла был выбран полетный угол модели (4градуса) при этом значении требуется скорость порядка 10м/с, достижение которой затруднительно. В качестве решения было предложено увеличить угол в полтора раза.

Прохождение маршрута в условиях очень сильного ветра

Маршрут:

1я точка - набор высоты 100м

2я точка круг с разиусом 20м вокруг точки

3я точка опеределяет направление входа в глиссаду

4я точка отключения мотора

5я точка предполагаемое место касания полосы

автоматическая посадка точно на полосу

Прошивка Arduplane 2.6.5 показала отличный результат в условиях крайне сильного ветра, даже сильный ветер не смог отклонить модель от заданного маршрута, благодаря использованию патча "точного контроля высоты" самолет точно вышел на требуемую высоту в точке начала глиссады, совершено две автономные посадки точно на полосу.

Используемые в этом испытании настройки, маршрут, логи телеметрии приложены в конце страницы.

Изучение параметров управления газом в режиме взлета

эти опции стали доступны в прошивке arduplane 2.7.1

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

THR_SUPP_MAN по умолчанию он равен 0

но если его поставить в 1 то в режиме "предотвращения включения газа" когда аппарат в автоматическом режиме но лежит на земле газ будет зависеть от положения стика газа.

внимание:

если эту опцию включить, то газ будет вручную втч на взлете но до момента наступления разблокировки газа

то есть при соблюдении любого из условий

  • толчок по оси х (вперед) определяемый TKOFF_THR_MINACC превышает установленное значение , отличное от нуля (0 - опция не действует)

  • достижение взлетной скорости определенной в TKOFF_THR_MINSPD (метры в сек)

после того как выполнено любое из этих условий на взлете газ будет полный и не будет зависеть от положения ручки газа

Резюме:

для того чтобы взлетать с полосы в режиме ручного газа нужно поставить

  • THR_SUPP_MAN = 1 чтобы разрешить ручной газ

  • TKOFF_THR_MINACC = 0 чтобы исключить активацию полного газа от толчков

  • TKOFF_THR_MINSPD = 12 (для моей модели) чтобы исключить включение полного газа до отрыва от полосы, у меня отрыв около 10м/с

при стрельбе из катапульты

  • THR_SUPP_MAN = 1 если хотите задать небольшой начальный газ вручную до выстрела. 0 если газ вручную с пульта недопустим

  • TKOFF_THR_MINACC = 30

при броске с руки

  • THR_SUPP_MAN = 1 если хотите задать небольшой начальный газ вручную до броска. 0 если газ вручную с пульта недопустим

  • TKOFF_THR_MINACC = 10-12

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

Особенности прошивок:

Arduplane 2.4 стабильная прошивка, в режиме "GPS NMEA" возможна ошибка до 2 км

Arduplane 2.5 - 2.6 не работает "HIL версия" с симуляторами, в режиме "GPS NMEA" возможна ошибка до 2 км

Arduplane 2.6.3 исправлен режим HIL, исправлена ошибка "GPS NMEA"

Arduplane 2.6.5 исправлены проблемы с управлением ЛК

Arduplane 2.6.8 снова исправлен режим HIL, исправлены неточности при использовании UBLOX gps

В тестировании использованы

  • модель "трансформер" fpv-model.ru (размах крыльев 1750мм, вес ~ 2кг, верхоплан, задний толкающий винт )

  • тяга 2 кг, винт 11*6,

  • батарея zippy 3s 5000ma

  • телеметрия 3dr radio 915mhz

  • Автопилот APM1 + компас 5883l + GPS globaltop PA6C (mediatek 3339) + датчик воздушной скорости

Примечания:

Описание всех параметров на английском языке на официальном сайте

Компиляция прошивок в среде ардуино: прошивки до 2.5 следует компилировать в ардуино 0.22 relax path,

начиная с 2.5 в arduino 1.0 relax path или arduino 1.0.1

русскоязычное обсуждение arduplane тут