Робофутбол на ардуино

Робофутбол на ардуино

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

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

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

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

Сезон 2016

WRO сезона 2016 привнесло в регламент футбола новые изменения и теперь он называется «третьим поколением футбола WRO» (WRO Football gen.III). Кардинально изменилось поле, теперь игра идет на ковре, на поле нет цветовой зональной разметки. Появились высокие борта для ориентации роботов на поле с применением дальномеров. Конструктивно изменились ворота — за счет изменения их глубины поле кажется огромным и появился больший простор для маневров. Выглядит поле теперь так:

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

Вратарю — когда его датчик ориентирован в направлении ворот, которые он защищает

Либо когда вратарь направлен на ворота соперников (датчик смотрит вправо) с оговоркой, что находясь вне штрафной площадки он не должен создавать УЗ-помех другим роботам:

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

Нападающий

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

Давайте подумаем, как бы человек действовал на месте робота? Наверное оглянулся бы в поисках мяча и, заметив его, развернулся к нему лицом, затем побежал бы в его сторону. Может ли робот сделать тоже самое? Может! Правда у него нет головы и шеи, поэтому ему придется развернуться всем корпусом, пока излучение от ИК-мяча не будет строго одинаково с его левой и правой стороны (шаг 1)

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

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

Мы «бежим» на мяч, судорожно соображая, что делать дальше. Очеидно, что если робот продолжит прямолинейное движение он ударит меч и тот покатится в направлении движения робота, но ведь нам нужно подтолкнуть его к воротам, как же быть?

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

Сделать это он может двумя способами — объехав мяч слева или справа. Принять решение об оптимальном пути объезда можно на основе показаний датчика компаса. Если отклонение от направления на ворота соперников положительное (как на рисунке выше), объезжать следует справа, иначе — слева.

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

Приняв решение, с какой стороны объезжать мяч, робот должен начать движение по окружности, которую мы назвали «орбитой», до точки схода с нее (см. шаг 4 на рисунке выше). Двигаться вокруг мяча по окружности можно опираясь на показания датчика-поисковика мяча, Такой круг можно описать, если удерживать его показания в одной из боковых зон (в зависимости от нужного направления движения — по часовой стрелке или против).

Далее начинается самое интересное — в какой точке мы должны сойти с орбиты? Очевидно, что это будет точка ее пересечения с прямой, проложенной через мяч и центр вражеских ворот. Для схода с орбиты мы должны опираться на показания датчика компаса и знание о том, по часовой стрелке мы описываем орбиту или против, но об этом — в следующей части статьи

Источник

Робо-футболист от начинающих. Соревнования в МФТИ. Android & Arduino & Bluetooth

Данная статья является полу-сиквелом к работе Love, Death and Robots «Машинка на Arduino, управляемая Android-устройством по Bluetooth, — полный цикл», состоящей из двух частей (раз, два). Вещи, описанные там, были немного доработаны-переделаны, а сам робот из ездящей машинки превратился в футболиста. В общем, есть интересный материал о том, как делать не надо.

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

Физическая часть

За основу взяты все те же принципы, описанные в первой статье:

  • бутерброд из Arduino Uno и Motor Shield.
  • два мотора, подключенных к Motor Shield.

А вот изменения:

  • появилась ударная часть, как ни странно, отвечающая за удар по мячу.
  • корпус теперь полностью свой, распечатанный на 3D-принтере.

Корпус

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

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

  • Высокие бортики. Роботы во время игры сталкиваются, бортики защищают не только ваши провода, но и ваших соперников от ваших проводов.
  • Центр тяжести и устойчивость. Центр тяжести конечно там, где плата. Колеса расположены возле нее, поэтому проскальзывать не будут. Плюс сверху на плату кладется батарейка.
  • Чтобы робот не клевал носом или задом, ставим и туда и сюда шарики, идущие в наборе от амперки (если их нет, можно заменить на любую другую скользящую конструкцию).
  • Жесткость конструкции. Платформа не должна провисать под тяжестью плат и моторов. Не поскупитесь, либо используйте твердые материалы (фанеру), либо усильте пластмассовую конструкцию рейками

А теперь основные глупости

Шарики, добавленные для отсутствия «клевания», поднимали платформу так, что колеса не доставали до пола. Чтобы этого избежать, либо используем колеса большего диаметра, либо укорачиваем опорные конструкции. В общем, просчитываем это заранее!

Ударная часть. Она не бьет. Бьет, но недостаточно круто. В нашей первой модели стояла серво-машинка, к которой подсоединялась деталь, похожая на ковш снегоуборочной машины. Меняя положение сервы (от 0 до 30 градусов) можно сымитировать удар. Но сервы оказались медленными, поэтому удар выходит на двоечку.

Выхода два: добавлять рывок при ударе или заменять сервы на соленоиды. Первый вариант — увеличить импульс можно за счет подачи скорости на колеса во время удара. На практике так: пользователь нажимает кнопку удара, робот стартует с места (чуть-чуть) и одновременно делать удар.

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

Программная часть

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

Android

Напомню, приложения написано мной с нуля. За прошедшие полгода немного понял в этом деле поболее, поэтому опишу до чего допер додумался.

Во-первых, пойдем к упрощению. Теперь протокол общения следующий: «открывающий символ» + «значение» + «закрывающий символ» (Чтобы понять, как я получаю эти значения и о чем вообще речь, смотри полный разбор приложения здесь). Это работает как для значения скорости, так и для угла. Поскольку тип удара только один, ему такие мудрости не нужны, поэтому команда состоит из одного символа «/» (об команде удара через абзац).

Типичная команда будет выглядеть так: #125#@180@, где 125 — скорость, а 180 — угол. Конечно, это можно еще упростить, но одной из задач было сохранить легкость и читабельность, чтобы потом это можно было легко объяснить, в том числе детям.

Появилась новая команда sendHit(), которая срабатывает во время нажатия на кнопку «Удар». Она отправляет один знак «/». Поскольку обычный bluetooth 2.0+ не страдает от данных, поступаемых одновременно, то есть умеет ставить их в очередь и не терять, нам это контролировать не надо. Если же вы собираетесь работать с Bluetooth Low Energy 4.0+ (ну вдруг), там уже очередь надо будет организовывать вручную, иначе данные будут теряться.

Arduino

Так поменялся протокол отправки команд, также поменялся алгоритм приема. Он упростился. Также добавился один if, отслеживающий удар. Полный разбор скетча здесь.

bt.read() считывает один символ. Если он равен «#», значит начинаются символы скорости. Считываем их до тех пор, пока не появится закрывающий символ «#». Здесь нельзя использоваться цикл for, потому что заранее неизвестна длина скорости (она может быть и однозначным, и двузначным, и трехзначным числом). Полученное значение записываем в переменную.

То же самое происходит с поворотом. После того как считаны и скорость, и угол, передаем все в функцию turn(int speed, int angle).

Функция turn() определяет, в какую сторону двигаться (вперед, назад) и куда поворачивать (вправо, влево, прямо). Ограничение if(speed > 0 && speed

Источник

Робофутбол на ардуино

Уже в продаже: первая в своем роде книга «BEAM-робототехника. От азов до создания практических устрйств». Книга для кружков робототехники и самостоятельного обучения на дому. Книга доступна по цене 699 руб Подробнее о книге

Соревнования по робофутболу — для зрителей праздник, а для конструкторов отличная возможность свои достижения продемонстрировать и чего достигли в этой области коллеги посмотреть.

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

На популярности этого вида робоспорта отражается интерес чисто научный: робофутбол обеспечивает долгосрочные исследования искусственного интеллекта в сфере самопрограммирования и корректировки текущей программы.

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

В мире учёных считается, что робофутбол — самый веселый способ решения научных проблем в области робототехники.

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

Здравствуйте,
есть след задача по подготовке к RoboCUP, нашла на одном сайте, что конструктор ROBO TX Исследователь от фишертехник можно использовать в этих соревнованиях, есть у кого опыт, подскажите?
Заранее спасибо.

С уважением, Катерина.

Форум » Роботы » Робо-футбол » Робо-футбол (Описание, харрактеристики)
  • Страница 1 из 1
  • 1

Открыт набор на БЕСПЛАТНОЕ ОБУЧЕНИЕ в кружке BEAM-робототехника на 2022 — 2023 год!

Для учащихся г. Санкт-Петербург: Уважаемые учащиеся и родители! Мы сообщаем Вам о начале открытой регистрации в кружок «BEAM-робототехника (радиоэлектронные системы управления)» Центра робототехники Президентского физико-математического лицея №239 на новый 2022-2023 учебный год!

Записаться в нашу группу может совершенно любой учащийся города Санкт-Петербург в возрасте от 10 — 18 лет. Обучение в кружке полностью бесплатное. В рамках обучения в кружке ребята получат необходимые теоретические и практические знания по электротехнике, схемотехнике, созданию электронных схем и своих собственных печатных плат для роботов. Научатся работать с ручными инструментами, 3D-принтерами для изготовления деталей робота, лазерным станком для изготовления корпусов робота. Количество свободных мест — ограниченное, успейте подать Вашу заявку первыми! Перешлите этот пост своим друзьям и знакомым, кого может заинтересовать BEAM-робототехника

***
Давайте поближе разберемся, что же мы изучаем на кружке BEAM-робототехники. И так, приступим:

1. Вы начинающий робототехник Смотрите видео BEAM-робототехника

Вы новенький в робототехнике. Вам интересно это современное направление, вы очень хотите научиться создавать крутых роботов самостоятельно, но вы пока не знаете как именно это делать? Не беда! Мы с удовольствием обучаем начинающих робототехнике всем необходимым навыкам настоящего робототехника, с которыми в последствии вы с легкостью будете собирать крутых роботов , участвовать в соревнованиях , выставках или просто делать крутые поделки для себя. Для этого мы открыли специальное направление: Радиоэлектроника (#BEAM-роботы). В ходе обучения в этом кружке вы научитесь понимать и разбираться в электронике — знать что такое резистор, транзистор, светодиод, мотор и как это работает. Закон #Ома — куда же без него :) Вы изучите схемотехнику — будете разбираться и уметь читать схемы — без этого робота не сделать. Вы научитесь делать свои собственные платы роботов (куда паяют детальки по крутому — без проводков!) Вы поработаете с механикой — нужно знать как и каким образом использовать моторчики, редукторы и различные хитрости их применения. Конечно же научитесь правильно и профессионально паять — это очень важно, иначе ваши роботы постоянно будут разваливаться. Также в рамках этого кружка вы сможете собрать несколько роботов для участия в соревнованиях, и выставках, так как мы считаем, что ваш творческий потенциал очень важен для робототехники в целом.

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

***
2. Как подать заявку в кружок?

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

Первая группа по BEAM-робототехнике #261РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана на ребят, кто только начинает изучать робототехнику и кому необходимо получить базовые знания по электротехнике, схемотехнике, и самим бим-роботам. Для того, чтобы записаться в группу 261РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=796 (кликай) и заполнить анкету (чтобы подать заявку — сперва зарегистрируйтесь на сайте Робофинист как «ученик». Обязательно сохраните логины и пароли — потом они вам очень понадобятся!).

Вторая группа по BEAM-робототехнике #371РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана для учащихся, кто уже сталкивался с направлением BEAM или сам изучал электротехнику и схемотехнику, кто уже принимал участие в соревнованиях с этими роботами. В рамках этой группы мы будет улучшать ваши теоретические и практические навыки, создавать сложных роботов и большую часть занятий посвящать интересным проектам и соревнованиям. Для того, чтобы записаться в группу 371РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=797 (кликай) и заполнить анкету (чтобы подать заявку — сперва зарегистрируйтесь на сайте Робофинист как «ученик». Обязательно сохраните логины и пароли — потом они вам очень понадобятся!).

Занятия в кружке робототехнике проводятся по нашему авторскому изданию «BEAM-робототехника. От азов до практических устройств». Подробнее о книге: http://nit.com.ru/product/beam-robototehnika-ot-azov-..

РАСПИСАНИЕ ГРУПП: уточняется.

Преподаватель данного направления: Мельников Сергей Алексеевич, педагог дополнительного образования Президентского физико-математического лицея №239, руководитель образовательного проекта SERVODROID — Центр робототехники для начинающих. Группа № 261РЭ и 371РЭ. Будьте внимательны, при заполнении анкеты.

***
Краткий план годового обучения:
1. Повторение теоретических знаний по электротехнике, схемотехнике, радиоэлектронике. Закрепление знаний на практике на основе создания самых простых конструкций роботов.
2. Создание роботов для участия в соревнованиях и выставках. Творческие проекты. Много много соревнований
3. Закрепление знаний для дальнейшего перехода с аналоговой робототехники (от BEAM-роботов) к цифровой робототехнике (роботам на Arduino). На последних занятиях вы соберете BEAM-ARDUINO подобного робота ;)

Источник

Adblock
detector