Следование по линии программа ev3: Ev3 lego MINDSTORMS EV3

Движение по черной линии роботов Lego Mindstorms EV3

Содержание

  1. Движение по линии
  2. Алгоритмы движения робота 
  3. Зрение робота EV3
  4. Калибровка датчика цвета
  5. Ручной режим калибровки датчика цвета EV3
  6. Автоматическая калибровка датчика цвета
  7. Движение по тонкой линии Arduino

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

Одним из часто встречающихся видов соревнований является соревнование “Движение робота вдоль черной линии”. В последнее время активно развивается робототехника, открывается множество кружков. Как следствие проводится множество соревнований и конкурсов по робототехнике различного уровня. Это направление называется соревновательная робототехника.  

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

Так как сейчас есть много типов робототехнических конструкторов, то соревнования также разделяют по категориям. Т.е. движение по линии Lego EV3, отдельно движение по линии Arduino и т.д. Побеждает робот, преодолевший дистанцию за минимальное время не потеряв трассу. 

Алгоритмы движения робота 

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

  • Релейный регулятор
  • Пропорциональный регулятор
  • Пропорциональный дифференциальный регулятор
  • Кубический регулятор
  • Пропорциональный интегральный регулятор
  • Пропорциональный интегральный дифференциальный регулятор

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

Зрение робота EV3

Робот EV3 не обладает зрением и может воспринимать информацию о линии при помощи датчика цвета EV3. 

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

При этом высота расположения датчика над линией должна быть около 1 см. Но это рекомендуемая высота. На соревнованиях встречаются различные варианты расположения датчика и подбираются они участниками индивидуально. 

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

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

  •  ручной способ — все вычисления проводятся самостоятельно
  • автоматическая калибровка — вычисления производятся при помощи блоков операций с данными

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

На практике нужно измерить значение белого цвета, затем черного цвета, суммировать их и разделить на два. Т.е. если обозначить пороговое значение буквой C, значение белого цвета буквой A и значение черного цвета буквой B, то формула будет выглядеть следующим образом:

С = ( A + B ) / 2

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

Ручной режим калибровки датчика цвета EV3


В ручном режиме делается это просто, при помощи меню, расположенном на экране блока Lego EV3. Для этого нужно на экране блока EV3 зайти в третью вкладку и открыть первое приложение из пяти. Это приложение называется представление порта. 

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

Чтобы посмотреть или изменить текущие настройки для установленных сервомоторов и сенсоров нужно нажать центральную кнопку. Нажатие кнопки «Назад» возвращает нас в основное окно приложений.

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

На экране блока EV3 отобразилось показание в 43 условных единицы. Таким же образом определяем показания датчика на черной линии. Например показания будут 3 условных единицы. Подставляем эти значения в формулу.

С = ( A + B ) / 2 = (43 + 3) / 2 = 46 / 2 = 23

В результате получаем пороговое значение 23 условных единицы.

Автоматическая калибровка датчика цвета

Таким же точно образом измеряем пороговое значение (его еще называют значение серого) при автоматической калибровке, но на этот раз значение записывается в переменную. Назовем переменную, например, porog. В среде программирования Lego EV3 пишем программу для калибровки.

В первой части программы нужно расположить датчик над белым фоном. Датчик касания расположен в 1 порту. В программе используется блок ожидания действия с датчиком касания. В данном случае установлен параметр “щелчок” — цифра 2 в нижней части блока ожидания. Т.е. нужно нажать и отпустить кнопку датчика.

После этого датчик цвета в режиме отраженного света измеряет значение белого цвета и значение записывается в переменную A. 

Во второй части программы нужно расположить датчик над черной линией и также нажать на кнопку датчика касания. Значения черного цвета записываются в переменную B.

В третьей части программы мы считываем значения датчиков из переменной A и B и передаем их значения в блок математики, который находится в режиме “Дополнения”. В этом блоке происходит вычисление по формуле С = ( A + B ) / 2  ирезультат вычисления записывается в переменную С. 

Теперь значение переменной С можно использовать в качестве порогового значения серого для дальнейшего использования в алгоритмах движения по линии.

Движение по тонкой линии Arduino

Фрагмент соревнований по робототехнике «Движение по тонкой линии». Также это соревнование называют «Тонкий Триал». Этот очень быстрый робот в номинации роботов Arduino является победителем региональных соревнований.

По условиям соревнований робот Arduino должен совершить объезд кирпича и преодолеть качающийся мост. После преодоления препятствий робот должен вернуться на линию и финишировать не сойдя с трассы. Тонкий триал есть и в категории Lego EV3 роботов.

Движение по черной линии математический блок ev3. Lego EV3. Движение по черной линии. Датчик цвета

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF

Конструктор Lego Mindstorms EV3

Подготовительный этап

Создание и калибровка программы

Заключение

Литература

1. Введение.

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

За последние годы успехи в робототехнике и автоматизированных системах изменили личную и деловую сферы нашей жизни. Роботы широко используются в транспорте, в исследованиях Земли и космоса, в хирургии, в военной промышленности, при проведении лабораторных исследований, в сфере безопасности, в массовом производстве промышленных товаров и товаров народного потребления. Многие устройства, принимающие решения на основе полученных от сенсоров данных, тоже можно считать роботами — таковы, например, лифты, без которых уже немыслима наша жизнь.

Конструктор Mindstorms EV3 приглашает нас войти в увлекательный мир роботов, погрузиться в сложную среду информационных технологий.

Цель: Научится программировать движение робота по прямой линии.

    Познакомится с конструктором Mindstorms EV3 и его средой программирования.

    Написать программы движения робота по прямой на 30 см, 1 м 30 см и 2 м 17 см.

    Конструктор Mindstorms EV3.

Детали конструктора — 601 шт., серводвигатель — 3 шт., датчик цвета, сенсорный датчик движения, инфракрасный датчик и датчик касания. Микропроцессорный блок EV3, является мозгом конструктора LEGO Mindstorms.

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

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

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

    Подготовительный этап.

    Создание технического поля.

На поле работы робота нанесем разметку, с помощью изоленты и линейки создадим три линии длиной 30 см — зелёная линия, 1 м 15 см — красная и 2 м 17 см — чёрная линии.

    Необходимые расчеты:

Диаметр колеса робота — 5 см 7 мм = 5,7 см.

Один оборот колеса робота равен длине окружности с диаметром 5,7 см. Длину окружности находим по формуле

Где r — радиус колеса, d — диаметр, π = 3,14

l = 5,7 * 3,14 = 17,898 = 17,9.

Т.е. за один оборот колеса робот проезжает 17,9 см.

Рассчитаем количество оборотов необходимых, что бы проехать:

N = 30: 17,9 = 1,68.

    1 м 30 см = 130 см

N = 130: 17,9 = 7,26.

    2 м 17 см = 217 см.

N = 217: 17,9 = 12,12.

    Создание и калибровка программы.

Создавать программу будем по следующему алгоритму:

Алгоритм:

    Выбрать блок движения в программе Mindstorms EV3.

    Включить оба мотора в заданном направлении.

    Ожидать изменение показания датчика поворота одного из моторов до заданного значения.

    Выключить моторы.

Готовую программу загружаем в блок управления робота. Ставим робота на поле и нажимаем кнопку пуска. EV3 едет по полю и останавливается в конце заданной линии. Но для того, что бы добиться точного финиша приходится производить калибровку, так как на движение влияют внешние факторы.

    Поле установлено на ученические парты, поэтому возможен небольшой прогиб поверхности.

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

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

5.Заключение.

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

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

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

Работать с конструктором очень интересно. Узнавая больше о его возможностях, можно решать любые технические задачи. А в будущем, возможно, создавать свои интересные модели робота Lego Mindstorms EV3.

Литература.

    Копосов Д. Г. «Первый шаг в робототехнику для 5-6 классов». — М.: Бином. Лаборатория знаний, 2012 — 286 с.

    Филиппов С. А. «Робототехника для детей и родителей» — «Наука» 2010г.

    Интернет — ресурсы

    http://lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http://www. lego. com/education/

На этом уроке мы продолжим изучать использование датчика цвета. Материал, изложенный ниже, очень важен для дальнейшего изучения курса робототехники. После того, как мы научимся использовать все датчики конструктора 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 (841×1189 мм), склеить вместе два листа бумаги размером A1 (594×841 мм). На этом поле разметить линию окружности и закрасить её черной тушью. Можете также скачать макет поля, выполненный в формате Adobe Illustrator, а затем заказать его печать на баннерной ткани в типографии. Размер макета равен 1250×1250 мм. (Просмотреть скачанный ниже макет можно, открыв его в программе 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

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

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

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

В нашем примере будет разобрано три примера робота на основе основной учебной модели 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 регулятором.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

http://studrobots.ru/

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

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

15.01.2012, 18:51

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

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

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

  • левый датчик, также как и правый — над светлой поверхностью
  • левый датчик над светлой поверхностью, правый датчик над темной
  • левый датчик над темной поверхностью, правый датчик над светлой
  • оба датчика находятся над темной поверхностью
Если в определенный момент времени программа на роботе обнаруживает одно и из этих положений, она должна будет среагировать соответствующим образом:
    Если оба датчика над белой поверхностью, то это нормальная ситуация, в которой линия находится между датчиками, поэтому робот должен ехать прямо. Если левый датчик еще над светлой поверхностью, а правый датчик уже над темной, значит, робот заехал своей правой частью на линию, а значить ему нужно поворачивать направо, чтобы линия опять оказалась между датчиками.Если левый датчик оказался над темной поверхностью, а правый еще над светлой, то для выравнивания роботу нужно поворачивать налево.Если оба датчика над темной поверхностью, то в общем случае, робот опять продолжает двигаться прямо.

На схеме выше сразу же показано, как конкретно в программе должно меняться поведение моторов.Теперь, написание программы не должно составить большого труда.Начать стоит с того, чтобы выбрать какой датчик будет опрашиваться первым. Это не имеет большого значения, поэтому пусть будет левый. Необходимо определить, над светлой или над темной он поверхностью:
Это действие еще не позволяет сказать в какую сторону роботу надо ехать. Но оно разделит состояния, перечисленные выше, на две группы: (I, II) для верхней ветви и (III, IV) для нижней. В каждой из групп теперь по два состояния, поэтому необходимо выбрать какое-то из них. Если внимательно посмотреть на первые два состояния I и II, то они отличаются положением правого датчика — в одном случае он над светлой поверхностью, в другом — над темной. Именно это и определит выбор, какое действие предпринять:
Теперь можно вставить блоки, определяющие поведение моторов согласно таблицам выше: верхняя ветвь вложенного условия определяет комбинацию «оба датчика на светлом», верхняя — «левый на светлом, правый на темном»:
Нижняя ветка основного условия отвечает за другую группу состояний III и IV. Эти два состояния также отличаются друг от друга уровнем освещенности, который улавливает правый датчик. Значит, он будет определять выбор каждого из них:
Получившиеся две ветви наполняются блоками движения. Верхняя ветвь отвечает за за состояние «левый на темном, правый на светлом», а нижняя — за «оба датчика на темном».
Следует отметить, что данная конструкция всего лишь определяет, как включить моторы в зависимости от показаний сенсоров в определенном месте поля, естественно через мгновение программа должна проверить не изменились ли показания, чтобы соответствующим образом подправить поведение моторов, а через мгновение еще раз, еще и т. д. Поэтому она должна быть помещена в цикл, который будет обеспечивать такую повторяющуюся проверку:

Такая довольно простая программа будет обеспечивать довольно высокую скорость передвижения робота вдоль линии без вылета за ее пределы, если правильным образом настроить максимальную скорость при движении в состояниях I и IV, а также задать оптимальный способ торможения в состояниях II и III — чем круче повороты на трассе, тем «жестче» должно быть торможение — скорость должна сбрасываться быстрее, и наоборот — при плавных поворотах вполне можно применять торможение через выключение энергии или даже вообще через незначительный сброс скорости.

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

Следование по линии

Введение

Заставьте своего робота LEGO® MINDSTORMS® Education EV3 следовать по линии, используя режим интенсивности отраженного света датчика цвета.

Шаг 1

В ||логика:Логика|| Ящик Toolbox в разделе Conditionals вытащите ||логика: If then else|| в Workspace и поместите его в ||loops:forever|| петля.

 навсегда (функция () {
    если правда) {
    } еще {
    }
}) 

Шаг 2

Откройте ||логика:Логика|| Снова ящик ящика для инструментов. Из раздела Comparison вытащите ||logic:0 < 0|| Блок сравнения и поместите его в блок ||логика:если то еще|| Блок , заменяющий истинным .

 навсегда (функция () {
    если (0 < 0) {
    } еще {
    }
}) 

Шаг 3

Откройте ||датчики:Датчики|| Ящик для инструментов. Вытащите ||сенсоры:датчик цвета света|| и поместите его во второй слот блока ||логика:0 < 0|| Блок сравнения , заменяющий второй 0 .

 навсегда (функция () {
    if (0 < sensor.color3.light (LightIntensityMode.Reflected)) {
    } еще {
    }
}) 

Шаг 4

Если значение отраженного света больше 40% (белый или очень светлый), наш робот находится за линией, поэтому двигайтесь влево. В ||логика: 0 < 0|| Блок сравнения изменить первое сравниваемое значение с 0 до 40 .

 навсегда (функция () {
    if (40 < sensor.color3.light(LightIntensityMode.Reflected)) {
    } еще {
    }
}) 

Шаг 5

Откройте ||двигатели:Двигатели|| Ящик для инструментов. Вытащить 2 ||двигатели:резервуарные двигатели|| блоков и поместите один из них в ||logic:if|| часть, а другая в ||логика:еще|| часть ||логика: если то еще|| Блок .

 навсегда (функция () {
    if (40 < sensor.color3.light(LightIntensityMode.Reflected)) {
        моторы.большойBC.бак(50, 50)
    } еще {
        моторы.большойBC.бак(50, 50)
    }
}) 

Шаг 6

В первом ||двигатели:резервуарные двигатели|| блок в ||логика:если|| Пункт , измените значения скорости двигателей с 50% , 50% на 5% , 15% . Это замедляет робота и направляет его влево (потому что 9Двигатель 0013 C вращается быстрее, чем двигатель B ).

 навсегда (функция () {
    if (40 < sensor.color3.light(LightIntensityMode.Reflected)) {
        моторы.большойBC.бак(5, 15)
    } еще {
        моторы.большойBC.бак(50, 50)
    }
}) 

Шаг 7

Во втором ||двигатели:резервуарные двигатели|| блок в ||логика:еще|| Пункт , изменить значения скорости двигателей с 50% , 50% на 15% , 5% . Это замедляет робота и направляет его вправо (поскольку двигатель B вращается быстрее, чем двигатель C ).

 навсегда (функция () {
    if (40 < sensor.color3.light(LightIntensityMode.Reflected)) {
        моторы.большойBC.бак(5, 15)
    } еще {
        моторы.большойBC.бак(15, 5)
    }
}) 

Шаг 8

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

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

Шаг 9

Подключите модуль EV3 к компьютеру с помощью USB-кабеля и нажмите кнопку Download внизу экрана. Следуйте инструкциям, чтобы сохранить программу на модуль EV3.

Прикрепите датчик цвета к порту 3 модуля EV3 и прикрепите модуль к приводной базе с большими двигателями, подключенными к портам B и C. См. инструкции по сборке приводной базы с датчиком цвета в нижнем положении . Проверьте свою программу, поместив робота справа от темной толстой линии, а затем дайте ему поехать!

Изменить эту страницу на GitHub
Изменить шаблон этой страницы на GitHub
Изменить шаблон этой страницы на GitHub

Отслеживание строки и пропорциональные элементы управления (EV3) — LEGO Engineering

Целью этого задания является создание транспортного средства-робота, которое движется по прямой и избегает столкновений с препятствиями, в том числе с другими транспортными средствами!

Конструкция робота

Простой следящий за линией EV3

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

Инструкции для модели Robot Educator находятся в буклете, который поставляется с базовым набором, и в программном обеспечении EV3.

Теория управления

Теория управления — это область техники и математики, которая особенно важна в робототехнике. Он касается того, как динамическая система с входными данными (например, робот) реагирует на обратную связь, чтобы изменить свое поведение.

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

Идеи для задач

Вот подборка идей для задач и примеры решений…

1. Мягкая остановка

Можете ли вы создать робота, который плавно останавливается при виде препятствия?

Образец раствора для плавной остановки

2. Безопасное расстояние следования

Что делать, если вы хотите, чтобы робот остановился перед препятствием (или следовал за другим транспортным средством на безопасном расстоянии)?

Безопасное расстояние следования – пример решения

Примечание. Множитель «2» в этом примере является пропорциональным усилением. Вам нужно будет поэкспериментировать с этим значением. Если установить слишком маленькое значение, робот не будет последовательно достигать целевого расстояния (из-за трения и/или остановки двигателей при малой мощности). Слишком высоко, и робот промахнется мимо цели и может в конечном итоге колебаться на целевом расстоянии.

Как только вы заработаете, будет весело, когда роботы будут следовать друг за другом…

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

Что нам действительно нужно, так это лучший способ удерживать роботов на линии…

3. Базовое движение по линии

Как заставить робота двигаться по линии с помощью одного светового датчика?

Вот пример программы для одного датчика освещенности с использованием импульсного управления .

Идея состоит в том, что робот будет следовать за краем линии, намеренно съезжая с него в одну сторону, а затем возвращаясь на нее в другую сторону.

Базовая строка соответствует коду образца

Примечания:

  • Переключатель установлен в положение Датчик цвета > Сравнить > Интенсивность отраженного света. Почему?
  • Возможно, вам потребуется настроить пороговое значение переключателя, чтобы найти значение между светлым фоном и темной линией. Используйте Port View на блоке или в программном обеспечении EV3, чтобы помочь в этом.
  • Если ваш робот с трудом проходит самые крутые повороты, как вы можете настроить параметры «Перемещение бака» > «Мощность влево» / «Мощность вправо», чтобы делать еще более крутые повороты?

4. Плавное движение по линии

Как насчет более плавного движения робота по линии?

Вот пример программы для одного датчика освещенности с использованием пропорционального управления .

Гладкое следование по линии – пример решения

Примечания:

  • Эта программа использует блок датчика цвета, для которого установлено значение «Измерение» > «Интенсивность отраженного света», для получения показаний освещенности, а затем передает это значение в математические блоки.
  • Математические блоки настроены на вычисление следующих формул:
    • Левый двигатель = a + b x (c – d)
    • Правый мотор = a – b x (c – d)
      • a = мощность двигателя по умолчанию
      • б = усиление
      • с = целевое значение
      • d = показания датчика
  • Разница между целевым значением и показаниями датчика (c – d) в нашей формуле называется ошибкой.

5. Интеллектуальное шоссе

Можете ли вы изменить пропорциональный робот, следующий по линии, чтобы он сохранял безопасное расстояние позади робота впереди него?

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

Интеллектуальное шоссе – пример решения

Результат примерно такой…

Оценка

Вот возможный подход к оценке этой задачи.

Марка Производительность
А+ Ваша машина самая безопасная. Вы суперзвезда защитного вождения.
А Ваш автомобиль следует по линии, а другие автомобили надежно и плавно.
Б Ваш автомобиль надежно следует по линии и останавливается, когда видит другой автомобиль или препятствие.
С Ваш автомобиль надежно следует линии или останавливается, когда видит другую машину или препятствие.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *