зачем в регулятор добавляют интегрирующие звенья

Пропорционально-интегральный (пи) регулятор. Назначение интегральной составляющей регулятора

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья,

Пзачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звеньяередаточная функция ПИ-регуляторазачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья. Введение интегральной составляющей делает систему астатической и позволяет устранить статическую ошибку системы. Суть заключается в следующем.

АФЧХ интегрирующего звена имеет вид (рис. 4)

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

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

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья; зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

При этом остаточная ошибка стремится к нулевому значению

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

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

Пропорционально-интегрально-дифференциальный (ПИД) регулятор

Управляющее воздействие ПИД – регулятора дополнительно имеет дифференциальную составляющую, которая пропорциональна производной ошибки. Уравнение ПИД-регулятора имеет вид

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья,

где зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья— коэффициент при дифференциальной составляющей регулятора.

Преобразуем передаточную функцию ПИД-регулятора.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья,

гзачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звеньядезачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Мы получили интегро-дифференци-рующее звено. Множитель pв знаменателе показывает наличие интегрирующего звена, дающего бесконечное значение коэффициента на низких частотах и устраняет остаточную ошибку. Числитель включает два дифференцирующих звена, дающих опережение по фазе в настраиваемой области частот. Это обеспечивает уменьшение коэффициента передачи разомкнутой системы в областиD (рис. 6), что устраняет охватывание амплитудной частотной характеристикой разомкнутой системы точки устойчивости С(-1,j0) и позволяет использовать интегрирующее звено без снижения коэффициента разомкнутой системы в области низких частот.

Таким образом, устойчивость и эффективность систем управления в большой степени зависит от правильности выбора коэффициентов регулятора. В практике коэффициенты регулятора выбирают из условия получения устойчивой системы с затухающим переходным процессом, перерегулированием 20-30% и 1-2 колебаниями. Рассмотренные закономерности лежат в основе выбора рассмотренных ниже методов выбора настроек регулятора.

Источник

Зачем в регулятор добавляют интегрирующие звенья

7.1. Частотные характеристики разомкнутых одноконтурных САУ

Любую многоконтурную САУ можно привести к одноконтурной. Разомкнутая одноконтурная САУ состоит из цепочки последовательно соединенных динамических звеньев. Зная передаточную функцию разомкнутой САУ можно построить ее ЧХ. И наоборот, зная ЧХ разомкнутой САУ, снятую, например, опытным путем, можно найти ее передаточную функцию.

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

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

Заменив в этом выражении p на j w получим ее АФЧХ:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

АЧХ: зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья,

значит ЛАЧХ равна сумме ЛАЧХ звеньев: зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

ЛФЧХ: зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

Таким образом ЛАЧХ и ЛФЧХ разомкнутой САУ строят путем графического сложения ЛАЧХ и ЛФЧХ звеньев. При этом ограничиваются построением асимптотической ЛАЧХ.

Для построения ЛАЧХ и ЛФЧХ рекомендуется следующий порядок:

1) раскладывают сложную передаточную функцию на множители, являющиеся передаточными функциями типовых динамических звеньев (порядок полиномов числителя и знаменателя не выше второго);

2) вычисляют сопрягающие частоты отдельных звеньев и строят асимптотические ЛАЧХ и ЛФЧХ каждого элементарного звена;

3) путем графического суммирования ЛАЧХ и ЛФЧХ звеньев строят результирующие ЧХ.

Рассмотрим конкретный пример:

Раскладываем данную передаточную функцию на передаточные функции элементарных звеньев:

1) безынерционное звено:

W 1 = K 1 = 100 => L(w) = 20lg100 = 40;

2) форсирующее звено:

K 2 = 1, T 2 = 1, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья2 = 1/T 2 = 1;

3) интегрирующее звено:

его ЛАЧХ проходит через точку L = 0 при частоте зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья= 1;

4) апериодическое звено:

его параметры: K 4 = 1, T 4 = 0.1, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья4 = 1/T4 = 10.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Порядок построения ЛАЧХ и ЛФЧХ показан на рис.57.

Иногда требуется решить обратную задачу, то есть определить передаточную функцию по известной ЛАЧХ. Процедура определения передаточной функции состоит из следующих этапов:

1) известная ЛАЧХ представляется в асимптотическом виде, для этого непрерывная кривая заменяется отрезками прямых либо горизонтальных, либо с наклоном, кратным ±20 дб/дек;

2) асимптотическая ЛАЧХ раскладывается на ЛАЧХ элементарных звеньев;

3) для каждой из полученных ЛАЧХ определяются k и зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья1 = 1/T и записывается передаточная функция типового звена;

4) передаточная функция САУ определяем путем перемножения передаточных функций типовых звеньев.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Описанный порядок иллюстрируется на рис.58.

Таким образом, передаточная функция разомкнутой САУ имеет вид

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

Зная передаточную функцию разомкнутой САУ можно построить ее уравнение динамики

Таким образом можно определить уравнение динамики реальных звеньев и всей реальной САУ, если оно теоретически это сделать затруднительно. Для снятия частотных характеристик реальной разомкнутой САУ на ее вход подают гармонический сигнал с изменяемой частотой и определяют изменение амплитуды и фазы выходного сигнала в зависимости от частоты. По полученным характеристикам определяют уравнение динамики, после чего САУ можно исследовать теоретически.

7.2. Законы регулирования

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Пусть задана какая-то САР (рис.59).

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

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

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

u(t) = K 1 e(t) + K 2 зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звеньяde(t)/dt.

Чем быстрее нарастает отклонение регулируемой величины от требуемого значения, тем интенсивнее работает ПД-регулятор, что препятствует дальнейшему нарастанию данного отклонения. Кроме того при увеличении отклонения ( de(t)/dt > 0 ) управляющий сигнал u будет больше, чем при уменьшении ( de(t)/dt ), что также играет положительную роль, снижая колебательность процеса управления.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

Этот регулятор наращивает управляющее воздействие до тех пор пока управляемая величина отличается от требуемого значения, то есть пока e(t)зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья0.

И-регулятор обеспечивает астатическое регулирование.

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

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья.

Источник

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 40. ПИД регулятор. Принцип действия, математическое описание, настройка.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Продолжение разработки проекта контроллера модуля Пельтье, начатой в уроке 36. Узнаем, что такое ПИД регулятор.

Основная задача контроллера холодильника – поддержание в камере заданной температуры. Делать это будет регулятор температуры за счет изменения электрической мощности на модуле Пельтье.

В предыдущем уроке мы разработали регулятор мощности. Связь регуляторов мощности и температуры выглядит так.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Регулятор мощности мы построили по интегральному закону регулирования. Для стабилизации температуры будем использовать более сложный алгоритм управления – пропорционально-интегрально-дифференцирующий (ПИД) регулятор.

ПИД регулятор.

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

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

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

В формировании выходного сигнала ПИД регулятора участвуют:

Математическая форма записи закона ПИД регулятора имеет вид:

В схематичном виде ПИД регулятор можно представить так.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Структурная схема ПИД регулятора напряжения U выглядит так.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

При программной реализации ПИД регулятора вычисления выходного сигнала происходят через равные промежутки времени. Т.е. регулятор является дискретным по времени. Поэтому, далее я буду употреблять выражения: предыдущее состояние сигнала, предыдущее значение и т.п. Речь идет о состоянии системы в предыдущей точке временной дискретизации.

Составляющие ПИД регулятора.

Еще раз. Выходной сигнал ПИД регулятора это сумма трех составляющих:

Пропорциональная составляющая.

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

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

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

К недостаткам пропорциональных регуляторов следует отнести:

Есть весомое преимущество:

Регуляторы, работающие только по пропорциональному закону, применяют редко.

Главная задача пропорциональной составляющей в ПИД регуляторе – повысить быстродействие.

Интегрирующая составляющая.

Пропорциональна интегралу ошибки рассогласования. С учетом временной дискретности регулятора можно написать так:

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

К недостаткам интегрального регулятора следует отнести:

На практике часто используют интегрирующие регуляторы (только интегрирующая составляющая) и пропорционально-интегрирующие (интегрирующая и пропорциональная составляющие).

Главная задача интегрирующего звена в ПИД регуляторе – компенсация статической ошибки, обеспечение высокой точности регулирования.

Дифференцирующая составляющая.

Пропорциональна скорости изменения ошибки рассогласования. Своеобразный показатель ускорения ошибки рассогласования. Дифференцирующая составляющая предсказывает отклонения регулируемого параметра в будущем и противодействует этому отклонению. Как правило, она компенсирует запаздывания воздействия регулятора на объект и повышает устойчивость системы.

С учетом временной дискретности регулятора дифференцирующую составляющую можно вычислить так:

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

Регуляторов, состоящих из единственного дифференцирующего звена, не бывает.

Главная задача дифференцирующего звена в ПИД регуляторе – повышение устойчивости.

Настройка ПИД регулятора.

Качество регулирования ПИД регуляторов в значительной мере зависит от того, насколько оптимально выбраны коэффициенты. Коэффициенты ПИД регулятора определяются на практике в системе с реальным объектом путем подбора. Существуют разные методики настройки. Я расскажу только об общих принципах.

О качестве регулирования судят по переходной характеристике регулятора. Т.е. по графику изменения регулируемого параметра во времени.

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

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

Составляющие ПИД регулятора настраиваются отдельно.

Настройка ПИД регулятора носит итерационный характер. Т.е. пункты подбора коэффициентов могут многократно повторяться до тех пор, пока не будет достигнут приемлемый результат.

Благодаря высоким характеристикам и универсальности ПИД регуляторы широко применяются в системах автоматизации производства.

В следующем уроке будем разрабатывать ПИД регулятор температуры.

Источник

ТАУ для самых маленьких: пример реализации ПИД-регулятора в Unity3D

Системы автоматического управления (САУ) предназначены для автоматического изменения одного или нескольких параметров объекта управления с целью установления требуемого режима его работы. САУ обеспечивает поддержание постоянства заданных значений регулируемых параметров или их изменение по заданному закону либо оптимизирует определенные критерии качества управления. Например, к таким системам относятся:

Это достаточно широкий класс систем, которые можно найти где угодно. Но какое это отношение имеет к Unity3D и вероятно к играм в частности? В принципе прямое: в любой игре так или иначе использующей симуляцию как элемент геймплея реализуются САУ, к таким играм относятся, например, Kerbal Space Programm, Digital Combat Simulator (бывший Lock On), Strike Suit Zero и т.д. (кто знает еще примеры — пишите в комментариях). В принципе любая игра, моделирующая реальные физические процессы, в том числе и просто кинематику с динамикой движения, может реализовывать те или иные САУ — этот подход проще, естественнее, а у разработчика уже есть есть набор готовых инструментов, предоставленных всякими Вышнеградскими, Ляпуновыми, Калманами, Чебышевами и прочими Коломогоровами, поэтому можно обойтись без изобретения велосипеда, т.к. его уже изобрели, да так, что получилась отдельная наука: Теория автоматического управления. Главное тут не переусердствовать. Одна тут только проблема: рассказывают про ТАУ не везде, не всем, зачастую мало и не очень понятно.

Немножко теории

Классическая система автоматического управления представленная на следующем рисунке:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Ключевым элементом любой САУ является регулятор представляющий из себя устройство, которое следит за состоянием объекта управления и обеспечивает требуемый закон управления. Процесс управления включает в себя: вычисление ошибки управления или сигнала рассогласования e(t) как разницы между желаемой уставкой (set point или SP) и текущей величиной процесса (process value или PV), после чего регулятор вырабатывает управляющие сигналы (manipulated value или MV).

Одной из разновидностью регуляторов является пропорционально-интегрально-дифференцирующий (ПИД) регулятор, который формирует управляющий сигнал, являющийся суммой трёх слагаемых: пропорционального, интегрального и дифференциального.

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Где, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звеньяошибка рассогласования, а также, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья— пропорциональная, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья— интегральная, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья— дифференциальная составляющие (термы) закона управления, который в итоговом виде описывается следующими формулами

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

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

