Гоночный FPV-дрон своими руками (часть 2) — настройка

В первой части я рассказал, как собрать квадрокоптер для FPV-полётов. Теперь настало время его настроить. Если интересно, вэлкам под кат.

4a406896bf854d38b75a5c4617cba4b7.jpg

Сразу оговорюсь, что я совершенно не претендую на роль эксперта, это всего лишь третий собранный мною квадрокоптер. Вдобавок, настройка — вещь весьма субъективная. Тем не менее, я надеюсь, что кому-то статья будет полезна и поможет сэкономить время.
Перейдём непосредственно к настройке. Сначала более простые вещи, а потом — его величество полётный контроллер.

Прошивка и настройка MinimOSD

Наиболее популярной (но не единственной) прошивкой для MinimOSD является MWOSD. Сначала нужно прошить ей плату, а потом ещё и настроить. Если настроить OSD можно через ПК (подробнее об этом в разделе, посвящённом настройке ПК), то для прошивки необходим FTDI-адаптер или Ардуинка. Как это сделать через FTDI-программатор, а главное где взять для него старые драйвера, показано в этом видео. Главное, не забыть перед прошивкой раскомментировать в Config.h следующие строки:

#define MINIMOSD
#define CLEANFLIGHT

Из параметров выводить на экран я стал только напряжение батареи, время полёта и выбранный полётный режим.

a245787cd08e40d99a5e6f8b59213c6a.png

Прошивка и настройка регуляторов

Для прошивки регуляторов у меня тоже есть специальный USB-адаптер, но можно обойтись и без него, подключившись через ПК. Долго думал, ставить Multishot или уже проверенный Oneshot125? С одной стороны, на устаревшем чипе F330 в скорости особой разницы не заметно, с другой — мелодия из «Звёздных войн» при включении и, как пишут на форумах, «более чистый сигнал». Решили всё неединичные жалобы на то, что моторы стихийно начинают вращаться на максимальных оборотах при подключении к CLI. В итоге поставил BLHeli последней версии (на момент сборки 14.5), включил Damped Light и выставил Motor Timing на «Medium». Позднее откалибровал регуляторы по этой инструкции.

Прошивка полётного контроллера

На этом этапе я застрял дольше всего, так как были проблемы с прошивкой. Оказалось, первый раз шить надо обязательно с замыканием boot-контактов (как в этом видео). Кстати, иногда бывает, что ПК защищён от записи и невозможно прошить новую прошивку. Вот инструкция, как это исправить.

Пожалуй, самой популярной прошивкой на сегодняшний день, вполне заслуженно, является Cleanflight. После её установки достоточно только настроить протокол приёмника и квадрокоптер уже может вполне сносно лететь. Для настройки используется удобная графическая оболочка Cleanflight Configurator.
Благодаря открытому коду прошивки, у неё есть несколько ответвлений (форков). Самым интересным из них является Betaflight от человека под ником Boris B. Прошивка очень динамично развивается и некоторые её «фичи» потом переходят в «родительский» Cleanflight (например, полётный режим Airmode). Минусом Betaflight является то, что релизы выходят достаточно часто, а стабильность их не всегда высока. Кстати, эта причина на несколько недель задержала написание данной статьи. На момент завершения сборки квадрокоптера как раз вышла версия 2.8.0, которая имела пару ошибок и отличалась недружелюбными дефолтными настройками. Очень быстро появилась исправленная версия 2.8.1 RC1, но опыт работы программистом подсказал мне, что лучше подождать релиза. Я не прогадал, так как одновременно с релизом версии 2.8.1, появился и Betaflight Configurator. Можно сказать, что это новый этап в истории данной прошивки. Дело в том, что по мере своего развития Betaflight всё больше и больше отдалялся от Cleanflight и конфигуратор последнего становился всё более и более бесполезным, так как основная часть настроек всё равно делалась через консоль CLI. Кстати, на момент подготовки этой статьи, уже вышла версия Betaflight под номером 2.9.0, но из-за негативных отзывов я не стал обновляться до неё.
Ниже я подробно опишу, как я настроил свой квадрокоптер через Betaflight Configurator.

