Настройка PID для Betaflight

Каждый аспект динамики полета контролируется выбранным “PID-контроллером”. Это алгоритм, который отвечает за реагирование на сигналы вашего джойстика и поддержание устойчивости самолета в воздухе с помощью гироскопов и / или акселерометров (в зависимости от режима вашего полета).

“PIDS” – это набор параметров настройки, которые управляют работой PID-регулятора. Оптимальные настройки PID различаются на каждом коптере, поэтому потребуется несколько проб и ошибок, чтобы найти наиболее эффективные настройки PID.

Здесь доступно видео о том, как распознавать и устранять различные проблемы с полетом, вызванные настройками PID.

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

PIDs

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

Значение I term исправляет небольшие долгосрочные ошибки. Если оно установлено слишком низко, ориентация аппарата будет медленно смещаться. Если она установлена слишком высоко, аппарат будет колебаться (но с более медленными колебаниями, чем при слишком высоком значении P).

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

TPA и точка останова TPA

TPA означает ослабление PID-регулятора дроссельной заслонки и в соответствии с AlexYork.net:

“TPA в основном позволяет агрессивно настроенному мультиротору (который чувствует себя очень заблокированным) снижать коэффициент усиления PID, когда дроссельная заслонка подается выше порога / точки останова TPA, чтобы устранить быстрые колебания ..”

Обратите внимание, что TPA устанавливается через CLI или на вкладке PID TUNING в графическом интерфейсе. tpa_breakpoint устанавливается через CLI

Также обратите внимание, что TPA и tpa_breakpoint могут не использоваться с определенными PID-контроллерами. Проверьте описание отдельного контроллера.

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

TPA = % демпфирования, которое будет происходить при полном газе.

tpa_breakpoint = точка на кривой дроссельной заслонки, в которой начнет применяться TPA.

Пример: при TPA = 50 (или 0,5 в графическом интерфейсе) и tpa_breakpoint = 1500 (предполагаемый диапазон регулирования дроссельной заслонки 1000-2000)

  • При 1500 на канале дроссельной заслонки PID начнут гаситься.
  • При дроссельной заслонке 3/4 (1750) PID снижаются примерно на 25% (на полпути между 1500 и 2000 демпфирование составит 50% от общего значения TPA, равного 50% в этом примере)
  • При полной дроссельной заслонке (2000) применяется полная величина демпфирования, установленная в TPA. (В этом примере снижение на 50%)
  • TPA может привести к увеличению частоты вращения при увеличении дроссельной заслонки. Вы можете получать более быстрые перевороты при увеличении дроссельной заслонки благодаря сочетанию PID и скоростей. Только ПИД-контроллеры MWREWRITE и LUX используют линейную реализацию TPA, где при использовании TPA частота вращения не изменяется.
примерная диаграмма tpa

Как и зачем это использовать?

Если вы получаете колебания, начинающиеся, скажем, с 3/4 дроссельной заслонки, установите tpa_breakpoint = 1750 или ниже (помните, это предполагает, что ваш диапазон дроссельной заслонки равен 1000-2000), а затем медленно увеличивайте TPA, пока колебания не исчезнут. Обычно вы захотите tpa_breakpoint начать немного раньше, чем начинаются ваши колебания, поэтому вам захочется поэкспериментировать со значениями, чтобы уменьшить / устранить колебания.

PID-контроллеры

В Cleanflight 1.x были экспериментальные pid-контроллеры, для cleanflight 2.0 есть только один.

PID-контроллер “LUXFloat”

Это новый PID-контроллер с плавающей запятой. MW23 и MWREWRITE используют целочисленную арифметику, которая была быстрее во времена более медленных 8-разрядных контроллеров MultiWii, но менее точна.

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

Это первый PID-контроллер, разработанный для 32-разрядных процессоров и не производный от MultiWii.

Сила коррекции автоматического выравнивания, применяемой в режиме Angle, контролируется параметром PID LEVEL “P”, который в графическом интерфейсе пользователя обозначается как “Угол”, “Сила” (до версии v1.13.0 использовался параметр level_angle). Это можно использовать для настройки силы автоматического выравнивания в режиме угла по сравнению с режимом горизонта. Значение по умолчанию равно 50.

Сила коррекции автоматического выравнивания, применяемой в режиме Horizon, задается термином PID УРОВНЯ “I”, который обозначается как “Horizon”, “Сила” в графическом интерфейсе (до версии v1.13.0 использовался параметр level_horizon). Значение по умолчанию также равно 50.

Переход между самовыравниванием и поведением acro в режиме Horizon контролируется термином УРОВНЯ “D”, который обозначается как “Горизонт”, “Переход” в графическом интерфейсе (до версии v1.13.0 использовался параметр sensitivity_horizon parameter). Этот параметр задает процент хода вашего джойстика, к которому должно быть применено самовыравнивание, поэтому при меньших значениях большая площадь джойстика перемещается только с помощью гироскопов.

Например, при значении “100” для горизонта чувствительности при центральной регулировке будет применено 100% самовыравнивание, при 50% регулировке будет применено 50% самовыравнивания, а при 100% регулировке самовыравнивание применяться не будет. Если чувствительность снижена до 75, то при центральном переключателе будет применено 100% самовыравнивание, при 63%-ном переключении – 50%, а при 75%-ном переключении и далее самовыравнивание применяться не будет.

Описание команд режима Horizon приведено ниже.

Скорость RC, тангаж, крен (скорость P / R до их разделения) и рыскание

Скорость RC (RC Rate)

