Пропорционально-дифференциальный регулятор
Рис. 5.7.
В некоторых ситуациях П-регулятор может вывести систему из устойчивого состояния. Например, если робот направлен от стенки, но находится к ней ближе заданного расстояния, на моторы поступит команда еще сильнее повернуть от стенки, в результате чего с ней может быть утерян контакт (напоминаем, что датчик расстояния получает отраженный сигнал практически только от перпендикулярной поверхности).
Рис. 5.8.
Для защиты от подобных ситуаций добавим в регулятор дифференциальную составляющую, которая будет следить за направлением движения робота. Иными словами, вектор скорости будет влиять на управляющее воздействие. Известно, что скорость находится как , где - это изменение расстояния за промежуток времени . Определим дифференциальный регулятор через скорость отклонения робота от заданного положения:
где - текущее расстояние до стенки, - расстояние на предыдущем шаге.
Поскольку замеры производятся через равные промежутки времени, то можно принять за константу.
Таким образом, ПД-регулятор описывается формулой из двух слагаемых
Можно показать, что для устойчивого достижения цели коэффициент при дифференциальной составляющей должен превышать (см. ниже статью "Элементы теории автоматического управления в школе").
Алгоритм движения вдоль стенки на ПД-регуляторе в целом будет выглядеть так:
Sold=L=S1; while(true) { upd= k1*(S1-L) + k2*(S1-Sold); Motor[MotorB]=50+upd; Motor[MotorC]=50-upd; Sold=S1; wait1msec(1); }Для объезда предметов потребуется ввести контроль показаний датчика расстояния: при резком изменении робот должен делать вывод о возможном повороте, который надо будет производить с другими коэффициентами.