0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Простой робот для соревнований в SUMO своими руками

ДАО Робота Сумо

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

Урок 8. Программа действий сумо-робота. Вытолкнем противника «в лоб» грубой силой.

«Тело» нашего сумо-робота готово и отдельные его компоненты «мозг» — микроконтроллерная плата, «глаза» — сенсоры расстояния и черного/белого, «сильные ноги» — двигатели и драйвер управления ими, «кровь и регулятор давления крови» — батарея и преобразователь напряжения DC-DC, «кровеносная система» — провода и макетные платы, скелет – база, отвал, бампер, крепежные элементы – нормально функционируют.

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

Что сделает робота «человеком»?

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

Этим Замыслом будет программа действий робота в «мире» робота – на ринге (дохё) для соревнований роботов-сумо.

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

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

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

Давайте начнем с простого замысла – Вашему роботу надо будет просто «в лоб» вытолкнуть соперника с ринга сразу после старта поединка.

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

Начнем разбираться. По правилам проведения поединков RobotChallenge.org сумо роботы устанавливаются в пределах указанной при жеребьевке четверти ринга задней частью робота по направлению друг к другу.

Обратите внимание на правила боя – это фактически «законы физики» для робота. Их нельзя нарушать.

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

  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 градусов направо (красная черта – начало отсчета, белая черта – текущее положение).

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

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

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

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

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

Разворот налево на 90 градусов.

Соперник обнаружен передним ИК датчиком.

Движемся вперед к сопернику.

Врезаемся в него.

Вопросы для проверки:

  1. Программа действий робота. Почему важно продумать все ньюансы программы?
  2. Правила боев роботов сумо. Какие важные детали Вы запомнили?
  3. Блок схема программы. Какие элементы блок схем Вы знаете? Удобно ли Вам использовать блок схему для отработки программы действий робота?
  4. Подумайте, как можно оптимизировать скетч? Какие одинаковые блоки операторов в программе Вы увидели?

Самодельный робот Мини-сумо

Уже готов ринг. Правда, он немного меньше, чем должен быть по правилам, но я не вижу ничего страшного 69 см против 77 см- для тренировки подойдет. Главное- отработать сенсоры края и потренироваться на «кирпиче».

Робота я решил сделать на основе модифицированных сервоприводов Futaba (да простят меня производители за такое глумление над их товаром). Дело в том, что сервопривод практически идеально подходит для робототехники. Он небольшой, двигатель там маломощный, ток потребления- от 80 мА (для модели S4003, которую я использовал). Редуктор малошумящий, с хорошим КПД, установлен металлический шарикоподшипник. Нужно всего-то отпилить пару выступов и припаять проводки непосредственно к двигателю, потому что управлять им не так-то просто. Кто-то умный придумал стандарт, а для его использования нужно много времени потратить на написание управляющей программы. Я решил проблему просто- припаял проводки непосредственно к мотору.

Вот некоторые фотографии:

Постараюсь делать обновления почаще.

«Корпус» был сделан из куска листового дюраля. Толщина- где-то 1 мм, хорошо резался ножницами по металлу. Сверлился этот материал тоже хорошо. Форму видно по фото. Я думаю, что можно сделать и проще. НО! Оказалось, что вес робота далёк от 500 гр, которые разрешены соревнованиями. Поэтому я думаю, что делать. Можно увеличить количество батарей до 8-и и сделать их параллельными или же в схеме использовать еще 1 реле, которая переключала бы источники питания. Это было бы неплохо, хотя время нахождения на ринге- 3 минуты. Но если представить такой вариант- робот ищет соперника (использует батареи на 600мА/ч), находит его и начинает толкать. В этот момент подключает более мощные батареи- на 2000мА/ч. Или можно использовать 4 и 5 батарей блоки. Сервопривод может работать до 6 В (хотя это, я думаю, не предел), поэтому можно для «рывков» использовать блок из 5-и аккумуляторных батарей по 1.2 В.

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

Пока я не сделал сенсоры края и не подключил микроконтроллер. Буду ли я использовать ИК-бампер? Пока не знаю. Нужно хотя бы одного робота собрать.

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

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

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

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

Слева внизу- новая протравленная плата нижнего сенсора. Схема сверху, только я использовал 2 канала (больше пока не нужно). В следующий раз использую SMD-микросхему, потому что DIP слишком много места занимает.