Общий множитель на входах RC-джойстика для тангажа, крена и рыскания.

Это в основном устанавливает базовую чувствительность джойстика.

Скорость тангажа и крена (Pitch and Roll rates)

Это увеличивает общую чувствительность к ручке, как и скорость RC, но независимо для крена и тангажа. Устойчивость (к внешним факторам, таким как турбулентность) не снижается при экстремальных значениях ручки. Нулевое значение – это отсутствие увеличения чувствительности ручки по сравнению с заданным выше значением RC rate. Более высокие значения повышают чувствительность ручки во всем диапазоне перемещения ручки.

Скорость рыскания (Yaw Rate)

Он действует как множитель чувствительности джойстика, как объяснялось выше.

Фильтры (Filters)

gyro_lpf устанавливает значение аппаратного фильтра нижних частот гироскопа. Если 0 или 256, гироскоп использует наименьшую доступную аппаратную фильтрацию (256 Гц), а внутренняя частота дискретизации максимально высока (8 кГц) с минимально возможной задержкой. Чем меньше число, тем сильнее фильтрация. Усиленная фильтрация уменьшает шум в сигнале гироскопа до того, как эти данные попадают в расчеты ПИД. Усиленная фильтрация увеличивает задержки, которые могут быть связаны с колебаниями и снижением скорости отклика. Фильтрация необходима, поскольку шум двигателя / рамы может вызвать перегрев двигателей, особенно при усилении Dterm в квадроциклах с малой массой и ЭСК быстрого торможения. Если выбрано значение 188 или ниже, внутренняя частота дискретизации гироскопа составляет 1 кГц, а задержки больше. Более быстрая дискретизация хороша, потому что устройства немного более чувствительны, но могут вызывать шумы сглаживания. Значение 188 позволяет синхронизировать FC с гироскопом на частоте 1 кГц (если gyro_sync включено и доступно в коде), что значительно снижает искажение.

gyro_soft_lpf это программный фильтр нижних частот IIR (бесконечная импульсная характеристика), который может быть настроен на любую желаемую частоту. Если установлено значение выше нуля, он активен. Он работает после аппаратного фильтра на гироскопе (в коде FC) и дополнительно снижает уровень шума. Два последовательных фильтра имеют вдвое большую скорость среза, чем один. Нет особого смысла запускать gyro_soft_lpf при значении выше gyro_lpf. Если используется, обычно устанавливается примерно половина частоты аппаратного фильтра для усиления среза более высоких частот перед вычислением PID. Частоты выше 100 Гц не представляют для нас интереса с точки зрения управления полетом – их можно и нужно исключить из сигнала до того, как он попадет на этап расчета PID.

dterm_cut_hz это программный фильтр нижних частот IIR, который может быть настроен на любую желаемую частоту. Он работает после фильтров gyro_cut и, в частности, фильтрует только общие данные. Данные D term зависят от частоты, чем выше частота, тем больше вычисленное значение D term. Этот фильтр необходим, если, несмотря на фильтрацию гироскопом, остается чрезмерный D term шум. Обычно его необходимо устанавливать на достаточно низком уровне, поскольку кратковременный шум является серьезной проблемой для типичных БИХ-фильтров. При слишком низком значении сдвиг фазы в D-члене снижает эффективность D-члена в управлении колебаниями остановки, поэтому при изменении этого значения требуется некоторая осторожность. Опять же, запись в черный ящик необходима для правильной оптимизации значения для этого фильтра.

Команды режима горизонта

Команды CLI horizon_tilt_effect и horizon_tilt_mode управляют влиянием текущего наклона на самовыравнивание в режиме полета по горизонту. (Текущий наклон – это количество градусов тангажа или крена, на которые автомобиль отклонен от уровня, в зависимости от того, что больше).

horizon_tilt_effect: Управляет влиянием текущего наклона на самовыравнивание в режиме полета по горизонту. Большие значения приводят к меньшему самовыравниванию (более “поперечному”) по мере увеличения наклона транспортного средства. Значение по умолчанию 75 обеспечивает хорошую производительность при выполнении больших петель и ускоренном полете вперед. При значении 0 сила самовыравнивания будет зависеть исключительно от положения ручки.

horizon_tilt_mode БЕЗОПАСНЫЙ | ЭКСПЕРТНЫЙ (SAFE|EXPERT): устанавливает режим производительности для ‘horizon_tilt_effect’

БЕЗОПАСНО (SAFE) = выравнивание всегда активно, когда ручки расположены по центру: это “безопасный” диапазон, потому что самовыравнивание всегда активно, когда ручки расположены по центру. Таким образом, когда автомобиль переворачивается (на 180 градусов), а рычаги затем центрируются, автомобиль немедленно самостоятельно выравнивается до вертикального положения. (Обратите внимание, что после такого очень быстрого самовыравнивания на 180 градусов направление движения автомобиля может быть непредсказуемым.)

ЭКСПЕРТ (EXPERT) = выравнивание может быть полностью отключено при перевернутом положении: в этом диапазоне наклон автомобиля может полностью “перекрыть” самовыравнивание. В этом режиме, когда параметр ‘horizon_tilt_effect’ установлен примерно на 75, а транспортное средство перевернуто (на 180 градусов) и затем ручки расположены по центру, транспортное средство не выравнивается самостоятельно. Это может быть желательно для выполнения более акробатических маневров и, возможно, для полетов в 3D-режиме.

Значения ‘horizon_tilt_effect’ и ‘horizon_tilt_mode’ являются отдельными для каждого профиля.