Интегральная составляющая I накапливает (интегрирует) ошибку регулирования, что позволяет ПИД-регулятору устранять статическую ошибку (установившуюся ошибку, остаточное рассогласование). Или другими словами: интегральное звено всегда вносит некоторое смещение и если система подвержена некоторыми постоянным ошибкам, то оно их компенсирует (за счет своего смещения). А вот если же этих ошибок нет или они пренебрежительно малы, то эффект будет обратным — интегральная составляющая сама будет вносить ошибку смещения. Именно по этой причине её не используют, например, в задачах сверхточного позиционирования. Ключевым недостатком интегрального закона управления является эффект насыщения интегратора (Integrator windup).

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

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

Казалось бы, вопрос реализации ПИД-регуляторов уже давно избит и здесь на Хабре есть парочка неплохих статей на эту тему в том числе и на Unity3D, также есть неплохая статья PID Without a PhD (перевод) и цикл статей в журнале «Современные технологии автоматизации» в двух частях: первая и вторая. Также к вашим услугам статья на Википедии (наиболее полную читайте в английском варианте). А на форумах коммьюнити Unity3D нет-нет, да и всплывет PID controller как и на gamedev.stackexchange

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

Попытка номер раз

В качестве примера попытаемся реализовать схему регулирования на примере управления поворотом в простенькой космической 2D-аркаде, по шагам, начиная с самого начала (не забыли, что это туториал?).

Почему не 3D? Потому что реализация не измениться, за исключением того, что придется воротить ПИД-регулятор для контроля тангажа, рысканья и крена. Хотя вопрос корректного применения ПИД-регулирования вместе с кватернионами действительно интересный, возможно в будущем его и освящу, но даже в NASA предпочитают углы Эйлера вместо кватернионов, так что обойдемся простенькой моделью на двухмерной плоскости.

Для начала создадим сам объект игровой объект космического корабля, который будет состоять из собственно самого объекта корабля на верхнем уровне иерархии, прикрепим к нему дочерний объект Engine (чисто спецэффектов ради). Вот как это выглядит у меня:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

А на сам объект космического корабля накидаем в инспекторе всяческих компонент. Забегая вперед, приведу скрин того, как он будет выглядеть в конце:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья
Но это потом, а пока в нем еще нет никаких скриптов, только стандартный джентльменский набор: Sprite Render, RigidBody2D, Polygon Collider, Audio Source (зачем?).

Собственно физика у нас сейчас самое главное и управление будет осуществляться исключительно через неё, в противном случае, применение ПИД-регулятора потеряло бы смысл. Масса нашего космического корабля оставим также в 1 кг, а все коэффициенты трения и гравитации равны нулю — в космосе же.

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

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

Пока в нем нет ничего интересно, на текущий момент это просто класс-заглушка.

Также опишем базовый(абстрактный) класс для всех контроллеров ввода BaseInputController:

И наконец, класс контроллера игрока PlayerFigtherInput:

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

Значения коэффициентов по умолчанию возьмем с потолка: это будет тривиальный единичный коэффициент пропорционального закона управления Kp = 1, небольшое значение коэффициента для дифференциального закона управления Kd = 0.2, который должен устранить ожидаемые колебания и нулевое значение для Ki, которое выбрано потому, что в нашей программной модели нет никаких статичных ошибок (но вы всегда можете их внести, а потом героически побороться с помощью интегратора).

Теперь вернемся к нашему классу SpaceShip и попробуем заюзать наше творение в качестве регулятора поворота космического корабля в методе ControlRotate:

ПИД-регулятор будет осуществлять точное угловое позиционировая космического корабля только за счет крутящего момента. Все честно, физика и САУ, почти как в реальной жизни.

Все? Расходимся по домам?

WTF! Что происходит? Почему корабль поворачивается как-то странно? И почему он так резко отскакивает от других объектов? Неужели этот глупый ПИД-регулятор не работает?

Без паники! Давайте попробуем разобраться что происходит.

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

Можно, конечно, попробовать другие схемы дифференцирования, например, трехточечную, или пятиточечную, или… но все равно это не поможет. Ну вот не любят производные резких скачков — в таких точках функция не является дифференцируемой. Однако поэкспериментировать с разными схемами дифференцирования и интегрирования стоит, но потом и не в этой статье.

Думаю что настал момент построить графики переходного процесса: ступенчатое воздействие от S(t) = 0 в SP(t) = 90 градусов для тела массой в 1 кг, длинной плеча силы в 1 метр и шагом сетки дифференцирования 0.02 с — прям как в нашем примере на Unity3D (на самом деле не совсем, при построении этих графиков не учитывалось, что момент инерции зависит от геометрии твердого тела, поэтому переходный процесс будет немножко другой, но все же достаточно похожий для демонстрации). Все величены на грифике приведены в абсолютных значениях:
зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья
Хм, что здесь происходит? Куда улетел отклик ПИД-регулятора?

Поздравляю, мы только что столкнулись с таким явлением как «удар» (kick). Очевидно, что в момент времени, когда процесс еще PV = 0, а уставка уже SP = 90, то при численном дифференцировании получим значение производной порядка 4500, которое умножится на Kd=0.2 и сложится с пропорциональным теромом, так что на выходе мы получим значение углового ускорения 990, а это уже форменное надругательство над физической моделью Unity3D (угловые скорости будут достигать 18000 град/с… я думаю это предельное значение угловой скорости для RigidBody2D).

Впрочем можете поэкспериментировать.

Попытка номер два. Сатурация

Логично, что привод (в нашем случае виртуальные маневровые двигатели SpaceShip), не может отрабатывать сколько угодно большие значения которые может выдать наш безумный регулятор. Так что первое что мы сделаем — сатурируем выход регулятора:

Итоговая схема нашего САУ тогда станет уже вот такой
зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

При этом уже становится понятно, что выход контроллера CO(t) немного не одно и тоже, что управляемая величина процесса MV(t).

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

Запустив игру, мы обнаружим, что космический корабль стал наконец управляемым:

Если построить графики, то можно увидеть, что реакция контроллера стала уже вот такой:
зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья
Здесь уже используются нормированные величены, углы поделены на значение SP, а выход контроллера отнормирован относительно максимального значения на котором уже происходит сатурация.

Теперь на графике видно наличие ошибки перерегулирования (overshooting) и затухающие колебания. Уменьшая Kp и увеличивая Kd можно добиться уменьшения колебаний, но зато увеличится время реакции контроллера (скорость поворота корабля). И наоборот, увеличивая Kp и уменьшая Kd — можно добиться увеличения скорости реакции контроллера, но появятся паразитные колебания, которые при определенных (критических) значениях, перестанут быть затухающими.

Ниже приведена известна таблица влияния увеличения параметров ПИД-регулятора (как уменьшить шрифт, а то таблица безе переносов не лезет?):

KpУменьшениеУвеличениеНебольшие измененияУменьшаетсяДеградирует
KiУменьшаетсяУвеличиваетсяУвеличиваетсяКомпенсируется если естьДеградирует
KdНебольшие измененияУменьшаетсяУменьшаетсяПовышается если Kd небольшая

А общий алгоритм ручной настройки ПИД-регулятора следующий:

Каких-то общих значений параметров ПИД-регулятора нет: конкретные значения зависят исключительно от параметров процесса (его передаточной характеристики): ПИД-регулятор отлично работающий с одним объектом управления окажется неработоспособным с другим. Более того, коэффициенты при пропорциональной, интегральной и дифференциальной составляющих еще и взаимозависимы.

В общем не будем о грустном, дальше нас ждет самое интересное.

Попытка номер три. Еще раз производные

Приделав костыль в виде ограничения значений выхода контроллера мы так и не решили самую главную проблему нашего регулятора — дифференциальная составляющая плохо себя чувствует при ступенчатом изменении ошибки на входе регуляторе. На самом деле есть множество других костылей, например, в момент скачкообразного изменения SP «отключать» дифференциальную составляющую или же поставить фильтры нижних частот между SP(t) и операцией зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звеньяза счет которого будет происходить плавное нарастание ошибки, а можно совсем развернуться и впендюрить самый настоящий фильтр Калмана для сглаживания входных данных. В общем костылей много, и добавить наблюдателя конечно хотелось бы, но не в этот раз.

Поэтому снова вернемся к производной ошибки рассогласования и внимательно на неё посмотрим:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Ничего не заметили? Если хорошенько присмотреться, то можно обнаружить, что вообще-то SP(t), не меняется во времени (за исключением моментов ступенчатого изменения, когда регулятор получает новую команду), т.е. её производная равна нулю:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Иными словами, вместо производной ошибки, которая дифференцируема не везде мы можем использовать производную от процесса, который в мире классической механики как правило непрерывен и дифференцируем везде, а схема нашей САУ уже приобретет следующий вид:
зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Модифицируем код регулятора:

И немного изменим метод ControlRotate:

И-и-и-и… если запустить игру, то обнаружиться, что на самом деле ничего ничего не изменилось с последней попытки, что и требовалось доказать. Однако, если убрать сатурацию, то график реакции регулятора будет выглядеть вот так:
зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья
Скачок CO(t) по прежнему присутствует, однако он уже не такой большой как был в самом начале, а самое главное — он стал предсказуемым, т.к. обеспечивается исключительно пропорциональной составляющей, и ограничен максимально возможной ошибкой рассогласования и пропорциональным коэффициентом ПИД-регулятора (а это уже намекает на то, что Kp имеет смысл выбрать все же меньше единицы, например, 1/90f), но не зависит от шага сетки дифференцирования (т.е. dt). В общем, я настоятельно рекомендую использовать именно производную процесса, а не ошибки.

Думаю теперь никого не удивит, но таким же макаром можно заменить зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звеньяна зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья, однако останавливаться на этом мы не будем, можете сами поэкспериментировать и рассказать в комментариях, что из этого получилось (самому интересно)

Попытка номер четыре. Альтернативные реализации ПИД-регулятор

Помимо описанного выше идеального представления ПИД-регулятора, на практике часто применяется стандартная форма, без коэффициентов Ki и Kd, вместо которых используются временные постоянные.

Такой подход связан с тем, что ряд методик настройки ПИД-регулятора основан на частотных характеристиках ПИД-регулятора и процесса. Собственно вся ТАУ и крутится вокруг частотных характеристик процессов, поэтому для желающих углубиться, и, внезапно, столкнувшихся с альтернативной номенклатурой, приведу пример т.н. стандартной формы ПИД-регулятора:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

где, зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья— постоянная дифференцирования, влияющая на прогнозирование состояния системы регулятором,
зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья— постоянная интегрирования, влияющая на интервал усреднения ошибки интегральным звеном.

Основные принципы настройки ПИД-регулятора в стандартной форме аналогичны идеализированному ПИД-регулятору:

В качестве значений по умолчанию, выбраны Kp = 0.01, Ti = 10000, Td = 0.5 — при таких значениях корабль поворачивается достаточно быстро и обладает некоторым запасом устойчивости.

Помимо такой формы ПИД-регулятора, часто используется т.н. реккурентная форма:

зачем в регулятор добавляют интегрирующие звенья. Смотреть фото зачем в регулятор добавляют интегрирующие звенья. Смотреть картинку зачем в регулятор добавляют интегрирующие звенья. Картинка про зачем в регулятор добавляют интегрирующие звенья. Фото зачем в регулятор добавляют интегрирующие звенья

Не будем на ней останавливаться, т.к. она актуальна прежде всего для хардверных программистов, работающих с FPGA и микроконтроллерами, где такая реализация значительно удобнее и эффективнее. В нашем же случае — давайте что-нибудь сваям на Unity3D — это просто еще одна реализация ПИД-контроллера, которая ни чем не лучше других и даже менее понятная, так что еще раз дружно порадуемся как хорошо программировать в уютненьком C#, а не в жутком и страшном VHDL, например.

Вместо заключения. Куда бы еще присобачить ПИД-регулятор

Теперь попробуем немного усложнить управление корабля используя двухконтурное управление: один ПИД-регулятор, уже знакомый нам _angleController, отвечает по прежнему за угловое позиционирование, а вот второй — новый, _angularVelocityController — контролирует скорость поворота:

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

Помимо этого, добавим новый класс ввода игрока — PlayerInputCorvette, в котором повороты буду осуществляться уже за счет нажатия клавиш «вправо-влево», а целеуказание с помощью мыши мы оставим для чего-нибудь более полезного, например, для управления турелью. Заодно у нас теперь появился такой параметр как _turnRate — отвечающий за скорость/отзывчивость поворота (не понятно только куда его поместить лучше в InputCOntroller или все же Ship).

А вот, собственно заключительное видео того, что должно получиться:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *