Старт в науке. Международные состязания роботов — Правила — Примеры роботов — Робот для траектории на основе LEGO EV3 Lego ev3 движение по линии

Одним из базовых движений в легоконструировании является следование по черной линии.

Общая теория и конкретные примеры создания программы описаны на сайте wroboto.ru

Опишу, каким образом мы это реализуем в среде EV3, поскольку есть отличия.

Первое, что необходимо знать роботу – значение “идеальной точки”, расположенной на границе черного и белого.

Расположение красной точки на рисунке как раз соответствует этой позиции.

Идеальный вариант расчета – измерить значение черного и белого и взять среднее арифметическое.

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

Значит, можно заставить это делать робота.

В ходе экспериментов мы выяснили, что измерять и черное, и белое необязательно. Можно измерить только белое. А значение идеальной точки рассчитывается как значение белого, деленное на 1,2 (1,15), в зависимости от ширины черной линии и скорости движения робота.

Рассчитанное значение нужно записать в переменную, чтобы потом обращаться к нему.

Расчет “идеальной точки”

Следующий параметр, участвующий в движении – коэффициент поворота. Чем он больше, тем резче робот реагирует на изменение освещенности. Но слишком большое значение приведет к “вилянию” робота. Значение подбирается экспериментально индивидуально для каждой конструкции робота.

Последний параметр – базовая мощность моторов. Она влияет на скорость движения робота. Увеличение скорости движения приводит к увеличению времени реагирования робота на изменение освещенности, что может привести к вылету с траектории. Значение тоже подбирается экспериментально.

Для удобства, эти параметры тоже можно записать в переменные.

Коэффициент поворота и базовая мощность

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

Для этого высчитываем два числа – значение мощности каждого из моторов В и С по отдельности.

В виде формул это выглядит так:

Где Isens – значение показаний датчика освещенности.

Наконец, реализация в EV3. Удобнее всего оформить в виде отдельного блока.

Реализация алгоритма

Именно такой алгоритм был реализован в роботе для средней категории WRO 2015

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

Человек видит черную линию и ее четкую границу. Датчик освещенности работает несколько иначе.

Именно это свойство датчика освещенности – невозможность четко различить границу белого и черного – мы и будем использовать для расчета скорости движения.

Во-первых, введем понятие “Идеальная точка траектории”.

Показания датчика освещенности колеблются в диапазоне от 20 до 80, чаще всего на белом цвете показания равны примерно 65, на черном порядка 40.

Идеальная точка – условная точка примерно посередине белого и черного цветов, следуя которой робот будет перемещаться вдоль черной линии.

Здесь принципиально расположение точки – между белым и черным. Задать ее точно на белом или черном не получится по математическим причинам, почему – будет ясно позднее.

Эмпирическим путем мы вычислили, что идеальную точку можно высчитать по следующей формуле:

Робот должен двигаться строго по идеальной точке. Если случается отклонение в какую-либо сторону, робот должен вернуться к этой точке.

Составим математическое описание задачи.

Исходные данные.

Идеальная точка.

Текущие показания датчика освещенности.

Результат.

Мощность вращения мотора В.

Мощность вращения мотора С.

Решение.

Рассмотрим две ситуации. Первая: робот отклонился от черной линии в сторону белого.

В этом случае робот должен увеличить мощность вращение мотора В и уменьшить мощность мотора С.

В ситуации, когда робот заезжает на черную линию, все наоборот.

Чем сильнее робот отклоняется от идеальной точки, тем быстрее ему надо к ней вернуться.

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

Поэтому мы решили ограничиться только П-регулятором, адекватно реагирующем на отклонение от черной линии.

На языке математики это будет записано так:

где Hb и Hc – итоговые мощности моторов B и C соответственно,

Hбазовая – некая базовая мощность моторов, определяющая скорость движения робота. Подбирается экспериментально, в зависимости от конструкции робота и резкости поворотов.

Iтек – текущие показания датчика освещенности.

I ид – рассчитанная идеальная точка.

k – коэффициент пропорциональности, подбирается экспериментально.

В третьей части рассмотрим, как это запрограммировать в среде NXT-G.

Алгоритмы управления мобильным LEGO-роботом. Движение по линии с двумя датчиками освещенности

Педагог дополнительного образования

Казакова Любовь Александровна


Движение по линии

  • Два датчика освещения
  • Пропорциональный регулятор (П-регулятор)

Алгоритм движения вдоль черной линии без пропорционального регулятора

  • Оба мотора крутятся с одинаковой мощностью
  • Если правый датчик освещенности попадает на черную линию, то мощность левого мотора (например В) снижается или происходит остановка
  • Если левый датчик освещенности попадает на черную линию, то мощность другого из моторов (например С) снижается (осуществляется возврат на линию) снижается или происходит остановка
  • Если оба датчика на белом или черном, то происходит прямолинейное движение

Движение организовано с помощью изменения мощности одно из моторов


Пример программы движения вдоль черной линии без П-регулятора

Движение организовано с помощью изменения угла поворота


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

  • П-регулятор используется для удержания робота в определенном состоянии:
  • Удержание положения манипулятора Движение по линии (датчик освещенности) Движение вдоль стены (датчик расстояния)
  • Удержание положения манипулятора
  • Движение по линии (датчик освещенности)
  • Движение вдоль стены (датчик расстояния)

Движение по линии с одним датчиком

  • Цель – движение по границе «белый-черный»
  • Человек может различить границу белого и черного цвета. Робот не может.
  • Цель для робота – находится на сером цвете

Проезд перекрестков

При использовании двух датчиков освещенности возможна организация движения по более сложным трассам



Алгоритм движения по трассе с перекрестками

  • Оба датчика на белом – робот едет прямолинейно (оба мотора крутятся с одинаковой мощностью)
  • Если правый датчик освещенности попадает на черную линию, а левый на белом то происходит поворот направо
  • Если левый датчик освещенности попадает на черную линию, а правый на белом то происходит поворот на лево
  • Если оба датчика на черном, то происходит прямолинейное движение. Можно вести подсчет перекрестков или выполнять какие либо действия


Принцип работы П-регулятора

Положение датчиков

О=О1-О2


Алгоритм движения вдоль черной линии с пропорциональным регулятором

УВ = К*(Ц-Т)

  • Ц - целевые значения (снять показания с датчика освещенности на белом и черном, рассчитать среднее)
  • Т - текущее значение - получаем с датчика
  • К - коэффициент чувствительности. Чем больше, тем выше чувствительность


На этом уроке мы продолжим изучать использование датчика цвета. Материал, изложенный ниже, очень важен для дальнейшего изучения курса робототехники. После того, как мы научимся использовать все датчики конструктора Lego mindstorms EV3, при решении множества практических задач, будем опираться на знания, полученные на этом занятии.

6.1. Датчик цвета - режим "Яркость отраженного света"

Итак, мы приступаем к изучению следующего режима работы датчика цвета, который называется "Яркость отраженного света" . В этом режиме датчик цвета направляет поток красного света на близкорасположенный предмет или поверхность и измеряет количество отраженного света. Более темные предметы будут поглощать световой поток, поэтому датчик будет показывать меньшее значение, по сравнению с более светлыми поверхностями. Диапазон значений датчика измеряется от 0 (очень темный) до 100 (очень яркий). Данный режим работы датчика цвета используется во множестве задач по робототехнике, например, для организации движения робота по заданному маршруту вдоль черной линии, нанесенной на белое покрытие. При использовании этого режима рекомендуется располагать датчик таким образом, чтобы расстояние от него до исследуемой поверхности составляло примерно 1 см (Рис. 1) .

Рис. 1

Перейдем к практическим занятиям: датчик цвета уже установлен на нашем роботе и направлен вниз к поверхности покрытия, по которому будет передвигаться наш робот. Расстояние между датчиком и полом соответствует рекомендуемому. Датчик цвета уже подключен к порту "2" модуля EV3. Давайте загрузим среду программирования, подключим робота к среде и для проведения замеров воспользуемся полем с цветными полосами, изготовленным нами для выполнения заданий Раздела 5.4 Урока №5 . Установим робота, таким образом, чтобы датчик цвета расположился над белой поверхностью. "Страницу аппаратных средств" среды программирования переключим в режим "Просмотр портов" (Рис. 2 поз. 1) . В этом режиме мы можем наблюдать все выполненные нами подключения. На Рис. 2 отображено подключение к портам "B" и "C" двух больших моторов, а к порту "2" - датчика цвета.