Установил датчик края, вытравил специально для этого робота плату. На плате: микроконтроллер AT90S2313, частота- 4МГц, драйвер двигателей L293D, без диодов, также на плате ИК-передатчик и приемник TSOP1736.

Пока писал этот материал, робота уже собрал и он уже ездит по рингу и падает 🙂 пока.

Робот наконец-то ездит по рингу и НЕ ПАДАЕТ.

Вот наконец-то и видео. Пришлось осваивать Adobe Premiere.

Робот сталкивает с ринга баночку- посмотреть клип (размер 428 кб, 2 секунды).

28.09.2004г. — робот уже может бороться с «кирпичами»

Да, увлек меня сумо-робот. Я, конечно, ожидал, что научить его борьбе будет очень долго и трудно, а оказалось, что «тест кирпича» выполнить довольно легко. Другое дело, что алгоритм поиска другого робота пока не совершенен и ИК-датчик я пока не настроил, но успехи есть.

Я попытался заснять веб-камерой, но в комнате темно и вышло не очень.

Ну а теперь подробнее.

Сейчас у робота довольно простой алгоритм.

Я взял 2 регистра (память решил не использовать) reg_count- счетчик обратного отсчета и reg_motor- собственно закодированный тип движения. После старта мотор=2 и обратный отсчет тоже установлен в некое значение. Программа идет по циклу. Опрашивает датчик пола, опрашивает ИК-сенсор. Если они ничего не обнаружили, возвращается в начало и уменьшает reg_count. Когда значение уменьшается до 0, изменяется значение мотора на 1 (было 2), загружается счетчик и управление передается блоку датчика пола. Когда счетчик опять заканчивается и значение мотора=1, оно опять меняется на 2 и загружается счетчик.

Пока что 2= движение вперед, 1= левый мотор вперед. Робот движется почти по кругу. Это, конечно, минус, потому что он не всегда может обнаруживать «кирпич». Надеюсь, что я придумаю случайное движение или что-то более прогрессивное использую.

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

Блок отъезда. Пока для этого зарезервированы числа 5 и 6, но так как это блок был написан самым первым, он работает «железно»- на это отведен кусок кода. Двигатели включаются оба назад, а потом, в зависимости от того, какой датчик сработал (правый или левый), включается соответствующий двигатель. В это время робот не видит пола и не работает ИК- сенсор. Но и задача робота- побыстрее покинуть опасную зону. Это- главное. Оказавшись в безопасности, он может продолжать «искать добычу». Если робот «видит» противника, а тот внезапно исчезает (что может быть в реальном бою), то программа проверяет, какое было состояние и если был ответ от датчика а потом пропал, то в регистр мотор записывается 2 и робот начинает опять искать противника.

Читать еще:  Мощный электрошокер своими руками

Тактика, конечно, «дубовая», и рассчитана на «кирпич», но. Не судите строго, все только начинается. Правда, один коллега сегодня спрашивал в письме, «когда же будут соревнования?». В России, имелось ввиду. Я не знаю, потому как для меня Россия- заграница. Мне ближе Киев, но если будут соревнования в Москве или Питере, то может быть я и соберусь поехать. Только нужно робота нормального построить- этот все-таки слабоват.

У моего первого робота-сумоиста такие данные:

Длина- 10 см
ширина- 11 см
вес- около 250 грамм.
Аккумуляторы- описано ниже
Железо- было выше, 2313 + L293
Программа- ассемблер. Размер кода- 129 слов (из 500 возможных)

Ширину я планирую уменьшить до стандарта путем установки новых шин. заготовки уже лежат, нужно только изготовить на их основе колеса. Вес тоже набрать несложно. Конструкция робота позволяет установить 3 комплекта батарей (по 4 штуки). Я испытывал с 2-я комплектами- 4xNiCd600mAh и 4xNiMh2100mAh. Аккумуляторы имеют неприятную особенность- садится один из 4-х и соответственно ток резко уменьшается и уменьшается тяга. Если заменить этот аккумулятор, то ток восстанавливается. У меня и раньше была идея подключить несколько источников, а сейчас и подавно я хотел бы так сделать. например, при поиске используются более слабые аккумуляторы на 600 мА/ч, а если противник перед роботом, включить более мощные или даже сразу 2 компалекта батарей. Вот идея! А? Вес ведь позволяет такое сделать.

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

01.10.2004г. Два робота схлестнулись на ринге...

Сегодня я потратил еще час времени, хотя у меня его и мало
НО! Что было.
Два робота схлестнулись на ринге. Новый Монстр пока не имеет глаз (ну не прикрутил пока), но свободно перемещается по рингу.
Маленький да удаленький (нет почему-то имени, хотя нужно придумать) легко находит на ринге противника, хотя скорость движения у него раза в 2 ниже, зато какая мощь! 2 раза он спокойно сбрасывал Монстра с ринга. Первый раз когда тот ехал передом к краю и Сумо-1 (пусть пока будет так) догнал и просто подтолкнул Монстра- тот уже не успел отъехать, а свалился с ринга. Второй раз я нагрузил роботов сверху грузом (чтобы было интереснее). Но и в этом случае Сумо-1 вытолкнул противника, хотя толкал его в переднюю часть.
Очень много приколов даже в первой схватке. Хотя мне не нравится то правило, что роботы стоят лицом к лицу. Тут проще простого- едь вперед и тот кто сильнее, выигрывает. Как в крестики-нолики. Мне кажется, тупое правило. Нужно ставить роботов зад-в-зад или бок-в-бок. Тогда будет интереснее.
Буквально завтра должны привезти видеокамеру Сони с выходом на USB, так что я думаю, будет хорошее видео и фотки цифровые тоже будут.

А пока фото Монстра и Сумо-1

Вот и обещанные видеофрагменты, снятые камерой Сони.

Я осваиваю Abobe Premiere, так что если что-то не так, не обижайтесь. Самым хорошим форматом для интернета оказался WMV. Надеюсь, что у всех есть чем посмотреть. Файлы очень маленькие, расчитаные в том числе и на диалап 28.8к и 56к.

Фрагмент №1 (91 кб, 31 секунда) в формате WMV. Это часть видеоклипа, на котором видно, как робот справляется с неподвижными и легкими объектами.

Фрагмент №2 (224 кб, 47 секунд) в формате WMV. Это более длинный фрагмент (вариант фрагмента №1), на котором видно, как робот после того, как всех растолкал, продолжает «рыскать» по рингу.

Фрагмент №3 (103 кб, 22 секунды) в формате WMV. Это поединок Сумо-1 с Монстром-1. К сожалению, Монстр-1 пока не имеет ИК-сенсора для обнаружения противника- он просто старается двигаться и не выпасть за пределы ринга. В это время Сумо-1 охотится на него (по сути слепого робота) и все-таки выталкивает его с ринга. Трудно себе представить, что будет, если Монстр-1 обретет зрение (я пока работаю над датчиками), но судя по всему, у него достаточно мощи, чтобы одолеть любого робота. Не хватает веса, это правда, и ещё он не соответствует размерам роботов стандарта мини-сумо, поэтому подходит пока что только в качестве спарринг- партнера для Сумо-1.

18.10.2004г. Добавлены фотографии приличного качества.


практически весь робот виден (90кб)

01.11.2004г. Добавлены схема и печатная плата.

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


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

Простой робот для соревнований в SUMO своими руками

Видео работы робота

Материалы и инструменты для создания робота:
— сухой клеевой карандаш;
— прозрачный скотч;
— двухвыводная не фиксируемая кнопка;
— один мигающий светодиод типа ARL-513URC-B;
— транзистор типа КП505А;
— два резистора номиналом 1Мом и 270 Ом;
— клипса-разъем для подключения к батарее типа «Крона»;
— моторчик модели RF-300CA-D/C 3V или подобный.



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

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

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

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

На картинке компоненты робота отмечены цифрами:

1. Клипса для подключения батареи.
2. Фиксатор батареи.
3. Источник питания (батарея на 9 В).
4. Двигатель.
5. Мигающий светодиод (говорит о том, что питание подключено).
6. Кнопка для включения робота.
7. Резистор, благодаря нему можно задавать время работы робота.
8. Конденсатор, он также отвечает за время работы робота.
9. Транзистор типа КП505А, он является драйвером двигателя.

Процесс сборки робота:

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




Шаг второй. Установка радиоэлементов
На следующем этапе нужно установить все необходимые радиоэлементы. Для этого нужно взять шило и сделать в картоне отверстия, их нужно делать в круглых метках. Чтобы закрепить компоненты, после установки их выводы нужно немного подогнуть. Еще на картоне можно увидеть отметку в виде прицела, здесь нужно сделать большое отверстие, через него будет проходить провод питания.

Читать еще:  Ледоходы (ледоступы) из саморезов и резины своими руками

После этого можно брать паяльник и приступать к соединению контактов радиоэлементов в соответствии со схемой.








Шаг четвертый. Подключаем периферию
Для подключения питания к батарее нужно использовать клипсу-разъем. Провод нужно продеть через отверстие, красный припаивается к плюсовому контакту светодиода, а черный к минусу конденсатора С1.

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



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

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

Для дополнительной фиксации моторчик обматывается скотчем.

Простой робот для соревнований в SUMO своими руками

Робот Тори-Кумо, как результат исследования различных подходов

к построению лего-робота для соревнований Сумо.

Салмин С.В. (Студия Спортивной Робототехники школы 1101, г. Москва)

рук. Глухов М.М.

Одним из самых зрелищных видов соревнований по робототехнике является «Сумо роботов». Начинающие робототехники используют, как правило, роботов, построенных на базе Lego Mindstorms. Международными правилами определены максимальный вес робота 1000 г. и размеры 15×15 см в стартовом положении при неограниченной высоте. Такие размеры являются почти минимально возможными для лего-сумоиста. Естественными требованиями к сумо-роботу являются надежность, хорошее сцепление с поверхностью поля, высокая мощность, низко расположенный центр тяжести и быстрая реакция на изменение местоположения соперника.

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

Рассмотрим различные подходы к конструкции лего-сумоиста с точки зрения удовлетворения описанным требованиям.

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

Мной была выбрана шестиколесная схема с колесами диаметром 43.2 и шириной 22 мм. С каждой стороны одно из колес находится на валу двигателя, а остальные два соединены с ним через шестеренки. Таким образом получается полно-приводная база. И даже если соперник приподнимает одну сторону робота, большое число ведущих колес позволяет оказывать эффективное сопротивление сопернику. При максимальной скорости двигателей наш робот Тори-Кумо развивает скорость по прямой 0.33 м/с и выполняет разворот на 360 градусов за 7.5 с.

  1. Массогабаритные показатели. С целью понижения центра тяжести, робота следует конструировать как можно более низким и, значит, широким, чтобы разместить все компоненты. Микрокомпьютер – один из самых тяжелых блоков Лего, должен быть расположен как можно ниже.

Наш робот имеет размеры 15×14.5 см (высота 16 cм без учета «ковша») и верхнее расположение микрокомпьютера, форма робота напоминает куб. Масса робота 997 г. Центр тяжести расположен приблизительно в геометрическом центре конструкции.

  1. Электронные компоненты. Робот находится под управлением микрокомпьютера Lego Mindstorms Ev3 (или NXT), который позволяет подключать до четырех (или до трех) двигателей и до четырех датчиков. С точки зрения решения задачи, достаточно двух двигателей и одного датчика света для определения края соревновательного поля. При этом программа должна быть написана так, чтобы робот стремился двигаться по заданной траектории от края до края ринга, не зависимо от действий соперника. Наличие двух датчиков света (в передней и задней части робота) позволяет двигаться по полю, не разворачиваясь при достижении края. Заметим, что такой разворот опасен не только потерей времени, но и тем, что под удар соперника на некоторое время подставляется боковая сторона робота, находящегося на самом краю поля. Обычно робота оснащают еще и ультразвуковым датчиком расстояния, с помощью которого определяют местоположения соперника.

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

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

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

Отдельно скажем об алгоритме борьбы. В приложении 1 работы содержится общая блок-схема программы. Как и самый распространенный алгоритм борьбы, наш алгоритм состоит из двух основных шагов: определение местоположения соперника и атаки. Атака не предполагает использования обманных маневров в силу медлительности шестиколесной полно-приводной базы в поворотах. Основной сложностью при создании алгоритма управления нашим роботом является учет положения робота относительно края соревновательного поля и направления движения робота при поиске и атаке соперника, т.к. робот может атаковать как передней стороной, так и задней. Также сложность представляет обработка ситуации, когда соперник уходит из-под атаки Данные проблемы решены с помощью непрерывной обработки информации от датчиков расстояния и света в процессе атаки и хранения в памяти робота направления атаки.

Первое место, занятое роботом Тори-Кумо на открытых Зимних соревнованиях клуба спортивной робототехники МФТИ 10 января 2016 года при всех выигранных поединках в своем классе, подтвердило правильность нашего подхода к решению поставленной задачи. Однако сами поединки, хотя и выигранные, выявили некоторые недостатки конструкции и показали пути совершенствования, связанные в первую очередь с увеличением мощности робота и применении активного «ковша».

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector