Робот для движения по линии на основе конструктора LEGO MINDSTORMS EV3 (5-11 классы)
Особенности конструирования робота для движения по линии
Следовать по линии можно с помощью:
- одного датчика цвета, расположенного с одной стороны линии. Робот может двигаться вдоль одной стороны линии, проходить повороты, но не в состоянии обнаруживать перекрестки и инверсии. Тем не менее, на основе одного датчика могут быть реализованы алгоритмы любой сложности, включая ПИД – регулятор;
- двух датчиков цвета, расположенных по обе стороны линии. Использование двух датчиков позволяет обнаруживать пересекаемые роботом перекрестки, движение робота становится плавным, он практически никогда не «теряет» линию, даже на очень крутых поворотах;
- трех датчиков, два из которых расположены с обеих сторон линии, третий вынесен в сторону и немного вперед. Третий датчик в этом случае помогает обнаруживать и подсчитывать перекрестки, линии штрих-кода, повороты на острый угол и обнаруживать дополнительные препятствия;
- трех датчиков, два из которых расположены с обеих сторон линии, а третий находится над линией и вынесен немного вперед. Такая конструкция позволяет предвидеть изменение траектории и заранее принимать меры по ее прохождению;
- четырех датчиков. Четвертый датчик служит для реализации скоростных алгоритмов движения по сложным и насыщенным препятствиями трассам.
Определившись с количеством датчиков, необходимо правильно их разместить. Робот будет иметь устойчивую и сбалансированную конструкцию, если его масса равномерно распределена на все опоры, это необходимо учитывать в первую очередь. Конструкция робота может быть на основе переднего и заднего привода.
Для начала, собираем базовую модель учебного робота Robot Educator, для этого можно использовать инструкцию в программном обеспечении MINDSTORMS EV3.
Количество датчиков устанавливается в зависимости от выполняемой задачи.
Датчик цвета устанавливается на балку, удобно расположенную на модели.
В дальнейшем нам понадобится обозначать датчики и моторы. Условимся смотреть на робота сверху по ходу движения. На рисунке ниже представлены принятые обозначения датчиков, моторов и порты, к которым они подключены.
Калибровка датчиков
Калибровка датчиков является первым шагом реализации алгоритма движения по линии. Датчик цвета, работая в режиме измерения количества отраженного света, освещает поверхность и фиксирует по 100-значной шкале количество отраженного от нее света. Если 100% света, созданного датчиком отразится, то датчик передаст значение 100. Если от поверхности ничего не отразится, то значение датчика будет равно 0.
Поскольку датчик цвета в указанном режиме фиксирует только процент отраженного света, то получаемые значения удобно сравнивать со шкалой градаций серого цвета. Можно сказать, что датчик различает 100 градаций серого цвета.
Калибровка датчика будет заключатся в том, что мы должны найти то состояние к которому будет стремиться датчик. Если мы хотим, чтобы робот двигался так, чтобы датчик цвета находился на границе черного и белого цвета, мы должны рассчитать числовое значение, соответствующее этому положению. Будем называть это состояние среднее значение серого.
Среднее значение серого – это значение, которое показывает датчик цвета (в режиме отраженного света), находясь на границе линии и поля.
Количество отраженного света зависит не только от расположения датчиков, но и от освещенности в помещении, цвета и типа поверхности поля и линии, мы должны фиксировать среднее значение серого в каждом конкретном случае.
Алгоритм ручной калибровки
- Помещаем робота так, чтобы датчик цвета оказался над черной линией, и фиксируем его значение. Фиксировать значение можно на экране блока, или, если робот и компьютер связаны проводным или беспроводным соединением, непосредственно в среде EV3. Предположим, датчик показал значение 30.
- Помещаем робота так, чтобы датчик цвета оказался над белой поверхностью поля, и фиксируем это значение. Предположим, датчик показал значение 70.
- Вычисляем среднее значение: (30+70)/2 = 50. Значение 50 и будем называть среднее значение серого, оно будет фиксироваться датчиком тогда, когда он будет находиться над границей черной линии и белого поля.
Дискретная система управления роботом
1. Алгоритм движения по линии «Зигзаг» с одним и двумя датчиками цвета
Этот алгоритм является самым простым. Движение робота по линии получается резким, на проезд каждого «зигзага» и постоянные остановки моторов требуется время, поэтому общая скорость робота невелика. Вместе с тем, этот алгоритм позволяет хорошо преодолевать крутые повороты.
Алгоритм «Зигзаг» с одним датчиком цвета
1. Проводим калибровку датчика цвета, определяем среднее значение серого, полученное значение вносим в программу.
2. Выполняем в цикле:
— если значение датчика меньше среднего значения серого (то есть датчик оказался над черной линией), то левый мотор – 0, правый – 50;
— если значение датчика больше или равно среднему значению серого (датчик удаляется влево от черной линии), то левый мотор – 50, правый – 0.
В этом случае робота надо расположить так, чтобы датчик находился слева от линии.
Если мы хотим запустить робота с правой стороны от линии, то пункт 2 будет выглядеть так: если значение датчика меньше среднего значения серого, то левый мотор – 50, правый – 0; если значение больше или равно среднему значению серого, то левый мотор – 0, правый – 50.
Если движения робота очень резкие, то скорость движения робота можно снизить с 50 на меньшее.
Программа движения робота с левой стороны от линии и одним датчиком и ручной калибровкой приведена на рисунке ниже.
Алгоритм «Зигзаг» с двумя датчиками цвета
При наличии двух датчиков цвета робот практически никогда не «теряет» линию, даже при самых крутых поворотах. Кроме того, двумя датчиками возможно определять перекрестки и оказавшись на них, выполнять определенные действия, например, подсчитывать их количество или поворачивать в определенную сторону.
Алгоритм управления роботом:
1. Проводим калибровку одного датчика цвета, определяем среднее значение серого (пусть среднее значение равно 50).
2. Если значение левого датчика, подключенного в порт 2, больше среднего значения серого, то анализируем значение правого датчика, подключенного в порт 3:
— если значение правого датчика, подключенного в порт 3, меньше среднего значения серого, то левый мотор В – 50, правый мотор С – 0 (робот отклонился влево от линии);
— если значение правого датчика больше или равно среднему значению серого, то левый мотор – 50, правый мотор – 50 (робот находится на линии, датчики расположены по обе стороны от линии, робот едет вперед).
3. Если значение левого датчика, подключенного в порт 2, меньше или равно среднему значению серого, то анализируем значение правого датчика, подключенного в порт 3:
— если значение правого датчика меньше среднего значения серого, то левый мотор – 50, правый – 50 (оба датчика находятся на линии, значит перед нами перекресток, проезжаем его прямо);
— если значение правого датчика больше или равно среднему значению серого, то левый мотор – 0, правый – 50 (робот отклонился вправо от линии).
Выводы:
— алгоритм прост для понимания и воспроизведения;
— робот способен следовать вдоль линии с резкими поворотами или изгибающейся на любой угол;
— скорость прохождения трассы низкая.
2. Алгоритм «Волна»
Алгоритм напоминает предыдущий алгоритм «Зигзаг», но предназначен для более быстрого и плавного прохождения дистанции.
Алгоритм работает также с одним и двумя датчиками цвета; отличается от предыдущего тем, что повороты робот выполняет не вокруг одного колеса, когда значение скорости одного мотора — 0, а второго – 50, а по дуге. Моторы работают со скоростями 60 и 10, 50 и 5, и т.д. Эти значения подбираются экспериментально в зависимости от кривизны и толщины линии, а также от конструкции робота.
Программа движения робота по левой стороне от линии с одним датчиком цвета, подключенного к порту 2, представлена на рисунке ниже.
Программа движения робота по алгоритму «Волна» с двумя датчиками представлена на рисунке ниже. Робот, управляемый по этому алгоритму, может съехать с линии при крутых поворотах.
Выводы:
— алгоритм прост для понимания и воспроизведения;
— робот способен следовать вдоль линии с плавными поворотами, на крутых поворотах робот теряет линию;
— скорость прохождения трассы достаточно высокая.
Пропорциональное управление роботом
В теории автоматического управления более 100 лет назад был разработан автоматический регулятор (лат. Regulo – привожу в порядок, налаживаю) – устройство, посредством которого осуществляется автоматическое регулирование. С помощью чувствительного элемента (датчика) регулятор, в зависимости от принципа регулирования, измеряет регулируемую величину и при помощи преобразовательного или вычислительного устройства, и в соответствии с законом регулирования выбирает воздействие на регулирующий механизм.
В настоящее время наиболее распространен пропорционально-интегрально–дифференциющий регулятор или ПИД – регулятор. Алгоритм ПИД – регулятора, адаптированный для управления роботом Lego Mindstorms EV3, позволяет оценивать положение датчика (датчиков) цвета относительно следуемой линии и, в зависимости от результата, рассчитывать управляющее воздействие на моторы.
В разобранных выше дискретных алгоритмах скорость поворота робота при выполнении зигзага или волны постоянна и не зависит от того, насколько далеко робот отъехал от линии. Это вызывает неоптимальное прохождение пути, так как даже на прямых участках робот будет выполнять ненужные движения.
ПИД – регулятор содержит три составляющие. Рассмотрим каждую из них.
- Пропорциональная составляющая (П) позволяет задавать управляющие воздействия на моторы (тормозить один мотор и ускорять второй мотор) с силой, пропорциональной величине отклонения робота от следуемой линии. Скорости моторов рассчитываются как разность требуемого и текущего положения, умноженная на неотрицательный коэффициент. Чем больший коэффициент буден задан, тем быстрее будет происходить возвращение робота на требуемую траекторию, но движения при этом станут более резкими и зигзагообразными. Пропорциональная составляющая оказывает самое сильное управляющее воздействие на моторы.
- Интегральная составляющая (И) учитывает информацию о положении робота на предыдущих шагах и задает дополнительные управляющие воздействия на моторы в зависимости от полученного результата.
- Дифференциальная составляющая (Д) прогнозирует положение робота на следующем шаге и задает дополнительные управляющие воздействия на моторы в зависимости от полученного результата
Уравнение ПИД – регулятора имеет вид:
где
t – период дискретизации;
V(t) – требуемая скорость мотора;
e(t) – ошибка, указывающая, на сколько далеко датчик цвета находится от среднего значения серого;
P, I, D – пропорциональная, интегральная и дифференциальная составляющие соответственно;
kp, ki, kd – коэффициенты ПИД регулятора.
В приведенном виде ПИД – регулятор невозможно реализовать на компьютере, поэтому дифференцирование заменим разностью, а интегрирование – суммой:
V(t) = P(t) + I(t) + D(t);
P(t) = kp * e(t);
I(t) = I(t-T) + ki * e(t);
D(t) = kd * (e(t) – e(t-T)).
Реализация регуляторов возможна на основе одного или двух датчиков цвета. Существует возможность использования некоторых составляющих регулятора отдельно. Благодаря простоте реализации очень распространенным является П – регулятор. Интегральная и дифференциальная составляющие предназначены для более тонкого регулирования.
Пропорциональный регулятор (П – регулятор)
Пропорциональный регулятор очень популярен для управления движением по линии из-за стабильной работы и простоты реализации в среде EV3. Управление на основе П-регулятора возможно на основе одного или двух датчиков цвета в режиме отраженного света.
Приведем два алгоритма и примеры их реализации для управления движением робота в среде Lego Mindstorms EV3.
Обозначим:
Vпр – скорость движения робота по прямой (параметр «мощность» программного блока рулевого управления);
Vлев – мощность, подаваемая на левый мотор (в данном примере подключен к порту В);
Vправ – мощность, подаваемая на правый мотор (в данном примере подключен к порту С);
Sср – среднее значение серого;
Sтекущ – текущее значение датчика цвета (в режиме отраженного света в случае движения по линии с помощью одного датчика; в данном примере подключен к порту 2);
Sлев – текущее значение левого датчика цвета (в режиме отраженного света в случае движения по линии с помощью двух датчиков; в данном примере подключен к порту 2);
Sправ – текущее значение правого датчика цвета (в режиме отраженного света в случае движения по линии с помощью двух датчиков; в данном примере подключен к порту 3);
Е – ошибка (рассогласование). В случае движения по линии с помощью одного датчика ошибка равна разнице между средним значением серого и текущим значением датчика цвета, при движении по линии с помощью двух датчиков цвета ошибка равна разнице между показаниями датчиков;
kп – пропорциональный коэффициент, который усиливает абсолютное значение ошибки и увеличивает управляющее воздействие на моторы.
В случае движения с использованием одного датчика цвета и программного блока «рулевое управление» формулы управления будут иметь следующий вид.
При повороте направо:
При повороте налево:
Робот может двигаться по алгоритму пропорционального управления на основе одного датчика с левой или правой стороны линии. Это может быть важно при проезде перекрестков или других препятствий. Различие заключается в том, что управления, подаваемые на моторы, должны быть противоположны: при движении робота слева от линии и при приближении к линии робот должен поворачивать налево, при движении робота справа от линии – поворачивать направо.
Алгоритм движения робота следующий:
В непрерывном цикле опрашиваем показание датчика цвета, в режиме измерения отраженного света и:
— в случае движения робота с левой стороны от линии вычитаем из полученного значения среднее значение серого (40);
— в случае движения робота с правой стороны от линии вычитаем из среднего значения серого (40) полученное значение;
— результат умножаем на коэффициент kп = 1,5;
— полученное число подаем на вход параметра «рулевое управление».
Параметр «мощность» программного блока «рулевое управление» устанавливаем 50.
П- регулятор с одним датчиком цвета и движением робота с левой стороны от линии
П — регулятор с одним датчиком цвета и движением робота с правой стороны от линии
Как выбирать коэффициент kп и параметр «мощность»
Предположим, мы задаем движение по прямой со скоростью 50. Нам необходимо, чтобы при самом крутом повороте робот поворачивал со скоростями: одно колесо – 50, второе – 0.
Пусть после проведения измерений мы увидели, что максимальная разница между средним значением серого и текущим значением датчика (+/-) 20 единиц.
Подставим числовые значения в уравнение
Таким образом, число 2.5 – это предельное значение коэффициента. Если мы зададим это число больше, то при крутых поворотах одно колесо будет ехать вперед со скоростью 50, а другое крутиться в обратном направлении. С одной стороны, это заставит робота возвращаться на траекторию быстро и по очень крутой дуге, с другой стороны, создаст толчки при движении.
Чем выше коэффициент, — тем «зигзагообразнее» движение. Чем меньше коэффициент, — тем более плавным становится движение, но выше риск того, что управляющего воздействия будет недостаточно в момент проезда поворота, и робот потеряет линию.
Значение коэффициента зависит от конструкции робота (расстояния от оси колес до датчиков, расстояния между колесами), освещения, поверхности поля, размера колес, толщины и контрастности линии.
Поэтому изначально устанавливают значение kп = 1, а затем с дискретностью 0,1 повышают его, определяя лучшее для конкретного робота, поля и освещения коэффициент. Не исключен вариант, когда коэффициент меньше 1.
Также экспериментальным путем подбирается значение параметра «мощность», причем на разных участках трассы он может быть разным. Установим первоначальное 30 и будем повышать его до наилучших результатов.
При движении по линии с помощью двух датчиков цвета скорость поворота зависит не от разницы между текущим и средним значением датчика, а от разницы показаний (рассогласования) двух датчиков. Чем больше эта разница (то есть, чем больше робот одним датчиком наехал на линию, а вторым соответственно, отъехал от линии), тем большим должно быть управляющее воздействие на моторы.
Формулы управления будут иметь следующий вид.
При повороте налево
При повороте направо
При движении прямо
На рисунке ниже приведена реализация этого алгоритма. Формула управления имеет следующий вид: (a+b)*c.
Проанализируем формулы. Предположим, мы задаем движение по прямой со скоростью 50. Нам необходимо, чтобы при самом крутом повороте робот поворачивал с максимально допустимой скоростью при заданной мощности 50: одно колесо – 0, второе – 50. Предположим, после проведения измерений мы увидели, что максимальная абсолютная разница между показаниями датчиков составила 30 единиц. Подставим эти значения в формулу
Таким образом, kп = 1,7 – это предельный коэффициент. Выбор коэффициента больше этого значения позволит при выполнении крутых поворотов одному мотору крутиться в обратном направлении, вызывая резкие толчки. Это допустимо только при очень крутых поворотах. Уменьшение коэффициента приводит к более плавному движению.
Пусть датчики показывают небольшое отклонение в значениях друг от друга, например, 5 единиц. Тогда один мотор будет крутиться со скоростью 50 единиц, а другой (при kп = 1,7) – 41,5 единиц, что позволит плавным движением вернуть робота к требуемому состоянию.
В реальных условиях датчики практически никогда не показывают одинаковые значения на одном объекте. Их показания могут отличаться на 3-5 единиц. Эта разница умноженная на пропорциональный коэффициент становится равной уже 7,5-12,5 единиц! То есть одно колесо всегда может ехать быстрее другого на 12 единиц, вызывая постоянное движение робота, даже находящегося идеально над линией, по дуге. Внешне это выражается в том, что робот едет, «прижавшись» одним датчиком к линии, а не в состоянии, когда линия находится посередине между двумя датчиками.
Для того чтобы избежать подобной ситуации, нужно подкорректировать значения датчиков. Это возможно сделать вручную заранее или автоматически перед началом движения робота.
При ручной корректировке мы заранее исследуем показания датчиков. Предположим, мы обнаружили, что один датчик всегда показывает значение на 3 единицы больше, чем другой. Тогда в формулу пропорционального управления вводим корректировку на это значение, вычитая 3 единицы из показаний данного датчика: (a-3-b)*c.
Выводы:
— реализация П-регулятора на основе блока рулевого управления проста и доступна для начинающих знакомство с пропорциональным управлением;
— алгоритм показывает хорошие результаты на плавных трассах;
— для прохождения крутых поворотов требуется увеличение значения коэффициента kп и/или снижение мощности, подаваемой на моторы, что приводит к медленному зигзагообразному движению.
Добавление кубической составляющей к П-регулятору
Применяя П-регулятор, мы стоим перед выбором: чем выше коэффициент kп, тем более крутые повороты проходит робот, но с низкой скоростью. Чем ниже коэффициент kп, тем выше скорость, наблюдается более плавная форма прохода относительно прямых участков, но управляющих воздействий может не хватить для прохождения поворотов.
В книге С.А. Филиппова «Робототехника для детей и родителей» предложен следующий вариант. К описанному выше пропорциональному управлению добавим значение разницы между текущим значением датчика и средним значением серого в случае работы с одним датчиком или разницы показаний двух датчиков в случае движения с двумя датчиками, возведенное в куб и умноженное на небольшой коэффициент.
Формулы управления движением на основе одного датчика цвета имеют следующий вид.
При повороте направо
При повороте налево
При движении прямо
Формулы управления движением на основе двух датчиков цвета имеют следующий вид.
При повороте налево
При повороте направо
При движении прямо
Коэффициент kк рекомендуется устанавливать меньше значения 0,05.
Рассмотрим пример.
Пусть робот двигается по прямому участку и разница между датчиками составляет 4 единицы. Кубическая составляющая регулирования при kк = 0,03 будет равна 0,03*43 = 1,92. Эта величина, добавленная к пропорциональной составляющей управления, практически не скажется на характере движения.
Как только робот попадает на участок с поворотом, разница между датчиками резко возрастает. Пусть она стала равна 10. Кубическая составляющая регулирования при этом будет равна 0,03*103 = 30. Робот получит сильное управляющее воздействие, заставляющее его вернуться на линию.
На рисунке ниже представлена реализация алгоритма при движении с помощью одного датчика цвета и коэффициентами kп = 1,3; kк = 0,02, a = 50 – среднее значение серого.
На рисунке ниже представлена реализация алгоритма при движении с помощью двух датчиков цвета и коэффициентами kп = 1,5; kк = 0,03.
Выводы:
Использование кубической составляющей позволяет уменьшить пропорциональный коэффициент kп, сделав движение более плавным на ровных участках, при этом добавить дополнительное управление на крутых участках трассы. В результате увеличится общая скорость прохождения траектории.
Пропорционально интегральный регулятор (ПИ-регулятор)
Рассматривая пропорциональное регулирование мы определили, чем больше ошибка рассогласования, тем с большей скоростью совершается возвратное движение.
В том случае, когда линия имеет плавное искривление без крутых поворотов, и скорость робота невелика, пропорциональное управление показывает отличные результаты.
Но когда необходимо проходить сложные участки трассы на большой скорости, пропорционального управления будет не достаточно. Чтобы решить эту проблему, необходимо к скорости П-регулятора прибавить скорость, рассчитанную как интеграл по времени ошибки, умноженную на неотрицательный коэффициент.
В этом случае требуемое управляющее воздействие на моторы будет тем больше, чем дольше робот не может достичь требуемого положения (среднего значения серого). Такой алгоритм называется пропорционально интегральным регулятором или ПИ-регулятором.
Уравнение ПИ-регулятора имеет вид:
где
kп – пропорциональный коэффициент (коэффициент П-регулятора);
kи – интегральный коэффициент;
e – ошибка, равная разнице между средним значением серого и текущим показанием датчика цвета в случае движения по одному датчику цвета, или разнице между показаниями датчиков цвета, в случае движения по двум датчикам;
Integral – интегральная составляющая ошибок или сумма ошибок.
Сумму ошибок можно вычислить как
Integral = Integral (на предыдущем шаге) + ошибка (на текущем шаге)
В книге «The Art of LEGO Mindstorms EV3 Programming» для расчета составляющей Integral предлагается следующая формула:
Integral = 0,5 * Integral (на предыдущем шаге) + ошибка (на текущем шаге)
Алгоритм реализации ПИ-регулятора
- Инициируем переменную Integral, в которой будет храниться сумма ошибок, и присваиваем ей начальное значение 0. Для этого в программу вставляем блок «Переменная» в режиме «Запись – числовое значение» и указываем ее значение 0.
- Создаем непрерывный цикл 01.
- Вычисляем текущее значение ошибки. В случае использования одного датчика цвета из среднего значения серого, пусть равного 40, вычитаем текущее значение датчика цвета, подключенного к порту 2. В случае использования двух датчиков цвета из значения левого датчика, подключенного к порту 2, вычитаем значение правого датчика, подключенного к порту 3.
- Вычисляем сумму ошибок: предыдущее значение переменной Integral умножаем на 0,5, добавляем текущее значение ошибки (пункт 3) и переписываем в переменную Integral.
- В математическом блоке суммируем:
— пропорциональное управление, равное текущей ошибке, умноженной на пропорциональный коэффициент (в данном случае kп = 2);
— интегральное управление, равное сумме ошибок, умноженной на интегральный коэффициент (в данном случае kи = 0,2).
- Результат математического блока подаем на вход блока рулевого управления. Параметр «мощность» примем 50 единиц.
Выбор коэффициентов
Наибольший вклад в управление вносит пропорциональная составляющая, поэтому сначала отрабатывают пропорциональное управление. Это можно сделать, умножив значение «b» в последнем блоке математики на 0, то есть задав нулевое интегрированное управление.
Необходимо найти наилучшее значение пропорционального коэффициента для робота, данного поля, освещенности и т.д. А затем немного (на 0,1-0,3 единицы) уменьшить его.
Далее, в последнем блоке математики, установить интегральный коэффициент (коэффициент перед «b»), равным 0,05, и постепенно увеличивать его, добиваясь наилучших показателей движения.
Теперь формула управления (последний блок математики) будет иметь следующий вид, для нашего случая: a*2 + b*0,2.
Реализация ПИ-регулятора на основе одного датчика цвета (движение с правой стороны от линии)
Реализация ПИ-регулятора на основе двух датчиков цвета
Инструкция для сборки робота ev3 для движения по черной линии
Достаточно простая и эффективная схема робота lego ev3 для движения по черной линии с двумя датчиками. В данной схеме лего представлен переднеприводный робот с большими колесами, это обеспечивает хорошую манёвренность, которая необходима при движении робота ev3 вдоль черной линии. Программа для движения робота ev3 по черной линии
Инструкция сборки робота Lego для движения по черной линии
1
2
3
4
5
6
Анологично собирается правая сторона робота ev3 для движения по черной линии
7
Датчики цвета можно разместить и по другому прикрепив их внутри
8
9
10
Крепим большие колеса через втулку
11
Детали для крпеления заднего колеса
12
13
14.
Датчик цвета можно опустить на одно деление для лучшей контрастности
15
Если есть в наборе шаровое колесо , то можно использовать его в качестве заднего колеса
16
17
18
Крепим провода датчики к портам 1 и 3 мотора к портам A и B
19
Другие схемы роботов lego ev3
Полезно почитать по теме движение по черной линии
Движение по черной линии Ev3
Циклические алгоритмы ev3
Поделиться:
Комментарии ()
# |
Спасибо и респект автору за подробную инструкцию! |
Shadow Lynx [SX] # 1 июня 2019 в 08:17 0 |
Спасибо. это удобно |
Людмила # 17 января 2020 в 13:25 0 |
Огромное спасибо)) Очень, очень полезный ресурс)) |
Движение по линии
- Введение:
- Изучаем датчик цвета
- Датчик цвета. Режим «Цвет»
- Оранжевая палитра, программный блок «Переключатель»
- Оранжевая палитра, программный блок «Прерывание цикла»
- Датчик цвета – режим «Яркость отраженного света»
- Датчик цвета – режим «Яркость внешнего освещения»
- . Желтая палитра — «Датчики»
- Движение по линии
- Алгоритм движения по черной линии на одном датчике цвета
- Алгоритм движения по черной линии с двумя датчиками
Алгоритм движения по черной линии на одном датчике цвета
Алгоритм движения по черной линии на одном датчике цвета
Рассмотрим простейший алгоритм движения по черной линии на одном датчике цвета на EV3.
Данный алгоритм является самым медленным, но самым стабильным.
Робот будет двигаться не строго по черной линии, а по ее границе, подворачивая то влево, то вправо и постепенно перемещаясь вперед.
Алгоритм очень простой: если датчик видит черный цвет, то робот поворачивает в одну сторону, если белый — в другую.
Реализация в среде Lego Mindstorms EV3
В обоих блоках движения выбираем режим «включить». Переключатель настраиваем на датчик цвета — измерение — цвет. В нижней части не забудьте изменить «нет цвета» на белый.
Также, необходимо правильно указать все порты.
Не забудьте добавить цикл, без него робот никуда не поедет.
Проверьте. Для достижения лучшего результата попробуйте изменить значения рулевого управления и мощности.
Один датчик, с П регулятором
Один датчик, с П регулятором
Алгоритм:
Действие алгоритма основано на том, что в зависимости от степени перекрытия, пучка подсветки датчика чёрной линией, возвращаемые датчиком показания градиентно варьируются. Робот сохраняет положение датчика света на границе чёрной линии. Преобразовывая входные данные от датчика света, система управления формирует значение скорости поворота робота.
Так как на реальной траектории датчик формирует значения во всём своём рабочем диапазоне (0-100), то значением к которому стремиться робот, выбрано 50. В этом случае значения передаваемые функции поворота формируются в диапазоне -50 — 50, но этих значений недостаточно для крутого поворота траектории. По этому следует расширить диапазон в полтора раза до -75 — 75
Более устойчиво алгоритм работает, если использовать моторы с управлением скоростью –100…100.
В этом случае есть возможность отрегулировать плавность поворота в соответствии с кривизной линии
Так как на реальной траектории датчик формирует значения во всём своём рабочем диапазоне (0-100), то значением к которому стремиться робот, выбрано 50. В этом случае значения передаваемые функции поворота формируются в диапазоне -50 — 50, но этих значений недостаточно для крутого поворота траектории. По этому следует расширить диапазон в полтора раза до -75 — 75
Один датчик, с ПK регулятором
Один датчик, с ПK регулятором
Вы наверно заметили, что в прошлом примере робот излишне раскачивался, что не давало ему достаточно разогнаться. Сейчас мы постараемся немного улучшить эту ситуацию.
К нашему пропорциональному регулятору мы добавляем ещё и простой кубический регулятор, который добавит изгиб в функции регулятора. Это позволит уменьшить раскачивание робота рядом нужной границей траектории, а так же совершать более сильные рывки при сильном удалении от неё
Алгоритм движения по черной линии с двумя датчиками
Алгоритм движения по черной линии с двумя датчиками
Движение с двумя датчиками:
Вы уже знаете алгоритм движения робота по черной линии с использованием одного датчика. Сегодня рассмотрим движение по линии с использованием двух датчиков цвета.
Датчики нужно установить таким образом, чтобы черная линия проходила между ними.
Алгоритм будет следующий:
• Если оба датчика видят белый цвет – двигаемся вперед;
• Если один из датчиков видит белый, а другой черный – поворачиваем в сторону черного;
• Если оба датчика видят черный цвет – мы на перекрестке (например, остановимся).
Для реализации алгоритма нам потребуется отслеживать показания обоих датчиков, и только после этого задавать движение роботу. Для этого будем использовать переключатели, вложенные в другой переключатель. Таким образом, мы опросим сначала первый датчик, а потом, независимо от показаний первого, опросим второй датчик, после чего зададим действие.
Подключим левый датчик к порту №1, правый – к порту №4.
Программа с комментариями:
Всего 51 инструкция.
R2D2
Боевая тележка
Бульдозер
Быстро-бот
Валли
Вентилятор
ГироБой
Горилла
Грузовик
Гусеничная тележка
Динозавр
Захват
Знеп
Игровая машина
Игровая машина
Комар
Конвейер для шариков
Луноход
Манипулятор
Манипулятор-рука
Наклонная тележка
Погрузчик
Ползающий робот
Принтер
Пульт управления
Распознаватель цветов
Рисующая рука
Рисующий робот
Робот с захватом
Робот с клешнями
Робот Сторм
Робот, поднимающийся по лестнице
Рыбка-ангел
Скорпион
Слон
Собака
Сортировщик по цвету
Сортировщик по цвету
Танк
Тележка
Тележка с гироскопом
Тележка с шариковой опорой
Тележка со средним мотором
Тележка+датчик касания
Тележка+датчик расстояния
Тележка+датчик цвета снизу
Тележка+датчик цвета спереди
Фабрика спиннеров
Цветок
Черепаха
Электро-гитара
Вернуться в каталог (всего 137 инструкций).