Как сделать сумо робота ev3

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

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

мрп-в3 обложка

мрп-в2 Обложка

мрп-в1 Обложка

2. Модели без мотора: изучаем механизмы и механические передачи

Простые модели для изучения механизмов и механических передач.

ИМ-В1 обложка

МРМ-В1 обложка

3. Шагающие роботы

шагающий одномоторный Обложка

шагающий 6-ног 2 Обложка

4. Игры и соревнования

Модели и регламенты игр для проведения занятия в игровой форме.

робопенальти обложка

5. Захваты

Здесь собраны варианты конструкций захватов для проведения занятий с перемещением объектов.

захват зсм-о-в1

захват 5 Обложка

захват 6 Обложка

захват 8 Обложка

захват 9 Обложка

захват 10 Обложка

6. Манипуляторы

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

манипулятор 2 Обложка

манипулятор 3 Обложка

манипулятор 4 Обложка

7. Плакаты по робототехнике

Здесь найдете файлы для самостоятельной печати плакатов по робототехнике. Картинки представлены в хорошем разрешении.

О робототехнике и не только

Участие в соревнованиях

Городской конкурс ИнфоРобоЗнайка

Образование не есть только школьное дело. Школа даёт лишь ключи к этому образованию. Внешкольное образование есть вся жизнь! Всю жизнь должен человек себя образовывать

А.В. Луначарский
Академик Академии наук СССР

Робототехника и IT Ульяновска, программирование для детей.

Программа для борьбы "СУМО" для LEGO MINDSTORMS NXT

Возможно Вас заинтересует:

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

Самой распространенный вопрос - как измерить расстояние от от одной точки до другой без датчиков. Разумеется линейкой. Но ведь роботу нельзя просто взять и сказать - езжай на 3 см. вперед. Только градусы, обороты, секунды. Данный материал поможет

Пропорциональный регулятор и пропорциональный регулятор с кубом LEGO NXT EV3

Движение по линии всегда самый сложный нюанс. Движение с двумя датчиками освещенности - еще сложнее. МЫ предлагаем Вам готовые алгоритмы для LEGO MINDSTORMS и LEGO EV3. Если возникли вопросы - оставляйте в комментариях.

Кегельринг на LEGO NXT

Кегельринг — это один из видов соревнований в робототехнике. Цель робота — вытолкнуть кегли с ринга за минимальное время. Именно поэтому вид соревнований и называется кегельринг (кегли + ринг). Предлагаем вашему вниманию простейший алгоритм для для

Нажмите, чтобы узнать подробности

Конспект занятия робототехники. Занятие посвящено построению конструкции робота и проведению мини-соревнования между обучающимися детского объединения.

Автор: Кустов Илья Викторович

Краткое описание: конспект занятия робототехники. Занятие посвящено построению конструкции робота и проведению мини-соревнования между обучающимися детского объединения.

Тип занятия: занятие закрепления полученных знаний и применение их на практике.

Форма занятия: комбинированное занятие.

Цели занятия:

Предметная: подготовить роботов на базе Lego Mindstorms RV3, сконструированных на предыдущих занятиях, для проведения соревнований.

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

Метапредметная: формирование представлений о возможностях конструктора LEGO Mindstorms EV3 в разнообразных сферах деятельности.

Методы обучения: наглядный, частично-поисковый, исследовательский.

Учащиеся должны знать/понимать:

Основные принципы конструирования робота с использованием моторов и деталей Lego Mindstorms.

Основные способы управлением робота. (Дистанционное, программное)

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

Критерии робота. (Ограничения по длине и ширине)

Оборудование: компьютер, наборы Lego Mindstorms EV3, ноутбуки среда программирования, поля для заездов, секундомер.

План занятия:

Организационный момент (2 мин)

Повторение теоретического материала предыдущего урока (5 мин)

Практическая работа: доработка робота (10 мин)

Практическая работа: настройка и установка программы (5 мин)

Подведение итогов урока. Рефлексия (3мин)

Организационный момент.

Раздача роботов, собранных на прошлом уроке.

Учитель: Добрый день, ребята! На прошлом уроке мы с вами собирали

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

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

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

1. Что такое робот-сумоист?

2. Чем отличается такой робот от обычных роботов-тележек?

3. Какие блоки программирования нам понадобятся для того что бы запустить ваших роботов?

Обучающиеся отвечают на предложенные вопросы.

III – IV. Практическая работа: сборка и разработка алгоритма для робота.

Учитель: Теперь давайте вернёмся к нашим роботам (на данном уроке это роботы-сумоисты, которые мы собирали на прошлом занятии).

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

Рекомендации: Если команда состоит из двух и более человек, следует

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

Учитель: Для начала определим на какой стадии сборки находятся ваши роботы.

Необходимо убедиться что конструкция подходит под критерии соревнований:

- Максимальная длина – 25 см.

- Максимальная ширина – 25 см.

А также убедиться что конструкция крепкая и ни какие детали не отделятся при движении робота.

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

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

1. Не включен блок EV3.

2. Не загружена пробная программа.

3. Номер порта мотора в программе не соответствует номеру порта мотора на роботе.

Проведение соревнований.

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

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

После проведения контрольных замеров проводится жеребьёвка и первые две команды выставляют своих роботов на поле.

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

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

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

Подведение итогов урока. Рефлексия.

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

Онлайн-книга по созданию робота минисумо на базе Ардуино

сумо

Функционируют отдельно друг от друга.

Безусловно, в человеческом понимании этого сложного философского понятия. J

От лирики перейдем к практике. J

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

Итак, что должен наш сумо-робот сделать при такой расстановке (предположим он стоит в левой нижней четверти ринга)?

  1. Сразу после старта поединка повернуться направо примерно на 135 градусов
  2. Увидеть соперника передним датчиком расстояния.
  3. Если увидел, то начать движение на него и вытолкнуть с ринга.

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

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

Второй пункт с задачей увидеть соперника давайте разбирать подробнее. Первое – на каком расстоянии будем искать соперника? Помним, что ринг для минисумо имеет диаметр 77 сантиметров и выбранные нами датчики отлично измеряют расстояние от 10 до 50 сантиметров. Итак вывод простой – с учетом расстановки роботов противника лучше искать на расстоянии до 30 сантиметров от себя – будет меньше ошибок поиска.

Третий пункт также непрост. Итак – нашли и выталкиваем соперника – с этим все понятно. А если не увидели его на этом месте (он начал движение и ушел на другую позицию пока мы поворачивали робота предположим) – что будем делать? Давайте попробуем повернуться направо на небольшой угол и еще раз поискать соперника. Все эти действия будем делать если датчики черного/белого не выехали на белое поле.

Создадим блок схему программы поведения робота:


Начало программы – момент, когда Вы включили питание робота.

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

Затем начинаем исполнять логику, которую с Вами разобрали чуть ранее. На блок схеме желтый ромб означает оператор условия (if(условияе)else), прямоугольник – оператор исполнения.

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

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

Итак, соберем программно нашего робота в единое целое – глаза, моторы и задуманное блок схемой поведение.

//Скетч для простого выталкивания соперника с ринга

//робот сразу после старта поворачивает на 135 градусов

//и если не находит соперника, то крутится направо

//определяем соответствие контактов микроконтролера

//и контакам драйвера двигателей TB6612FNG

//объявляем переменные, содержащие значения

//аналоговых портов микроконтроллера, подключаемых

//к ИК датчикам Sharp

int front_eye = A0;

int left_eye = A1;

int right_eye = A8;

//или выехали за него

//объявляем переменные, содержащие значения

//аналоговых портов, подключенных к датчикам

int left_bw = A6;

int right_bw = A11;

//процедура инициации портов

//инициируем переменные моторов

// делаем повопрот на 135 градусов

//левый мотор по направлению движения робота

//(против часовой стрелки)

//Правый мотор против направления движения робота

//(против часовой стрелки)

delay(100); // длительность задержки определяет

//угол поворота робота

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

//проверяем наличие препятствия фронтальным датчиком

//на расстоянии ближе 40 см

//(значение analogRead() — 333 по таблице)

//левый мотор по направлению движения робота

//(против часовой стрелки)

//Правый мотор по направления движения робота

//(по часовой стрелке)

delay(100); // длительность задержки 0.1 секунда

else if(analogRead(left_eye) > 333)

//не найден спереди то проверяем слева

//если соперник слева найден поворачиваем налево

//левый мотор против направлению движения

//робота (по часовой стрелки)

//Правый мотор по направлению движения

//робота (по часовой стрелки)

delay(60); // длительность задержки

//определяет угол поворота робота

//и подбирается экспериментально в

//зависимости от веса робота, моторов и колес

else if(analogRead(right_eye) > 333)

//соперник не найден спереди и слева то проверяем справа

//если соперник справа найден поворачиваем

//направо на 90 градусов

//левый мотор по направлению движения робота

//(против часовой стрелки)

//Правый мотор против направления движения робота

//(против часовой стрелки)

delay(30); // длительность задержки определяет

//угол поворота робота

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

//и справа то поворачиваем направо на 5 градусов

//левый мотор по направлению движения робота

//(против часовой стрелки)

//Правый мотор против направления движения

//робота (ппротив часовой стрелки)

delay(10); // длительность задержки определяет

//угол поворота робота

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

//проверяем что робот не выскочил за пределы ринга

//оба датчика на черном поле

if((analogRead(left_bw) > 400)&&(analogRead(right_bw) > 400))

//ничего не делаем

else // выехали на белое поле одним или обоими датчиками

//Отъезжаем на 5 сантиметров

//левый мотор против направления движения робота

//(по часовой стрелки)

//Правый мотор против направления движения робота

//(против часовой стрелки)

delay(100); // длительность задержки определяет

//расстояние отъезда назад

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

// разворачиваемся на 180 градусов в правую сторону

//левый мотор по направлению движения робота

//(против часовой стрелки)

//Правый мотор против направления движения робота

//(против часовой стрелки)

delay(130); // длительность задержки определяет

//угол поворота робота

//и подбирается экспериментально в зависимости

//от веса робота, моторов и колес

//конец цикла loop — идем на начало цикла и проверяем расстояние спереди

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

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


Робот начинаем поворачиваться на 135 градусов направо (красная черта – начало отсчета, белая черта – текущее положение).




Обнаружен соперник. Движение вперед.


Соперник утерян из вида при движении вперед.


Начало движения направо.


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


При продолжении движения направо соперник найден левым ИК датчиком (желтая линия).

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