Шагающий робот сумо ev3 инструкция по сборке

Инструкция по сборке робота сумо ev3. 

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

Инструкция по сборке лего сумо ev3

1детали для крепления редуктора ev3 сумо2крепление редуктора ev3

3шестеренка для редуктора ev34шестеренки на редукторе лего ev3

5крепление колес к редуктору ev3 лего6крепление колес лего

7крепление датчика освещенности8крепление датчика

9крепление датчика освещенности к блоку ev310редукторы с моторами ev3

11крепление ковша робота сумо ev312крепление робота сумоиста ev3

13крепление балок для робота лего14крепление балок к корпусу лего сумо

15крепление датчика расстояния лего робота ev316крепление датчика расстояния к роботу сумо

17укрепление робота лего сумо18балка для крепления робота лего сумо

19укрепление подвижной платформы робота сумо ev320крепежная балка робота ev3

21стяжка робота ev322крепление для блока ev3 робота лего сумо

23установка креплений для блока ev324балка для крепления блока ev3

25блок ev3 с штифтами для крепления26робот сумо ev3  в сборке

Вы можете укрепить робота сумо ev3 добавить детали к квошу роботу смоиста, собрать своего модифицированного робота сумоиста ev3 на базе представленной основы.

Другие схемы роботов lego ev3

Полезно почитать по теме lego сумо:
Инструкция полноприводного робота lego сумо
Программа для lego сумо

Поделиться:

Комментарии ()

Нет комментариев. Ваш будет первым!

Введение:

Урок №12 курса «Практика» представляет разбор решения, наверное, самого популярного соревнования роботов — «Сумо». Главная задача робота-сумоиста состоит в том, чтобы вытолкнуть за пределы ринга своего соперника. Существует множество вариантов правил проведения этого состязания, накладывающих различные ограничения в первую очередь на размеры и конструкцию роботов, тем не менее, базовые алгоритмы поведения робота при этом очень похожи. Поэтому наш урок в значительной степени будет направлен на реализацию программы поведения, а в завершающей части урока рассмотрим некоторые советы по практической подготовке к соревнованию роботов.

12.1. Поле для проведения соревнования. Правила соревнования. 

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

Для нашего урока мы возьмем то же самое поле, которое использовали при разборе Урока №11 — «Кегельринг». Это поле представляет собой белый круг, ограниченный черной окружностью. С классическими правилами проведения соревнования «Сумо» по версии Российской ассоциации образовательной робототехники вы можете ознакомиться под спойлером ниже:

Регламент соревнований роботов «Сумо» по версии сайта RAOR.RU 

Ссылка на страницу с правилами на сайте RAOR.RU

1. Общие правила

1.1. Робот должен вытолкнуть робота-соперника за черную линию (За пределы поля).

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

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

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

1.5. Два автономных робота выставляются на ринг (круглое поле). Роботы пытаются вытолкнуть соперника за пределы ринга.

1.6. Робот, выигравший большее количество раундов, выигрывает матч.

1.7. При игре «каждый с каждым», лучшим считается робот выигравший большее количество матчей.

1.8. При большом количестве участников можно организовывать ранжирование по «олимпийской системе» (на вылет).

2. Робот

2.1. Роботы должны быть построены с использованием только деталей конструкторов ЛЕГО Перворобот (LEGO-Mindstorms)

2.2. Во время всего раунда:

Размер робота не должен превышать 25х25х25см.

Вес робота не должен превышать 1кг.

2.3. Робот, по мнению судий, намерено повреждающий других роботов, или как-либо повреждающий покрытие поля, будет дисквалифицирован на всё время состязаний.

2.4. В конструкции робота строго запрещено использовать:

Клеящие вещества.

2.5. Перед матчем роботы проверяются на габариты и вес.

2.6. Робот может иметь множество программ, из которых оператор может выбирать каждый раунд.

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

3. Поле

3.1. Белый круг диаметром 1 м с чёрной каёмкой толщиной в 5 см.

3.2. В круге, красными полосками отмечены стартовые зоны роботов.

3.3. Красной точкой отмечен центр круга.

3.4. Поле размещено на подиуме высотой 16 мм.

4. Проведение Соревнований

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

4.2. Раунды проводятся подряд.

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

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

4.5. Для начинающих: После столкновения роботы не могут маневрировать по рингу.

4.6. Для опытных: После столкновения роботы могут маневрировать по рингу как угодно.

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

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

5.1. Если робот не двигается, не находясь в контакте с другим роботом, больше 10 сек, то он считается проигравшим в раунде.

5.2. При касании любой части робота (даже не присоединённой к роботу) за пределы чёрной каёмки, роботу засчитывается проигрыш в раунде.

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

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

6. Судейство

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

6.2. Контроль и подведение итогов осуществляется судейской коллегией в соответствии с приведенными правилами.

6.3. Судьи обладают всеми полномочиями на протяжении всех состязаний; все участники должны подчиняться их решениям.

6.4. Если появляются какие-то возражения относительно судейства, команда имеет право в устном порядке обжаловать решение судей в Оргкомитете не позднее окончания текущего раунда.

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

6.6. Члены команды и руководитель не должны вмешиваться в действия робота своей команды или робота соперника ни физически, ни на расстоянии. Вмешательство ведет к немедленной дисквалификации.

6.7. Судья может закончить состязание по собственному усмотрению, если робот не сможет продолжить движение в течение 10 секунд.

12.2. Конструкция робота для соревнования «Сумо». 

Базовое поведение робота в «Сумо» очень похоже на поведение робота в «Кегельринге». Роботу также необходимо найти внутри поля объект и вытолкать его за пределы круга. Различия, как водится, кроятся в деталях: теперь этот объект в свою очередь ищет нашего робота и тоже жаждет вытолкать его поскорее. 

Соревнование "Сумо"

Тем не менее — сосредоточимся на своей цели: искать соперника нам по-прежнему будет помогать один из датчиков, способных определять предметы на расстоянии (инфракрасный или ультразвуковой), а своевременно определять черную границу поля будем с помощью датчика цвета. Поэтому для создания и отладки программы робота-сумоиста предлагаем вам использовать того же самого робота, которого мы подготовили для Урока №11 — Кегельринг. 

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

Lego mindstorms EV3 Home

Инструкция по сборке для домашней версии конструктора

Lego mindstorms EV3 Education

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

Получившийся элемент закрепим на передней балке нашего робота.

Lego mindstorms EV3 Home

Размещение на домашней версии набора

Lego mindstorms EV3 Education

Размещение на образовательной версии набора

Наш учебный робот готов. Приступим к созданию программы робота-сумоиста. Замечательно, если у вас есть возможность отлаживать программу, используя ещё одного робота! Если же нет, то ничего страшного: можно задействовать в качестве соперника, например, радиоуправляемую модель автомобиля или те же кегли от «Кегельринга». 

12.3. Создание программы для соревнования «Сумо».

Первая мысль, которая приходит в голову: использовать программу для «Кегельринга», внеся в неё косметические изменения. Действительно, алгоритмы поведения робота в «Кегельринге» и в «Сумо» очень похожи. Они реализуют поиск объекта и выталкивание его за пределы поля. Можно загрузить в робота-сумоиста программу для «Кегельринга», но работать такой сумоист будет не очень эффективно. Тем не менее, знания, полученные на предыдущем уроке, пригодятся нам сейчас.

Настало время загрузить в среду программирования наш проект «lessons-2», создать в нём новую программу «lesson-12» и подключить робота к среде программирования.

Поведенческую модель робота-сумоиста можно условно разделить на две части: поиск соперника и атака соперника. Сначала займемся реализацией первой части — поиска соперника.

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

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

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

Установим соперников на поле напротив друг друга, как показано на рисунке ниже.

Соревнование "Сумо". Расположение роботов.

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

На «Странице аппаратных средств», находящейся в правом нижнем углу среды программирования, выберем вкладку «Представление порта» (Рис. 1, 2 поз. 1) и снимем показание датчика, определяющего расстояние до соперника, установив соответствующий режим отображения показаний.

В нашем случае ультразвуковой датчик в режиме «Расстояние в сантиметрах» показывает значение — 56,1 (Рис. 1 поз. 2). За пороговое значение примем число — 57.

Страница аппаратных средств. Ультразвуковой датчик.

Рис. 1

Инфракрасный датчик в режиме «Приближение» показывает значение — 68 (Рис. 2 поз. 2). За пороговое значение примем число — 70.

Страница аппаратных средств. Инфракрасный датчик.

Рис. 2

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

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

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

Ультразвуковой датчик. Поиск соперника.

Рис. 3

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

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

Инфракрасный датчик. Поиск соперника.

Рис. 4

На этапе отладки этого алгоритма вам придется, подбирая значения «Мощность» моторов «B» и «C» а также пороговое значение датчика, добиться от вашего робота точного обнаружения и остановки строго напротив соперника. Только после этого можно будет переходить к программной реализации алгоритма атаки.

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

"Сумо" атака соперника

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

Приступим к поэтапной реализации алгоритма атаки соперника: для этого создадим в проекте временную программу «lesson-12-1» и начнем её наполнение программными блоками.

  1. Возьмем программный блок «Цикл» «Оранжевой палитры».
  2. Внутрь блока «Цикл» поместим программный блок «Независимое управление моторами» «Зеленой палитры». Режим работы блока установим в значение «Включить» (Рис. 5 поз. 1), мощности моторов «B» и «C» установим в максимальное значение — 100 (Рис. 5 поз. 2).

Алгоритм "Атака соперника". Этап 1 - 2.

Рис. 5

  1. Следом за блоком «Независимое управление моторами» поместим программный блок «Датчик цвета» «Желтой палитры». Режим работы блока установим в значение «Сравнение — Яркость отраженного света» (Рис. 6)

 Алгоритм "Атака соперника". Этап 3.

Рис. 6

В этом режиме программный блок «Датчик цвета» «Желтой палитры» визуально очень похож на программный блок «Ожидание» «Оранжевой палитры» в режиме «Датчик цвета — Сравнение — Яркость отраженного света». Но, в отличие от блока «Ожидание», этот программный блок не ждет выполнения условия, указанного параметрами «Тип сравнения» (Рис. 7 поз. 1) и «Пороговое значение» (Рис. 7 поз. 2), а сразу выдает логическое значение («Истина» или «Ложь») в выходном параметре «Результат сравнения» (Рис. 7 поз. 3) и измеренное значение — в выходном параметре «Освещение» (Рис. 7 поз. 4).

Параметры «Тип сравнения» и «Пороговое значение» на Рис. 7 поз. 1, 2 установим таким образом, чтобы выходной параметр «Результат сравнения» (Рис. 7 поз. 3) выдавал логическое значение «Истина» при пересечении датчиком цвета черной границы ринга.

Алгоритм "Атака соперника". Этап 3.

Рис. 7

  1. В случае использования ультразвукового датчика за блоком «Датчик цвета» установим программный блок «Ультразвуковой датчик» «Желтой палитры». Режим работы блока установим в значение «Сравнение — Расстояние в сантиметрах» (Рис. 8 поз. 1). Параметр «Тип сравнения» (Рис. 8 поз. 2), параметр «Пороговое значение» (Рис. 8 поз. 3) установим таким образом, чтобы выходной параметр «Результат сравнения» (Рис. 8 поз. 4) выдавал логическое значение «Истина» в случае потери из виду роботом соперника.

Алгоритм "Атака соперника". Этап 3.

Рис. 8

В случае использования инфракрасного датчика за блоком «Датчик цвета» установим программный блок «Инфракрасный датчик» «Желтой палитры». Режим работы блока установим в значение «Сравнение — Приближение» (Рис. 9 поз. 1). Параметр «Тип сравнения» (Рис. 9 поз. 2), параметр «Пороговое значение» (Рис. 9 поз. 3) установим таким образом, чтобы выходной параметр «Результат сравнения» (Рис. 9 поз. 4) выдавал логическое значение «Истина» в случае потери из виду роботом соперника.

Алгоритм "Атака соперника". Этап 4.Рис. 9

Давайте ещё раз проанализируем промежуточный код нашего алгоритма атаки: мы включили моторы на максимальную мощность и движемся вперед, постоянно в цикле опрашивая датчики. Если наш робот пересечет черную линию границы ринга, то значение выходного параметра «Результат сравнения» «Датчика цвета» примет значение «Истина». Если наш робот потеряет соперника, то значение выходного параметра «Результат сравнения» датчика, следящего за соперником, также примет значение «Истина». В любом из этих случаев нам следует прекратить атаку, завершив наш цикл. В этом нам поможет программный блок «Логические операции» «Красной палитры». Познакомимся с этим блоком подробнее: программный блок «Логические операции» предназначен для выполнения операций над логическими данными (Рис. 10).

Программный блок "Логические операции"

Рис. 10

Выбранный режим программного блока «Логические операции» «Красной палитры» определяет одну из четырех операций над логическими данными: «И (AND)», «ИЛИ (OR)», «Исключающее ИЛИ» и «Исключение (NOT)». Два входных параметра «a» и «b» (для операции «Исключение (NOT)» — один входной параметр «a») передают в программный блок входные значения, а результирующее значение выдается выходным параметром «Результат». Если вы ранее не сталкивались с логическими операциями, то можете ознакомиться с базовыми знаниями в прилагаемой справке под спойлером.

Логические операции осуществляются только над логическими значениями (данными), результатом логической операции также является логическое значение. Логическое значение может находиться в одном из двух состояний: «Истина» или «Ложь». Логические операции очень часто записываются в табличной форме в виде: «входной параметр 1»«входной параметр 2» = «результат». Логические операции, реализуемые программным блоком «Логические операции» «Красной палитры» в табличной форме можно записать следующим образом:

Логическая операция «И (AND)»

Результатом логической операции «И (AND)» будет значение «Истина» только, если оба входных значения равны «Истина», во всех других случаях значение операции равно «Ложь».

«a» операция «b»   результат
«Ложь» «И (AND)» «Ложь» = «Ложь»
«Ложь» «И (AND)» «Истина» = «Ложь»
«Истина» «И (AND)» «Ложь» = «Ложь»
«Истина» «И (AND)» «Истина» = «Истина»

Логическая операция «ИЛИ (OR)»

Результатом логической операции «ИЛИ (OR)» будет значение «Ложь» только, если оба входных значения равны «Ложь», во всех других случаях значение операции равно «Истина».

«a» операция «b»   результат
«Ложь» «ИЛИ (OR)» «Ложь» = «Ложь»
«Ложь» «ИЛИ (OR)» «Истина» = «Истина»
«Истина» «ИЛИ (OR)» «Ложь» = «Истина»
«Истина» «ИЛИ (OR)» «Истина» = «Истина»

Логическая операция «Исключающее ИЛИ»

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

«a» операция «b»   результат
«Ложь» «Исключающее ИЛИ» «Ложь» = «Ложь»
«Ложь» «Исключающее ИЛИ» «Истина» = «Истина»
«Истина» «Исключающее ИЛИ» «Ложь» = «Истина»
«Истина» «Исключающее ИЛИ» «Истина» = «Ложь»

 Логическая операция «Исключение (NOT)»

Логическая операция «Исключение (NOT)» применяется только к одному входному значению. Результатом логической операции «Исключение (NOT)» над входным значением является противоположное значение.

«a» операция   результат
«Ложь» «Исключение (NOT)» = «Истина»
«Истина» «Исключение (NOT)» = «Ложь»
  1. За программным блоком «Ультразвуковой датчик» или «Инфракрасный датчик» поместим программный блок «Логические операции» «Красной палитры»
  • Выходной параметр «Результат сравнения» программного блока «Датчик цвета» (Рис. 11, 12 поз. 1) соединим с входным параметром «a» программного блока «Логические операции» (Рис. 11, 12 поз. 4).
  • Выходной параметр «Результат сравнения» программного блока «Ультразвуковой (инфракрасный) датчик» (Рис. 11, 12 поз. 2) соединим с входным параметром «b» программного блока «Логические операции» (Рис. 11, 12 поз. 5).
  • Режим работы программного блока «Логические операции» установим в «ИЛИ (OR)» (Рис. 11, 12 поз. 3). В этом случае результат выполнения логической операции будет принимать значение «Истина», только если будет выполнено одно из условий: датчик цвета пересёк черную линию, робот потерял соперника. 
  • Установив режим программного блока «Цикл» в значение «Логическое значение» (Рис. 11, 12 поз. 7), выходной параметр «Результат» программного блока «Логические операции» (Рис. 11, 12 поз. 6) соединим с входным параметром «Пока не будет истина» программного блока «Цикл» (Рис. 11, 12 поз. 8) . Данные настройки завершат выполнение цикла при «Истинном» результате выполнения логической операции.

Алгоритм "Атака соперника". Этап 5.Рис. 11

Алгоритм "Атака соперника". Этап 5. (Нажмите для увеличения)

Рис. 12

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

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

Подведем итог: мы реализовали алгоритм поиска соперника и успешно его протестировали, также прошел проверку алгоритм атаки.

Законченная программа сумоиста должна в бесконечном цикле выполнять последовательно поиск соперника, а затем — атаку соперника. Можно было бы уже объединить обе части нашей программы, если бы не одно маленькое дополнение. Если наш робот остановился над границей ринга, то перед тем, как начать поиск, роботу следует, отъехав немного назад, вернуться внутрь ринга. Дополним нашу программу атаки следующим кодом: за пределами цикла атаки, воспользуемся программным блоком «Переключатель» «Оранжевой палитры». Режим работы блока «Переключатель» установим в «Датчик цвета — Сравнение — Яркость отраженного света». Параметры «Тип сравнения» и «Пороговое значение» установим аналогично ранее используемым в программном блоке «Датчик цвета» «Желтой палитры». Следовательно, если наш робот остановился над черной линией, то выполнение будет передано верхнему контейнеру программного блока «Переключатель». Именно в верхний контейнер поместим программный блок «Рулевое управление» «Зеленой палитры», с настройками параметров, заставляющими робота отъехать назад на один оборот моторов. В нижний контейнер программного блока «Переключатель» поместим программный блок, выключающий моторы (Рис. 13). Повторно протестировав алгоритм атаки, убедимся, что после того, как робот-сумоист вытолкал соперника за пределы ринга, он вернулся немного назад.

Отъезд

Рис. 13

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

Программа робота-сумоиста

Программа робота-сумоиста

Заключение:

Программа, которую мы разобрали с вами на этом уроке, реализует только один прямой силовой алгоритм поведения робота-сумоиста. Она подразумевает, что в прямом силовом противостоянии робот должен непременно одолеть своего соперника. Но наш учебный робот, конечно же, совсем не похож на мускулистого борца-сумо. Для того, чтобы уверенно выступить в этом состязании, необходимо уделить самое пристальное внимание в первую очередь конструкции робота, создать прочную, защищенную платформу, с помощью дополнительных ведущих колес или гусениц повысить сцепление с поверхностью ринга. На популярном видеохостинге Youtube.com по запросу «сумо lego роботов» можно найти множество видеороликов с реальных соревнований роботов, из которых вы непременно почерпнёте для себя интересные идеи для реализации в собственных конструкциях.

Главная же цель этого урока — на практическом примере показать вам метод непрерывной обработки показаний от пары датчиков. Можно ли усовершенствовать нашу программу? Безусловно! Например, используя программный блок «Случайное значение» «Красной палитры», изменить алгоритм поиска соперника таким образом, чтобы задавать случайное вращение робота влево или вправо, тем самым, дезориентируя соперника. Попробуйте самостоятельно встроить в нашу программу этот дополнительный код. Подумайте так же над тем, какие изменения нужно внести в прорамму, в случае проведения соревнования на черном ринге с белой границей. Возможно, что у вас появятся собственные идеи улучшения: поделитесь ими в комментариях к уроку!

Motor Module

First Motor Assembly

01

02

03

04

05

06

07

08

09

10

11

12

Second Motor Assembly

Build a second motor assembly as a mirror image of the first.

13

14

15

16

17

18

19

Rear Skid Assembly

20

21

22

23

24

25

26

27

Bumper Assembly

First Bumper Assembly

28

29

30

31

32

Second Bumper Assembly

Build a second front bumper as a mirror image of the first.

33

34

35

36

37

38

39

40

41

Touch Sensor Module

42

43

44

45

Second Touch Sensor

Build a second touch sensor module as a mirror image of the first.

Light Sensor Module

46

47

48

49

Complete Assembly

50

51

52

53

54

55

56

57

58

59

60

61

62

Connect the left touch sensor to port 1 and the right touch sensor to port 2.
Note that the wires cross underneath the EV3 brick.

63

Connect the left motor to port C and the right motor to port B.

64

Congratulations

You have completed your EV3 sumo robot.

Содержание

  • 1 Необходимые детали для робота-сумо ev3
  • 2 Пошаговая инструкция по сборке
  • 3 Коротко о программировании сумо-робота

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

Роботы сумоисты EV3

Необходимые детали для робота-сумо ev3

Модели для сумо состоят из следующих блоков и элементов:

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

Датчики и моторы

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

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

  1. Инфракрасный маяк служит для передачи сигналов роботу. Он агрегирует с другими лего-ботами.
  2. Температурный датчик работает по принципу органов чувств человека и других живых организмов.
  3. Ультразвуковой индикатор реагирует на соперника, что важно на соревнованиях любого уровня.
  4. Индикатор цвета расширяет возможности робота, ориентируя его на ринге.
  5. Датчик касания — самый простой и важный элемент.

Роботы сумоисты на ринге

Одно состязание робо-сумо состоит из 3-х раундов, общая продолжительность которых составляет 3 минуты.

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

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

  1. «Ожидание» – 5 секунд.
  2. «Звуковой сигнал» – начало работы.
  3. Два цикла «Начало» и «Неограниченный» – старт движения.
  4. «Определение цвета» – по умолчанию робот видит черный колер; при этом механизм отъезжает на два вращения назад.
  5. «Управление рулевое» – корректируется количество оборотов.
  6. Режим «Нет цвета» – ведется расчет имеющихся препятствий, расстояния до них и последующих манипуляций.
  7. «Инфракрасный индикатор» – действует по принципу распознавания и приближения объектов.
  8. «Истина» – ветка, которая активируется, если до препятствия менее 60 единиц.
  9. «Лож» – противоположность восьмой позиции в списке.
  10. «Независимое управление» – на противоположных мощностях двигателей бот будет вертеться на месте, пока дистанция до соперника не станет менее 60 единиц.

Выставив указанные параметры, проводят тестирование робота ev3 для сумо.

Моторы большой и средний

Основной двигатель серверного типа сделан под NXT с увеличенной корпусной частью. Характеристики:

  • оборотистость предельная (об./мин.) — 170;
  • заданный/рабочий момент кручения (Н/см) — 40/20;
  • индикатор поворотного угла – есть, погрешность – до одного градуса.

Средний сервомотор «ев3» базируется на Power Function, ориентирован на высокие скорости и низкие нагрузки. Параметры:

  • максимум оборотов (об./мин.) — 250;
  • крутящий момент (Н/см) — 12/8;
  • энкодер, отвечающий за угол поворота с точностью до одного градуса.

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

Роботы сумо EV3

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

Удаленный инфракрасный маяк

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

ИК-маяк может определять дистанцию до соперника, посылая сведения о примерном своем расположении и удаленности. Для использования функции потребуются батарейки типа «ААА».

Датчик цвета и прикосновения

Цветовой индикатор «сумоиста» отличает семь оттенков с возможностью определения отсутствия колера. Дополнительная функция – работа в режиме подсветки.

Опции:

  • улавливание красного и его окружающего фона;
  • контроль разницы между контрастными оттенками;
  • рабочая частота – 1 кГц.

Датчик касания фиксирует активацию или отпускание кнопки, подсчитывает число нажатий.

Инфракрасный сенсор

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

Сборка роботов для сумо

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

Пошаговая инструкция по сборке

Собрать мощного робота-сумоиста Lego не сложно, если знать все операции по этапам.

Боевой бот Mindstorms ev3 конструируется следующим образом:

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

Бота собирают в нескольких базовых исполнениях. Таблица ориентирует пользователей на выбор модели, подходящей для заданных целей, по сравнению с категорией Education.

Характеристика NXT EV3
Основной процессор ARM AT91-SAM 7S256, Atmel. 48 МГц, «Флеш-память» – 256 кБ, RAM – 64 кБ ARM9, 300 МГц, Память – 16/64 кБ
Вспомогательное ПО «Восьмибитный» «Амтел», 8 МГц, «Флеш»/«РАМ» – 4,0/0,52 кБ Не предусмотрено
Операционная система Propietary Linux
Ввод Четыре гнезда с цифровыми и аналоговыми портами. Скорость – 9600 бит/с Аналоговые и цифровые разъемы со скоростью 460,8 Кбит/с
Вывод 3 4
Передача сведений Full speed 12 Мбит/с High speed 480 Мбит/с
Способ подключения Отсутствует Wi-Fi, Flash (до трех носителей и передатчиков)
Чтение карт SD Нет miniSD до 32 Гб
Совместимость с мобильными девайсами «Андроид» «Андроид», iOS
Монитор Монохромный LCD (100×64 Px) LCD (178×128 Px)
Взаимодействие Bluetooth, USB Bluetooth 2.1, USB 2.0/1.1, Wi-Fi

Коротко о программировании сумо-робота

Регламент состязаний предполагает расположение «бойцов» во внутреннем секторе круга. Диаметр арены составляет 1540 мм, черная приграничная окантовка имеет ширину 50 мм. В середине круга предусмотрены две стартовые линии. На них соревнующиеся машины должны выждать 5 секунд до того, как броситься в схватку. В связи с этим секундомер пуска настраивается с соответствующей задержкой.

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

Настройка предполагает создание для мотора «А» предельной скорости перемещения вперед. Соответственно, мотор «В» на гусеницах альтернативно вращается назад. Независимое управление позволяет вращаться конструкции в пределах одной оси.

Пользователь корректирует робота, вращая его на одной точке. В этом помогает инфракрасный датчик, определяющий цель. Используют опцию «Приближение», настроив дистанцию 0,5 м. Рабочий диаметр для сражения ботов составляет по диагонали 1,5 м.

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

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

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

Робототехника

Урок №12 — Сумо

Введение:

Урок №12 курса «Практика» представляет разбор решения, наверное, самого популярного соревнования роботов — «Сумо». Главная задача робота-сумоиста состоит в том, чтобы вытолкнуть за пределы ринга своего соперника. Существует множество вариантов правил проведения этого состязания, накладывающих различные ограничения в первую очередь на размеры и конструкцию роботов, тем не менее, базовые алгоритмы поведения робота при этом очень похожи. Поэтому наш урок в значительной степени будет направлен на реализацию программы поведения, а в завершающей части урока рассмотрим некоторые советы по практической подготовке к соревнованию роботов.

12.1. Поле для проведения соревнования. Правила соревнования.

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

Для нашего урока мы возьмем то же самое поле, которое использовали при разборе Урока №11 — «Кегельринг». Это поле представляет собой белый круг, ограниченный черной окружностью. С классическими правилами проведения соревнования «Сумо» по версии Российской ассоциации образовательной робототехники вы можете ознакомиться под спойлером ниже:

12.2. Конструкция робота для соревнования «Сумо».

Базовое поведение робота в «Сумо» очень похоже на поведение робота в «Кегельринге». Роботу также необходимо найти внутри поля объект и вытолкать его за пределы круга. Различия, как водится, кроятся в деталях: теперь этот объект в свою очередь ищет нашего робота и тоже жаждет вытолкать его поскорее.

Тем не менее — сосредоточимся на своей цели: искать соперника нам по-прежнему будет помогать один из датчиков, способных определять предметы на расстоянии (инфракрасный или ультразвуковой), а своевременно определять черную границу поля будем с помощью датчика цвета. Поэтому для создания и отладки программы робота-сумоиста предлагаем вам использовать того же самого робота, которого мы подготовили для Урока №11 — Кегельринг.

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

Lego mindstorms EV3 Home

Lego mindstorms EV3 Education

Получившийся элемент закрепим на передней балке нашего робота.

Lego mindstorms EV3 Home

Lego mindstorms EV3 Education

Наш учебный робот готов. Приступим к созданию программы робота-сумоиста. Замечательно, если у вас есть возможность отлаживать программу, используя ещё одного робота! Если же нет, то ничего страшного: можно задействовать в качестве соперника, например, радиоуправляемую модель автомобиля или те же кегли от «Кегельринга».

12.3. Создание программы для соревнования «Сумо».

Первая мысль, которая приходит в голову: использовать программу для «Кегельринга», внеся в неё косметические изменения. Действительно, алгоритмы поведения робота в «Кегельринге» и в «Сумо»очень похожи. Они реализуют поиск объекта и выталкивание его за пределы поля. Можно загрузить в робота-сумоиста программу для «Кегельринга», но работать такой сумоист будет не очень эффективно. Тем не менее, знания, полученные на предыдущем уроке, пригодятся нам сейчас.

Настало время загрузить в среду программирования наш проект «lessons-2», создать в нём новую программу «lesson-12» и подключить робота к среде программирования.

Поведенческую модель робота-сумоиста можно условно разделить на две части: поиск соперника и атака соперника. Сначала займемся реализацией первой части — поиска соперника.

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

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

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

Установим соперников на поле напротив друг друга, как показано на рисунке ниже.

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

На «Странице аппаратных средств», находящейся в правом нижнем углу среды программирования, выберем вкладку «Представление порта» (Рис. 1, 2 поз. 1) и снимем показание датчика, определяющего расстояние до соперника, установив соответствующий режим отображения показаний.

В нашем случае ультразвуковой датчик в режиме «Расстояние в сантиметрах» показывает значение — 56,1 (Рис. 1 поз. 2). За пороговое значение примем число — 57.

Инфракрасный датчик в режиме «Приближение» показывает значение — 68 (Рис. 2 поз. 2). За пороговое значение примем число — 70.

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

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

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

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

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

На этапе отладки этого алгоритма вам придется, подбирая значения «Мощность» моторов «B» и «C» а также пороговое значение датчика, добиться от вашего робота точного обнаружения и остановки строго напротив соперника. Только после этого можно будет переходить к программной реализации алгоритма атаки.

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

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

Приступим к поэтапной реализации алгоритма атаки соперника: для этого создадим в проекте временную программу «lesson-12-1» и начнем её наполнение программными блоками.

  1. Возьмем программный блок «Цикл» «Оранжевой палитры».
  2. Внутрь блока «Цикл» поместим программный блок «Независимое управление моторами» «Зеленой палитры». Режим работы блока установим в значение «Включить»(Рис. 5 поз. 1), мощности моторов «B» и «C» установим в максимальное значение — 100(Рис. 5 поз. 2).

  1. Следом за блоком «Независимое управление моторами» поместим программный блок «Датчик цвета» «Желтой палитры». Режим работы блока установим в значение «Сравнение — Яркость отраженного света»(Рис. 6)

В этом режиме программный блок «Датчик цвета» «Желтой палитры» визуально очень похож на программный блок «Ожидание» «Оранжевой палитры» в режиме «Датчик цвета — Сравнение — Яркость отраженного света». Но, в отличие от блока «Ожидание», этот программный блок не ждет выполнения условия, указанного параметрами «Тип сравнения» (Рис. 7 поз. 1) и «Пороговое значение» (Рис. 7 поз. 2), а сразу выдает логическое значение («Истина» или «Ложь») в выходном параметре «Результат сравнения» (Рис. 7 поз. 3) и измеренное значение — в выходном параметре «Освещение» (Рис. 7 поз. 4).

Параметры «Тип сравнения» и «Пороговое значение» на Рис. 7 поз. 1, 2 установим таким образом, чтобы выходной параметр «Результат сравнения» (Рис. 7 поз. 3) выдавал логическое значение «Истина» при пересечении датчиком цвета черной границы ринга.

  1. В случае использования ультразвукового датчика за блоком «Датчик цвета» установим программный блок «Ультразвуковой датчик» «Желтой палитры». Режим работы блока установим в значение «Сравнение — Расстояние в сантиметрах» (Рис. 8 поз. 1). Параметр «Тип сравнения» (Рис. 8 поз. 2), параметр «Пороговое значение» (Рис. 8 поз. 3) установим таким образом, чтобы выходной параметр «Результат сравнения» (Рис. 8 поз. 4) выдавал логическое значение «Истина» в случае потери из виду роботом соперника.

В случае использования инфракрасного датчика за блоком «Датчик цвета» установим программный блок «Инфракрасный датчик» «Желтой палитры». Режим работы блока установим в значение «Сравнение — Приближение» (Рис. 9 поз. 1). Параметр «Тип сравнения» (Рис. 9 поз. 2), параметр «Пороговое значение» (Рис. 9 поз. 3) установим таким образом, чтобы выходной параметр «Результат сравнения» (Рис. 9 поз. 4) выдавал логическое значение «Истина» в случае потери из виду роботом соперника.

Давайте ещё раз проанализируем промежуточный код нашего алгоритма атаки: мы включили моторы на максимальную мощность и движемся вперед, постоянно в цикле опрашивая датчики. Если наш робот пересечет черную линию границы ринга, то значение выходного параметра «Результат сравнения» «Датчика цвета» примет значение «Истина». Если наш робот потеряет соперника, то значение выходного параметра «Результат сравнения» датчика, следящего за соперником, также примет значение «Истина». В любом из этих случаев нам следует прекратить атаку, завершив наш цикл. В этом нам поможет программный блок «Логические операции» «Красной палитры». Познакомимся с этим блоком подробнее: программный блок «Логические операции» предназначен для выполнения операций над логическими данными (Рис. 10).

Выбранный режим программного блока «Логические операции» «Красной палитры» определяет одну из четырех операций над логическими данными: «И (AND)», «ИЛИ (OR)», «Исключающее ИЛИ» и «Исключение (NOT)». Два входных параметра «a» и «b» (для операции «Исключение (NOT)» — один входной параметр «a») передают в программный блок входные значения, а результирующее значение выдается выходным параметром «Результат». Если вы ранее не сталкивались с логическими операциями, то можете ознакомиться с базовыми знаниями в прилагаемой справке под спойлером.

  1. За программным блоком «Ультразвуковой датчик» или «Инфракрасный датчик» поместим программный блок «Логические операции» «Красной палитры».
  • Выходной параметр «Результат сравнения» программного блока «Датчик цвета» (Рис. 11, 12 поз. 1)соединим с входным параметром «a» программного блока «Логические операции» (Рис. 11, 12 поз. 4).
  • Выходной параметр «Результат сравнения» программного блока «Ультразвуковой (инфракрасный) датчик» (Рис. 11, 12 поз. 2) соединим с входным параметром «b» программного блока «Логические операции» (Рис. 11, 12 поз. 5).
  • Режим работы программного блока «Логические операции» установим в «ИЛИ (OR)»(Рис. 11, 12 поз. 3). В этом случае результат выполнения логической операции будет принимать значение «Истина», только если будет выполнено одно из условий: датчик цвета пересёк черную линию, робот потерял соперника.
  • Установив режим программного блока «Цикл» в значение «Логическое значение»(Рис. 11, 12 поз. 7), выходной параметр «Результат» программного блока «Логические операции» (Рис. 11, 12 поз. 6)соединим с входным параметром «Пока не будет истина» программного блока «Цикл»(Рис. 11, 12 поз. 8) . Данные настройки завершат выполнение цикла при «Истинном» результате выполнения логической операции.

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

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

Подведем итог: мы реализовали алгоритм поиска соперника и успешно его протестировали, также прошел проверку алгоритм атаки.

Законченная программа сумоиста должна в бесконечном цикле выполнять последовательно поиск соперника, а затем — атаку соперника. Можно было бы уже объединить обе части нашей программы, если бы не одно маленькое дополнение. Если наш робот остановился над границей ринга, то перед тем, как начать поиск, роботу следует, отъехав немного назад, вернуться внутрь ринга. Дополним нашу программу атаки следующим кодом: за пределами цикла атаки, воспользуемся программным блоком «Переключатель» «Оранжевой палитры». Режим работы блока «Переключатель» установим в «Датчик цвета — Сравнение — Яркость отраженного света». Параметры «Тип сравнения» и «Пороговое значение» установим аналогично ранее используемым в программном блоке «Датчик цвета» «Желтой палитры». Следовательно, если наш робот остановился над черной линией, то выполнение будет передано верхнему контейнеру программного блока «Переключатель». Именно в верхний контейнер поместим программный блок «Рулевое управление» «Зеленой палитры», с настройками параметров, заставляющими робота отъехать назад на один оборот моторов. В нижний контейнер программного блока «Переключатель» поместим программный блок, выключающий моторы (Рис. 13). Повторно протестировав алгоритм атаки, убедимся, что после того, как робот-сумоист вытолкал соперника за пределы ринга, он вернулся немного назад.

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

Заключение:

Программа, которую мы разобрали с вами на этом уроке, реализует только один прямой силовой алгоритм поведения робота-сумоиста. Она подразумевает, что в прямом силовом противостоянии робот должен непременно одолеть своего соперника. Но наш учебный робот, конечно же, совсем не похож на мускулистого борца-сумо. Для того, чтобы уверенно выступить в этом состязании, необходимо уделить самое пристальное внимание в первую очередь конструкции робота, создать прочную, защищенную платформу, с помощью дополнительных ведущих колес или гусениц повысить сцепление с поверхностью ринга. На популярном видеохостинге Youtube.com по запросу «сумо lego роботов» можно найти множество видеороликов с реальных соревнований роботов, из которых вы непременно почерпнёте для себя интересные идеи для реализации в собственных конструкциях.

Главная же цель этого урока — на практическом примере показать вам метод непрерывной обработки показаний от пары датчиков. Можно ли усовершенствовать нашу программу? Безусловно! Например, используя программный блок «Случайное значение» «Красной палитры», изменить алгоритм поиска соперника таким образом, чтобы задавать случайное вращение робота влево или вправо, тем самым, дезориентируя соперника. Попробуйте самостоятельно встроить в нашу программу этот дополнительный код. Подумайте так же над тем, какие изменения нужно внести в прорамму, в случае проведения соревнования на черном ринге с белой границей. Возможно, что у вас появятся собственные идеи улучшения: поделитесь ими в комментариях к уроку!

Источник

Понравилась статья? Поделить с друзьями:
  • Диазолин капли в нос инструкция по применению
  • Утюг филипс gc 3910 gc3920 инструкция на русском языке
  • Флексотрон соло инструкция по применению цена отзывы аналоги
  • Парацетамол медисорб таблетки инструкция по применению цена
  • Должностная инструкция для слесаря механосборочных работ