Обучение

П- и ПД-регулятор для движения по линии

Основы

П-регулятор

Принцип работы пропорциональной части регулятора заключается в том, что мы не просто возвращаемся на линию, а регулируем скорость возвращения в зависимости от того, насколько далеко робот находится от линии.
При данном подходе мы будем использовать величину отклонения для регулировки движения по линии. Работает на совокупности показаний от всех четырех сенсоров.
Возвращаемые значение: от -100 до +100
Если оба центральных сенсора находятся на линии, то значение равно 0. Значение -100 указывает на то, что датчик находится слева от линии, значение 100 – справа от линии.
Для более тонкой настройки плавного движения по линии удобно ввести дополнительные переменные, которые бы регулировали скорость поворота. Перейдите в палитру Переменные и создайте переменные для левого (left_motor) и правого (right_motor) двигателя, базовой скорости (base), ошибки (error) и корректирующего коэффициента (kp).
Задайте значение переменных:
Базовая скорость (base) = 30 (c этой скоростью робот будет двигаться по линии)
Корректирующий коэффициент (kp) = 0.7
Необходим для того, чтобы скорректировать значение величины отклонения (error). Т.е. если базовая скорость равна 30, а отклонение максимально (100), корректирующий коэффициент позволяет избежать резких скачков в изменении скорости.
Переменные скорости для левого и правого мотора нужны для того, чтобы сократить запись программы и упростить внесение изменений.
Ускорение движения
Изменяя значение базовой скорости и коэффициента, добейтесь максимально быстрого, при этом стабильного движения по линии.

ПД-регулятор

Дифференциальная часть регулятора позволяет нам плавно войти в линию и хорошо проходить даже прямые углы на линии. Эта компонента следит уже не просто за величиной ошибки в текущий момента, а за тем, как быстро это ошибка изменяется. Т.е. мы храним значение предыдущий ошибки.
Для реализации ПД-регулятора нам потребуется ввести дополнительный дифференциальный коэффициент (kd), переменную для хранения предыдущей ошибки (last_error), а также введем переменную setMotor для повышения читаемости кода. Она будет хранить значение необходимого управляющего воздействия для возвращения робота на линию.
Если вы хотите подробнее узнать о принципах роботы П, ПД и ПИД-регуляторах, рекомендуем вам ознакомиться со статьей Алексей Овсянникова "ПИД-регулятор доступно и просто"