Подготовка робота mindstorms nxt к соревнованиям в кегельринге

advertisement
Тема исследовательской работы
«Подготовка робота
Mindstorms NXT к
соревнованиям в
кегельринге»
Работу выполнил:
Ежов Михаил, 6 А класс,
МКОУ «Тальменская СОШ №6»
Руководитель проекта:
Дьякова Наталья Анатольевна,
учитель информатики
МКОУ «Тальменская СОШ №6»
2014 год
Содержание
I.
Введение
3-4
Актуальность проблемы
3
Цели и задачи проекта
3
Гипотеза
3
Объект и предмет исследования
4
II.
Основная часть
4-12
1. Изучение литературы
4-5
2. Подбор конструкции робота
6-7
3. Выбор траектории для движения робота
8-10
4. Программирование робота
11
III.
Заключение
11-12
IV.
Список литературы
12
V.
Использованное оборудование
12
VI.
Приложения
13-17
Введение
С детства я увлекаюсь сборкой моделей из Лего-конструкторов. Когда в прошлом
году в нашей школе появился кружок «Робототехника», я решил попробовать свои силы в
сборке и программировании Лего-моделей. Весь 2012-2013 учебный год мы с нашим
руководителем занимались сборкой и программированием готовых Лего-моделей, а также
придумывали свои модели. В марте 2013 года мы с Натальей Анатольевной поехали на
первую свою олимпиаду по робототехнике в категории Lego Wedo. На олимпиаду
приехало большое количество команд. В своей категории мне с командой удалось занять
второе место. Но все свободное время на олимпиаде я старался провести там, где
находились роботы Mindstorms NXT. Меня очень заинтересовала игра «Кегельринг». Я
присмотрелся к конструкциям роботов для Кегельринга и траекториям, по которым
передвигались роботы.
Если вкратце сформулировать условие состязаний, то можно сказать, что основной
целью робота является освобождение ринга от кеглей. Тот робот, что справляется с этой
задачей за наименьшее время объявляется победителем.
Этот вид соревнований стал интересен и познавателен для меня, поскольку
позволяет в ходе подготовки задуматься над конструкторскими особенностями механизма
и над алгоритмом поведения робота.
И я поставил перед собой следующую цель: подготовить робота Mindstorms NXT
к соревнованиям в кегельринге.
Для этого необходимо решить следующие задачи:
1. Изучить имеющуюся литературу и положение для краевой олимпиады по
кегельрингу.
2. Подобрать правильную конструкцию робота для максимально точного выполнения
поставленной задачи.
3. Изучить траектории движения роботов по полю для кегельринга.
4. Написать программу для подходящей траектории и протестировать ее на поле для
кегельринга.
Гипотеза:
Я предположил, что если подобрать правильную конструкцию робота, установить в
нужном месте конструкции датчик освещенности и запрограммировать робота на
движение по такой траектории, которая позволяет затратить меньше всего времени, то
можно попробовать поучаствовать в соревнованиях в кегельринге.
В качестве объекта исследования будем рассматривать соревнования в
кегельринге, описание правил соревнований. А предметом исследования будет
конструкция робота и программа, с помощью которой мы будем управлять этой
конструкцией.
Методы исследования:
Для проведения исследования я выбрал следующие методы:
Наблюдение, поисковый метод.
Для подготовки робота к соревнованиям я изучил большое количество литературных
источников в интернете о кегельринге, посмотрел видео о соревнованиях по кегельрингу,
а также наблюдал за соревнованиями на олимпиаде.
Анкетирование.
Я не только наблюдал за роботами, но и провел небольшое анкетирование (см. часть 3)
Моделирование
Я рассмотрел несколько видов моделей и попробовал создать свою в программе Лего
Диджитал Дизайнер. После того, как я создал модель в программе сгенерировано
инструкция по сборке этой модели. При её помощи я создал реального робота.
Эксперимент
Как только я создал робота, я занялся составлением программы для робота. Я создавал
программы, скидывал их в блок робота, тестировал их и корректировал.
Основная часть
1. Я изучил имеющуюся литературу о соревнованиях роботов и узнал
следующее:
Цель игры достаточно проста: за максимально короткое время полностью
автономный робот должен выбить из круга расположенные в нем кегли. В качестве кеглей
используются самые обычные жестяные трехсотграммовые банки из-под напитков.
Банок всего 8, и они равномерно располагаются на ринге: в каждой четверти ринга
должно находиться не более двух банок. Банки ставятся на расстоянии 12-15 сантиметров
от широкой черной ограничительной линии. Ширина черной линии - 5 см. Диаметр ринга
- 1 м., цвет - белый. Традиционным материалом для изготовления ринга служит обычный
ватман. Можно было бы использовать какой-либо пластик и создавать очень красивые
ринги, но ватман является наиболее распространенным материалом. Это очень важно для
легкой повторяемости ринга. Дело в том, что на высокой скорости робот может иметь
сильный дрифт и рассчитать поправку на занос можно только в
случае полной уверенности, что на соревнованиях будет точно
такая же трасса, как на тренировках. К тому же традиционное
использование
поверхности
бумаги
обеспечивает
ринг
уникальными характеристиками, одновременно сочетая гладкость
и достаточное трение.
Ограничений не слишком много: допускается использование любых конструкций,
которые не превышают размер 25 см. по ширине и длине. Высота и вес робота не
ограничиваются. Робот не должен иметь каких-либо приспособлений для выталкивания
банок и выбивать их с ринга исключительно своим корпусом. Во время соревнования
размеры робота должны оставаться неизменными. Кроме того, запрещено использование
каких-либо клейких приспособлений на корпусе робота для сбора кеглей.
Перед началом соревнования робот помещается строго в центр ринга. На ринге
устанавливается 8 кеглей. Перед началом игры участник состязания может поправить
расположение
кеглей.
Окончательная
расстановка
кеглей
принимается
судьей
соревнования. Робот должен быть включен вручную в начале состязания по команде
судьи, после чего в его работу нельзя вмешиваться. Запрещено дистанционное управление
или подача роботу любых команд. На очистку ринга от кеглей дается не более 3-х минут.
Банка считается вытолкнутой, если никакая ее часть не находится внутри белого круга,
ограниченного линией. Один раз покинувшая пределы ринга банка считается вытолкнутой
и может быть снята с ринга в случае обратного закатывания. Каждой команде дается не
менее двух попыток. В зачет принимается лучшее время из попыток или максимальное
число вытолкнутых банок за отведенное время.
На высокой скорости робот может довольно далеко "вылетать" за пределы ринга это называется ран-аутом. Расстояние "вылета" регламентом не ограничивается.
Ограничивается только ран-аут тайм - время, на которое робот выходит за пределы ринга.
По регламенту оно не должно превышать 5 секунд.
2. Итак, что же может собой представлять конструкция робота?
Колесная база – это расположение колес и количество и способ подведения к ним энергии
от двигателей. Традиционно рассматривают две основные схемы, остальные же являются
модификациями этих двух.
Первая схема с рулевыми колесами.
В этой схеме направление движения задается положением управляющих колес
относительно
корпуса
механизма.
Преимущество
такой
схемы:
возможность установки нескольких двигателей на ведущие колеса, что
позволит увеличить общую мощность механизма. Недостаток схемы – это
сложность
выполнения поворотов:
данное
устройство
не сможет
выполнять поворот на месте вокруг своей оси, т.е. разворот будет
требовать значительных временных затрат, а также наличия достаточного места для
выполнения разворота.
Колесная база, в основе которой лежит "танковая" схема, значительно
выигрывает у предыдущей конструкции в скорости выполнения разворотов. Такой
тележке ничего не стоит сделать разворот вокруг своей оси на нужное количество
градусов, чтобы направится прямиком к очередной кегле.
Что при схеме с управляющими колесами, что при тележке, собранной по танковой
схеме, у робота могут быть такие колеса, задача которых поддерживать механизм над
поверхностью ринга и не давать другим частям механизма замедлять движение. Их можно
назвать – опорные колеса.
Другой аспект, который нужно учитывать при конструировании
робота для состязаний Кегельринг – скорость движения. Это
важно, поскольку нужно выполнить задание быстрее всех.
Использовать свежие батарейки и запускать моторы на полную
мощность – это очевидное решение, его будут использовать большинство моих
соперников. Менее очевидное решение – это добиться такого эффекта, чтобы один
поворот двигателя перемещал робота на наибольшее расстояние. Например, если
поставить на робота колеса большего диаметра, - это будет приводить к желаемому
результату.
Как показано на рисунке ниже, маленькое колесо за поворот двигателя на 180
градусов, проедет гораздо меньшее расстояние, чем проедет большое колесо при повороте
двигателя на эти же 180 градусов.
Другой
способ
достичь
похожего
результата – установить на мотор и
колеса шестерни. На мотор – большую,
на колеса – маленькую. Что получится –
смотрите
на
картинке:
Мотор сделает чуть меньше, чем четверть поворота (9 зубцов, отмеченных красным), а
маленькая шестерня при этом обернется на 180 градусов (9 зубцов, отмеченных синим).
Т.е. за полный оборот двигателя, колесо сделает 4-5 оборотов вокруг своей оси, тем
самым проехав в 4-5 большее расстояние, нежели в случае, когда оно присоединено
непосредственно к двигателю.
Ну и конечно, еще одним важным вопросом при конструировании будет вопрос о
том, какие и сколько датчиков ставить на робота. В общем случае, роботу понадобится
датчик для определения местонахождения кеглей, а также датчик для контроля, выехал ли
робот за пределы ринга. Для решения первой задачи традиционно используют один или
несколько датчиков расстояния. А для определения границ ринга подойдут световой или
цветовой датчики.
Имеет смысл рассматривать установку нескольких датчиков
освещенности (или цветовых) для лучшего определения роботом
своего
положения
на
ринге.
Например, в данном случае программа может распознать, что
робот двигается под углом относительно ограничительной линии,
поэтому ему нужно продолжить движение только левым мотором,
чтобы выровнять свое положение и стать направленным к центру
ринга.
Наиболее выигрышной схемой для робота является вариант с двумя ведущими колесами
(танковая схема). Такая конструкция обеспечивает удобную реализацию разворотов спинов - и дает возможность реализовать широкую гамму алгоритмов. Можно также
сделать робота с одним ведущим мотором и одним мотором для управления поворотом
колес (обычно передних). При использовании арк-спина - поворота по дуге, такая схема
может быть весьма эффективна. В программе Лего Диджитал Дизайнер я создал свою
модель робота по танковой схеме, которую затем собрал из деталей конструктора (см. рис
1,2).
3. Траектории движения роботов.
На третьей краевой очной олимпиаде по робототехнике я провел опрос участников
олимпиады в категории кегельринг о выборе траектории движения робота. Из 12
команд-участников, я получил следующие ответы:
Количество ответов
5
4
3
2
1
0
Количество ответов
Тем не менее, можно попробовать рассмотреть программирование робота для
движения по таким траекториям, которые позволяют обойти/собрать/сбить все кегли
избегая ненужных разворотов.
Поскольку известно, что робот в самом начале стоит в центре ринга, то в самом
начале для поиска кегли робот может вращаться вокруг своей оси, и если датчик
расстояния обнаружит предмет на каком-то заданном удалении от робота, то можно
считать, что он обнаружил кеглю. Т.е. вращение робота должно прекратиться для того,
чтобы следующими действиями выдвинуть кеглю за пределы ринга.
Что делать дальше, когда кегля выдвинута?
Если робот находясь около кегли выдвинутой за ринг начнет опять вращаться, чтобы
обнаружить следующую, есть вероятность, что он опять увидит первую.
Очевидно, что чтобы избежать этого нужно поворачиваться вокруг своей оси некоторое
количество вхолостую.
На данном рисунке холостой ход, когда ультразвуковой
датчик
не
задействован
показан
зеленым
цветом.
Поскольку нельзя с уверенностью сказать на какую границу
банки среагирует датчик расстояния (из-за его достаточно
широкого угла обзора), то нельзя однозначно сказать какая у
него будет траектория перемещения следующей банки, и сколько при этом он банок
выдвинет и выдвинет ли вообще. Вполне может оказаться что едва задетые банки упадут,
что приведет к сложностям в их дальнейшем поиске на ринге.
Такое поведение называют недетерминированным - нельзя
сказать, где в определенный момент находиться робот, и нельзя
сказать какая часть задачи выполнена - сколько еще кеглей
осталось вытолкнуть.
Поэтому напрашивается более надежный способ выталкивания
банок - вернуться на исходную позицию, т.е. в центр ринга,
после того как банка вытолкнута.
Теперь робот с достаточной уверенностью может сказать,
сколько банок он уже вытолкнул. К тому же, если
внимательно посмотреть на расположение банок на ринге, то
можно этот способ слегка модифицировать, сократив время
поиска банок: на противоположной стороне хорды идущей от
каждой банки через центр ринга находиться вторая банка.
Следовательно робот, обнаружив одну банку может выбить сразу две: обнаруженную и ее
напарницу:
Если пойти еще дальше, то можно с уверенностью утверждать: когда робот при старте
смотрит на кеглю (направление старта выбирается оператором,
запускающим робота), то следующая кегля находиться от него
на 45 градусов по часовой (или против) стрелки. Приняв этот
факт, можно не устанавливать датчик расстояния на робота каждую следующая банка будет находиться перед роботом
каждый раз, когда он повернется на 45 градусов вокруг своей
оси.
Освободившийся порт можно использовать еще для одного датчика
освещенности, чтобы помогать роботу все время четко возвращаться в
центр, выравниваясь по границе ринга.
Способы описанные выше интересны тем, что подходят как для обычного
кегельринга, так и для других разновидностей этого состязания, где кегли
нужно еще и различать по цвету. Робот может подъехать к такой кегле
определить ее цвет и принять решение выталкивать ее или нет. Затем
проехать в центр или на другую сторону хорды и проделать те же манипуляции со
следующей банки.
Следующие способы даже не требуют отдельного описания - они все
основываются на том, что расположение кеглей однозначно определено и робот может
быть установлен в под любым углом, относительно первой кегли. (см. Рисунок 4)
Алгоритм 1 заключается в поиске и выталкивание кеглей с возвращением в центр
ринга.
Алгоритм 2: вытолкнув кеглю за пределы ринга, робот разворачивается и сбивает 2
кегли, затем снова разворачивается и снова сбивает 2 кегли и так до тех пор, пока кегель в
ринге не останется.
Алгоритм 3: робот выталкивает по две кегли за один раз, не возвращаясь в центр круга.
Алгоритм 4: робот движется по радиусу, сбивая все кегли.
Алгоритм 5: двигаясь вперед, робот выталкивает кеглю, затем двигается по дуге назад,
выталкивая другую.
Как видно из схем, многие из подходов к решению задачи не требуют установки
датчиков вообще. Некоторые из них не требуют также и наличие компьютерного блока:
например, движение по спирали может быть реализовано чисто механическим способом.
Однако, прежде чем выбирать такие "экзотические" способы необходимо выяснить у
судей или организационного комитета соревнований, будут ли разрешены такие решения.
На наших состязаниях могут принимать участие именно те роботы, на которых
установлен один датчик освещённости и один датчик расстояния.
Эти алгоритмы движения робота были проанализированы по двум основным
характеристикам:
- количество кеглей, которые можно выбить;
- время, требуемое на выполнение задания.
В результате анализа, анкетирования, наблюдения за поведением роботов был
выбран 4 алгоритм,
потому что, двигаясь согласно этому алгоритму, затрачивается
минимальное количество времени на выполнение задания.
Победитель соревнований - команда СтР программировала робота именно по этой
траектории и вытолкнула все кегли с поля за самое короткое время (0:09 секунд). Именно
к этому результату я и решил стремиться.
4. Сейчас пойдет речь о возможных подходах решения этой задачи с точки зрения
программирования поведения робота.
Программированием роботов NXT можно заниматься в среде ПервоРобот NXT, в нашей
школе
есть
такое программное
обеспечение
версии
2.0.
Это
образная
среда
программирования, в которой вместо команд, операторов и процедур используются
картинки. Доступна практически любому пользователю, и в то же время обладает
практически неограниченными возможностями программирования поведения робота.
Есть возможность записи и анализа показаний датчиков.
Основные принципы работы в среде:

Использование
входных
и
выходных
устройств
и
простого
набора
последовательных инструкций для установления причинно-следственных связей;

Разработка и тестирование системы мониторинга и управления событиями;

Использование интуитивных
методов для
получения из
первоисточников
впечатления методом выдвижения гипотез;

Использование научных методов для сбора и анализа полученных данных;

Интеграция математики и науки с помощью физических констант, единиц
измерения, систем координат, минимальная, максимальная, средняя и линейная формулы.
Для того, чтобы лучше разобраться в программировании роботов, с сентября 2013
года я записался на Дистанционные курсы по робототехнике для роботов Mindstorms
NXT, на которых я решал различные задачи и отправлял ответы на проверку через
систему Moodle. В рамках промежуточной аттестации принял участие в Дистанционной
олимпиаде по робототехнике, в декабре 2013 года, где набрал 8,3 балла из 10 возможных.
Программировать робота можно разными способами, в зависимости от датчика. Если в
наборе конструктора есть в наличии датчик цвета, то можно составить следующий
алгоритм (см. Рисунок 5).
В нашем наборе датчик света отсутствует, поэтому я составил программу с
использованием датчика освещенности (см. Рисунок 6).
Можно сказать, что мой алгоритм составлен на основе алгоритма с датчиком цвета.
Мне пришлось заменить датчик цвета на датчик освещенности. Всё остальное
практически я не изменял. После того, как я сделал программу, я скачал эту программу в
блок робота. Протестировал, посмотрел ошибки и подкорректировал программу. Так у
меня в итоге получилась данная программа. Конечно, я еще не достиг такой быстроты, но
в дальнейшем я планирую максимально приблизиться к лучшему в крае результату.
Заключение
В результате своей работы, я изучил имеющуюся литературу и положение для
краевой олимпиады по кегельрингу, хорошо усвоил основные положения соревнований в
кегельринге, вместе со своим педагогом создал поле для кегельринга, подобрал кегли
(пустые баночки, обернутые белым листом бумаги). В ходе изучения различных
конструкций, я подобрал для себя правильную конструкцию робота для максимально
точного выполнения поставленной задачи. В программе Лего Диджитал Дизайнер я
создал модель робота, которую затем собрал из деталей коструктора. Также я изучил
траектории движения роботов по полю для кегельринга. Для себя я определился с
траекторией движения по спирали, постарался написать программу для этой траектории и
протестировать ее на поле для кегельринга.
Вывод: я решил все задачи для выполнения поставленной мною цели, с ребятами на
кружке Робототехники мы собирали и тестировали различные модели роботов,
движущиеся по разным траекториям, устраивали для себя соревнования. Но мне не
удалось представить своего робота на олимпиаде в категории кегельринг, так как
положение об этих соревнованиях изменилось и были выставлены дополнительные
условия игры «Кегельринг – плюс». Добавились 4 круга зеленого цвета диаметром 10
сантиметров, которые случайным образом поставляются под 4 выбранные судьями кегли
и нужно вытолкнуть за пределы черного круга только 4 кегли на белой поверхности. А это
совершенно другая задача, исследование которой я еще только начал осваивать. Я принял
участие в четвертой краевой олимпиаде, но только в другой категории. И уже начал
исследование для новой задачи кегельринг-плюс. В перспективе, на будущую олимпиаду,
я планирую все-таки принять участие в этой категории.
Список литературы:
1. www.robo-sport.ru
2. www.myrobot.ru/articles/sport_kegelring.php
3. www.prorobot.ru
4. www.robotorum.ru
5. www.servodoid.ru/forum/22-13-1
6. www.robot.uni-altai.ru - сайт Образовательная робототехника в Алтайской крае
Использованное оборудование
1. Конструктор Lego Mindstorms NXT.
2. Программное обеспечение Lego Digital Designer.
3. Программное обеспечение Перворобот NXT 2.0.
4. Ноутбук с ПО и выходом в интернет.
Приложение
Словарь кегельринга
ФЛИП-ФЛОП (flip-flop) - основная последовательность движений робота в кегельринге.
Состоит из движения вперед до черной ограничительной линии и последующего
возвращения робота в исходную позицию. За флип-флопом обычно следует выполнение
поворота, после чего последовательность действий повторяется.
ТВИНСАЙД ФЛИП-ФЛОП (twinside flip-flop) - двусторонний флип-флоп. Состоит из
движения вперед до черной ограничительной линии, затем движения назад до черной
линии на противоположной стороне ринга и завершается возвращением в исходную
позицию.
ФЛЭП (flap) - удар корпусом по банке. Выполнение четких флэпов придает банкам
резкое
ускорение
и
гарантированный
вылет
за
пределы
ринга.
БЭКВАРД ФЛЭП (backward flap) - обратный флэп, удар по кегле задней частью
корпуса.
Используется
в
твинсайд
флип-флопе.
ХОТ ФЛЭП (hot flap) - удар корпусом, обычно с разворота, когда за пределы ринга
вылетает
сразу
несколько
банок.
СПИН (spin) - поворот робота, обычно чередующийся с флип-флопами. При двух
ведущих моторах (танковая схема) различают сингл спин (single spin) - поворот с
помощью одного мотора - и твин спин (twin spin) - быстрый поворот с помощью
противоположно вращающихся моторов. Сингл спин, или по-другому спин на одном
моторе, отличается высокой точностью, но низкой скоростью поворота. Обеспечивает
гашение инерции. Твин спин, или разворот на двух моторах, обеспечивает высокую
скорость поворота, но часто снижает точность робота. При высокой скорости твин спин
чаще всего создает дрифт, который чрезвычайно сложно рассчитать и использовать.
СИМПЛ
СПИН (simple
spin) -
поворот,
равный
сорока
пяти
градусам.
АРК-СПИН (arc-spin) - поворот по дуге; чрезвычайно эффективен в случае, когда он
является
частью
флип-флоп
последовательности.
БЭКВАРД СПИН (backward spin) - обратный разворот. Так, если нам необходимо
повернуться на 45 градусов налево, мы можем выполнить бэквард спин вправо на 315
градусов.
СПИН ТОЛКАЧЕВА (Tolkachevs spin) - поворот с раскручиванием. Состоит из
поворота на необходимый угол, к которому добавляется поворот на 360 градусов в ту же
сторону. Выполняется на высокой скорости двумя моторами для достижения хот флэпа.
РАФ-ЭНД-ТАМБЛ СПИН (rough-and-tumble spin) - беспорядочный
поворот
на
случайное
количество
градусов.
СИМПЛ АЛГОРИТМ (simple algorithm) - простой базовый алгоритм, в который входит
обычный флип-флоп в сочетании с симпл спином. На данный момент рекордное время
было
показано
именно
с
помощью
этого
алгоритма.
ТВИНСАЙДИНГ (twinsiding) - алгоритм с использованием твинсайд флип-флопа.
Является самым распространенным подходом при конструировании кегельрингалгоритмов.
РАФ-ЭНД-ТАМБЛ (rough-and-tumble) - псевдобеспорядочный алгоритм. В основном
такой алгоритм рассчитан на достижение быстрой победы благодаря большому
количеству
хот
флэпов.
БАМПЕР (bumper) - непременный атрибут кегельринг-роботов. Обычно делается
максимально допустимым по размеру (20 см.). Различают: стрэйт бампер (straight bumper)
- стандартный прямой бампер; скью бампер (skew bumper) - косой бампер, граб бампер
(grab
bumper)
ФРОНТ
бампер
-
БАМПЕР (front
в
виде
передний
bumper) -
скобы.
бампер.
БЭК БАМПЕР (back bumper) - задний бампер. Необходим при двустороннем флипфлопе.
РАБ БАМПЕР (grab bumper) - форма бампера в виде скобы или ковша, позволяющая
роботу "захватывать" банки более эффективно. Необходим в первую очередь для
нескоростных
роботов,
реализующих
алгоритмы
с
точным
позиционированием.
ДРИФТ (drift) - рассчитанный занос робота. Хорошо использованный дрифт может дать
неоднократные
хот
флэпы.
РАН-АУТ (run-out) - "вылет" робота за пределы ринга. На практике может достигать 2/3
ширины
ринга
и
не
ограничивается
регламентом.
РАН-АУТ ТАЙМ (run-out time) - время выхода робота за пределы ринга. По регламенту
не
должно
превышать
5
секунд.
РАНСТЭНДИНГ (runstanding) - способность робота находиться в пределах ринга и не
превышать ран-аут тайм более чем на 5 секунд. Является одним из самых важных качеств
робота.
Рисунок 1, 2. Создание модели робота в Лего Диджитал Дизайнер
Рисунок 3: программа для кегельринга
Фото 1, 2. Программирование робота
Фото 3, 4, 5. Запуск робота, тестирование и корректировка программ.
Рисунок 4. Траектории роботов.
Рисунок 5. Программа для робота с датчиком цвета.
Рисунок 6. Программа для робота с датчиком освещенности.
Download