Настройка ПК через Betaflight Configurator

Вкладка Setup
Сделал калибровку акселерометра.Вкладка Ports

  • Для того, чтобы работала OSD, включил MSP для порта UART2.
  • Ни в коем случае не отключайте MSP для порта UART1. Он запараллелен с USB и отключив передачу данных, вы уже не подключитель к ПК по USB-разъёму.

0dc82918b7604d158d4544d3262f7b04.png

Вкладка Configuration
Собственно тут и производятся почти все настройки.

  • В разделе «Board and Sensor Alignment» указал, что мой ПК повёрнут на 90 градусов по оси yaw. Корректность этого параметра потом можно проверить во вкладке Setup.
  • В «Reciever Mode» выбрал RX_PPM.
  • Выбрал ONESHOT125 в качестве протокола регуляторов (почему не MULTISHOT, я писал выше).
  • Отключил «Unsynced PWM output», опять же, потому что не использую MULTISHOT.
  • Чтобы моторы всегда вращались в заармленном состоянии, отключил MOTOR_STOP.
  • Включил опцию «Disarm motors regardless of throttle value», так как буду делать арм моторов на отдельном канале.
  • Уменьшил значение «Minimum Throttle» до 1030. Это обороты холостого хода, подбирал субъективно.
  • Включил опцию «VBAT» для активации индикатора заряда батареи. Остальные параметры в разделе «Battery Voltage» я не менял, так как показания заряда соответствуют действительности. Если же в них есть погрешность, её можно убрать настройкой «Voltage Scale».
  • В «Other Features» активизировал BLACKBOX, SUPEREXPO_RATES, а также LED_STRIP и выключил AIRMODE. О неё я расскажу чуть ниже.

551eb5f47fdc409182fd8907ec6b18e3.png

Вкладка Failsafe
C failsafe всё оказалось несколько сложнее, чем мне виделось ранее. На профильных форумах иногда встречаются холивары на тему «где лучше настраивать failsafe: на приёмнике или на ПК?» На самом деле, правильно это вопрос звучит так: «где лучше настраивать failsafe: только на приёмнике или на приёмнике и на ПК?»
Настраивать failsafe на приёмнике необходимо в любом случае. Здесь надо сделать важное уточнение, что речь идёт о приёмнике Frsky D4R-II, работающем по протоколу PPM. У приёмников с S.Bus failsafe настраивается иначе.
У Frsky D4R-II есть три варианта поведения при потере сигнала от передатчика:

  • передать на ПК сигнал, имитирующий предустановленные положения стиков и переключателей (режим Pre-set Positions, именно он и описан в мануале)
  • продолжать передавать на ПК последние данные, полученные от передатчика (режим Hold Last Position)
  • прекратить передавать сигнал на ПК (режим No Pulse)


По умолчанию в Frsky D4R-II установлен режим Hold Last Position, который способствует улёту аппарата в далёкие дали. Так что если использовать failsafe только на приёмнике, надо настраивать режим Pre-set Positions. Другое дело, что failsafe активируется даже при кратковременной потере сигнала. Будет очень неприятно, если сигнал через долю секунды восстановиться, а квадрокоптер уже задизармил моторы и падает вниз. Ситуацию может улучшить настройка failsafe на ПК, так как там этот режим имеет задержку срабатывания, что служит фильтром от кратковременных потерь сигнала. Кроме того, там есть настраиваемый сценарий, согласно которому квадрокоптер будет себя вести в случае активации failsafe. Например, можно включить режим со стабилизацией и попытаться более-менее мягко сесть или вообще активизировать RTH, если он есть. Но на практике такие вещи востребованы на больших аппаратах с GPS, а на маленьких и быстрых, опытные пилоты советуют не мудрить и выключать моторы после потери сигнала. Из-за высокой скорости полётов, так будет безопаснее для окружающих.
Нюанс в том, что, если на приёмнике установлен режим Pre-set Positions или Hold Last Position, то ПК даже не узнает, что произошла потеря сигнала. Таким образом, failsafe на ПК можно использовать лишь в том случае, если на приёмнике установлен режим No Pulse. На Frsky D4R-II он устанавливается кратковременным (менее 1 сек) нажатием на кнопку failsafe при выключенном передатчике (видео-инструкция).
На вкладке Failsafe Betaflight Configurator`а я сделал следующее:

  • В разделе «Channel Fallback Settings» установил значения переключателей передатчика, которые нужно будет сымитировать. В моём случае только включил пищалку на AUX3.
  • Активизировал Failsafe Stage 2.
  • Установил задержку активации режима failsafe 1 сек (значение 10 в пункте «Guard time for stage 2 activation…»)
  • Установил время работы моторов после активации failsafe 1 сек (значение 10 в пункте Failsafe Throttle Low delay).
  • В Failsafe Procedure выбрал сценарий с падением (Drop), а не с попыткой плавного приземления (Land).

f38c3f7fe3754ce79d53a2806e354d20.png

Вкладка PID Tuning
Настройка PID — процесс, в который совершенно не стоит лезть «не зная брода». В первую очередь, необходимо теоретическое понимание этих трёх составляющих. Вот несколько статей, которые могут с этим помочь:
Я себя не чувствую готовым к подобной настройке, поэтому я оставил значения по умолчанию, благо Betaflight позволяет неплохо летать и с ними. Но два изменения я всё же сделал:

  • Выбрал Float в разделе «PID Math». Это приемник режима LuxFloat из Cleanflight и устанавливать его рекомендуется только для ПК с процессорами F3 или F4.
  • Выбрал MEASUREMENT в разделе «Derivative method». Если коротко, то MEASUREMENT предпочтительнее для фристайла, а ERROR — для гонок.

Вкладка Modes
Повесил на переключатели арминг моторов и Blackbox (AUX1), активацию полётного режима Horizon (AUX2) и включение пищалки (AUX3).
Отдельно хочется сказать про AIRMODE. Изначально он был уникальной «фишкой» Betaflight, но в какой-то момент стал так популярен, что Boris B поделился им с авторами Cleanflight и сейчас данный режим доступен и там тоже.
Несмотря на то, что AIRMODE отображается как отдельный режим полёта — это скорее дополнительная опция, а не полноценный режим. Он позволяет квадрокоптеру удерживать заданный угол даже при минимальном газе. Именно поэтому не рекомендуется использовать AIRMODE вместе с режимами со стабилизацией. Кроме того, приземление с AIRMODE тоже процесс непростой: квадрокоптер начинает прыгать, как лягушка. Опытные пилоты предпочитают просто «ронять» квадрокоптер, выключая моторы в паре десятков сантиметров над землёй. Кстати, если у вас включена остановка моторов при нулевом газе (опция MOTOR_STOP во вкладке Configuration) и одновременно с этим работает AIRMODE, то остановки моторов не будет, так как AIRMODE имеет более высокий приоритет.
В Betaflight версии 2.8.1 появилась новая возможность: можно включить AIRMODE в фоновом режиме (что-то вроде пассивного перка в играх) и тогда он активен всегда и не будет отображаться во вкладке Modes, либо, как и ранее, повесить его включение на какой-либо канал. Делается это в «Other Features» вкладки Configuration.
У себя я не стал включать AIRMODE в фоновом режиме, так как использую ещё режим со стабилизацией HORIZON. Таким образом, у меня на AUX1 два полётных режима: HORIZON (для полётов со стабилизацией и посадки) и ACRO + AIRMODE.

0547c0af8bfb4269947b59362f80f433.png

Вкладка LED Strip
Настроил свою подсветку на отображение предупреждений, индикацию поворотов/торможения и свечение синим цветом, когда ничего из этого нет.

f05cd46de9dc4a948c6b4eae3537f037.png

Вкладка Blackbox
Blackbox — это «чёрный ящик» квадрокоптера. Нужен для диагностики, более точной настройки PID, а также чтобы можно было наложить инфографику на полётное видео (как тут). Данные пишутся на внешний логгер или, если того позволяет объём памяти, на внутреннюю память ПК. Например, у Naze32 Acro её недостаточно, а у Naze32 Deluxe и SPRacingF3 Acro — хватает, хотя и не намного. При настройках по умолчанию, на 2Мб памяти можно записать данные полёта продолжительностью 3–4 минуты, что весьма мало. Усугубляет ситуацию то, что реализовать запись «по кругу», как в автомобильных регистраторах, здесь невозможно из-за низкой скорости чтения/записи памяти. Единственный вариант — уменьшить в несколько раз скорость записи. Для диагностики такие данные уже будут малопригодны, а для видео — самое то. В этой вкладке я сделал следующее:

  • Выбрал запись на внутреннюю память (опция «On-board dataflash chip») в разделе «Blackbox logging device».
  • В разделе «Portion of flight loop iterations to log» выбрал 50%, что по сути уменьшает скорость записи вдвое.

ac9adf181c9440c5a830e43c3fdc588a.png

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

Вкладка CLI
CLI — это консоль, через которую можно менять уже более продвинутые настройки, а также делать резервную копию всех настроек. Я сделал следующее:

set small_angle = 180 # Включить возможность армить моторы даже в перевёрнутом состоянии
set vbat_pid_compensation = ON # Включить компенсацию PID при разрядке батареи
save # Сохранить настройки

Также в Betaflight есть очень полезная возможность подключения к OSD через ПК. Теперь можно запрятать эту платку подальше, не беспокоясь, что к ней может понадобиться подключиться. Для подключения к плате OSD через ПК необходимо подключить батарею к квадрокоптеру, затем набрать в CLI команду serialpassthrough с необходимыми параметрами, затем отключить (Disconnect) Betaflight от ПК и запустить MWOSD. У меня получилось с первого раза. По поводу параметров, то для Micro MinimOSD, подключенной к UART2 (мой случай) они таковы:

serialpassthrough 1 115200

На этом настройка полётного контроллера закончена.

Настройка передатчика

Передатчик (он же «пульт») каждый пилот настраивает индивидуально: таймеры, миксы, голосовые уведомления и прочее. Единственная вещь, сделать которую крайне желательно, это проверить минимальные, средние и максимальные значения стиков управления в конфигураторе. Делается это во вкладке Reciever. Идеальные значения составляют 1000 — 1500 — 2000. В моём случае они составляли 996 — 1508 — 2020, что не очень хорошо. Во-первых, «выпадения» за пределы диапазона (значения менее 1000 и более 2000) плохи сами по себе. Во-вторых, центральное положение, отличное от 1500, будет восприниматься ПК, как лёгкое подруливание, которое он будет отрабатывать и квадрокоптер постоянно будет сносить в какую-то сторону. Словом, имеет смысл повозиться и настроить «как надо».
Как настроить эти значения на передатчике Taranis, показано здесь. У меня Turnigy 9XR PRO, там это делается в пункте Limits. Также можно выполнить настройку через программу eePskye (вкладка Limits), но это неудобно, так как результат сразу не видно в Betaflight Configurator. Сделать это необходимо для каждого из четырёх каналов управления.
После настройки центральные значения максимально приблизились к 1500, но у меня они начали «прыгать» примерно на 5 единиц в одну или другую сторону. Не знаю, с чем это связано, вероятно, значения пульта являются пограничными для ПК и после их округления получается такой эффект. Для решения этой проблемы в Betaflight (и CleanFlight тоже) есть специальная команда, настраивающая фильтрацию подобных вещей.

set deadband = 6

Значение может быть от 0 до 32 и с его повышением чувствительность управления снижается. Управление становится более мягким. Надо понимать, что после определённого порога мягкость превратится в ватность, поэтому для себя я выбирал минимальное значение, при котором дёрганья исчезли.
На этом всё, удачных полётов!

© Geektimes