Привет, Geektimes!

image

Вступление


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

Немного о нашей команде


Существуем мы с 2014 года. Победители и призеры большинства соревнований Робофинист, Робофест, Спартакиады МФТИ и более мелких турниров, а также являемся абсолютными чемпионами России на 2016-2017 год в номинации мини-сумо.

Кто такие вообще эти роботы сумоисты?


Изначально, когда мы только узнали о таких соревнованиях, сумоистов делали преимущественно из лего. Но это довольно плохая идея, об этом далее.

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

Бывает их 4 вида:

1. Мега-сумоист
2. Мини-сумоист
3. Микро-сумоист
4. Нано-сумоист

Все отличаются не только внешне, но и внутренне.

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

Мини — приятные, небольшие роботы до 500 грамм 10 на 10 см. Не сложны в пайке, удобны в настройке и сборке. Являются самой популярной номинацией в сумо.

Микро и нано — уменьшенные копии мини. Микро 5 на 5 на 5, нано 2,5 на 2,5 на 2,5. Трудно паять и подбирать детали. Популярнее, чем мега-сумо.

На этой странице вы может подбронее почитать регламент соревнований. (добавлено)

В чем суть робо-сумо?


Главная цель: вытолкнуть противника за пределы круглого полигона. Проигрывает тот, кто первым коснется любого объекта за его пределами. Казалось бы, что сложного в том, чтобы просто вытолкнуть противника? А сложность в том, что роботы полностью автономны и все чаще появляются новые стратегии, с которыми все сложнее бороться.

Видео с участием наших роботов (добавлено):
Робофест 2016 (робот с молнией, робот с флагом пирата, сплошной черный низкий робот, черный высокий робот без рисунка)
Робопикник 2017 (только наши роботы за исключением прямоугольного робота со звуковыми датчиками)
Без участия:
Robotex 2016
Latvian Robotics Championship 2017
RoboChallenge 2016 Robot Competition
Небольшой обзор тактик поиска противника.

Из чего они состоят?


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

Во-первых это низкая скорость. Во-вторых огромные размеры. В третьих низкая скорость отклика датчиков. А также сам контроллер оставляет желать лучшего.

Подробнее о сборке и комплектации


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

Сложнее всего (помимо программирования) спроектировать робота.

Но специально для тех, кто хочет принять участие, но пока не знает с чего начать мы готовы поделиться трассировкой робота, который является призером Спартакиады МФТИ 2016.

P.S. Выполнена в SprintLayout

Первый этап
image

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

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

Второй этап
image

А здесь уже нанесены контроллер, драйвер, выключатели и разъем для аккумуляторов.
Останется только распечатать трассировку и перенести на текстолитовую плату, а затем пролудить дорожки.

Вот как это выглядит на готовой плате:

Готовая плата
image

Готовый к запуску робот:

image

Как видите, ничего особо сложного здесь нет. О проблемах далее.

Перейдем к программированию


Проще всего использовать контроллеры arduino или arduino-совместимые. Также, Arduino IDE нам в помощь. По стандартной схеме у робота 5 датчиков. Значит состояний может быть

$2^5$

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

Чтобы заставить его поехать на противника нам достаточно установить пины, подать напряжение на моторы и считать показания датчиков:

Код робота
// Установка пинов для датчиков
int pin_left=10;
int pin_center_left=11;
int pin_center_right=4;
int pin_center=12;
int pin_right=7;

// Пины на моторы
int pin_motor_left_forward=9;
int pin_motor_left_back=6;
int pin_motor_right_forward=3;
int pin_motor_right_back=5;

// Переменные для хранения результата опроса датчиков
int cl,cc,cr,l,r;

// Функция для опроса датчиков
void GLAZ()
{
  cl = digitalRead(pin_center_left);
  cc = digitalRead(pin_center);
  cr = digitalRead(pin_center_right);
  l = digitalRead(pin_left);
  r = digitalRead(pin_right);
}

// Функция движения, принимающая скорости от 0 до 255 для подачи на каждый мотор
void MOVE( int a, int b )
{
  if(a<0)
  {
    digitalWrite(pin_motor_left_forward,LOW);
    analogWrite(pin_motor_left_back,0-a);
  }
  else
  {
    analogWrite(pin_motor_left_forward,a);
    digitalWrite(pin_motor_left_back,LOW);
  }
  if(b<0)
  {
    digitalWrite(pin_motor_right_forward,LOW);
    analogWrite(pin_motor_right_back,0-b);
  }
  else
  {
    digitalWrite(pin_motor_right_back,LOW);
    analogWrite(pin_motor_right_forward,b);  
  }
}

void setup()
{
  pinMode (pin_center,INPUT);//центральный
  pinMode (pin_right, INPUT);//правый датчик 
  pinMode (pin_left,INPUT);//левый датчик
  pinMode (pin_center_right, INPUT);//передний правый датчик
  pinMode (pin_center_left,INPUT);//передний левый датчик
  pinMode (pin_line_left, INPUT);
  pinMode (pin_line_right, INPUT);
  pinMode (pin_start,INPUT);//старт
  pinMode (13,OUTPUT);//старт
  digitalWrite(13,HIGH);

  pinMode (pin_motor_left_back, OUTPUT);//мотор лево назад
  pinMode (pin_motor_right_forward, OUTPUT);//мотор право вперед
  pinMode (pin_motor_right_back, OUTPUT);//мотор правый назад
  pinMode (pin_motor_left_forward,OUTPUT);//мотор лево вперед 

  // ожидание сигнала к началу схватки
  while(!digitalRead(pin_start))continue; 
  MOVE(200,200);
}

void loop() 
{
GLAZ();
  if(l && r)
  {
    if( (cl + cc + cr) < 2 || !cc ){
      MOVE(255,255);
    }
    if( cc ) 
    {
      if(!cl && cr) MOVE(0-180,180);
      if(cl && !cr) MOVE(180,0-180);
    }
  }
  else if( cc + cr + cl == 3 )
  {
    if(!l && r) MOVE(0-200,200);
    if(!r && l) MOVE(200,0-200);
  }
  else if(cc)
  {
    if(!l && !cl && cr && r) MOVE(0-150,150);
    if(l && cl && !cr && !r) MOVE(150,0-150);
  }
  if(!digitalRead(pin_start))while(1){MOVE(0,0);}
}


Вам остаётся только совершенствовать код.

Важно!
Датчики возвращают 1, если ничего не видят, и 0, если есть препятствие.

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

Стоит учесть


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

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

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

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

Также имеет смысл делать съемные аккумуляторы, т.к. разряжается робот довольно быстро, а заряжается долго.

Список необходимых покупок:


1. Паяльник, припой, флюс (по выбору)
2. Текстолитовые платы (чтобы протравить, вам надо закрыть все дорожки, затем поместить это все в раствор перекиси водорода + лимонной кислоты + соли на несколько часов, а потом содрать, бумагу, например, под которой прятали дорожки)
3. Датчики sharp 340
4. Движки, выбирайте по вкусу, чем больше оборотов в минуту, тем лучше.
Выбирать стоит что-то из этого: polulu. (добавлено)
5. Аккумуляторы (советую брать литий-полимерные) + зарядная станция
6. Ключ (кнопка выключателя, припаивается на плату) и электрические элементы (есть на картинке с трассировкой)
7. Драйвер
8. Контроллер, для начала можно попробовать Polulu A-Star 32u4 micro и залить туда загрузчик ардуино
9. Лист металла для корпуса
10. Бурмашинка для дырок в плате
11. Пульт запуска и к нему стартовый модуль
P.S. Если что-то упустил — пишите, исправлю.

Соревнования


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

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

Такие соревнования за границей не редкость и мы туда тоже хотим попасть. Вот приблизительная карта соревнований по миру:

image

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

Нам этом мы заканчиваем ознакомительную статью и желаем всем успехов в робототехнике, будем рады увидеть вас на соревнованиях!

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


  1. DrPass
    24.09.2017 19:28

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

    Когда уже я дождусь спортивной дисциплины, в которой один полностью автономный кусок железа с мозгами, датчиками, топором, молотом, копьём и огнеметом должен разнести на кусочки другой такой же кусок железа?


    1. kot_mapku3 Автор
      24.09.2017 19:41
      +1

      Да, это довольно круто. Такие даже есть: бронебот, битва роботов и что-то ещё, кажется. Только там очень дорогие роботы и и сложные.


      1. port443
        24.09.2017 19:47
        +1

        Robochallenge? Например


      1. vasimv
        24.09.2017 20:12
        +1

        Они не автономные, на дистанционном управлении.


      1. DrPass
        24.09.2017 20:28

        Такие даже есть: бронебот, битва роботов и что-то ещё, кажется. Только там очень дорогие роботы и и сложные.

        Да в том-то и дело, что нет. Там не роботы на самом деле, а машинки на радиоуправлении. У них там даже в правилах турнира, насколько я помню, написано, что у роботов не должно быть никакой автономности.


      1. JohnDoe_71Rus
        24.09.2017 23:53

        бронебот и битва не полностью автономные. Скорей машинки на Р/У


  1. wormball
    24.09.2017 21:06

    Во-первых. Хотелось бы видео боёв, с вашим участием и без оного.

    Во-вторых. Отчего колёса не готовые и для чего им такая большая масса? Или это обман зрения?

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

    Вы уверены, что моторы надо выбирать именно так? И что вы их так и выбираете? Чем больше цифра в графе «обороты», тем лучше? А судя по рисунку платы, у вас там китайские мотор-редукторы «для ардуины». То бишь редуктор там таки присутствует. А значится, обороты явно не максимальные для заданного размера/стоимости. Да и не поехала бы она у вас с максимальными оборотами, скорее всего.


    1. kot_mapku3 Автор
      25.09.2017 00:52

      Добавил видео.

      Масса у колес маленькая. Порядка 5% от массы робота. Они кажутся большими из-за ракурса.

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


    1. kot_mapku3 Автор
      25.09.2017 16:26

      Голые двигатели, конечно, не выдержат и просто робот не поедет. Поэтому естественно стоят редукторы. Но при выборе стоит смотреть на крутящий момент и скорость оборотов. Здесь нужно подбирать индивидуально под себя. Например, high-power,
      carbon brushes
      (HPCB) 5:1 брать не стоит, т.к. они сразу сгорят. 1000:1 слишком много, робот не поедет или будет слишком медленным.

      Если что-то непонятно, пишите, я уточню.


      1. wormball
        26.09.2017 00:56

        > сгорят

        А что мешает сделать ограничение по току?

        И кстати говоря. Я надеюсь, будут ещё статьи? А то статья вроде как позиционируется как «как сделать робота», но робота по ней с очевидностью сделать невозможно. Плата — только скриншот, аккумулятор непонятно куда крепится, об колёсах вовсе ни слова, об корпусе мы узнаём только то, что он делается из ножа и стального листа. Да и вообще всё крайне отрывочно и скомканно. Описание травли текстолита — вообще шедевр. Напоминает классическое руководство «как нарисовать сову».


        1. kot_mapku3 Автор
          26.09.2017 12:08

          Ограничение стоит, 1600 мА.

          Статьи будут. Да, более подробные. Получилось немного сумбурно, но просто хотел дать представление и вдохновить конструировать роботов. Отдельно будет про аппаратную часть и отдельно про программную.


  1. Delics
    24.09.2017 23:28

    Как детям принять участие? Со скольки лет принимаются заявки?


    1. kot_mapku3 Автор
      25.09.2017 00:06

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


  1. Hardcoin
    25.09.2017 01:37

    Кажется, что ключевое — это не стратегия, а сцепление с поверхностью, разве нет? Или протолкнуть противника, что бы колеса проскользнули, не получится?


    1. TxN
      25.09.2017 05:49
      +2

      В статье не хватает ссылки на видео, где видно, что роботы не просто втупую толкают друг друга, а используют довольно сложную тактику, чтобы зайти сзади или сбоку. Если подцепить противника ковшом, то его уже никакие, даже самые цепкие колеса не спасут.
      www.youtube.com/watch?v=BQrrEpky2aQ


    1. kot_mapku3 Автор
      25.09.2017 06:56

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


      1. NeoCode
        25.09.2017 08:33
        +1

        А что мешает сделать подцепы со всех сторон робота?


        1. kot_mapku3 Автор
          25.09.2017 10:32

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


        1. ProNikUp
          25.09.2017 12:23

          Сделать конечно можно, но занимает много места, а по регламенту роботы ограничены размерами, так что такая конструкция не очень успешна


  1. Sablast
    25.09.2017 12:24

    а как распознается зона круга?


    1. kot_mapku3 Автор
      25.09.2017 12:26

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


      1. Sablast
        25.09.2017 16:04

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


        1. kot_mapku3 Автор
          25.09.2017 16:30

          Скорее всего не получится, надо слишком ужимать робота в размерах.
          Можно, конечно, поставить сервы, которые будут выдвигать, но они будут мешать датчикам и компактности.
          К тому же это не слишком надежно, обычно 2-3 робота из 15 отслеживают линию.


  1. Andrey_Epifantsev
    25.09.2017 12:53

    А есть какие-нибудь другие зрелищные дисциплины на соревнованиях роботов, кроме сумо? Может быть футбол?


    1. kot_mapku3 Автор
      25.09.2017 13:41

      Лично мне нравится только мини сумо и мега сумо, а в остальном только езда по линии(там где очень быстро ездят). Футбол не такой зрелищный. Он с пультов, но вообще зрители есть. Мы не интересуемся этим форматом.


  1. madf
    25.09.2017 13:09

    • Почему используете только цифровой дальномер (sharp 340)? Есть же и аналоговые.
    • В лом читать все правила… какие ограничения по весу в классах?
    • Раз нельзя использовать магниты для подцепа, то что можно и что ещё нельзя? Можно же много чего придумать.
    • Какой материал используется для ринга? По чему ездят "роботы"?


    1. kot_mapku3 Автор
      25.09.2017 16:41

      >>Почему используете только цифровой дальномер (sharp 340)? Есть же и аналоговые.
      Не все сразу, на новых роботах тестируем аналоговые. Проблема в дальности обнаружения, компактности и скорости работы. Аналоговые значительно медленнее цифровых.

      >>В лом читать все правила… какие ограничения по весу в классах?
      Для нано-сумо это 25 грамм, для микро-сумо 100 грамм, для мини-сумо 500 грамм, для мега 3 кг.

      >>Раз нельзя использовать магниты для подцепа, то что можно и что ещё нельзя? Можно же много чего придумать.
      «Все, что наносит механические повреждения роботу оппонента или глушит его датчики будет расценено как умышленное вредительство.» Собственно поэтому никакую бензопилу или качер Бровина сюда не воткнешь.

      >>Какой материал используется для ринга? По чему ездят «роботы»?
      Это либо деревянный круг покрытый черной краской, либо мебельный щит (какой материал — не подскажу).


      1. madf
        25.09.2017 18:12

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

        Я видел на видео, как один бот пытался отвлекать, обманывать соперника, такой подход не вредит правилам?


        1. kot_mapku3 Автор
          25.09.2017 21:48

          Что вы имеете под обманывать? Если использовать «обманки» выдвижные листочки, то это не возбраняется.


  1. green_worm
    25.09.2017 13:59

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


    1. kot_mapku3 Автор
      25.09.2017 14:26

      Это т.н. «обманки». Робот противник реагирует на препятствие, поэтому когда едет на обманку он может сам выкатиться за пределы ринга.


  1. Jeyko
    25.09.2017 18:56

    … состязание роботов сумоистов, сумоистов… ©