Лего робот для кегельринга

Обновлено: 26.04.2024

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

Робот за 3 минуты

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

Для робота Lego EV3 количество оборотов большого мотора составляет 160 – 170 оборотов в минуту.

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

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

Расчет числа оборотов

Для того, чтобы рассчитать количество оборотов колеса для движения на заданное расстояние по прямой нужно использовать длину окружности колеса. Она вычисляется по формуле L = π * d. Где π – число Пи, равное 3,14, а d –диаметр колеса. Для базового набора Lego EV3 диаметр колеса составляет 56 мм.

Пусть робот EV3 оснащен двумя передними колесами и шаровой опорой сзади и должен проехать 1 метр. За один оборот колеса робот преодолевает расстояние L = π * d = 3.14 * 56 = 175,84 мм. Пусть n – количество оборотов, k – заданное расстояние. Тогда количество оборотов n = k / L =>

n = 1000 мм / 175,84 мм = 5,69 оборотов.

Программа для Lego EV3 для движения робота на заданное количество оборотов.

  1. Во вкладке «Движение» выбираю блок «Рулевое управление».

Устанавливаю режим «Включить на количество оборотов», «Рулевое управление» установлено в 0 – это означает движение по прямой линии. Большие моторы установлены в порты B и C.

Программа для движения робота EV3 на 1 метр рулевое управление

рулевое управление движение по прямой на один метр

Скорость движения моторов – 50 условных единиц. Значение оборотов ставлю вычисленное выше. Тормозить в конце – значение «Истина». При нажатии на блок «Начало» робот Lego EV3 проедет по прямой 1 метр со скоростью 50 у.е. и остановиться.

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

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

  1. Разворачиваться на месте – колеса робота крутятся в разные стороны с одинаковой скоростью;
  2. Разворачиваться вокруг одного колеса – одно колесо машинки Lego EV3 стоит на месте, другое крутится с заданной скоростью;
  3. Описывать произвольную окружность – оба колеса крутятся в одном направлении с разной скоростью.

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

Робот тележка Lego EV3

робот тележка лего

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

Если робот не подходит по габаритам, то его не допускают к соревнованиям. Диаметр колеса 0,56 см – это стандартный размер колеса из базового набора Lego EV3. Левый большой мотор подключен к порту В, правый к порту С. Теперь вычислим количество оборотов колеса для каждого случая и для разворота робота Lego EV3 на определенный угол.

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

Разворот на месте

В этом случае нужно чтобы у робота колеса вращались в разных направлениях с одинаковой скоростью. Для того чтобы робот совершил полный разворот вычислим необходимую длину окружности. Разворот будет на месте, поэтому диаметр между осями будет равен 20 см =>

Длина описываемой окружности будет равна
L = π * d = 3.14 * 0,2 м = 0,628 метра

Количество оборотов будет равно пройденному расстоянию L деленному на длину окружности колеса n = Lокр / L колеса, где длина окружности колеса равна L = π * d = 3.14 * 56 = 175,84 мм = 0,176 м.

А значит количество оборотов для разворота на 360° будет равно

n = L окр / L колеса = 0,628 / 0,176 = 3,568 оборота.

Для блока программирования «Рулевое управление» можно задать разворот на 100 условных единиц (или — 100), что означает разворот на месте. Скорость 50 у.е. и 3,568 оборота.

Рулевое управление разворот на месте

разворот робота на месте рулевое управление

Для блока программирования «Независимое управление моторами» просто скорость одного мотора ставим 50 у.е., а другого – 50 у.е. При этом количество оборотов колес остается 3,568.

  1. Для того, чтобы повернуть робота тележку Lego EV3 на произвольное количество градусов нужно составить пропорцию, где нужное количество градусов нужно разделить на 360 градусов и учесть эту пропорцию в расчете.

Например, для разворота на 180 градусов. Обозначим нужную длину части окружности L1 =>

L1 = L * (нужное к-во градусов / 360 градусов) = L * (180 / 360) = L / 2 = 0,628 / 2 = 0,314, а значит к-во оборотов

n = L1 / L колеса = 0,314 / 0,176 = 1,784 оборота.

Поворот вокруг одного колеса

В этом случае у нас радиус поворота будет 20 см, а диаметр описываемой окружности 40 см. Поэтому длина описываемой окружности будет в два раза больше и как для полной окружности, так и для ее части нужно просто предыдущие вычисления умножить на два.

Поворот робота вокруг одного колеса

Поворот робота вокруг одного колеса

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

L = π * 2 * d = 3.14 *2 * 0,2 м = 1,256 метра

Для робота собранного на базе набора Lego EV3 целесообразно применить программирование с помощью блока «Независимое управление моторами». Где одному мотору задать нулевое значение оборотов, а другому вычисленное. При повороте на 360 градусов это будет 7,136 оборота.

Движение по окружности произвольного диаметра

Пусть расстояние от центра окружности до середины первого колеса будет R1. Расстояние от центра окружности до середины второго колеса R2.

В этом случае мы получаем движение колес по окружностям разного диаметра за одинаковое время. Регулировать такое передвижение можно за счет разности скоростей внешнего и внутреннего колеса.

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

Движение робота по окружности произвольного размера

Движение робота по окружности произвольного размера

L1 = 2 * π * R1

Длина окружности для левого колеса

L1 = 2 * π * (R1 + R2)

Скорость правого колеса V1, а скорость правого колеса V2.
Время за которое заданное расстояние пройдет правое колесо t1.

t1 = L1 / V1 = (2 * π * R1) / V1

Время, за которое заданное расстояние пройдет левое колесо t2.

t2 = L2 / V2 = (2 * π * (R1 + R2)) / V2

Время проезда окружности или ее части левым и правым колесом у нас одинаковое t = t1 = t2, а значит и правые части выражений равны.

L1 / V1 = L2 / V2 ó (2 * π * R1) / V1 = (2 * π * (R1 + R2)) / V2 ó

Упрощаем выражение и получаем следующую пропорцию

V2 / V1 = (R1 + R2) / R1

Сейчас можно вычислить скорости левого и правого колеса для заданной окружности. Пусть у нас R1 = 20 см и R2 = 20 см, для упрощения скорость левого колеса возьмем 100 условных единиц. Тогда

V2 / V1 = (R1 + R2) / R1 ó 100 / V1 = (20 + 20) / 20

100 / V1 = 2 ó V1 = 100 / 2 ó V1 = 50 условных единиц.

Имея вычисленные значения скоростей можно составить программу прохождения участка. Для робота Lego EV3 можно использовать блок программирования «Независимое управление моторами». Скорость левого двигателя устанавливаем 100 у.е., скорость правого двигателя устанавливаем 50 у.е.

Независимое управление моторами Lego EV3 произвольная окружность

Независимое управление моторами Lego EV3 произвольная окружность

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

Часто на соревнованиях одним из заданий является движение робота по черной линии с объездом препятствий. И для успешного преодоления трассы необходимо вычислить траекторию объезда. При помощи таких вычислений это сделать достаточно легко.

Этот сайт рассчитан на тех, кто делает первые шаги в робототехнику. Здесь Вы найдете Уроки для начинающих робототехников, Решение практических задач робототехники, различные материалы для занятий и соревнований, полезные советы по использованию среды программирования, а также ссылки на ресурсы, посвященные Lego-конструированию. Надеемся, что информация, представленная на сайте, будет Вам полезной!

Урок №11 - Кегельринг

Звезда активна
Звезда активна
Звезда активна
Звезда активна
Звезда не активна

Введение:

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

Урок №11 посвятим разбору соревновательной дисциплины под названием "Кегельринг".

11.1 Правила соревнования. Подготовка поля для проведения соревнований.

Основные правила "Кегельринга" довольно просты: необходимо собрать и запрограммировать робота, который выталкивает кегли за пределы ринга. Кеглями, как правило, выступают жестяные банки емкостью 0,33 л, а роль ринга выполняет белое поле, ограниченное черной окружностью с шириной линии 50 мм. С одним из вариантов регламента проведения соревнования можете ознакомиться под спойлером ниже:

1. Условия состязания

  1. За наиболее короткое время робот, не выходя более чем на 5 секунд за пределы круга, очерчивающего ринг, должен вытолкнуть расположенные в нем кегли.
  2. На очистку ринга от кеглей дается максимум 2 минуты.
  3. Если робот полностью выйдет за линию круга более чем на 5 секунд, попытка не засчитывается.
  4. Во время проведения состязания участники команд не должны касаться роботов, кеглей или ринга.

2. Ринг

  1. Цвет ринга - светлый.
  2. Цвет ограничительной линии - черный.
  3. Диаметр ринга - 1 м (белый круг).
  4. Ширина ограничительной линии - 50 мм.

3. Кегли

  1. Кегли представляют собой жестяные цилиндры и изготовлены из пустых стандартных жестяных банок (330 мл), использующихся для напитков.
  2. Диаметр кегли - 70 мм.
  3. Высота кегли - 120 мм.
  4. Вес кегли - не более 50 гр.
  5. Цвет кегли - белый.

4. Робот

  1. Максимальная ширина робота 20 см, длина - 20 см.
  2. Высота и вес робота не ограничены.
  3. Робот должен быть автономным.
  4. Во время соревнования размеры робота должны оставаться неизменными и не должны выходить за пределы 20 х 20 см.
  5. Робот не должен иметь никаких приспособлений для выталкивания кеглей (механических, пневматических, вибрационных, акустических и др.).
  6. Робот должен выталкивать кегли исключительно своим корпусом.
  7. Запрещено использование каких-либо клейких приспособлений на корпусе робота для сбора кеглей.

5. Игра

6. Правила отбора победителя

  1. Каждой команде дается не менее двух попыток (точное число определяется судейской коллегией в день проведения соревнований).
  2. В зачет принимается лучшее время из попыток или максимальное число вытолкнутых кеглей за отведенное время.
  3. Победителем объявляется команда, чей робот затратил на очистку ринга от кеглей наименьшее время, или, если ни одна команда не справилась с полной очисткой ринга, команда, чей робот вытолкнул за пределы ринга наибольшее количество кеглей.

Итак: для проведения соревнования нам понадобится поле, точно такое же, которое мы использовали при решении Задачи №12 Урока №6 курса "Первые шаги" . Вы можете скачать макет подходящего поля на странице "Макеты полей для тренировки и соревнований" нашего сайта, а затем распечатать его в цифровой типографии на баннерной ткани, либо изготовить поле самостоятельно, используя плакатную бумагу подходящего размера, большой циркуль, линейку и черную тушь.

Жестяные банки лучше всего обклеить по периметру самоклеящейся бумагой (нам понадобятся 2 - 4 банки белого цвета и столько же - черного).

Реквизит для урока готов!

11.2 Конструирование робота для конкретного вида соревнования.

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

Наступает важный этап моделирования робота - перед нами стоят две взаимосвязанных задачи:

  1. Разработка ключевого алгоритма поведения нашего робота;
  2. Разработка механической конструкции робота, позволяющей реализовать требуемое поведение.

Рассмотрим следующую поведенческую модель:

Следовательно, наш робот должен:

  1. уметь вращаться на месте вокруг своей оси;
  2. уметь двигаться прямолинейно;
  3. уметь обнаруживать предмет, удаленный на некоторое расстояние;
  4. уметь обнаруживать границу поля.

Данные требования диктуют нам условия конструкции робота:

  1. для реализации первых двух условий применим уже известную нам подвижную платформу, использующую два больших мотора и вращающуюся опору (робот-тележка);
  2. для обнаружения кегли воспользуемся одним из имеющихся в наличии датчиков: инфракрасным или ультразвуковым;
  3. границу поля нам поможет обнаружить датчик цвета.

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

Lego mindstorms EV3 Home

small robot 31313

Lego mindstorms EV3 Education

small robot 45544

Вы можете воспользоваться предложенной инструкцией или собрать собственного робота, отвечающего определенным нами требованиям к его конструкции. В процессе сборки конструкции не забудьте подключить моторы и датчики к модулю EV3: левый мотор - к порту "B", правый мотор - к порту "C", ультразвуковой или инфракрасный датчик - к порту "2", датчик цвета - к порту "3".

После сборки робота приступим к созданию программы.

11.3 Создание программы для соревнования "Кегельринг".

Подробно пропишем последовательность действий нашего робота для обнаружения одной кегли на поле:

  1. вращаться вокруг своей оси по часовой стрелке, пока впереди расположенный датчик не обнаружит кеглю;
  2. остановиться напротив кегли;
  3. двигаться вперед, пока датчик цвета не обнаружит черную границу поля;
  4. остановиться;
  5. двигаться назад в центр поля.

Приступим к реализации и отладке п. 1, 2 - научим нашего робота обнаруживать кеглю и останавливаться точно напротив. Сначала нам необходимо выбрать пороговое значение для обнаружения кегли напротив нашего робота. Для этого загрузим среду программирования, создадим новый проект - "lessons-2", новую программу в проекте назовем "lesson-11". Подключим робота к среде программирования, затем установим его точно в центр поля, поставим напротив робота кеглю.

В нашем случае ультразвуковой датчик в режиме "Расстояние в сантиметрах" показывает значение - 25,9 (Рис. 1 поз. 2).

Рис. 1

Инфракрасный датчик в режиме "Приближение" показывает значение - 48 (Рис. 2 поз. 2)

Рис. 2

Режим

Рис. 3

Верхний ряд блоков отображает показания моторов, подключенных к модулю EV3 (Рис. 4 поз. 1).

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

Режим

Рис. 4

Теперь мы можем запрограммировать нахождение роботом кегли:

Ультразвуковой датчик

  1. Для того, чтобы заставить робота вращаться вокруг своей оси, воспользуемся программным блоком "Независимое управление моторами""Зеленой палитры", Режим работы блока установим "Включить", значение мощности для порта "B" установим равным 30, значение мощности для порта "C" установим равным -30(Рис. 5 поз.1),
  2. Для поиска кегли используем программный блок "Ожидание""Оранжевой палитры" в режиме "Ультразвуковой датчик - Сравнение - Расстояние в сантиметрах". Для гарантированного нахождения увеличим пороговое значение срабатывания датчика до 35(Рис. 5 поз. 2)
  3. После того, как робот окажется напротив кегли, используя программный блок "Независимое управление моторами""Зеленой палитры" выключим моторы (Рис. 5 поз. 3).

Поиск кегли роботом с ультразвуковым датчиком

Рис. 5

Инфракрасный датчик

  1. Для того, чтобы заставить робота вращаться вокруг своей оси, воспользуемся программным блоком "Независимое управление моторами""Зеленой палитры", Режим работы блока установим "Включить", значение мощности для порта "B" установим равным 30, значение мощности для порта "C" установим равным -30(Рис. 6 поз.1),
  2. Для поиска кегли воспользуемся программным блоком "Ожидание""Оранжевой палитры" в режиме "Инфракрасный датчик - Сравнение - Приближение". Для гарантированного нахождения увеличим пороговое значение срабатывания датчика до 55(Рис. 6 поз. 2)
  3. После того, как робот окажется напротив кегли, используя программный блок "Независимое управление моторами""Зеленой палитры" выключим моторы (Рис. 6 поз. 3).

Поиск кегли роботом с инфракрасным датчиком

Рис. 6

Загрузим получившуюся программу в робота и запустим её на выполнение. Раз за разом, выполняя программу, мы можем заметить, что наш робот останавливается не совсем точно напротив банки. Связано это с тем, что датчик может обнаруживать предмет не только строго напротив себя, а и на некотором отклонении от направления взгляда датчика. В этом случае можно, либо после остановки робота немного довернуть его на необходимый угол, используя дополнительный блок "Независимое управление моторами", либо постепенно увеличивать скорость вращения, подбирая параметр мощность (Рис. 5, 6 поз. 1), пока робот не станет останавливаться точно напротив кегли. Например, нам потребовалось увеличить мощность до 50 единиц для робота, собранного из образовательной версии набора, и до 40 единиц для робота, собранного из домашней версии набора.

Переходим к реализации п. 3, 4 нашей последовательности действий.

Двигаться вперед и останавливаться при пересечении черной линии мы уже научились, когда разбирали Задачу №11 Урока №6 курса "Первые шаги". Установим робота таким образом, чтобы датчик цвета находился точно над черной границей поля и измерим его значение в режиме "Яркость отраженного света" любым удобным вам способом, рассмотренным выше. В нашем случае получилось значение, равное 7. В качестве порогового значение примем число 10.

Добавим к нашей программе обнаружения кегли следующие программные блоки:

  1. Для того, чтобы заставить робота двигаться прямолинейно, воспользуемся программным блоком "Рулевое управление""Зеленой палитры". Режим работы блока установим "Включить", параметр "Рулевое управление " = 0, параметр "Мощность" = 50. (Рис. 7 поз. 1)
  2. Для поиска датчиком цвета черной границы воспользуемся программным блоком "Ожидание""Оранжевой палитры" в режиме "Датчик цвета - Сравнение - Яркость отраженного сигнала", параметр "Тип сравнения" = 4, параметр "Пороговое значение" = 10. (Рис. 7 поз. 2)
  3. После того, как робот пересечет черную линию, используя программный блок "Рулевое управление""Зеленой палитры" выключим моторы (Рис. 7 поз. 3) .

Движение робота вперед до черной линии

Рис. 7

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

Lego mindstorms EV3 Home

small robot 31313

Lego mindstorms EV3 Education

small robot 45544

Теперь наш робот просто отлично справляется со своей работой! Осталось только научить его возвращаться в центр круга.

Рис. 8

Программный блок "Вращение мотора" "Желтой палитры" позволяет получать и обрабатывать это значение в программе. Режим "Сброс" программного блока "Вращение мотора" устанавливает нулевое значение датчика и отсчет оборотов начинается сначала. (Рис. 9)

Программный блок

Рис. 9

Воспользуемся этой возможностью: если мы сбросим показание одного из датчиков моторов в 0 (в данном случае можно обнулить значение любого из моторов "B" и "C", ведь робот поедет прямо, а значит оба колеса провернутся на одинаковое значение), то после остановки робота над черной линией, можно будет получить значение датчика в "Градусах" или "Оборотах" и, подав его на вход соответствующего параметра блока "Рулевое управление", заставить робота проехать точно такое же расстояние. А для того, чтобы робот двигался назад, необходимо изменить значение параметра "Мощность" на отрицательное значение.

