ПИД-регулятор — это механизм обратной связи в контуре управления, который вычисляет разницу между желаемым заданным значением и фактическим результатом процесса и использует результат для внесения корректировок в процесс. ПИД-регуляторы широко применяются в промышленном и роботизированном управлении процессами.
В контексте беспилотных автомобилей они играют важную роль в управлении такими параметрами движения, как рулевое управление, ускорение и т. д. Сложные алгоритмы, используемые в беспилотных автомобилях, по сути, рассчитывают траекторию и скорость движения беспилотного автомобиля. Автономность может быть реализована только в том случае, если автомобиль следует по траектории с заданной скоростью. Именно здесь PID-регулятор играет свою роль, обеспечивая соблюдение беспилотным автомобилем рассчитанных параметров. Любое отклонение от рассчитанных параметров может привести к непредвиденным или катастрофическим последствиям.
Данная статья переведена с английского с некоторыми адаптациями. В рамках курса “Построение систем автоматического управления (САУ)”
1. Теория ПИД-регулятора
Термин «ПИД-регулятор» состоит из трёх составляющих: пропорциональной, интегральной, производной. На рисунке ниже показана взаимосвязь между всеми тремя составляющими и конечным откликом.
Процесс ПИД-регулирования
Пропорциональный (P): просто берёт некоторую долю от текущего значения ошибки. Доля задаётся константой и обозначается буквами Kp. Используется для вычисления корректирующего воздействия на процесс. Поскольку для формирования пропорционального воздействия требуется наличие ошибки, при её отсутствии пропорциональное корректирующее воздействие отсутствует.
Интеграл (I): учитывает все прошлые значения ошибки и накапливает их с течением времени. Это приводит к росту интегрального члена до тех пор, пока ошибка не станет равной нулю. Когда ошибка устранена, интегральный член перестаёт расти. Если после применения пропорционального регулирования ошибка всё ещё существует, интегральный член пытается устранить ошибку, добавляя накопленное значение ошибки. Это приводит к уменьшению пропорционального эффекта по мере уменьшения ошибки. Интегральная константа обозначается Ki
Производная (D): производная используется для оценки будущего тренда ошибки на основе текущей скорости её изменения. Она используется для добавления в систему демпфирующего эффекта. Чем быстрее происходит изменение, тем сильнее контролирующий или демпфирующий эффект. Константа производной обозначается Kd
Входными данными для регулятора является ошибка e(t), которая затем умножается на соответствующие константы и суммируется, чтобы получить входные данные для процесса. Разница между выходными данными процесса и заданными значениями снова становится новой ошибкой и снова отправляется обратно в регулятор для корректирующего воздействия.
2. Цель проекта
-
Создайте алгоритм ПИД-контроля для управления автомобилем по трассе.
-
Настройте гиперпараметры PID (Kp, Ki, Kd) таким образом, чтобы автомобиль плавно следовал по дороге, сводя к минимуму поперечную ошибку.
Виртуальный симулятор беспилотного вождения доступен на платформе Udacity. Симулятор считывает угол поворота руля и дроссельной заслонки с определённой частотой и соответствующим образом перемещает автомобиль, а также возвращает ошибку поперечного движения (cte) для ПИД-регулятора.
3. Реализация алгоритма управления
Алгоритм контроллера был реализован в виде кода на C++. Исходный код состоит из класса PID в файле PID.cpp. Начальные значения ошибки и гиперпараметров PID инициализируются функцией Init(). Ошибка перекрестного отслеживания, возвращаемая симулятором, используется для обновления значений ошибки для P, I и D, а именно текущей ошибки, суммы ошибок и разницы в ошибках в функции UpdateError(). Функция CalculateResponseValue() вычисляет и возвращает отклик PID на основе текущих значений ошибки перекрестного отслеживания.
4. Настройка гиперпараметров ПИД
Существует множество способов калибровки или настройки ПИД-регулятора. Помимо ручной настройки, его также можно настроить автоматически с помощью алгоритма Twiddle. В этом проекте я использовал ПИД-регулятор для управления рулевым управлением и ПИД-регулятор для поддержания желаемой скорости 30 миль в час.
4.1 Настройка гиперпараметров рулевого управления
Настройка Kp: это значение настраивалось путём постепенного увеличения от небольшого значения до тех пор, пока автомобиль не начал отклоняться взад и вперёд, демонстрируя колебания параметра P. Я начал с значения 0,05, но остановился на значении 0,15 как на подходящем. На графике ниже показаны колебания ошибки для разных значений Kp. С увеличением значения Kp частота и амплитуда колебаний увеличиваются, и их необходимо демпфировать.
На видео ниже показаны сильные колебания автомобиля после старта при значении Kp, равном 0,15
Настройка Kd: при значении Kp, равном 0,15, я увеличивал значение Kd до тех пор, пока колебания не прекратились. Я выбрал значение 3,0, чтобы обеспечить плавность хода. На графике ниже показаны кривые для разных значений Kd. Красная кривая соответствует значению 3,0. Интересно отметить, что колебания не затухают, пока значение не достигнет 2,0. Кривые для 2,0 и 3,0 очень похожи, но значение 3,0 хорошо работает на кривых, где градиент ошибки очень высок.
На видео ниже показан привод со значениями Kp и Kd, установленными на 0,15 и 3,0
Настройка Ki: значения Ki теоретически устраняют ошибку в установившемся режиме. Однако наилучшие результаты были получены при значении, близком к нулю (1E-5).
4.2 Настройка гиперпараметров для регулирования скорости
В качестве первого шага значение Kp было постепенно увеличено с 0,1 до 0,25. Но, как показано на графике ниже, при значении 0,25 (разрыв между контрольной линией и синей линией) кривая стабилизировалась на уровне ошибки. Поскольку не было колебаний, которые нужно было бы демпфировать, я оставил значение Kd равным нулю. Чтобы устранить ошибку в устойчивом состоянии, я установил значение Ki равным 1E-4, что в конечном итоге позволило поддерживать желаемую скорость 30 миль в час.
5. Заключение
С выбранными значениями Kp, Ki, Kd для управления рулевым колесом и скоростью я смог провести автомобиль по трассе, не съезжая с неё и не совершая опасных маневров. Я использовал ручную настройку, чтобы понять принцип работы ПИД-регулятора и то, как значения влияют на поведение автомобиля.
Ниже приведены мои выводы:
Kp оказывало значительное влияние на поведение автомобиля, поскольку оно напрямую связано с ошибкой. При очень высоком значении Kp автомобиль будет сильно вилять на поворотах. Более низкие значения Kp приводят к более плавным коррекциям рулевого управления. Однако только Kp без значений Kd и Ki приводит к колебаниям.
Значение Kd необходимо для подавления этих колебаний. Подходит широкий диапазон значений Kd, поскольку его влияние зависит от градиента ошибки, а не от самой ошибки. Всякий раз, когда транспортное средство совершает резкий поворот, ошибка увеличивается. Сочетание хороших значений Kp и Kd уменьшает ошибку и подавляет колебания для восстановления контроля. Если присутствует ошибка в установившемся режиме, то требуется значение Ki.
Настройка этих значений вручную — довольно сложная задача. Некоторые выбранные значения хорошо работают в определённых областях трека, но не подходят для других. Хорошей альтернативой могут стать алгоритмы автоматической настройки, такие как Twiddle, которые настраиваются путём одновременного изменения всех трёх гиперпараметров.
Данная статья переведена с английского с некоторыми адаптациями. В рамках курса “Построение систем автоматического управления (САУ)”
ссылка на оригинал статьи https://habr.com/ru/articles/853242/
Добавить комментарий