Drone Autopilot Software

PIFF - новый контроллер стабилизации для самолетов

14 Feb 2017

В INAV версии 1.6 на самолетах будет применяться новый контроллер стабилизации - PIFF. Зачем он был разработан и в чем его отличие от традиционного PID-контроллера мы сейчас и поговорим.

До версии 1.6 в INAV использовался классический PID-контроллер (на самолетах было рекомендовано обнулить коэффициент D, таким образом превратив его в PI-регулятор). В версии 1.6 мы вынесли самолетный контроллер в отдельный модуль и добавили прямое управление, превратив его в PIFF.

PIFF расшифровывается как Proportional - Integral - Feed-Forward (Пропорциональный - Интегральный - Прямое управление). Так зачем мы изобрели очередной велосипед, полностью поменяв логику работы и принципы настройки самолетного контроллера стабилизации? Давайте разберемся.

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

Как эту задачу будет отрабатывать пилот-человек:

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

PI-регулятор действует совершенно по-другому:

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

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

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

Так зачем на PIFF?

Давайте посмотрим как работает упрощенная версия - IFF-регулятор:

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

Как видим, IFF-регулятор ведет себя почти как пилот-человек - отклоняя поверхности ровно на столько, насколько это необходимо и не пытаясь немедленно реагировать на ошибку. Это сохраняет энергию и уменьшает нагрузку на сервоприводы, значительно продлевая их срок службы. Единственный недостаток IFF-контроллера - перерегулирование - может быть значительно уменьшен добавлением некоторой (небольшой) обратной связи посредством P-компоненты.

Настройка PIFF-регулятора проще чем PID. Физический смысл FF-коэффициента - предельные возможности самолета. В общих чертах нужно выяснить предельную скорость вращения, которой может достичь самолет при полном отклонении рулей, взять обратную величину от этой скорости, уменьшить получившийся коэффициент на 10-15% чтобы избежать перерегулирования и готово - FF-компонента настроена. После этого нужно увеличить коэффициент I для уверенной компенсации дрейфа и добавить немного P для более четкой реакции контроллера. Это сильно упрощенный подход, но его достаточно, чтобы понять идею.

В итоге получается что PIFF-контроллер управляет самолетом более похоже на то, как это делал бы человек, потребляя меньше энергии и продляя жизнь сервоприводам. Правильно настроенный PIFF-контроллер должен вести себя в ACRO практически так же, как и в полностью ручном PASSTHRU.

А летает PIFF вот так: