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

Рис. 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); }Для объезда предметов потребуется ввести контроль показаний датчика расстояния: при резком изменении робот должен делать вывод о возможном повороте, который надо будет производить с другими коэффициентами.