Кегельринг что это такое
Робототехника
Введение:
Раздел «Практика» являет собой продолжение курса «Первые шаги». На протяжении ряда уроков мы разберем решение базовых задач робототехники., научимся получать и обрабатывать информацию от нескольких датчиков. Надеемся, что полученные знания помогут вам в дальнейшем при самостоятельном решении творческих и соревновательных задач.
Урок №11 посвятим разбору соревновательной дисциплины под названием «Кегельринг».
11.1 Правила соревнования. Подготовка поля для проведения соревнований.
Основные правила «Кегельринга» довольно просты: необходимо собрать и запрограммировать робота, который выталкивает кегли за пределы ринга. Кеглями, как правило, выступают жестяные банки емкостью 0,33 л, а роль ринга выполняет белое поле, ограниченное черной окружностью с шириной линии 50 мм. С одним из вариантов регламента проведения соревнования можете ознакомиться под спойлером ниже:
Итак: для проведения соревнования нам понадобится поле, точно такое же, которое мы использовали при решении Задачи №12 Урока №6 курса «Первые шаги». Вы можете скачать макет подходящего поля на странице «Макеты полей для тренировки и соревнований» нашего сайта, а затем распечатать его в цифровой типографии на баннерной ткани, либо изготовить поле самостоятельно, используя плакатную бумагу подходящего размера, большой циркуль, линейку и черную тушь.
Реквизит для урока готов!
11.2 Конструирование робота для конкретного вида соревнования.
На первоначальном этапе решения задачи давайте сделаем пару маленьких допущений: не будем обращать внимание на удовлетворение требования к размерам нашего робота, ограничимся поиском и выталкиванием всего одной кегли.
Рассмотрим следующую поведенческую модель:
Следовательно, наш робот должен:
Данные требования диктуют нам условия конструкции робота:
Всем условиям в полной мере отвечает наш робот, которым мы пользовались, когда проходили курс «Первые шаги».
Lego mindstorms EV3 Home
Lego mindstorms EV3 Education
После сборки робота приступим к созданию программы.
11.3 Создание программы для соревнования «Кегельринг».
Подробно пропишем последовательность действий нашего робота для обнаружения одной кегли на поле:
На «Странице аппаратных средств», находящейся в правом нижнем углу среды программирования, выберем вкладку «Представление порта» (Рис. 1, 2 поз. 1) и снимем показание датчика, определяющего расстояние до кегли, установив соответствующий режим отображения показаний.
Рис. 1
Рис. 2
Теперь мы можем запрограммировать нахождение роботом кегли:
Ультразвуковой датчик
Рис. 5
Инфракрасный датчик
Рис. 6
Загрузим получившуюся программу в робота и запустим её на выполнение. Раз за разом, выполняя программу, мы можем заметить, что наш робот останавливается не совсем точно напротив банки. Связано это с тем, что датчик может обнаруживать предмет не только строго напротив себя, а и на некотором отклонении от направления взгляда датчика. В этом случае можно, либо после остановки робота немного довернуть его на необходимый угол, используя дополнительный блок «Независимое управление моторами», либо постепенно увеличивать скорость вращения, подбирая параметр мощность (Рис. 5, 6 поз. 1), пока робот не станет останавливаться точно напротив кегли. Например, нам потребовалось увеличить мощность до 50 единиц для робота, собранного из образовательной версии набора, и до 40 единиц для робота, собранного из домашней версии набора.
Переходим к реализации п. 3, 4 нашей последовательности действий.
Двигаться вперед и останавливаться при пересечении черной линии мы уже научились, когда разбирали Задачу №11 Урока №6 курса «Первые шаги». Установим робота таким образом, чтобы датчик цвета находился точно над черной границей поля и измерим его значение в режиме «Яркость отраженного света» любым удобным вам способом, рассмотренным выше. В нашем случае получилось значение, равное 7. В качестве порогового значение примем число 10.
Добавим к нашей программе обнаружения кегли следующие программные блоки:
Рис. 7
Наш робот научился успешно находить и выталкивать кеглю, но текущая конструкция не позволяет роботу уверено её фиксировать при транспортировке за пределы поля. Давайте немного доработаем конструкцию робота, прикрепив к нему клешни, которые увеличат ширину захвата и позволят прочно удерживать кеглю. На переднем бампере робота слева и справа закрепите детали, как показано на рисунках ниже:
Lego mindstorms EV3 Home
Lego mindstorms EV3 Education
Теперь наш робот просто отлично справляется со своей работой! Осталось только научить его возвращаться в центр круга.
«Страница аппаратных средств» среды программирования позволяет нам наблюдать не только текущие показания датчиков, но и накопленные показания датчика вращения мотора (Рис. 8 поз. 1). Нажав, на значок мотора, мы можем установить предпочтительный нам вывод информации о вращении мотора в «Оборотах» или «Градусах» (Рис. 8 поз. 2).
Рис. 8
Программный блок «Вращение мотора» «Желтой палитры» позволяет получать и обрабатывать это значение в программе. Режим «Сброс» программного блока «Вращение мотора» устанавливает нулевое значение датчика и отсчет оборотов начинается сначала. (Рис. 9)
Рис. 9
Воспользуемся этой возможностью: если мы сбросим показание одного из датчиков моторов в 0 (в данном случае можно обнулить значение любого из моторов «B» и «C», ведь робот поедет прямо, а значит оба колеса провернутся на одинаковое значение), то после остановки робота над черной линией, можно будет получить значение датчика в «Градусах» или «Оборотах» и, подав его на вход соответствующего параметра блока «Рулевое управление», заставить робота проехать точно такое же расстояние. А для того, чтобы робот двигался назад, необходимо изменить значение параметра «Мощность» на отрицательное значение.
Внесем необходимые изменения в нашу программу:
Рис. 10
Загрузим получившуюся программу в робота и убедимся, что робот нашел кеглю, вытолкал её за пределы поля и вернулся в центр поля!
Рис. 11
Рис. 12
Программа готова!
11.4 Соревнование «Кегельринг» с дополнительм условием
К сожалению, решить данную задачу с использованием только ультразвукового датчика, не представляется возможным.
Заключение:
При решении практической задачи робототехники успех приходит только при многократном тестировании робота. В процессе тестирования возможно возникновение ситуации, когда вам потребуется вносить изменения не только в программу, но и конструкцию робота. Не бойтесь экспериментировать, не бойтесь ошибаться. Вдумчивый анализ ошибок обязательно принесет вам положительный результат! Удачи!
Управление движением робота при помощи системы с отрицательной обратной связью
Кегельринг
Наиболее очевидное общее решение задачи распадается на две отдельные подзадачи:
Поиск кегли
Для поиска банки добавьте в конструкцию робота датчик ультразвука, направленный вперёд. Запрограммируйте поведение робота по следующему алгоритму:
Задание 9.9. Составьте программу поиска роботом кегли.
Выталкивание кегли
Если кегля найдена, то алгоритм её выталкивания состоит в следующем:
Возникает вопрос: насколько сильно робот должен возвращаться назад? Очевидно, на то же расстояние, которое он проехал до линии. Как определить это расстояние?
Моторы Lego Mindstorms содержат встроенный датчик оборотов. Снимать показания этого датчика можно при помощи блока Rotation Sensor из меню Sensor полной палитры. Этот блок подсчитывает количество градусов (с точностью до 1°) или количество полных оборотов вала мотора.
Блок Rotation Sensor имеет довольно много входных и выходных разъёмов. Для решения нашей задачи понадобится только один разъём, выдающий текущее количество градусов или оборотов, совершённых валом мотора.
Пример 9.3. Демонстрация работы датчика оборотов.
Задание 9.10. Измените программу так, чтобы данные выводились в оборотах.
Кегельринг. Общий алгоритм
Итак, общий алгоритм кегельринга состоит в следующем:
Задание 9.11. Реализуйте алгоритм кегельринга целиком. Устройте соревнование «Кегельринг» по описанным выше правилам.
Задание 9.12. Создайте программу для имитации дискового телефона. Пользователь «набирает номер» из трёх цифр (от нуля до девяти). После набора каждой цифры диск должен вернуться в исходное состояние. В конце набора робот проговаривает набранный номер вслух (по цифрам).
Кегельринг
Соревнования «Кегельринг роботов»
Кегельринг роботов является популярной категорией соревнований особенно у начинающих робототехников. Они вызывают огромный интерес и много эмоций у участников.
кегельринг роботов EV3
В соревнованиях «Кегельринг» автономный роботу нужно вытолкнуть жестяные банки за минимальное время за пределы поля.
Как правило кегельринг проводится для младшей категории детей от 10 до 12 лет. Для того, чтобы конкуренция была одинаковой идет еще и разделение по самым распространенным робототехническим наборам. То есть отдельно проводятся соревнования, например, по кегельрингу для роботов Lego EV3 и отдельно для роботов, собранных на базе контроллера Arduino.
В этой статье я расскажу о том, как написать программу для кегельринга роботов на основе робототехнического набора Lego Mindstorms EV3. Прежде чем приступить к написанию управляющей программы нужно внимательно изучить условия проведения соревнований.
Регламент соревнований «Кегельринг роботов» для Lego EV3
Кегельринг роботов проводится практически во всех областях России и условия проведения соревнований могут немного отличаться друг от друга. В качестве примера приведу один из регламентов проведения состязаний.
Требования к роботу
Робот может быть собран только из деталей и датчиков робототехнического набора Lego и включать в себя любое число контроллеров Lego. Ширина и длина робота не более 25 сантиметров. По высоте робот не ограничен. Робота не должен весить более одного килограмма. Удаленное управление роботом недопустимо, робот должен быть автономным.
кегельринг Lego EV3
Выталкивание кеглей должно производиться только корпусом робота без использования любых приспособлений таких как акустические, пневматические, вибрационные и т.д. Клейкие устройства для собирания кеглей, закрепленные на корпусе робота запрещены.
Требования к полигону
Полигон является рингом белого цвета с диаметром 1 метр, ограничительная линия черного цвета шириной 5 сантиметров.
Требования к кеглям
Кегли являются пустыми жестяными банками 330 миллилитров, диаметром 70 миллиметров и весом не более 50 грамм. Кегли должны быть белого цвета. Их можно окрашивать или обтягивать ватманом.
Условия проведения состязаний
Перед началом соревнований на полигоне размещают от 6 до 8 кеглей. Робот располагается в центре полигона. За время поединка робот должен вытолкнуть максимальное количество кеглей и не выйти за пределы ринга. Когда робот вытолкнул все кегли за ограничительную линию ринга, поединок останавливается и время фиксируется.
Попытка не будет засчитана если робот не сможет вытолкнуть все кегли. Выигравшим считается робот, который вытолкнул все кегли за минимальное время. На очистку полигона от кеглей дается 2 минуты. Во время проведения соревнований игроки не должны касаться роботов, кеглей или ринга.
Правила игры
Робот устанавливается точно в центре площадки. Кегли располагают внутри окружности ринга равномерно расставляют. Количество кеглей от шести до восьми и их ставят не ближе 5 сантиметров от черной ограничивающей линии. Устанавливает робота и расставляет кегли судья соревнований.
После того как кегли расставлены по команде судьи участник состязания включает своего робота. Затем в работу робота нельзя вмешиваться. На выполнение попытки дается не более 2-х минут. Если робот вытолкнул все кегли, то соревнование останавливается и фиксируется время.
По команде судьи «Марш» один из членов команды нажимает кнопку «Пуск» робота. Робот ждет пять секунд и начинает выталкивать кегли. Участники отходят от края поля на 1 метр для того, чтобы не создавать помехи датчикам робота.
Робот, выполнивший попытку за минимальное время, становится победителем. Если робот за назначенное время не смог выбить все кегли, то данная попытка не идет в зачет. Всего разрешено две попытки. Из двух попыток берется минимальное время.
Если кегля никакая частью не располагается внутри черного ограничивающего круга, то она считается вытолкнутой. Когда кегля покинула ринг один раз, ее считают вытолкнутой и кеглю разрешается снять с полигона если она закатится обратно. Дистанционное управление роботом или подача любых команд запрещены и ведут к дисквалификации команды.
Программа для кегельринга
Изучив регламент состязаний можно приступать к написанию программы. Установим на робота три датчика: датчик касания, ультразвуковой датчик и датчик цвет. Также нам необходимы два больших мотора. Левый мотор соединяем с портом B, правый с портом C.
Датчик касания нужен для запуска программы устанавливаем в первый порт. Ультразвуковой датчик необходим для определения месторасположения кегли устанавливаем во второй порт. Датчик цвета, который определяет черную линию и не дает роботу покинуть пределы ринга соединяем с третьим портом.
создание проекта в редакторе Lego EV3
Создаем новый проект и сохраняем его «Kegelring». Название проекта нужно набирать латинским шрифтом. Для запуска программы ставим блок ожидания с датчик касания для запуска программы на щелчок. После этого ставим блок ожидания таймер. Значение времени устанавливаем в 5 секунд. То есть после нажатия датчика касания робот ждет 5 секунд и после этого можно писать программу на выталкивание кеглей.
программный блок ожидания
Основная программа будет состоять из бесконечного цикла внутри которого будут размещаться еще два цикла и другие блоки программирования. В первом цикле помещаю блок рулевого управления, настроенный на поворот на месте. Робот поворачивается на месте до тех пор, пока не увидит кеглю.
Скорость поворота определяется так, чтобы у робота не было большой инерции. Для начала установим мощность 30 единиц, затем подстроим перед соревнованиями на ринге при испытании роботов. После этого программа выходит из цикла и ставим блок остановки моторов.
поворот на месте
Так как радиус ринга 50 сантиметров, кегли располагаются приблизительно в 5 сантиметрах от черной ограничивающей линии, сама кегля имеет диаметр 7 сантиметров, и сам робот имеет размеры не более 25 сантиметров, то расстояние, на котором ультразвуковой датчик может увидеть кеглю определю в 35 сантиметров. Расстояние нужно также отрегулировать на полигоне опытным путем.
В следующем цикле также ставим блок рулевого управления на движение вперед со скоростью 50. Скорость нужно подбирать для каждого робота индивидуально. В этом цикле робот едет вперед до тех пор, пока не увидит черную линию. При этом за пределы круга выталкивается кегля. Затем также выходим из цикла и останавливаем моторы.
выбивание кегли с полигона
Теперь роботу необходимо вернуться в центр полигона. Так как радиус ринга 50 сантиметров, то ставим блок рулевое управление со скорость минус 50 условных единиц приблизительно на два оборота. Робот едет назад в центр ринга, но количество оборотов также надо подстроить на практике для каждого диаметра колес индивидуально.
Затем цикл повторяется, и робот продолжает искать и выталкивать кегли. Цикл в этом случае бесконечный. Если нужно, то можно задать ограниченное количество циклов. Это только один из вариантов программы.
создание программы
Можно написать и другие, более совершенные варианты программы «Кегельринг роботов». Все параметры циклов, мощности поворотов и другие нужно подстраивать исходя из конструкции вашего робота и условий проведения соревнований.
Как написать программу «Кегельринг роботов Lego EV3»
RoboCity
Город, где живут роботы
Что такое кегельринг
Кегельринг — это один из видов соревнований в робототехнике. Цель робота — вытолкнуть кегли с ринга за минимальное время. Именно поэтому вид соревнований и называется кегельринг (кегли + ринг).
Существует несколько разновидностей кегельринга:
— с фиксированным расположением кеглей
— с распознованием цвета кеглей (нужно вытолкнуть не все кегли, а только кегли определенного цвета)
Мы же придумали свой вид соревнований в кегельринге. Сделано это по нескольким причинам:
1) чтобы робот был более универсальным и мог находить кегли независимо от позиции кеглей на ринге и стартовой позиции робота;
2) чтобы расширить аудиторию участников и позволить соревноваться на равных тем, у кого есть домашние версии наборов LEGO Mindstorm;
3) чтобы увеличить зрелищность соревнований как для участников, так и для зрителей.
Итак, особенностью наших соревнований является набор разных позиций. Примеры некоторых позиций:
Какие именно позиции будут использоваться решается случайным образом перед началом соревнований.
Общее количество позиций зависит от количества участников. Каждая попытка имеет результат — это среднее время, понадобившееся роботу для выталкивания одной кегли. Длительность попытки 30 секунд. Если во время своей попытки робот вышел за пределы ринга, то попытка не засчитывается.
Соревнования проходят в два тура. Все участники выполняют попытки первого тура, результат всех попыток первого тура суммируется и половина команд с лучшей суммой проходит во второй тур.
Во втором туре используются уже другие позиции и результаты считаются независимо от первого тура.
Кегли — один из обязательных атрибутов кегельринга, однако мы предлагаем использовать не только классические кегли, но и любые предметы, которые подходят по форме и весу: жестяные банки, городки, столбики из лего. Главное, чтобы предметы были устойчивыми и чтобы датчики робота могли их обнаруживать. В своих соревнованиях мы используем следующие предметы.
Мы разработали приложение под андроид, которое содержит возможные стартовые позиции и может быть использовано:
1) для подготовки к соревнованиям, отладки роботов и алгоритмов
2) для проведения непосредственно соревнований, так как содержит специальный судейский секундомер.
Мы будем рады любым замечаниям и предложениям относительно приложения, которые помогут нам улучшить его и сделать более удобным.
Кегельринг что это такое
Введение:
Раздел «Практика» являет собой продолжение курса «Первые шаги». На протяжении ряда уроков мы разберем решение базовых задач робототехники., научимся получать и обрабатывать информацию от нескольких датчиков. Надеемся, что полученные знания помогут вам в дальнейшем при самостоятельном решении творческих и соревновательных задач.
Урок №11 посвятим разбору соревновательной дисциплины под названием «Кегельринг».
11.1 Правила соревнования. Подготовка поля для проведения соревнований.
Основные правила «Кегельринга» довольно просты: необходимо собрать и запрограммировать робота, который выталкивает кегли за пределы ринга. Кеглями, как правило, выступают жестяные банки емкостью 0,33 л, а роль ринга выполняет белое поле, ограниченное черной окружностью с шириной линии 50 мм. С одним из вариантов регламента проведения соревнования можете ознакомиться под спойлером ниже:
1. Условия состязания
2. Ринг
3. Кегли
4. Робот
5. Игра
6. Правила отбора победителя
Реквизит для урока готов!
11.2 Конструирование робота для конкретного вида соревнования.
На первоначальном этапе решения задачи давайте сделаем пару маленьких допущений: не будем обращать внимание на удовлетворение требования к размерам нашего робота, ограничимся поиском и выталкиванием всего одной кегли.
Рассмотрим следующую поведенческую модель:
Следовательно, наш робот должен:
Данные требования диктуют нам условия конструкции робота:
Всем условиям в полной мере отвечает наш робот, которым мы пользовались, когда проходили курс «Первые шаги».
Lego mindstorms EV3 Home
Lego mindstorms EV3 Education
После сборки робота приступим к созданию программы.
11.3 Создание программы для соревнования «Кегельринг».
Подробно пропишем последовательность действий нашего робота для обнаружения одной кегли на поле:
На «Странице аппаратных средств», находящейся в правом нижнем углу среды программирования, выберем вкладку «Представление порта» (Рис. 1, 2 поз. 1) и снимем показание датчика, определяющего расстояние до кегли, установив соответствующий режим отображения показаний.
Рис. 1
Рис. 2
Если Вы используете подключение модуля EV3 к среде программирования с помощью USB-кабеля (подробно о способах подключения), то сможете наблюдать показания датчиков на «Странице аппаратных средств» только на максимальном удалении робота от компьютера, равном длине USB-кабеля. В этом случае показания датчика можно посмотреть непосредственно на экране модуля EV3. Управляя кнопками модуля EV3, перейдите в меню (Рис. 3 поз. 1), выберите пункт «Port View» и нажмите центральную кнопку (Рис. 3 поз. 2).
Рис. 3
Верхний ряд блоков отображает показания моторов, подключенных к модулю EV3 (Рис. 4 поз. 1).
Нижний ряд блоков отображает показания датчиков, подключенных к модулю EV3. Управляя клавишами модуля EV3 можно перемещаться между показаниями для получения подробной информации о датчике и выводимом значении (Рис. 4 поз. 2).
Рис. 4
Теперь мы можем запрограммировать нахождение роботом кегли:
Ультразвуковой датчик
Рис. 5
Инфракрасный датчик
Рис. 6
Загрузим получившуюся программу в робота и запустим её на выполнение. Раз за разом, выполняя программу, мы можем заметить, что наш робот останавливается не совсем точно напротив банки. Связано это с тем, что датчик может обнаруживать предмет не только строго напротив себя, а и на некотором отклонении от направления взгляда датчика. В этом случае можно, либо после остановки робота немного довернуть его на необходимый угол, используя дополнительный блок «Независимое управление моторами», либо постепенно увеличивать скорость вращения, подбирая параметр мощность (Рис. 5, 6 поз. 1), пока робот не станет останавливаться точно напротив кегли. Например, нам потребовалось увеличить мощность до 50 единиц для робота, собранного из образовательной версии набора, и до 40 единиц для робота, собранного из домашней версии набора.
Переходим к реализации п. 3, 4 нашей последовательности действий.
Двигаться вперед и останавливаться при пересечении черной линии мы уже научились, когда разбирали Задачу №11 Урока №6 курса «Первые шаги». Установим робота таким образом, чтобы датчик цвета находился точно над черной границей поля и измерим его значение в режиме «Яркость отраженного света» любым удобным вам способом, рассмотренным выше. В нашем случае получилось значение, равное 7. В качестве порогового значение примем число 10.
Добавим к нашей программе обнаружения кегли следующие программные блоки:
Рис. 7
Наш робот научился успешно находить и выталкивать кеглю, но текущая конструкция не позволяет роботу уверено её фиксировать при транспортировке за пределы поля. Давайте немного доработаем конструкцию робота, прикрепив к нему клешни, которые увеличат ширину захвата и позволят прочно удерживать кеглю. На переднем бампере робота слева и справа закрепите детали, как показано на рисунках ниже:
Lego mindstorms EV3 Home
Lego mindstorms EV3 Education
Теперь наш робот просто отлично справляется со своей работой! Осталось только научить его возвращаться в центр круга.
«Страница аппаратных средств» среды программирования позволяет нам наблюдать не только текущие показания датчиков, но и накопленные показания датчика вращения мотора (Рис. 8 поз. 1). Нажав, на значок мотора, мы можем установить предпочтительный нам вывод информации о вращении мотора в «Оборотах» или «Градусах» (Рис. 8 поз. 2).
Рис. 8
Программный блок «Вращение мотора» «Желтой палитры» позволяет получать и обрабатывать это значение в программе. Режим «Сброс» программного блока «Вращение мотора» устанавливает нулевое значение датчика и отсчет оборотов начинается сначала. (Рис. 9)
Рис. 9
Воспользуемся этой возможностью: если мы сбросим показание одного из датчиков моторов в 0 (в данном случае можно обнулить значение любого из моторов «B» и «C», ведь робот поедет прямо, а значит оба колеса провернутся на одинаковое значение), то после остановки робота над черной линией, можно будет получить значение датчика в «Градусах» или «Оборотах» и, подав его на вход соответствующего параметра блока «Рулевое управление», заставить робота проехать точно такое же расстояние. А для того, чтобы робот двигался назад, необходимо изменить значение параметра «Мощность» на отрицательное значение.
Внесем необходимые изменения в нашу программу:
Рис. 10
Загрузим получившуюся программу в робота и убедимся, что робот нашел кеглю, вытолкал её за пределы поля и вернулся в центр поля!
Рис. 11
Рис. 12
Программа готова!
11.4 Соревнование «Кегельринг» с дополнительм условием
К сожалению, решить данную задачу с использованием только ультразвукового датчика, не представляется возможным.
Заключение:
При решении практической задачи робототехники успех приходит только при многократном тестировании робота. В процессе тестирования возможно возникновение ситуации, когда вам потребуется вносить изменения не только в программу, но и конструкцию робота. Не бойтесь экспериментировать, не бойтесь ошибаться. Вдумчивый анализ ошибок обязательно принесет вам положительный результат! Удачи!