Долгожданный Brain2

shvion
Mr_Miron:

Помог именно I. …

Вчера крутили I. Да, от кача он помогает. Хотя и не на 100% убрал. Потом стал гонять большие петли на макс. скорости и на спуске чуть не вкопал. Плавно даю элеватора, а верт продолжает лететь носом вниз. Добавил стика и верт резко рульнул в нужную сторону. Потом подобный эффект ощутил на быстром харрикейне. Или верт вяло реагирует или резко переруливает. Как будто дикая экспонента стоит. Причем в кувыркалках на месте вроде нормально. Деффект проявляется на скорости. Стремная хрень - эти пиды …

alien131314

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

Я могу подсказать, как это проверять в брайне2, где есть полетные логи. Когда у меня был спартан, я не мог понять что происходит. Сейчас, имея логи - понимаю.

пысы: специально для сектантов. На протестированных мной нео этот эффект не проявлялся, но они все имели достаточно низкую скорость переворота. Этот эффект проявляется только на высокой скорости переворота. Таковых нео мне пока не попадалось. Кстати, лога 700 наиболее близка, а ее - то как раз я на скоростной полет и не тестировал…

Sinka

Игорь,
А можешь подробнее рассказать, что происходит?

alien131314

Если у тебя не хватает производительности автомата перекоса для достижения, скажем, 330* в секунду, то тарелка при обычном полете будет упираться в лимиты и будет давать такую скорость, какую может.
Но при скоростном полете из - за обдува эффективность АП возрастает, и поэтому ты можешь получить то, что задал. И будет рывок.

Sinka

Т. Е достаточно посмотреть на флипе скороть фактического переворота по логам и сравнить с заданным?

alien131314

Надо при максимальном отклонении ручки посмотреть, не упираются ли SwashElevator и SwashAileron в лимиты. Новые версии брайна пишут упирания в лог ( и у меня смысл EventLogа полностью пропал - теперь весь лог забит упираниями всего в лимит: руддера, элеватора, элерона ).

alien131314

посмотрел с утра игайн на протосе. Было 30. Поставил 60. Летал - летал, разницы - никакой, и резкие маневры делал, и плавные. По резкости остановок тоже никакой разницы не увидел. Поставил 80. Появился плавный отскок при остановке элеватора, убрал до 60 - отскок пропал.

mil-lion

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

Sinka

Ну опять не понятна методика настройки

Vovets
Sinka:

Ну опять не понятна методика настройки

Мне кажется, что поэтому важно понять принципы настройки произвольного ПИД-регулятора. На эту тему дохрена в интернетах. Брейн 2 даёт все показания, которые необходимы. А именно нас интересуют заданная угловая скорость (это положение ручки) и реальная угловая скорость. Все характеристики настройки регулятора выявляются подачей на вход ступеньки. Т.е. вот мы висели неподвижно и вот мы отклонили элеватор в какое-то положение и держим. Потом смотрим графики на предмет, как реальная угловая скорость реагирует на эту ступеньку. Есть ли заброс, колебания.

Mr_Miron

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

Vovets

Юра всё верно написал, но всё равно никто не запомнит, потому что нет толку запоминать как заклинание, пока не понимаешь, почему так. 😃

Mr_Miron

Согласен, я сам не оч втыкал, пока сам сим не написал с пидом, там логи были я все смотрел, что происходит. Я очень долго подбирал пока не понял как оно работает.
I - интегральный параметр он работает по сумме ошибки. Пока есть отклонение ошибка растет. Этот параметр доводит до 0 отклонение.
P - пропорциональный, он работает по велечине ошибки/ отклонению, поэтому он может вывести систему из равновесия(так как сам он ноль не поймает, а если его много он будет перерегулировать), он дает более жесткое/быстрое регулирование чем I.
D- реагирует на скорость изменения ошибки, поэтому он сильнее выводит из равновесия систему.
Надо какие-то аналогии запомнить, тогда проще будет

Vovets

Отлично сформулировал.
Есть ещё такие поэтические определения:
P - компенсирует ошибку в текущий момент,
I - компенсирует ошибку, накопленную за некоторое прошедшее время,
D - пытается угадать ошибку в ближайшем будущем.

mil-lion
Mr_Miron:

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

Немного не тот порядок:
Устанваливают Д и И в 0
Увеличиват П до осцилляций (колебаний, возбуждения) при подаче ступенчатого сигнала - дергаем стик в нужную сторону. Назад не крутим П, а пытаемся убрать колебания увеличением Д.
Опять увеличиваем П до колебаний и увеличивая Д убираем колебания.
Еще раз повторяем и в принципе достаточно. За 3 цикла должно в принципе получить максимальный П - это цель настройки ПИД регулятора.
После этого уменьшаем П и Д на 3-5% чтобы система не была на грани устойчивости.
Данный процесс очень напоминает настройку карбюратора: холостой ход и качество смеси.

А вот с И немного сложнее:
Если ошибки конструкции (это основное назначение интегральной части регулятора) такие как: не симметричность, смещение центра тяжести, разные характеристики серв и прочие, довольно большие, то с нулевым И можно вообще не взлететь. Поэтому, когда взлетаем с нулевым И и видел что тянем ЛА в какую то сторону, то это может быть из-за низкого П либо из-за И. Увеличиваем чуток (именно по чуть чуть) И и смотрим чтобы ЛА при висении (нет управляющего сигнала) ЛА не уводило в стороны. Например выровняли, висите и если ЛА уводит, значит нужно увеличивать И по оси. Главное вовремя остановиться, чтобы не сделать большое И и не наступило ухудшение регулирования.
В принципе И нужно крутить когда уже П и Д настроены, но может потребоваться и в начале выставить низкое И чтобы позволить настроит П и Д, а в конце закончить тонкую настройку И.

В видео которое я привел, это как раз и показывают: крутят П потом Д, в конце И чтобы в итоге время реакции системы на входной сигнал было минимальным!

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

Про ПИДы у меня в дневнике есть статья про квадрик, но это касается и вертолетов тоже, да в принципе любого ПИД-регулятора.

Я вот смотрю в Крайне есть все параметры ПИД-регулятора (с ваших слов). А вот в Vbar Neo нет, есть просто Гейн. В микробе был еще Д регулятор. А вот в Нео так тонко не настроить ПИД-регулятор, либо я просто не нашел эти параметры.
И вот опять же термин Гейн - чувствительность, согласно ПИД-регулятора то это параметр П. Но я думаю что в Нео это может быть чуть шире понятие, например изменение Гейна это может сразу изменять П и Д параметры ПИД-регулятора. А вот оптимизатор, мне кажется что он подбирает И автоматически в Нео. Поправьте меня если я не правильно думаю. Нео можно обсудить в другой ветке (ссори).

Mr_Miron:

D- реагирует на скорость изменения ошибки, поэтому он сильнее выводит из равновесия систему.

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

Но вот одно но:

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

Как видите из всего вышесказанного: большое Д и большое И - плохо. А вот большое П - хорошо до определенного момента 😃 Но правильно подобранные П, Д и И дают быстрое и качественное управление!

Mr_Miron
mil-lion:

Немного не тот порядок:
Устанваливают Д и И в 0

В какой фбл вы видели чтобы изначально I было 0

mil-lion
Mr_Miron:

В какой фбл вы видели чтобы изначально I было 0

Я же написал что в идеальном случае, теоретически, нужно настраивать с И=0.
Если ваша конструкция идеальная (что практически не бывает) то можно. На практике нужно начинать с минимального значения И.

Дело в том что увод объекта от нужного значения может быть как из-за маленького П так и из-за маленького значения И.

P.S. все проверено на квадрике 😃 когда ставишь И=0 то не можешь настроить П так как квадрик невозможно удержать в точке 😃

Итого, мой порядок настройки:

  1. П=начальное значение, Д=0, И=0
  2. Подбираем И чтобы можно было висеть в одной точке
  3. Подбираем П и Д чтобы было максимальное значение П (это цель), но без осцилляций. (Д - следствие для достижения основной цели - большое П)
  4. Конечная, тонкая подборка И (может даже потребуется снижать И, а не увеличивать)
Sinka

А я все гоняюсь за высоким И:)
А тут вон оно шо. Попробую на г500 поиграться еще раз с нуля настроить

mil-lion
Sinka:

еще раз с нуля настроить

Юра правильно сделал замечание, не ставь И=0 только. Играться надо начинать с дефолтных параметров. Ведь разработчики ФБЛ их не зря выбирали такими, делали испытания на разных аппаратах и выбрали наиболее подходящие для многих моделей.
А вот играться с параметрами нужно понимая кто за что отвечает. Какие есть плюсы и минусы.

Sinka

Проьлема что не знаю как узнать дефолтные значения pid регулятора в брейне