Международные состязания роботов — Правила — Примеры роботов — Робот для траектории на основе LEGO EV3.  Пропорциональный интегральный дифференциальный ПИД-регулятор в робототехнике Lego Mindstorms. Пропорциональный регулятор Управление роботом с четырьм

Инженерные системы 15.03.2020
Инженерные системы

Пропорциональный регулятор - это устройство, оказывающее управляющее воздействие u(t) на объект пропорционально его линейному отклонению e(t) от заданного состояния x0(t);

e(t)=x0(t)-x(t), где x(t) - состояние в данный момент времени;

u(t)=ke(t), где k - усиливающий коэффициент.
То есть, чем дальше робот отклоняется от заданного курса, тем активнее должны работать моторы, выравнивая его.

Движение по линии с одним датчиком освещенности с помощью П-регулятора

Движение по границе черного и белого тоже можно построить на П-регуляторе. Хотя внешне задача представляется решаемой только с помощью релейного регулятора, поскольку в системе присутствует всего два видимых человеческому глазу состояния: черное и белое. Но робот все видит иначе, для него отсутствует резкая граница между этими цветами. Можно сказать, он близорук и видит градиентный переход оттенков серого.

Вот это и поможет построить П-регулятор.
Определяя состояние работа как показания датчика освещенности, научимся оказывать пропорциональное управляющее воздействие на моторы по следующему закону:
e=s1-grey, где s1 - текущие показания датчика, а grey - заданное значение.

Коэффициент k (равный в данном примере 2) должен быть достаточно мал (от 1 до 3). Такой регулятор эффективно работает только для малых углов отклонения, поэтому робота надо ставить в направлении движения так, чтобы датчик оказался по левую сторону от черной линии. Нетрудно заметить, что движение по линии на П-регуляторе отличается плавность. и на некоторых участках работ движется практически прямолинейно или точно повторяя изгибы линии.

Калибровка датчика

Обратимся к числу 48, использованному в формуле. Это среднее арифметическое показание датчика освещенности на черном и на белом, например (40+56)/2=48. Однако показания датчиков часто меняются по разным причинам: другая поверхность, изменение общей освещенности в помещении, небольшая модификация конструкции и т.п. Поэтому проведем калибровку робота вручную, определив показания датчика освещенности на белом и на черном.

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

  • оба на белом - движение прямо;
  • левый (s1) не черном, правый (s2) на белом - движение налево;
  • левый на белом, правый на черном - движение направо;
  • оба на черном - движение прямо.
Т.о. при равных показаниях датчика (оба белые или оба черные) робот едет прямо. Перед запуском робота, проведем автокалибровку обоих датчиков. Тогда алгоритм движения по линии с П-регулятором будет выглядеть с.о.:

Коэффициент k может изменяться в достаточно широком диапазоне (от1 до 20 и более) в зависимости от кривизны линии, маневренности робота и разницы между черным и белым на поле.
Важное условие. Автокалибровка должна проводиться на одноцветной поверхности и желательно при той освещенности, которая будет занимать наибольшую часть пути. Например, если робот едет вдоль черной линии на белом поле, то калибровать надо на белом. Т.е. положение робота при старте должно быть вот таким:


И еще замечание. Встречаются датчики, показания которых расходятся на 10-20%. Желательно их не ставить в паре на регулятор с большим коэффициентом, поскольку при резком изменении общей освещенности даже на однородном белом поле отклонения могут оказаться различными, что приведет к неожиданным последствиям.

Эта задача является классической, идейно простая, она может решаться много раз, и каждый раз вы будете открывать для себя что-то новое.

Существует множество подходов для решения задачи следования по линии. Выбор одного из них зависит от конкретной конструкции робота, от количества сенсоров, их расположения относительно колёс и друг друга.

В нашем примере будет разобрано три примера робота на основе основной учебной модели Robot Educator.

Для начала, собираем базовую модель учебного робота Robot Educator, для этого можно использовать инструкцию в программном обеспечении MINDSTORMS EV3.

Так же, для примеров нам понадобятся, датчики света-цвета EV3. Эти датчики света, как никакие другие, наилучшим образом подходят для нашей задачи, при работе с ними, нам не придётся забоится о интенсивности окружающего света. Для этого датчика, в программах мы будем использовать режим отражённого света, при котором оценивается количество отражённого света красной подсветки датчика. Границы показаний датчика 0 - 100 единиц, для «отсутствия отражения» и «полного отражения» соответственно.

Для примера мы разберём 3 примера программ для движения по чёрной траектории изображённой на ровном, светлом фоне:

· Один датчик, с П регулятором.

· Один датчик, с ПK регулятором.

· Два датчика.

Пример 1. Один датчик, с П регулятором.

Конструкция

Датчик света устанавливается на балку, удобно расположенную на модели.


Алгоритм

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


Так как на реальной траектории датчик формирует значения во всём своём рабочем диапазоне (0-100), то значением к которому стремиться робот, выбрано 50. В этом случае значения передаваемые функции поворота формируются в диапазоне -50 - 50, но этих значений недостаточно для крутого поворота траектории. По этому следует расширить диапазон в полтора раза до -75 - 75.

В итоге, в программе, функция калькулятора является простым пропорциональным регулятором. Функция которого ((a-50)*1.5 ) в рабочем диапазоне датчика света формирует значения поворота в соответствии с графиком:

Пример работы алгоритма

Пример 2. Один датчик, с ПK регулятором.

Этот пример составлен на той же конструкции.

Вы наверно заметили, что в прошлом примере робот излишне раскачивался, что не давало ему достаточно разогнаться. Сейчас мы постараемся немного улучшить эту ситуацию.

К нашему пропорциональному регулятору мы добавляем ещё и простой кубический регулятор, который добавит изгиб в функции регулятора. Это позволит уменьшить раскачивание робота рядом нужной границей траектории, а так же совершать более сильные рывки при сильном удалении от неё

Подробности Автор: Коновалов Игорь     Пропорциональный регулятор является усовершенствованием . Главный минус релейного в том, что ему все равно, насколько текущие значения отличаются от нормального значения датчика. У него только два состояния - либо попытаться повысить значения датчика на определенное постоянное число, если они меньше нормального значения, либо повысить. Из-за этого происходят колебания с постоянной амплитудой, что очень неэффективно.
    Намного более логично определять, насколько "далеко" находятся текущие показания от нормальных, и в зависимости от этого менять амплитуду. Чтобы стало более понятно, разберем на примере. Пример, как и в прошлой статье, тот же самый: робот из Lego Mindstorms EV3 едет по черной линии с помощью одного датчика цвета в режиме освещенности.

Робот пытается ехать вдоль границы между белым и черным, а там датчик показывает примерно 50 % освещенности. И чем дальше он от нормального положения, тем больше усилий прилагает робот, чтобы вернуться к 50 %.
    Для написания программы воспользуемся терминами "ошибка", "управляющее воздействие". Ошибка - разность текущего показания датчика и нормального. В нашем случае, если сейчас робот видит 20 % освещенности, то ошибка равна 20-50= -30 %. Знак ошибки указывает, в какую сторону роботу стоит повернуть, чтобы избавиться от ошибки. Теперь мы должны указать моторам, в какую сторону роботу поворачивать, с какой скоростью и насколько резко. Нужно оказать управляющее воздействие на моторы, под которым подразумевается, насколько резко ему стоит возвращаться к нормальному положению. Управляющее воздействие (UP) рассчитывается как ошибка (error) умноженная на коэффициент пропорциональности (k). Этот коэффициент используется для усиления или уменьшения влияния ошибки на управляющее воздействие. Управляющее воздействие подается в рулевое управление, где устанавливается средняя скорость робота.
    Как же настроить коэффициент пропорциональности? Опытным путем подбирать значения, для проезда траектории он может быть, например, от 0,2 до 1,5 в зависимости от скорости и конструкции робота. Если коэффициент слишком большой, то робот будет сильно вилять, если маленький - ехать плавно, но в какой-то момент на повороте съехать из-за недостаточной величины управляющего воздействия. Напишем две версии программы - с переменными (для тех, кто их уже изучал) и без.


   Но и этот регулятор можно усилить с помощью введения пропорциональной и интегральной составляющей, описание будет в следующих статьях. До скорых встреч!



Рекомендуем почитать

Наверх