Рис. 2

Для выбора варианта отображения показаний датчиков необходимо нажать на изображение датчика и выбрать нужный режим (Рис. 3)

Рис. 3

На Рис. 2 поз. 2 мы видим, что значение показания датчика цвета над белой поверхностью равно 84 . В вашем случае может получиться другое значение, ведь оно зависит от материала поверхности и освещения внутри помещения: часть освещения, отражаясь от поверхности, попадает на датчик и влияет на его показания. Установив робота таким образом, чтобы датчик цвета расположился над черной полосой, зафиксируем его показания (Рис. 4) . Попробуйте измерить самостоятельно значения отраженного света над оставшимися цветными полосами. Какие значения у вас получились? Напишите ответ в комментарии к этому уроку.

Рис. 4

Давайте теперь порешаем практические задачи.

Задача №11: необходимо написать программу движения робота, останавливающегося при достижении черной линии.

Решение:

Проведенный эксперимент показал нам, что при пересечении черной линии, значение датчика цвета в режиме "Яркость отраженного света" равняется 6 . Значит, для выполнения Задачи №11 наш робот должен двигаться прямолинейно, пока искомое значение датчика цвета не станет меньше 7 . Воспользуемся уже знакомым нам программным блоком "Ожидание" Оранжевой палитры. Выберем требуемый условию задачи режим работы программного блока "Ожидание" (Рис. 5).

Рис. 5

Необходимо также настроить параметры программного блока "Ожидание" . Параметр "Тип сравнения" (Рис. 6 поз. 1) может принимать следующие значения: "Равно" =0, "Не равно" =1, "Больше" =2, "Больше или равно" =3, "Меньше" =4, "Меньше или равно" =5. В нашем случае установим "Тип сравнения" в значение "Меньше" . Параметр "Пороговое значение" установим равным 7 (Рис.6 поз. 2) .

Рис. 6

Как только установится значение датчика цвета меньше 7 , что случится, когда датчик цвета окажется расположенным над черной линией, нам необходимо будет выключить моторы, остановив робота. Задача решена (Рис. 7) .

Рис. 7

Для продолжения занятий нам понадобится изготовить новое поле, представляющее собой черную окружность диаметром примерно 1 метр, нанесенную на белое поле. Толщина линии окружности равняется 2 - 2,5 см. Для основы поля можно взять один лист бумаги размером A0 (841x1189 мм), склеить вместе два листа бумаги размером A1 (594x841 мм). На этом поле разметить линию окружности и закрасить её черной тушью. Можете также скачать макет поля, выполненный в формате Adobe Illustrator, а затем заказать его печать на баннерной ткани в типографии. Размер макета равен 1250x1250 мм. (Просмотреть скачанный ниже макет можно, открыв его в программе Adobe Acrobat Reader)

Данное поле пригодится нам для решения нескольких классических задач курса робототехники.

Задача №12: необходимо написать программу для робота, передвигающегося внутри круга, окантованного черной окружностью по следующему правилу:

  • робот движется вперед прямолинейно;
  • достигнув черной линии, робот останавливается;
  • робот отъезжает назад на два оборота моторов;
  • робот поворачивает вправо на 90 градусов;
  • движение робота повторяется.

Знания, полученные на предыдущих уроках, помогут вам самостоятельно создать программу, решающую Задачу №12.

Решение задачи №12

  1. Начать прямолинейное движение вперед (Рис. 8 поз. 1) ;
  2. Ожидать пересечения черной линии датчиком цвета (Рис. 8 поз. 2) ;
  3. Двигаться назад на 2 оборота (Рис. 8 поз. 3) ;
  4. Повернуть направо на 90 градусов (Рис. 8 поз. 4) ; значение угла поворота расчитано для робота, собранного по инструкции small-robot-45544 (Рис. 8 поз. 5) ;
  5. Повторять команды 1 - 4 в бесконечном цикле (Рис. 8 поз. 6) .

Рис. 8

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

6.2. Датчик цвета - режим "Яркость внешнего освещения"

Режим работы датчика цвета "Яркость внешнего освещения" очень похож на режим "Яркость отраженного света" , только в этом случае датчик не излучает освещение, а измеряет естественное световое освещение окружающей среды. Визуально данный режим работы датчика можно определить по слабо светящемуся синему светодиоду. Показания датчика изменяются от 0 (отсутствие света) до 100 (самый яркий свет). При решении практических задач, требующих измерения внешнего освещения, рекомендуется располагать датчик, так, чтобы датчик оставался максимально открытым и не загораживался другими деталями и конструкциями.

Давайте закрепим датчик цвета на нашем роботе так же, как мы крепили датчик касания в Уроке №4 (Рис. 9) . Подключим датчик цвета кабелем к порту "2" модуля EV3. Перейдем к решению практических задач.

Рис. 9

Задача №13: необходимо написать программу, изменяющую скорость движения нашего робота в зависимости от интенсивности внешнего освещения.

Чтобы решить эту задачу, нам надо узнать, как получать текущее значение датчика. А поможет нам в этом Желтая палитра программных блоков, которая называется "Датчики" .

6.3. Желтая палитра - "Датчики"

Желтая палитра среды программирования Lego mindstorms EV3 содержит программные блоки, позволяющие получать текущие показания датчиков для дальнейшей обработки в программе. В отличие, например, от программного блока "Ожидание" Оранжевой палитры, программные блоки Желтой палитры сразу же передают управление к следующим за ними программным блокам.

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

Образовательная версия среды программирования содержит программные блоки для всех датчиков, которые можно использовать с конструктором Lego mindstorms EV3.

Вернемся же к решению Задачи №13 и посмотрим, как можно получать и обрабатывать показания датчика цвета. Как мы уже знаем: диапазон значений датчика цвета в режиме "Яркость внешнего освещения" находится в пределах от 0 до 100 . Такой же диапазон у параметра, регулирующего мощность моторов. Попробуем показанием датчика цвета регулировать мощность моторов в программном блоке "Рулевое управление" .

Решение:


Рис. 10

Давайте загрузим получившуюся программу в робота и запустим её на выполнение. Робот поехал медленно? Включим светодиодный фонарик и попробуем подносить его к датчику цвета на разном расстоянии. Что происходит с роботом? Закроем датчик цвета ладонью - что случилось в этом случае? Напишите ответы на эти вопросы в комментарии к уроку.

Задача - Bonus

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

Рассмотрим простейший алгоритм движения по черной линии на одном датчике цвета на EV3.

Данный алгоритм является самым медленным, но самым стабильным.

Робот будет двигаться не строго по черной линии, а по ее границе, подворачивая то влево, то вправо и постепенно перемещаясь вперед.

Алгоритм очень простой: если датчик видит черный цвет, то робот поворачивает в одну сторону, если белый - в другую.

Реализация в среде Lego Mindstorms EV3

В обоих блоках движения выбираем режим «включить». Переключатель настраиваем на датчик цвета - измерение - цвет. В нижней части не забудьте изменить «нет цвета» на белый. Также, необходимо правильно указать все порты.

Не забудьте добавить цикл, без него робот никуда не поедет.

Проверьте. Для достижения лучшего результата попробуйте изменить значения рулевого управления и мощности.

Движение с двумя датчиками:

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


Алгоритм будет следующий:
Если оба датчика видят белый цвет – двигаемся вперед;
Если один из датчиков видит белый, а другой черный – поворачиваем в сторону черного;
Если оба датчика видят черный цвет – мы на перекрестке (например, остановимся).

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

Программа с комментариями:

Не забывайте, что моторы запускаем в режиме «Включить», чтобы они работали столько, сколько необходимо исходя из показаний датчиков. Также, часто забывают о необходимости цикла - без него программа сразу завершится.

http://studrobots.ru/

Эта же программа для модели NXT:

Изучить программу движения. Запрограммировать робота. Переслать видео тестирования модели