Внесем необходимые изменения в нашу программу:

  1. Перед началом движения вперед сбросим в 0 показания датчика вращения мотора, подключенного к порту "B"(Рис. 10 поз. 1).
  2. После остановки на черной границе поля считаем расстояние, пройденное мотором "B" в градусах (Рис. 10 поз. 1).
  3. Полученное значение подадим в параметр "Градусы" программного блока "Рулевое управление", значение параметра "Мощность" = -50(Рис. 10 поз. 1)!

Движение вперед. Возвращение в центр поля.

Рис. 10

Загрузим получившуюся программу в робота и убедимся, что робот нашел кеглю, вытолкал её за пределы поля и вернулся в центр поля!

Для того, чтобы заставить нашего робота выталкивать требуемое количество кеглей, все наши программные блоки поместим внутрь программного блока "Цикл" "Оранжевой палитры". Режим программного блока "Цикл" установим в значение "Подсчет", параметр "Подсчет" установим равным количеству кеглей (Рис. 11, 12 поз. 1) Для удобства отображения на экране нам пришлось оформить программу в две строки - вы же вполне можете сложить её в одну строку.

Программа для робота small-robot 31313

Рис. 11

Программа для робота small-robot 45544

Рис. 12

Программа готова!

11.4 Соревнование "Кегельринг" с дополнительм условием

На сайте myROBOT.ru опубликованы еще два регламента проведения соревнования "Кегельринг": "Кегельринг-КВАДРО" и "Кегельринг-МАКРО". Основное условие - необходимо выталкивать за пределы поля белые кегли, оставляя на месте черные.

Как научить робота на расстоянии определять цвет кегли? Можно впереди, по ходу движения робота расположить еще один датчик цвета и, приблизившись к кегле на расстояние 1 - 2 см, определить её цвет, теряя при этом драгоценное время, отведенное на выполнение задания. Но, если вы внимательно изучили п. 8.2 Урока №8 курса "Первые шаги", то уже знаете, что на показания инфракрасного датчика в режиме "Приближение" влияет также цвет предмета. Проведем эксперимент: установим робота с инфракрасным датчиком в центр поля, напротив поместим белую кеглю и зафиксируем показания датчика. В нашем случае это значение равно 49. Теперь напротив робота установим черную кеглю - показание датчика изменилось и теперь, не смотря на одинаковое расстояние, составляет 64. Следовательно, для успешного обнаружения белых кеглей и игнорирования черных, необходимо выбрать в качестве порогового - значение, находящееся между этими числами. Число 55 полностью удовлетворяет этому условию. Нам даже не придется переделывать основной алгоритм программы! Попробуйте и убедитесь в этом сами!

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

Заключение:

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

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

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

Звезда активна
Звезда активна
Звезда активна
Звезда активна
Звезда не активна

Введение:

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

Урок №11 посвятим разбору соревновательной дисциплины под названием "Кегельринг".

11.1 Правила соревнования. Подготовка поля для проведения соревнований.

Основные правила "Кегельринга" довольно просты: необходимо собрать и запрограммировать робота, который выталкивает кегли за пределы ринга. Кеглями, как правило, выступают жестяные банки емкостью 0,33 л, а роль ринга выполняет белое поле, ограниченное черной окружностью с шириной линии 50 мм. С одним из вариантов регламента проведения соревнования можете ознакомиться под спойлером ниже:

1. Условия состязания

  1. За наиболее короткое время робот, не выходя более чем на 5 секунд за пределы круга, очерчивающего ринг, должен вытолкнуть расположенные в нем кегли.
  2. На очистку ринга от кеглей дается максимум 2 минуты.
  3. Если робот полностью выйдет за линию круга более чем на 5 секунд, попытка не засчитывается.
  4. Во время проведения состязания участники команд не должны касаться роботов, кеглей или ринга.

2. Ринг

  1. Цвет ринга - светлый.
  2. Цвет ограничительной линии - черный.
  3. Диаметр ринга - 1 м (белый круг).
  4. Ширина ограничительной линии - 50 мм.

3. Кегли

  1. Кегли представляют собой жестяные цилиндры и изготовлены из пустых стандартных жестяных банок (330 мл), использующихся для напитков.
  2. Диаметр кегли - 70 мм.
  3. Высота кегли - 120 мм.
  4. Вес кегли - не более 50 гр.
  5. Цвет кегли - белый.

4. Робот

  1. Максимальная ширина робота 20 см, длина - 20 см.
  2. Высота и вес робота не ограничены.
  3. Робот должен быть автономным.
  4. Во время соревнования размеры робота должны оставаться неизменными и не должны выходить за пределы 20 х 20 см.
  5. Робот не должен иметь никаких приспособлений для выталкивания кеглей (механических, пневматических, вибрационных, акустических и др.).
  6. Робот должен выталкивать кегли исключительно своим корпусом.
  7. Запрещено использование каких-либо клейких приспособлений на корпусе робота для сбора кеглей.

5. Игра

6. Правила отбора победителя

  1. Каждой команде дается не менее двух попыток (точное число определяется судейской коллегией в день проведения соревнований).
  2. В зачет принимается лучшее время из попыток или максимальное число вытолкнутых кеглей за отведенное время.
  3. Победителем объявляется команда, чей робот затратил на очистку ринга от кеглей наименьшее время, или, если ни одна команда не справилась с полной очисткой ринга, команда, чей робот вытолкнул за пределы ринга наибольшее количество кеглей.

Итак: для проведения соревнования нам понадобится поле, точно такое же, которое мы использовали при решении Задачи №12 Урока №6 курса "Первые шаги" . Вы можете скачать макет подходящего поля на странице "Макеты полей для тренировки и соревнований" нашего сайта, а затем распечатать его в цифровой типографии на баннерной ткани, либо изготовить поле самостоятельно, используя плакатную бумагу подходящего размера, большой циркуль, линейку и черную тушь.

Жестяные банки лучше всего обклеить по периметру самоклеящейся бумагой (нам понадобятся 2 - 4 банки белого цвета и столько же - черного).

Реквизит для урока готов!

11.2 Конструирование робота для конкретного вида соревнования.

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

Наступает важный этап моделирования робота - перед нами стоят две взаимосвязанных задачи:

  1. Разработка ключевого алгоритма поведения нашего робота;
  2. Разработка механической конструкции робота, позволяющей реализовать требуемое поведение.

Рассмотрим следующую поведенческую модель:

Следовательно, наш робот должен:

  1. уметь вращаться на месте вокруг своей оси;
  2. уметь двигаться прямолинейно;
  3. уметь обнаруживать предмет, удаленный на некоторое расстояние;
  4. уметь обнаруживать границу поля.

Данные требования диктуют нам условия конструкции робота:

  1. для реализации первых двух условий применим уже известную нам подвижную платформу, использующую два больших мотора и вращающуюся опору (робот-тележка);
  2. для обнаружения кегли воспользуемся одним из имеющихся в наличии датчиков: инфракрасным или ультразвуковым;
  3. границу поля нам поможет обнаружить датчик цвета.

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

Lego mindstorms EV3 Home

small robot 31313

Lego mindstorms EV3 Education

small robot 45544

Вы можете воспользоваться предложенной инструкцией или собрать собственного робота, отвечающего определенным нами требованиям к его конструкции. В процессе сборки конструкции не забудьте подключить моторы и датчики к модулю EV3: левый мотор - к порту "B", правый мотор - к порту "C", ультразвуковой или инфракрасный датчик - к порту "2", датчик цвета - к порту "3".

После сборки робота приступим к созданию программы.

11.3 Создание программы для соревнования "Кегельринг".

Подробно пропишем последовательность действий нашего робота для обнаружения одной кегли на поле:

  1. вращаться вокруг своей оси по часовой стрелке, пока впереди расположенный датчик не обнаружит кеглю;
  2. остановиться напротив кегли;
  3. двигаться вперед, пока датчик цвета не обнаружит черную границу поля;
  4. остановиться;
  5. двигаться назад в центр поля.

Приступим к реализации и отладке п. 1, 2 - научим нашего робота обнаруживать кеглю и останавливаться точно напротив. Сначала нам необходимо выбрать пороговое значение для обнаружения кегли напротив нашего робота. Для этого загрузим среду программирования, создадим новый проект - "lessons-2", новую программу в проекте назовем "lesson-11". Подключим робота к среде программирования, затем установим его точно в центр поля, поставим напротив робота кеглю.

В нашем случае ультразвуковой датчик в режиме "Расстояние в сантиметрах" показывает значение - 25,9 (Рис. 1 поз. 2).

Рис. 1

Инфракрасный датчик в режиме "Приближение" показывает значение - 48 (Рис. 2 поз. 2)

Рис. 2

Режим

Рис. 3

Верхний ряд блоков отображает показания моторов, подключенных к модулю EV3 (Рис. 4 поз. 1).

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

Режим

Рис. 4

Теперь мы можем запрограммировать нахождение роботом кегли:

Ультразвуковой датчик

  1. Для того, чтобы заставить робота вращаться вокруг своей оси, воспользуемся программным блоком "Независимое управление моторами""Зеленой палитры", Режим работы блока установим "Включить", значение мощности для порта "B" установим равным 30, значение мощности для порта "C" установим равным -30(Рис. 5 поз.1),
  2. Для поиска кегли используем программный блок "Ожидание""Оранжевой палитры" в режиме "Ультразвуковой датчик - Сравнение - Расстояние в сантиметрах". Для гарантированного нахождения увеличим пороговое значение срабатывания датчика до 35(Рис. 5 поз. 2)
  3. После того, как робот окажется напротив кегли, используя программный блок "Независимое управление моторами""Зеленой палитры" выключим моторы (Рис. 5 поз. 3).

Поиск кегли роботом с ультразвуковым датчиком

Рис. 5

Инфракрасный датчик

  1. Для того, чтобы заставить робота вращаться вокруг своей оси, воспользуемся программным блоком "Независимое управление моторами""Зеленой палитры", Режим работы блока установим "Включить", значение мощности для порта "B" установим равным 30, значение мощности для порта "C" установим равным -30(Рис. 6 поз.1),
  2. Для поиска кегли воспользуемся программным блоком "Ожидание""Оранжевой палитры" в режиме "Инфракрасный датчик - Сравнение - Приближение". Для гарантированного нахождения увеличим пороговое значение срабатывания датчика до 55(Рис. 6 поз. 2)
  3. После того, как робот окажется напротив кегли, используя программный блок "Независимое управление моторами""Зеленой палитры" выключим моторы (Рис. 6 поз. 3).

Поиск кегли роботом с инфракрасным датчиком

Рис. 6

Загрузим получившуюся программу в робота и запустим её на выполнение. Раз за разом, выполняя программу, мы можем заметить, что наш робот останавливается не совсем точно напротив банки. Связано это с тем, что датчик может обнаруживать предмет не только строго напротив себя, а и на некотором отклонении от направления взгляда датчика. В этом случае можно, либо после остановки робота немного довернуть его на необходимый угол, используя дополнительный блок "Независимое управление моторами", либо постепенно увеличивать скорость вращения, подбирая параметр мощность (Рис. 5, 6 поз. 1), пока робот не станет останавливаться точно напротив кегли. Например, нам потребовалось увеличить мощность до 50 единиц для робота, собранного из образовательной версии набора, и до 40 единиц для робота, собранного из домашней версии набора.

Переходим к реализации п. 3, 4 нашей последовательности действий.

Двигаться вперед и останавливаться при пересечении черной линии мы уже научились, когда разбирали Задачу №11 Урока №6 курса "Первые шаги". Установим робота таким образом, чтобы датчик цвета находился точно над черной границей поля и измерим его значение в режиме "Яркость отраженного света" любым удобным вам способом, рассмотренным выше. В нашем случае получилось значение, равное 7. В качестве порогового значение примем число 10.

Добавим к нашей программе обнаружения кегли следующие программные блоки:

  1. Для того, чтобы заставить робота двигаться прямолинейно, воспользуемся программным блоком "Рулевое управление""Зеленой палитры". Режим работы блока установим "Включить", параметр "Рулевое управление " = 0, параметр "Мощность" = 50. (Рис. 7 поз. 1)
  2. Для поиска датчиком цвета черной границы воспользуемся программным блоком "Ожидание""Оранжевой палитры" в режиме "Датчик цвета - Сравнение - Яркость отраженного сигнала", параметр "Тип сравнения" = 4, параметр "Пороговое значение" = 10. (Рис. 7 поз. 2)
  3. После того, как робот пересечет черную линию, используя программный блок "Рулевое управление""Зеленой палитры" выключим моторы (Рис. 7 поз. 3) .

Движение робота вперед до черной линии

Рис. 7

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

Lego mindstorms EV3 Home

small robot 31313

Lego mindstorms EV3 Education

small robot 45544

Теперь наш робот просто отлично справляется со своей работой! Осталось только научить его возвращаться в центр круга.

Рис. 8

Программный блок "Вращение мотора" "Желтой палитры" позволяет получать и обрабатывать это значение в программе. Режим "Сброс" программного блока "Вращение мотора" устанавливает нулевое значение датчика и отсчет оборотов начинается сначала. (Рис. 9)

Программный блок

Рис. 9

Воспользуемся этой возможностью: если мы сбросим показание одного из датчиков моторов в 0 (в данном случае можно обнулить значение любого из моторов "B" и "C", ведь робот поедет прямо, а значит оба колеса провернутся на одинаковое значение), то после остановки робота над черной линией, можно будет получить значение датчика в "Градусах" или "Оборотах" и, подав его на вход соответствующего параметра блока "Рулевое управление", заставить робота проехать точно такое же расстояние. А для того, чтобы робот двигался назад, необходимо изменить значение параметра "Мощность" на отрицательное значение.

Внесем необходимые изменения в нашу программу:

  1. Перед началом движения вперед сбросим в 0 показания датчика вращения мотора, подключенного к порту "B"(Рис. 10 поз. 1).
  2. После остановки на черной границе поля считаем расстояние, пройденное мотором "B" в градусах (Рис. 10 поз. 1).
  3. Полученное значение подадим в параметр "Градусы" программного блока "Рулевое управление", значение параметра "Мощность" = -50(Рис. 10 поз. 1)!

Движение вперед. Возвращение в центр поля.

Рис. 10

Загрузим получившуюся программу в робота и убедимся, что робот нашел кеглю, вытолкал её за пределы поля и вернулся в центр поля!

Для того, чтобы заставить нашего робота выталкивать требуемое количество кеглей, все наши программные блоки поместим внутрь программного блока "Цикл" "Оранжевой палитры". Режим программного блока "Цикл" установим в значение "Подсчет", параметр "Подсчет" установим равным количеству кеглей (Рис. 11, 12 поз. 1) Для удобства отображения на экране нам пришлось оформить программу в две строки - вы же вполне можете сложить её в одну строку.

Программа для робота small-robot 31313

Рис. 11

Программа для робота small-robot 45544

Рис. 12

Программа готова!

11.4 Соревнование "Кегельринг" с дополнительм условием

На сайте myROBOT.ru опубликованы еще два регламента проведения соревнования "Кегельринг": "Кегельринг-КВАДРО" и "Кегельринг-МАКРО". Основное условие - необходимо выталкивать за пределы поля белые кегли, оставляя на месте черные.

Как научить робота на расстоянии определять цвет кегли? Можно впереди, по ходу движения робота расположить еще один датчик цвета и, приблизившись к кегле на расстояние 1 - 2 см, определить её цвет, теряя при этом драгоценное время, отведенное на выполнение задания. Но, если вы внимательно изучили п. 8.2 Урока №8 курса "Первые шаги", то уже знаете, что на показания инфракрасного датчика в режиме "Приближение" влияет также цвет предмета. Проведем эксперимент: установим робота с инфракрасным датчиком в центр поля, напротив поместим белую кеглю и зафиксируем показания датчика. В нашем случае это значение равно 49. Теперь напротив робота установим черную кеглю - показание датчика изменилось и теперь, не смотря на одинаковое расстояние, составляет 64. Следовательно, для успешного обнаружения белых кеглей и игнорирования черных, необходимо выбрать в качестве порогового - значение, находящееся между этими числами. Число 55 полностью удовлетворяет этому условию. Нам даже не придется переделывать основной алгоритм программы! Попробуйте и убедитесь в этом сами!

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

Заключение:

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

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

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

Этот сайт рассчитан на тех, кто делает первые шаги в робототехнику. Здесь Вы найдете Уроки для начинающих робототехников, Решение практических задач робототехники, различные материалы для занятий и соревнований, полезные советы по использованию среды программирования, а также ссылки на ресурсы, посвященные Lego-конструированию. Надеемся, что информация, представленная на сайте, будет Вам полезной!

Урок №11 - Кегельринг

Звезда активна
Звезда активна
Звезда активна
Звезда активна
Звезда не активна

Введение:

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

Урок №11 посвятим разбору соревновательной дисциплины под названием "Кегельринг".

11.1 Правила соревнования. Подготовка поля для проведения соревнований.

Основные правила "Кегельринга" довольно просты: необходимо собрать и запрограммировать робота, который выталкивает кегли за пределы ринга. Кеглями, как правило, выступают жестяные банки емкостью 0,33 л, а роль ринга выполняет белое поле, ограниченное черной окружностью с шириной линии 50 мм. С одним из вариантов регламента проведения соревнования можете ознакомиться под спойлером ниже:

1. Условия состязания

  1. За наиболее короткое время робот, не выходя более чем на 5 секунд за пределы круга, очерчивающего ринг, должен вытолкнуть расположенные в нем кегли.
  2. На очистку ринга от кеглей дается максимум 2 минуты.
  3. Если робот полностью выйдет за линию круга более чем на 5 секунд, попытка не засчитывается.
  4. Во время проведения состязания участники команд не должны касаться роботов, кеглей или ринга.

2. Ринг

  1. Цвет ринга - светлый.
  2. Цвет ограничительной линии - черный.
  3. Диаметр ринга - 1 м (белый круг).
  4. Ширина ограничительной линии - 50 мм.

3. Кегли

  1. Кегли представляют собой жестяные цилиндры и изготовлены из пустых стандартных жестяных банок (330 мл), использующихся для напитков.
  2. Диаметр кегли - 70 мм.
  3. Высота кегли - 120 мм.
  4. Вес кегли - не более 50 гр.
  5. Цвет кегли - белый.

4. Робот

  1. Максимальная ширина робота 20 см, длина - 20 см.
  2. Высота и вес робота не ограничены.
  3. Робот должен быть автономным.
  4. Во время соревнования размеры робота должны оставаться неизменными и не должны выходить за пределы 20 х 20 см.
  5. Робот не должен иметь никаких приспособлений для выталкивания кеглей (механических, пневматических, вибрационных, акустических и др.).
  6. Робот должен выталкивать кегли исключительно своим корпусом.
  7. Запрещено использование каких-либо клейких приспособлений на корпусе робота для сбора кеглей.

5. Игра

6. Правила отбора победителя

  1. Каждой команде дается не менее двух попыток (точное число определяется судейской коллегией в день проведения соревнований).
  2. В зачет принимается лучшее время из попыток или максимальное число вытолкнутых кеглей за отведенное время.
  3. Победителем объявляется команда, чей робот затратил на очистку ринга от кеглей наименьшее время, или, если ни одна команда не справилась с полной очисткой ринга, команда, чей робот вытолкнул за пределы ринга наибольшее количество кеглей.

Итак: для проведения соревнования нам понадобится поле, точно такое же, которое мы использовали при решении Задачи №12 Урока №6 курса "Первые шаги" . Вы можете скачать макет подходящего поля на странице "Макеты полей для тренировки и соревнований" нашего сайта, а затем распечатать его в цифровой типографии на баннерной ткани, либо изготовить поле самостоятельно, используя плакатную бумагу подходящего размера, большой циркуль, линейку и черную тушь.

Жестяные банки лучше всего обклеить по периметру самоклеящейся бумагой (нам понадобятся 2 - 4 банки белого цвета и столько же - черного).

Реквизит для урока готов!

11.2 Конструирование робота для конкретного вида соревнования.

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

Наступает важный этап моделирования робота - перед нами стоят две взаимосвязанных задачи:

  1. Разработка ключевого алгоритма поведения нашего робота;
  2. Разработка механической конструкции робота, позволяющей реализовать требуемое поведение.

Рассмотрим следующую поведенческую модель:

Следовательно, наш робот должен:

  1. уметь вращаться на месте вокруг своей оси;
  2. уметь двигаться прямолинейно;
  3. уметь обнаруживать предмет, удаленный на некоторое расстояние;
  4. уметь обнаруживать границу поля.

Данные требования диктуют нам условия конструкции робота:

  1. для реализации первых двух условий применим уже известную нам подвижную платформу, использующую два больших мотора и вращающуюся опору (робот-тележка);
  2. для обнаружения кегли воспользуемся одним из имеющихся в наличии датчиков: инфракрасным или ультразвуковым;
  3. границу поля нам поможет обнаружить датчик цвета.

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

Lego mindstorms EV3 Home

small robot 31313

Lego mindstorms EV3 Education

small robot 45544

Вы можете воспользоваться предложенной инструкцией или собрать собственного робота, отвечающего определенным нами требованиям к его конструкции. В процессе сборки конструкции не забудьте подключить моторы и датчики к модулю EV3: левый мотор - к порту "B", правый мотор - к порту "C", ультразвуковой или инфракрасный датчик - к порту "2", датчик цвета - к порту "3".

После сборки робота приступим к созданию программы.

11.3 Создание программы для соревнования "Кегельринг".

Подробно пропишем последовательность действий нашего робота для обнаружения одной кегли на поле:

  1. вращаться вокруг своей оси по часовой стрелке, пока впереди расположенный датчик не обнаружит кеглю;
  2. остановиться напротив кегли;
  3. двигаться вперед, пока датчик цвета не обнаружит черную границу поля;
  4. остановиться;
  5. двигаться назад в центр поля.

Приступим к реализации и отладке п. 1, 2 - научим нашего робота обнаруживать кеглю и останавливаться точно напротив. Сначала нам необходимо выбрать пороговое значение для обнаружения кегли напротив нашего робота. Для этого загрузим среду программирования, создадим новый проект - "lessons-2", новую программу в проекте назовем "lesson-11". Подключим робота к среде программирования, затем установим его точно в центр поля, поставим напротив робота кеглю.

В нашем случае ультразвуковой датчик в режиме "Расстояние в сантиметрах" показывает значение - 25,9 (Рис. 1 поз. 2).

Рис. 1

Инфракрасный датчик в режиме "Приближение" показывает значение - 48 (Рис. 2 поз. 2)

Рис. 2

Режим

Рис. 3

Верхний ряд блоков отображает показания моторов, подключенных к модулю EV3 (Рис. 4 поз. 1).

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

Режим

Рис. 4

Теперь мы можем запрограммировать нахождение роботом кегли:

Ультразвуковой датчик

  1. Для того, чтобы заставить робота вращаться вокруг своей оси, воспользуемся программным блоком "Независимое управление моторами""Зеленой палитры", Режим работы блока установим "Включить", значение мощности для порта "B" установим равным 30, значение мощности для порта "C" установим равным -30(Рис. 5 поз.1),
  2. Для поиска кегли используем программный блок "Ожидание""Оранжевой палитры" в режиме "Ультразвуковой датчик - Сравнение - Расстояние в сантиметрах". Для гарантированного нахождения увеличим пороговое значение срабатывания датчика до 35(Рис. 5 поз. 2)
  3. После того, как робот окажется напротив кегли, используя программный блок "Независимое управление моторами""Зеленой палитры" выключим моторы (Рис. 5 поз. 3).

Поиск кегли роботом с ультразвуковым датчиком

Рис. 5

Инфракрасный датчик

  1. Для того, чтобы заставить робота вращаться вокруг своей оси, воспользуемся программным блоком "Независимое управление моторами""Зеленой палитры", Режим работы блока установим "Включить", значение мощности для порта "B" установим равным 30, значение мощности для порта "C" установим равным -30(Рис. 6 поз.1),
  2. Для поиска кегли воспользуемся программным блоком "Ожидание""Оранжевой палитры" в режиме "Инфракрасный датчик - Сравнение - Приближение". Для гарантированного нахождения увеличим пороговое значение срабатывания датчика до 55(Рис. 6 поз. 2)
  3. После того, как робот окажется напротив кегли, используя программный блок "Независимое управление моторами""Зеленой палитры" выключим моторы (Рис. 6 поз. 3).

Поиск кегли роботом с инфракрасным датчиком

Рис. 6

Загрузим получившуюся программу в робота и запустим её на выполнение. Раз за разом, выполняя программу, мы можем заметить, что наш робот останавливается не совсем точно напротив банки. Связано это с тем, что датчик может обнаруживать предмет не только строго напротив себя, а и на некотором отклонении от направления взгляда датчика. В этом случае можно, либо после остановки робота немного довернуть его на необходимый угол, используя дополнительный блок "Независимое управление моторами", либо постепенно увеличивать скорость вращения, подбирая параметр мощность (Рис. 5, 6 поз. 1), пока робот не станет останавливаться точно напротив кегли. Например, нам потребовалось увеличить мощность до 50 единиц для робота, собранного из образовательной версии набора, и до 40 единиц для робота, собранного из домашней версии набора.

Переходим к реализации п. 3, 4 нашей последовательности действий.

Двигаться вперед и останавливаться при пересечении черной линии мы уже научились, когда разбирали Задачу №11 Урока №6 курса "Первые шаги". Установим робота таким образом, чтобы датчик цвета находился точно над черной границей поля и измерим его значение в режиме "Яркость отраженного света" любым удобным вам способом, рассмотренным выше. В нашем случае получилось значение, равное 7. В качестве порогового значение примем число 10.

Добавим к нашей программе обнаружения кегли следующие программные блоки:

  1. Для того, чтобы заставить робота двигаться прямолинейно, воспользуемся программным блоком "Рулевое управление""Зеленой палитры". Режим работы блока установим "Включить", параметр "Рулевое управление " = 0, параметр "Мощность" = 50. (Рис. 7 поз. 1)
  2. Для поиска датчиком цвета черной границы воспользуемся программным блоком "Ожидание""Оранжевой палитры" в режиме "Датчик цвета - Сравнение - Яркость отраженного сигнала", параметр "Тип сравнения" = 4, параметр "Пороговое значение" = 10. (Рис. 7 поз. 2)
  3. После того, как робот пересечет черную линию, используя программный блок "Рулевое управление""Зеленой палитры" выключим моторы (Рис. 7 поз. 3) .

Движение робота вперед до черной линии

Рис. 7

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

Lego mindstorms EV3 Home

small robot 31313

Lego mindstorms EV3 Education

small robot 45544

Теперь наш робот просто отлично справляется со своей работой! Осталось только научить его возвращаться в центр круга.

Рис. 8

Программный блок "Вращение мотора" "Желтой палитры" позволяет получать и обрабатывать это значение в программе. Режим "Сброс" программного блока "Вращение мотора" устанавливает нулевое значение датчика и отсчет оборотов начинается сначала. (Рис. 9)

Программный блок

Рис. 9

Воспользуемся этой возможностью: если мы сбросим показание одного из датчиков моторов в 0 (в данном случае можно обнулить значение любого из моторов "B" и "C", ведь робот поедет прямо, а значит оба колеса провернутся на одинаковое значение), то после остановки робота над черной линией, можно будет получить значение датчика в "Градусах" или "Оборотах" и, подав его на вход соответствующего параметра блока "Рулевое управление", заставить робота проехать точно такое же расстояние. А для того, чтобы робот двигался назад, необходимо изменить значение параметра "Мощность" на отрицательное значение.

Внесем необходимые изменения в нашу программу:

  1. Перед началом движения вперед сбросим в 0 показания датчика вращения мотора, подключенного к порту "B"(Рис. 10 поз. 1).
  2. После остановки на черной границе поля считаем расстояние, пройденное мотором "B" в градусах (Рис. 10 поз. 1).
  3. Полученное значение подадим в параметр "Градусы" программного блока "Рулевое управление", значение параметра "Мощность" = -50(Рис. 10 поз. 1)!

Движение вперед. Возвращение в центр поля.

Рис. 10

Загрузим получившуюся программу в робота и убедимся, что робот нашел кеглю, вытолкал её за пределы поля и вернулся в центр поля!

Для того, чтобы заставить нашего робота выталкивать требуемое количество кеглей, все наши программные блоки поместим внутрь программного блока "Цикл" "Оранжевой палитры". Режим программного блока "Цикл" установим в значение "Подсчет", параметр "Подсчет" установим равным количеству кеглей (Рис. 11, 12 поз. 1) Для удобства отображения на экране нам пришлось оформить программу в две строки - вы же вполне можете сложить её в одну строку.

Программа для робота small-robot 31313

Рис. 11

Программа для робота small-robot 45544

Рис. 12

Программа готова!

11.4 Соревнование "Кегельринг" с дополнительм условием

На сайте myROBOT.ru опубликованы еще два регламента проведения соревнования "Кегельринг": "Кегельринг-КВАДРО" и "Кегельринг-МАКРО". Основное условие - необходимо выталкивать за пределы поля белые кегли, оставляя на месте черные.

Как научить робота на расстоянии определять цвет кегли? Можно впереди, по ходу движения робота расположить еще один датчик цвета и, приблизившись к кегле на расстояние 1 - 2 см, определить её цвет, теряя при этом драгоценное время, отведенное на выполнение задания. Но, если вы внимательно изучили п. 8.2 Урока №8 курса "Первые шаги", то уже знаете, что на показания инфракрасного датчика в режиме "Приближение" влияет также цвет предмета. Проведем эксперимент: установим робота с инфракрасным датчиком в центр поля, напротив поместим белую кеглю и зафиксируем показания датчика. В нашем случае это значение равно 49. Теперь напротив робота установим черную кеглю - показание датчика изменилось и теперь, не смотря на одинаковое расстояние, составляет 64. Следовательно, для успешного обнаружения белых кеглей и игнорирования черных, необходимо выбрать в качестве порогового - значение, находящееся между этими числами. Число 55 полностью удовлетворяет этому условию. Нам даже не придется переделывать основной алгоритм программы! Попробуйте и убедитесь в этом сами!

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

Заключение:

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

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

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

Читайте также: