Лекция
Сразу хочу сказать, что здесь никакой воды про движение вдоль стены, и только нужная информация. Для того чтобы лучше понимать что такое движение вдоль стены , настоятельно рекомендую прочитать все из категории Робототехника.
Пропорционально-дифференциальный регулятор.
Пропорционально-интегрально-дифференциальный (ПИД) регулятор — устройство в управляющем контуре с обратной связью. Используется в системах автоматического управления для формирования управляющего сигнала с целью получения необходимых точности и качества переходного процесса. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трех слагаемых, первое из которых пропорционально разности входного сигнала и сигнала обратной связи (сигнал рассогласования), второе — интеграл сигнала рассогласования, третье — производная сигнала рассогласования.
Если какие-то из составляющих не используются, то регулятор называют пропорционально-интегральным,пропорционально-дифференциальным, пропорциональным и т. п.
Пропорциональная составляющая вырабатывает выходной сигнал, противодействующий отклонению регулируемой величины от заданного значения, наблюдаемому в данный момент времени. Он тем больше, чем больше это отклонение. Если входной сигнал равен заданному значению, то выходной равен нулю.
Однако при использовании только пропорционального регулятора значение регулируемой величины никогда не стабилизируется на заданном значении. Существует так называемая статическая ошибка, которая равна такому отклонению регулируемой величины, которое обеспечивает выходной сигнал, стабилизирующий выходную величину именно на этом значении. Например, в регуляторе температуры выходной сигнал (мощность нагревателя) постепенно уменьшается при приближении температуры к заданной, и система стабилизируется при мощности равной тепловым потерям. Температура не может достичь заданного значения, так как в этом случае мощность нагревателя станет равна нулю, и он начнет остывать.
Чем больше коэффициент пропорциональности между входным и выходным сигналом (коэффициент усиления), тем меньше статическая ошибка, однако при слишком большом коэффициенте усиления, при наличии задержек в системе, могут начаться автоколебания, а при дальнейшем увеличении коэффициента система может потерять устойчивость.
Интегральная составляющая пропорциональна интегралу от отклонения регулируемой величины. Ее используют для устранения статической ошибки. Она позволяет регулятору со временем учесть статическую ошибку.
Если система не испытывает внешних возмущений, то через некоторое время регулируемая величина стабилизируется на заданном значении, сигнал пропорциональной составляющей будет равен нулю, а выходной сигнал будет полностью обеспечивать интегральная составляющая. Тем не менее, интегральная составляющая также может приводить к автоколебаниям.
Дифференциальная составляющая пропорциональна темпу изменения отклонения регулируемой величины и предназначена для противодействия отклонениям от целевого значения, которые прогнозируются в будущем. Отклонения могут быть вызваны внешними возмущениями или запаздыванием воздействия регулятора на систему.
Выходной сигнал регулятора u определяется тремя слагаемыми:Назначение ПИД-регулятора — в поддержании заданного значения x0 некоторой величины x с помощью изменения другой величины u. Значение x0 называетсязаданным значением (или уставкой, в технике), а разность e = (x0 − x) — невязкой (или ошибкой [регулирования], в технике), рассогласованием или отклонением величины от заданной.
,
где Кp, Кi, Кd — коэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно.
Большинство методов настройки ПИД-регуляторов используют несколько иную формулу для выходного сигнала, в которой на пропорциональный коэффициент усиления умножены также интегральная и дифференциальная составляющие:
В дискретной реализации метода расчета выходного сигнала уравнение принимает следующую форму:
,
где — время дискретизации. Об этом говорит сайт https://intellect.icu . Используя замену можно записать:
В программной реализации для оптимизации расчетов переходят к рекуррентной формуле:
Часто в качестве параметров ПИД-регулятора используются:
Следует учитывать, что термины используются по-разному в различных источниках и разными производителями регуляторов.
Не правда ли программа, заданная в качестве задачки на понимание NXT-G вэтом посте, похожа на программы, поясняющие движение вдоль линии, в этом?
Разница между программами в том, что в одной используются сенсор расстояния, а в другой - сенсор овещенности. В остальном программы похожи: робот меняет направление поворота после того как значение на сенсоре измениться.
Если быть более точным, то в задаче робот поворачивает вправо, если расстояние на сенсоре меньше 14 см. и влево, если расстояние на сенсоре больше 16 см. Сложно представить, для чего может понадобиться такое движение, если сенсор смотрит вперед или назад. Но многое встает на свои места, если предположить, что сенсор установлен на одном из бортов робота и смотрит в сторону.
Если нарисовать схему такого движения, то становится видно, что по левому борту робота на протяжении всего движения, находится какое-то препятствие и робот пытается не подъезжать к нему слишком близко и не отъезжать слишком далеко. Если предположить, что препятствие это стена, то движение робота можно назвать движением вдоль стены. При некрутых заворотах стены, робот будет стараться держаться на определенном расстоянии, т.е. поворачивать вместе с заворотом стены.
Кстати, этот вариант ответа (
движение вдоль стены ) тоже был среди ответов, которые были присланы после публикации задачи.
Как и с предложенным алгоритмом движения вдоль линии, следует помнить, что данная реализация движения вдоль стены тоже является базовой для изучения. Т.е. при решениях реальных задач, алгоритм движения будет значительно сложнее, но принцип движения останется тот же.
Сейчас же хотелось бы обратить внимание на одну деталь, об которую довольно часто "спотыкаются" те, кто только начинает реализовывать дивжение вдоль стены.
В общем случае, движение робота параллельно стене и сенсор расстояния показывает вполне ожидаемые значение, на основе которых принимается решение в какую сторону поворачивать.
Но может возникнуть ситуация, когда робот в попытке вновь приблизиться к стене, значительно повернется к ней. Это приведет к тому, что сенсор начнет показывать очень большое расстояние - данные после отражения от стены не поступают в сенсор и он "думает", что препятствие еще слишком далеко.
В этом случае, робот будет стараться приблизиться к стене, увеличивая угол между сенсором и стеной, что только будет усугублять ситуацию.
Решение этой проблемы, традиционно, не одно. Оно может быть как программным, так и конструкторским. Например, можно не фиксировать датчик жестко, а поставить его на мотор.
Таким образом, после поворота робота, скажем, налево, сенсор расстояния поворачивается, стараясь быть направленным прямо на стену. А при повороте направо, мотор поворачивает сенсор в другую сторону:
Особенно такая схема удобна при сборке робота с управляющимим рулевым мотором, тогда сенсор можно крепить к тому же мотору, что управляет направляющими колесами. Причем лучше крепить не напрямую, а подобрать подходящее сочетание шестерней.
Решим такую задачу. Робот должен двигаться вдоль стенки на заданном расстоянии L. Предположим, что левое колесо робота управляется мотором В, правое - мотором С, а датчик расстояния, подключенный к порту 1, закреплен несколько впереди корпуса тележки (это важно!) и направлен на стенку справа по ходу движения.
Расстояние до стенки в настоящий момент времени, которое показывает датчик, обозначим .
Моторы двигаются со средней скоростью 50, но при отклонении от заданного курса на них осуществляется управляющее воздействие up. Снова обозначим это следующим образом.
Motor[MotorB]=50+up; Motor[MotorC]=50-up;
Осталось определить, чему будет равно управляющее воздействие. Это нетрудно:
Таким образом, при робот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Здесь - это некоторый усиливающий коэффициент, определяющий воздействие регулятора на систему. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Предлагаем подобрать его самостоятельно.
В данном случае регулятор будет эффективно работать только при малых углах отклонения. Кроме того, движение практически всегда будет происходить по волнообразной траектории. Сделать регулирование более точным позволит введение новых принципов, учитывающих отклонение робота от курса.
В некоторых ситуациях П-регулятор может вывести систему из устойчивого состояния. Например, если робот направлен от стенки, но находится к ней ближе заданного расстояния, на моторы поступит команда еще сильнее повернуть от стенки, в результате чего с ней может быть утерян контакт (напоминаем, что датчик расстояния получает отраженный сигнал практически только от перпендикулярной поверхности).
Для защиты от подобных ситуаций добавим в регулятор дифференциальную составляющую, которая будет следить за направлением движения робота. Иными словами, вектор скорости будет влиять на управляющее воздействие. Известно, что скорость находится как , где - это изменение расстояния за промежуток времени . Определим дифференциальный регулятор через скорость отклонения робота от заданного положения:
где - текущее расстояние до стенки, - расстояние на предыдущем шаге.
Поскольку замеры производятся через равные промежутки времени, то можно принять за константу.
Таким образом, ПД-регулятор описывается формулой из двух слагаемых
Можно показать, что для устойчивого достижения цели коэффициент при дифференциальной составляющей должен превышать (см. ниже статью "Элементы теории автоматического управления в школе").
Алгоритм движения вдоль стенки на ПД-регуляторе в целом будет выглядеть так:
Sold=L=S1; while(true) { upd= k1*(S1-L) + k2*(S1-Sold); Motor[MotorB]=50+upd; Motor[MotorC]=50-upd; Sold=S1; wait1msec(1); }
Для объезда предметов потребуется ввести контроль показаний датчика расстояния: при резком изменении робот должен делать вывод о возможном повороте, который надо будет производить с другими коэффициентами.
А как ты думаешь, при улучшении движение вдоль стены, будет лучше нам? Надеюсь, что теперь ты понял что такое движение вдоль стены и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Робототехника
Комментарии
Оставить комментарий
Робототехника
Термины: Робототехника