При использовании контура ПИД-регулятора для управления по линии следования ваша уставка всегда будет одинаковой. Вы всегда хотите, чтобы линия находилась в одном и том же положении относительно робота, например, в центре вашего датчика.
Поэтому, если ваш линейный датчик выводит значение от -1 до 1, где 0 является центром датчика, тогда вы захотите, чтобы ваша уставка была равна нулю (и показания датчика и разница будут одинаковыми). Если ваш линейный датчик выводит значение от 0 до 10, тогда вы захотите, чтобы ваша уставка была 5 (и ваш датчик считывал и разница будет отличаться).
Поскольку вы управляете, настраивая колеса на разные скорости, а затем плавно следовать по линии с постоянной скоростью, вы, вероятно, захотите отрегулировать скорости для обоих колес на основе ошибки. Например, если вам нужно повернуть налево, чтобы остаться на линии, вы замедляете левое колесо и ускоряете правое колесо. Чем больше вам нужно повернуть, тем больше вам нужно будет замедлить внутреннее колесо, и тем больше вам нужно будет ускорить внешнее колесо.
Рассмотрим ситуацию, когда нужно обратиться θ радианы влево, чтобы исправить ошибку е и ваша текущая скорость S0:
Таким образом, ваше левое колесо должно двигаться в SL= r θ и ваше правое колесо должно путешествовать в Sр= ( r + b ) θ,
Для поддержания одинаковой общей скорости S0, тебе нужно S0=(r+b/2)θтак что левое колесо нужно будет проехать по SL=S0−(b/2)θ
в то время как правое колесо нужно будет путешествовать в SR=S0+(b/2)θ,
Поскольку ваша ошибка стремится к нулю, скорости каждого двигателя также будут стремиться друг к другу. По мере роста погрешности также будут расти различия в скорости.
Вам может даже понадобиться, чтобы внутреннее колесо вращалось назад, если ваш датчик говорит вам, что линия изгибается сильнее, чем расстояние между вашими колесами. Это сложности, которые вы можете пройти шаг за шагом, хотя ваш контроль становится все более изощренным.
Кроме того, поскольку ваша ошибка будет иметь как положительные, так и отрицательные значения (чтобы представить континуум от шкалы слева ... слишком далеко влево ... на линии ... слишком далеко вправо ... от шкалы вправо, то вы должны никогда не нужно спрашивать, if
является ли ошибка положительной или отрицательной, вы должны просто рассчитать новые значения на основе значения ошибки, поскольку положительное значение и отрицательное значение должны оказывать противоположное и симметричное влияние на двигатели.
Обратите внимание, что для следования по линии вы можете избежать только пропорционального коэффициента усиления (т. Е. Оставить остальные термины равными нулю). Реализация производного термина вполне может позволить вам увеличить член пропорционального усиления, чтобы получить более отзывчивую систему, но интегральный термин вряд ли поможет. Тот факт, что если ваш робот движется в неправильном направлении, ошибка станет больше, это означает, что физические движения ваших роботов в любом случае будут действовать как интегральный термин.
Конкретные значения P, D и I будут определяться отзывчивостью вашей системы. Общие советы по настройке параметров PID см. В моем ответе и др. О том, каковы хорошие стратегии для настройки петель PID?