DroidScript

TRIK Studio: пропорциональный регулятор

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript
инструменты для мобильной разработки

TRIK Studio: пропорциональный регулятор

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
Робототехника  
Дата изменения 13.10.2018

При использовании релейных регуляторов радиус поворотов тележки не зависит от того, насколько датчик света отклонился от линии. Это приводит к частой потери линии и неэффективному движению вдоль неё. Для устранения этого недостатка применяют пропорциональные регуляторы, благодаря которым радиус поворотов тележки, в конечном счёте, становится зависимым от формы линии.

Как следует из названия, в пропорциональном регуляторе управляющее воздействие пропорционально отклонению измеряемой величины от нормы (ошибки). Чем больше отклонение - тем больше будет и управляющее воздействие. Устройство смыва в бачке унитаза как раз и является примером П-регулятора уровня воды, благодаря которому скорость заполнения бачка зависит от положения поплавка, связанного с поплавковым клапаном, служащего для перекрытия подачи воды в бачок.

Как следует из названия, управляющее воздействие пропорционально отклонению:

u = k*err,

где k - коэффициент пропорциональности, а err = (x0-x) - отклонение от нормы (x0 - значение нормы, x - текущее значение).

Зависимость между u и err линейная, а регулятор, работающий по данной формуле, называется пропорциональным линейным регулятором.

При использовании одного датчика света формула примет вид:

u = k*(текущее значение датчика света - значение границы серого).

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

Зависимость u от err линейная, а регулятор, работающий по данной формуле, называется линейным пропорциональным регулятором. Чем больше отклонение датчика света от линии, тем больше управляющее воздействие и тем более резкими будут повороты тележки. Коэффициент k называется коэффициентом усиления. При k=1 он не оказывает никакого влияния на величину отклонения, при k < 1 величина отклонения уменьшается, а при k > 1 увеличивается. При близких сверху к единице значениях k данный коэффициент оказывает заметное влияние по абсолютному значению только на большие отклонения. Например, при k = 1.1 и отклонении 1, на выходе будет 1.1, а при отклонении 100 - 110. Прибавка 10 по сравнению с 0.1 ощутима. Для увеличения влияния коэффициента на маленькие отклонения его необходимо увеличить. При k = 10 и отклонении 1 на выходе будет 10, что также становится ощутимым, но при этом большие отклонения становятся просто огромными.

Значение коэффициента k подбирается на практике, но для начала можно провести его теоретический расчёт. Скорость моторов находится в диапазоне от 0 до 100, откуда v+u не должно превышать 100, а v-u быть меньше нуля. Значит, максимальное значение u = 50. Граница серого находится посередине диапазона значений яркости от чёрного до белого. Максимальное значение отклонения будет равно (max-min)/2. Предположим, датчик света показал над линией 30, а над белым фоном 80. Тогда максимальное отклонение равно (80-30)/2 = 25. С учётом этого k = 2 (50=k*25).

Если посмотреть на график зависимости значения датчика света от времени, то нетрудно увидеть колебательный процесс.

График зависимости освещённости от времени

Аналогичная картину мы будем наблюдать и при перемещении тележки вдоль линии, которое представляет собой поступательно-колебательное движение, в котором коэффициент усиления k влияет на амплитуду колебаний. Благодаря поступательной составляющей тележка движется вдоль линии, а колебательная составляющая обусловлена постоянными поворотами тележки границы серого то направо, то налево. При небольших значениях k тележка совершает плавные повороты, что хорошо подходит для прямолинейных участков линии, но может привести к сходу с линии на её крутых участках из-за недостаточного управляющего воздействия на моторы. Поэтому для крутых участков коэффициент k увеличивают, что приводит к увеличению колебательной составляющей в движении. При k >> 1 колебательная составляющая становится настолько большой, что вся работа моторов уходит на резкие повороты тележки на месте, в результате чего тележка практически останавливается. Из всего сказанного следует то, что для эффективного движения тележки по участкам линии с разной кривизной нужно использовать разные значения параметра k. Но как тележка узнает, на каком участке она находится? К счастью, это и не требуется. Достаточно в формулу линейного пропорционального регулятора добавить ещё одну составляющую, например, кубическую. При крайне малых отклонениях (движение по прямой) кубическая составляющая практически не работает, но при движении на участке резкого поворота её значение резко возрастает. Например, 3 в степени 3 равно всего 9, а 10 в степени 3 равно уже 1000. Это слишком большая величина, для уменьшения которой используется свой коэффициент пропорциональности. Формула пропорционального регулятора с кубической составляющей имеет вид:

u = kп*err + kк*err3

Зависимость u от err нелинейная. Если значение kк выбрать равным 0.1, то при ошибке 10 кубическая составляющая даст значение 100, что нам никак не подходит. При коэффициенте 0.01 кубическая составляющая даст 10, а пропорциональная при kп = 2 будет 20. Отсюда и можно начать эксперименты по подбору этих коэффициентов, с учётом обеспечения неравенства kп > kк.

Чем больше времени тратит тележка на колебательную составляющую, тем надёжнее, но медленнее она будет двигаться вдоль линии. Попробуйте на велосипеде проехать по тротуару, постоянно поворачивая то направо, то налево. Далеко не уедешь, а устанешь быстро. При движении тележки вдоль линии она постоянно промахивается относительно идеальной траектории. Путём подбора пропорционального и кубического коэффициента можно сгладить колебания, но устранить их совсем не получится из-за того, что в пропорциональном регуляторе не учитывается скорость изменения измеряемой величины. Для учёта этого используют пропорционально-дифференциальный регулятор (ПД-регулятор).

Робототехника