Вправи. Живлення. Дієти. Тренування. Спорт

Чемпіонат Росії з робо-сумо. Міжнародні змагання роботів — Правила — Вільна категорія — Вільна категорія

Привіт, Geektimes!

Вступ

Ми давно знаємо про те, що роботи це наше майбутнє. Існує дуже багато напрямків робототехніки. Військові розробки, соціальні, розважальні та просто робочі роботи.
Але цього разу я хочу розповісти від імені команди Коледжу при МИРЕА про склад змагання, а точно про роботів сумоїстів.

Трохи про нашу команду

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

Хто такі взагалі ці роботи сумоїсти?

Спочатку, коли ми тільки довідалися про такі змагання, сумоїстів робили переважно з Лего. Але це досить погана ідея про це далі.

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

Буває їх 4 види:

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

Усі відрізняються не лише зовні, а й внутрішньо.

Мега - найбільші та небезпечні роботи. Максимальна вага до 3 кг, можливість ставити різні присоски, чого не дозволяється робити з іншими роботами.

Міні - приємні, невеликі роботи до 500 г 10 на 10 см. Не складні в паянні, зручні в налаштуванні та складанні. Є найпопулярнішою номінацією у сумо.

Мікро та нано - зменшені копії міні. Мікро 5 на 5 на 5 нано 2,5 на 2,5 на 2,5. Важко паяти та підбирати деталі. Популярніше, ніж мега-сумо.

З чого вони складаються?

Повернемося до Лего. Швидше за все, багато хто з вас намагався щось робити з програмованим конструктором Лего, ну або хоча б бачили як це робиться. Існує навіть окрема номінація для таких роботів 15 на 15, але жахливо нудна і підійде тільки для зовсім початківців або маленьких робототехніків. У порівнянні з саморобними зразками цей програє у всьому, крім складності збирання.

По-перше, це низька швидкість. По-друге, величезні розміри. По-третє, низька швидкість відгуку датчиків. А також сам контролер залишає бажати кращого.

Детальніше про складання та комплектацію

Сумоїсти, які складають конкуренцію роблять на arduino. Використовують текстолітові плати, припаюючи на неї датчики, контролер, драйвер та ін. Також стоїть широкий вибір датчиків для виявлення супротивника, але варто використовувати інфрачервоні або лазерні, т.к. сонари дуже повільні та громіздкі. Звичайно, необхідні двигуни та колеса, щоб робот міг пересуватися. Ставити їх можна необмежену кількість, але практика показує, що найкраще робот їздить двома колесами розміщених ззаду. І, звичайно, робот не може жити без ковша та підчепу. Ківш це просто корпус, обгортка та захист плати та елементів. Найчастіше сталевий чи залізний. Підчепи ж роблять із лез для канцелярських ножів, але зустрічаються екземпляри з нестандартним підходом, наприклад, заточена дерев'яна лінійка або вата, але користі від такого підходу мало.

Найскладніше (крім програмування) спроектувати робота.

Перший етап



Це що називається, перший етап - розміщення двигунів і датчиків. Ви також можете спостерігати тут два невеликі датчики перед самим підчепом, так це датчики лінії.

Вони використовуються для виявлення білої смуги на полігоні, щоб уникнути випадкового падіння за межі рингу, але не є обов'язковим компонентом і використовуються не дуже часто. Високі швидкості часто не дозволяють вчасно зупинитися.

Другий етап



А тут вже нанесені контролер, драйвер, вимикачі та роз'єм для акумуляторів.
Залишиться лише роздрукувати трасування та перенести на текстолітову плату, а потім пролудити доріжки.

Ось як це виглядає на готовій платі:

Готова плата



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

Як бачите, нічого особливо складного тут нема. Про проблеми далі.

Перейдемо до програмування

Найпростіше використовувати контролери arduino або arduino-сумісні. Також, Arduino IDE нам допоможе. За стандартною схемою робота 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. Якщо щось упустив - пишіть, виправлю.

Змагання

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

Але ці змагання не єдині, по Росії їх досить багато, найбільші проводяться в Москві. Приблизно раз на місяць-два ви можете випробувати щастя та позмагатися.

Такі змагання за кордоном не рідкість, і ми туди теж хочемо потрапити. Ось приблизна карта змагань по світу: Додати теги

У цьому вся змаганні учасникам необхідно підготувати автономного робота, здатного найефективніше виштовхувати робота-противника межі чорної лінії рингу.

1. Умови змагання

1.1. Змагання відбувається між двома роботами. Мета змагання – виштовхнути робота-противника за чорну лінію рингу.

1.2. Якщо будь-яка частина робота стосується поля за межами чорної лінії, роботу зараховується програш у раунді (якщо використовується поле у ​​вигляді подіуму, то програш зараховується, якщо будь-яка частина робота стосується поверхні поза подіумом).

1.3. Якщо після закінчення раунду жоден робот не буде виштовхнутий за межі кола, то вигравши раунд вважається робот, що знаходиться найближче до центру кола.

1.4. Якщо переможця не може бути визначено способами, описаними вище, рішення про перемогу чи перегравання приймає суддя змагання.

1.5. Під час раунду учасники команд не повинні торкатися роботів.

2. Поле

2.1. Біле коло діаметром 1 м з чорною облямівкою завтовшки 5 см.

2.2. У колі червоними смужками відмічені стартові зони роботів.

2.3. Червоною точкою відзначено центр кола.

2.4. Поле може бути як подіуму висотою 10 -20 мм.

3. Робот

3.1. На роботі не накладається обмежень на використання будь-яких комплектуючих, крім тих, які заборонені існуючими правилами.

3.2.1. Під час змагань:

  • Розмір робота не повинен перевищувати 250х250х250 мм.
  • Вага робота не повинна перевищувати 1 кг.

3.2.2. Перед початком раунду робот повинен задовольняти умові: Трикутна пластина з кутом 45 градусів, притиснута до поверхні поля, і підведена з будь-якої сторони робота повинна стосуватися робота в точці вище 3см від поля. Крапка торкання фіксується з будь-якою частиною робота, в тому числі: колеса, гусениці, гумки, дроти...

3.2.3. Суперечка між учасником та суддею за пунктами правил 3.2. під час перевірки робота завжди вирішується не на користь учасника.

3.3. Робот має бути автономним.

3.4. Робот, на думку суддів, навмисно ушкоджує або забруднює інших роботів, або як ушкоджує або забруднює покриття поля, буде дискваліфікований на весь час змагань.

3.5. Перед матчем роботи перевіряються на габарити, вагу та відстань деталей до поля.

3.6. Конструктивні заборони:

  • Заборонено використання будь-яких клейких пристроїв на колесах та корпусі робота.
  • Заборонено використання будь-яких мастил на відкритих поверхнях робота.
  • Заборонено використання будь-яких пристроїв, що дають роботу підвищену стійкість, наприклад, створюють вакуумне середовище.
  • Заборонено створення перешкод для ІЧ та інших датчиків робота-суперника, а також перешкод для електронного обладнання.
  • Заборонено використовувати пристосування, що кидають що-небудь у робота-суперника.
  • Заборонено використовувати рідкі, порошкові та газові речовини як зброю проти робота-суперника.
  • Заборонено використовувати легкозаймисті речовини.
  • Заборонено використовувати конструкції, які можуть завдати фізичних збитків рингу або роботі-суперникові.

Роботи, що порушують перелічені вище заборони знімаються зі змагань.

3.8. Учасники мають право на оперативну конструктивну зміну робота між раундами (в т.ч. - ремонт, заміна елементів живлення, вибір програми та ін.), якщо внесені зміни не суперечать вимогам до конструкції робота і не порушують регламентів змагань. Час на оперативну конструктивну зміну робота контролюється суддею, але не може перевищувати 1 хвилини.

3.9. Між матчами дозволено змінювати конструкцію та програми роботів.

4. Проведення змагань.

4.1. Змагання складаються із серії матчів. Матч визначає з двох роботів, що беруть у ньому участь, найбільш сильного. Матч складається із 3 раундів по 30 секунд. Раунди проводяться поспіль.

4.2. Змагання складаються не менше ніж із двох спроб (точне число визначається оргкомітетом). Спроба - це сукупність всіх матчів, у яких бере участь кожен робот мінімум 1 раз.

4.3. Перед першою спробою та між спробами команди можуть налаштовувати свого робота.

4.4. До початку спроби команди мають помістити своїх роботів у область «карантину». Після підтвердження судді, що роботи відповідають усім вимогам, змагання можуть розпочатися.*

4.5. Якщо під час огляду буде знайдено порушення у конструкції робота, то суддя дає 3 хвилини на усунення порушення. Однак, якщо порушення не буде усунуто протягом цього часу, команда не зможе брати участь у змаганні.

4.6. Після поміщення робота в «карантин» не можна модифікувати(наприклад: завантажити програму, поміняти батареї)або міняти роботів, до кінця спроби.

4.7. Безпосередньо у поєдинку беруть участь судді та оператори роботів – по одному з кожної команди.

4.8. Після запуску роботів оператори повинні відійти від поля більш ніж на 1 метр протягом 5 секунд.

4.9. Кожен оператор один раз під час матчу може зупинити старт раунду без штрафних санкцій, але не пізніше, ніж за 1 секунду до закінчення зворотного 5-секундного відліку. Затримка старту дозволена лише на 30 секунд. Затримка на більший час може бути здійснена лише за спеціальним дозволом судді. Після усунення несправності роботи знову встановлюються на старт.

4.10. Якщо під час раунду будь-яка електрична частина робота не закріплена жорстко (відірвалася або висить на проводах), то цей робот вважається таким, що програв у раунді.

4.11. Якщо під час матчу, конструкція якогось робота була ненавмисно пошкоджена, і вимагає більше 50 секунд на ремонт, то матч може перерватися і команді дозволяється виправити конструкцію робота, в цей час можуть проходити матчі з іншими командами, після ремонту робота і завершення поточного матчу, перерваний матч триває.

4.12. Матч виграє робот, який виграв найбільшу кількість раундів. Суддя може використати додатковий раунд для роз'яснення спірних ситуацій.

4.13. Раунд програється роботом якщо:

  • Одна з частин робота торкнулася зони за чорною межею рингу.
  • Якщо робот знаходиться далі від центру рингу, ніж робот противника. Якщо час раунду минув і не один з роботів не вийшов за межі рингу.

5. Варіанти проведення змагань

5.1. Правила передбачають три рівні складності. Організатор змагань зобов'язаний заздалегідь попередити учасників про вибраний рівень складності.

5.2. Рівень №1: Без маневрів. Для початківців. Вирішується в основному механічно.

5.2.1. Після оголошення судді про початок раунду роботи виставляються операторами перед червоними лініями.

5.2.2. Коли роботи встановлені на стартові позиції, суддя запитує про готовність операторів, якщо обидва оператори готові запустити робота, то суддя йде сигнал на запуск роботів.

5.2.2. Після сигналу на запуск роботів оператори запускають програму.

5.2.3. Роботи повинні проїхати прямою і зіткнутися один з одним.

5.2.4. Роботам заборонено намір маневрувати рингом.

5.3. Рівень №2: Обмежена маневреність. Потребує досвіду. Передбачає можливість маневрування по полю.

5.3.1. Після оголошення судді про початок раунду роботи виставляються операторами перед червоними лініями.

5.3.2. Коли роботи встановлені на стартові позиції, суддя запитує про готовність операторів, якщо обидва оператори готові запустити робота, суддя дає сигнал на запуск роботів.

5.3.3. Після сигналу на запуск роботів оператори запускають програму.

5.3.4. Роботи повинні проїхати прямо і зіткнутися один з одним, після зіткнення роботи можуть маневрувати рингом як завгодно. Час від початку раунду до зіткнення роботів не повинен перевищувати 5 секунд.

5.3.5. Якщо роботи не стикаються протягом 5 секунд після початку раунду, то робот через який, на думку судді, не відбувається зіткнення, вважається таким, що програв у раунді.

5.3.6. Якщо роботи їдуть прямо і не встигають зіткнутися за 5 секунд, то робот, що знаходиться далі від центру поля, вважається таким, що програв у раунді.

5.4. Рівень №3: Підвищена маневреність. Вимагає добрих умінь. Вимушує робота орієнтуватися у просторі.

5.4.1. Робот, у своїй конструкції, повинен мати добре видиму стартову кнопку, яка виконує функцію включення і вимкнення робота.

5.4.2. Після оголошення судді про початок раунду роботи готуються операторами, після підготовки оператор повинен повідомити судді про те, що робот готовий, після цього, до кінця раунду, оператор не може вводити жодні дані в робота, а програма робота повинна запускатися по натисканню стартової кнопки.

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

Приклади розміщення роботів:

5.4.4. Суддя виставляє роботів на стартові позиції.

5.4.5. За командою судді, натиснувши на стартову кнопку, оператори запускають роботів.

6. Суддівство

6.1. Оргкомітет залишає за собою право вносити до правил змагань будь-які зміни, якщо ці зміни не дають переваг одній з команд.

6.2. Контроль та підбиття підсумків здійснюється суддівською колегією відповідно до наведених правил.

6.3. Судді мають всі повноваження протягом всіх змагань; всі учасники повинні підкорятися їхнім рішенням.

6.4. Суддя може використовувати додаткові раунди для роз'яснення спірних ситуацій.

6.5. Якщо з'являються якісь заперечення щодо суддівства, команда має право в усному порядку оскаржити рішення суддів в Оргкомітеті не пізніше за закінчення поточного матчу.

6.6. Перегравання раунду може бути проведене за рішенням суддів у разі, якщо в роботу робота було стороннє втручання, або коли несправність виникла через поганий стан ігрового поля, або через помилку, допущену суддівською колегією.

6.7. Члени команди та керівник не повинні втручатися у дії робота своєї команди чи робота суперника ні фізично, ні на відстані. Втручання веде до негайної дискваліфікації.

7. Правила відбору переможця

7.1. За рішенням оргкомітету, ранжування роботів може відбуватися за різними системами залежно від кількості учасників та регламенту заходу, в рамках якого проводиться змагання. Рекомендована система:

o Перша спроба, в якій беруть участь усі учасники по олімпійській системі (на вибування) до визначення 3-5 (кількість фіналістів оголошується заздалегідь) фіналістів. Учасники групуються у пари по черзі: перший із другим, третій із четвертим тощо.

o Друга спроба, в якій беруть участь усі учасники по олімпійській системі (на вибуття) до визначення 3-5 (кількість фіналістів оголошується заздалегідь) фіналістів. Учасники групуються у пари через одного: перший із третім, другий із четвертим тощо.

o У фіналі беруть участь усі фіналісти попередніх спроб та змагаються за системою кожен з кожним. Ранжування проводиться за кількістю виграних матчів. У спірних ситуаціях проводять додаткові матчі.

* зазначені пункти регламенту може бути скасовано чи змінено оргкомітетом конкретного етапу змагань.

Поради оргкомітету:

  1. Для проведення змагань необхідно щонайменше 2 судді: Перший суддя проводить матчі, Другий перевіряє роботів перед матчами.
  2. Якщо ринг буде виконаний у вигляді круглої платформи, то змагання пройдуть видовищніше і суддям буде простіше визначити робота, що випав за ринг.

порядок проведення.

    Змагання складаються із серії матчів. Матч визначає, з двох роботів, що бере участь у ньому, найбільш сильного. Залежно від кількості учасників матч складається з 3 або 5 раундів по 30 секунд. Матч виграє робот, який виграв більшу кількість раундів. Суддя може використати додатковий раунд для роз'яснення спірних ситуацій.

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

  • 6-26 учасників – 5 раундів у матчі, 20-40 учасників – 3 раунди у матчі.
  • Перша спроба в якій беруть участь усі учасники олімпійської системи (на вибуття) до визначення 3-5 (кількість фіналістів оголошується заздалегідь) фіналістів. Учасники групуються у пари по черзі: перший із другим, третій із четвертим тощо.
  • Друга спроба в якій беруть участь усі учасники олімпійської системи (на вибуття) до визначення 3-5 (кількість фіналістів оголошується заздалегідь) фіналістів. Учасники групуються у пари через одного: перший із третім, другий із четвертим тощо.
  • У фіналі беруть участь усі фіналісти попередніх спроб та змагаються за системою кожен з кожним. Ранжування проводиться за кількістю виграних матчів, але на початку фіналу вважають, що всі фіналісти рівні. У спірних ситуаціях проводять додаткові матчі.
  • 3 раунди у матчі. Перерви між спробами 30 хв.
  • Спочатку учасники поділяються на 4 рівні групи. У першій спробі першому полі беруть участь 1 і 2 група, але в другому полі бере участь 3 і 4 група. Кожен учасник відіграє на своєму полі за системою "кожен з кожним". Забезпечується 50% зустрічей кожної команди з опонентами.
  • У другій спробі першому полі беруть участь 1 і 3 група, але в другому полі бере участь 2 і 4 група. Кожен учасник відіграє на своєму полі за системою "кожен із кожним", без повторних зустрічей, проведених у минулій спробі. При цьому забезпечується 75% зустрічей кожної команди із опонентами.
  • Третя спроба проводиться за достатньої кількості часу і не є обов'язковою. У третій спробі першому полі беруть участь 1 і 4 група, але в другому полі бере участь 2 і 3 група. Кожен учасник відіграє на своєму полі за системою "кожен із кожним", без повторних зустрічей, проведених у минулих спробах. При цьому забезпечується 100% зустрічей кожної команди із опонентами.
  • У фіналі беруть участь 5-7 команд, які виграли найбільшу кількість матчів. Фіналісти змагаються за системою кожен із кожним. Ранжування проводиться за кількістю виграних матчів, але на початку фіналу вважають, що всі фіналісти рівні. У спірних ситуаціях проводять додаткові матчі.

Примітка: враховуйте, що олімпійська система ранжування може несправедливо оцінювати учасників, якщо в парах зустрічаються рівносильні суперники. У зв'язку з цим радимо проводити ранжування «кожний з кожним» серед якомога більшої кількості учасників. 1

  1. Оператори можуть налаштовувати робота в будь-який час крім свого матчу та за 5 хвилин до нього.
  2. Якщо під час огляду буде знайдено порушення у конструкції робота, то суддя дасть 3 хвилини на усунення порушення. Однак, якщо порушення не буде усунуто протягом цього часу, команда не зможе брати участь у змаганні.
  3. Команди не можуть просити додаткового часу перед матчем.
  4. Перед початком раунду оператори можуть вибрати програму і повинні розташувати роботів у зоні страту (за червоною лінією). Далі суддя підтверджує готовність учасників та дає сигнал на початок раунду, при цьому оператори роботів повинні запустити програму на роботах та відійти від поля більш ніж на 1 метр протягом 5 секунд. За ці ж 5 секунд роботи повинні проїхати прямою і зіткнутися один з одним. Після зіткнення роботи можуть маневрувати рингом як завгодно.
  5. Під час матчу, один із суддів викликає пару учасників виступаючих у наступному раунді та перевіряє їхніх роботів.
  6. Перед стартом робот повинен повністю перебувати в зоні страту (за лінією).

Розрахунок часу змагань:

Приблизний час матчу в 5 раундів:

~ виклик команди та перевірка роботів (3 хв) + 5* (виставлення роботів (10 сек) + раунд (30 сек) = 3-4 хв.

Час змагань T у грі кожний з кожним у N команд:

T=((N*N-1)/2)*4 хв

Приклад із 10 командами:

((10 * 9) / 2) * 4 хв = 3 години.

Приклад із 10 командами за змішаною (кожною з кожною + олімпійською) системою:

((5)+(5*4)/2)*4 хв = 1 год.

Розклад для змагань з двома спробами, в яких бере участь 20 команд:

  • 9:00 - 9:30 Реєстрація команд.
  • 9:30 – 9:45 Збори з учасниками (Роз'яснення правил).
  • 9:45 - 10:30 Підготовка роботів.
  • 10:30 – 11:30 Проведення 1 спроби змагань з олімпійської системи ((10+5)*4хв=1год)
  • 11:30 – 12:00 Перерва.
  • 12:00 – 13:00 Проведення 2 спроби змагань з олімпійської системи ((10+5)*4хв=1год)
  • 13:00 – 14:00 Перерва. (Проведення додаткових матчів, якщо багато команд потрапило до п'ятірки найкращих за результатами перших спроб)
  • 14:00 – 15:00 Фінал. Кожен із кожним.
  • 15:00 – 16:00 Підбиття підсумків.
  • 16:00 - 17:00 Нагородження.

Ми давно знаємо про те, що роботи це наше майбутнє. Існує дуже багато напрямків робототехніки. Військові розробки, соціальні, розважальні та просто робочі роботи.
Але цього разу я хочу розповісти від імені команди Коледжу при МИРЕА про склад змагання, а точно про роботів сумоїстів.

Трохи про нашу команду

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

Хто такі взагалі ці роботи сумоїсти?

Спочатку, коли ми тільки довідалися про такі змагання, сумоїстів робили переважно з Лего. Але це досить погана ідея про це далі.

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

Буває їх 4 види:

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

Усі відрізняються не лише зовні, а й внутрішньо.

Мега - найбільші та небезпечні роботи. Максимальна вага до 3 кг, можливість ставити різні присоски, чого не дозволяється робити з іншими роботами.

Міні - приємні, невеликі роботи до 500 г 10 на 10 см. Не складні в паянні, зручні в налаштуванні та складанні. Є найпопулярнішою номінацією у сумо.

Мікро та нано - зменшені копії міні. Мікро 5 на 5 на 5 нано 2,5 на 2,5 на 2,5. Важко паяти та підбирати деталі. Популярніше, ніж мега-сумо.

У чому суть робо-сумо?

Головна мета: виштовхнути супротивника за межі круглого полігону. Програє той, хто першим зачепить будь-який об'єкт за його межами. Здавалося б, що складного в тому, щоби просто виштовхнути супротивника? А складність у тому, що роботи повністю автономні і дедалі частіше з'являються нові стратегії, з якими дедалі складніше боротися.

З чого вони складаються?

Повернемося до Лего. Швидше за все, багато хто з вас намагався щось робити з програмованим конструктором Лего, ну або хоча б бачили як це робиться. Існує навіть окрема номінація для таких роботів 15 на 15, але жахливо нудна і підійде тільки для зовсім початківців або маленьких робототехніків. У порівнянні з саморобними зразками цей програє у всьому, крім складності збирання.

По-перше, це низька швидкість. По-друге, величезні розміри. По-третє, низька швидкість відгуку датчиків. А також сам контролер залишає бажати кращого.

Детальніше про складання та комплектацію

Сумоїсти, які складають конкуренцію роблять на arduino. Використовують друковані плати, припаюючи на неї датчики, контролер, драйвера та ін. Також стоїть широкий вибір датчиків для виявлення супротивника, але варто використовувати інфрачервоні або лазерні, т.к. сонари дуже повільні та громіздкі. Звичайно, необхідні двигуни та колеса, щоб робот міг пересуватися. Ставити їх можна необмежену кількість, але практика показує, що найкраще робот їздить двома колесами розміщених ззаду. І, звичайно, робот не може жити без ковша та підчепу. Ківш це просто корпус, обгортка та захист плати та елементів. Найчастіше сталевий чи залізний. Підчепи ж роблять із лез для канцелярських ножів, але зустрічаються екземпляри з нестандартним підходом, наприклад, заточена дерев'яна лінійка або вата, але користі від такого підходу мало.

Найскладніше (крім програмування) спроектувати робота.

Перший етап


Це що називається, перший етап - розміщення двигунів і датчиків. Ви також можете спостерігати тут два невеликі датчики перед самим підчепом, так це датчики лінії.

Вони використовуються для виявлення білої смуги на полігоні, щоб уникнути випадкового падіння за межі рингу, але не є обов'язковим компонентом і використовуються не дуже часто. Високі швидкості часто не дозволяють вчасно зупинитися.

Другий етап


А тут вже нанесені контролер, драйвер, вимикачі та роз'єм для акумуляторів.
Залишиться лише роздрукувати трасування та перенести на текстолітову плату, а потім пролудити доріжки.

Ось як це виглядає на готовій платі:

Готова плата


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


Як бачите, нічого особливо складного тут нема. Про проблеми далі.

Перейдемо до програмування

Найпростіше використовувати контролери arduino або arduino-сумісні. Також, Arduino IDE нам допоможе. За стандартною схемою робота 5 датчиків. Значить станів може бути

$$display$$2^5$$display$$

Ми виключаємо ситуацію, коли бічні датчики одночасно бачать противника (бо такого не може бути, а якщо відбувається, значить є несправність в одному з датчиків), а також ситуацію, при якій бічний і два передні датчики видають 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. Двигуни, вибирайте за смаком, чим більше обертів за хвилину, тим краще.
5. Акумулятори (раджу брати літій-полімерні) + зарядна станція
6. Ключ (кнопка вимикача, припаюється на плату) та електричні елементи (є на картинці з трасуванням)
7. Драйвера
8. Контролер, для початку можна спробувати Polulu A-Star 32u4 micro та залити туди завантажувач ардуїно
9. Аркуш металу для корпусу
10. Бурмашинка для дірок у платі
11. Пульт запуску та до нього стартовий модуль
P.S. Якщо щось упустив - пишіть, виправлю.

Змагання

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

Але ці змагання не єдині, по Росії їх досить багато, найбільші проводяться в Москві. Приблизно раз на місяць-два ви можете випробувати щастя та позмагатися.

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


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

Нам цьому ми закінчуємо ознайомлювальну статтю та бажаємо всім успіхів у робототехніці, будемо раді побачити вас на змаганнях!

Як ви думаєте, чи всі ви знаєте про сумо? Сумо, згідно з визначенням вікі:

вид єдиноборств, у якому два борці виявляють найсильнішого на круглому майданчику. Батьківщина цього виду спорту – Японія. Японці відносять сумо до бойових мистецтв. Традиція сумо ведеться з давніх часів, тому кожен поєдинок супроводжується численними ритуалами.

Сучасне професійне сумо поєднує в собі елементи спорту, єдиноборства, шоу, традицій та бізнесу.

Зовсім недавно, подібні бої стали проводити між дрібними роботами. Автономним механічним бійцям необхідно виштовхнути суперника межі круглого поля. Ця, відносно, не складна «гра» припала до душі величезній кількості людей у ​​всьому світі. Щороку робо-сумо проводиться у містах різних держав.

Отже, робо-сумо, що це?

У змаганні робо-сумо конструктору (або команді конструкторів) необхідно зібрати і запрограмувати автономного робота, який найкраще виштовхуватиме робота-противника за межі чорної лінії рингу. Як ринг використовується кругла основа білого кольору, з обмежувальною лінією чорного кольору по краю.

На перший погляд, завдання здається дуже простим. Але робот повинен бути автономним, тобто після того, як оператор натисне кнопку «СТАРТ» роботу потрібно самому знайти супротивника і атакувати його! При цьому, якщо атака не вдалася, робот не повинен виїхати за межі рингу, а потім знову шукати і атакувати!

Перед конструкторами стоїть ряд досить непростих завдань:

1) Ознайомитись із регламентом змагань.Мабуть, найважливіша частина! Регламент це спеціальний документ, в якому роз'яснюються вимоги до конструкції робота, правил проведення поєдинків, суддівства тощо. Без знання регламенту неможливо якісно підготуватися до поєдинку

2) Знайти якнайбільше інформації про боях робо-сумо.Це потрібно зробити для того, щоб використати досвід попередніх команд. Вивчити відео та фото якомога більшої кількості боїв, та виявити кращу (на ваш погляд) конструкцію та алгоритм

3) Розробити стратегію поведінки робота.Робот може бути важким чи легким, повільним чи дуже швидким

4) Сформулювати робота.Від конструкції робота залежить дуже багато: вага, розмір, сила тяги, стійкість і т.д.

5) Написати програму роботу.Програма змушує бездушну купку металу, пластику та гуми «оживати»! Хороша програма – це 50-80% перемоги.

6) Провести тестові бої.Випробування у «полі»! Без них не вдасться оцінити та налагодити робота. Чим більше тестових боїв, тим ближча команда до перемоги!

7) Знайти та усунути недоліки конструкції та програми.Налагодження програми та покращення конструкції. Можуть проводитися до безкінечності)

8) Приготувати все потрібне для змагань.Останні приготування: до цього моменту робот готовий, тепер черга приготується конструкторам

Однак і це ще не все! На змаганнях можуть відбуватися позаштатні ситуації: відійшов провід живлення, села батарея, робот упав та розвалився, скинулася вся пам'ять у модулі робота тощо. Всім учасникам команд потрібно бути готовим до будь-якого розвитку подій, і, в потрібний момент, виявити кмітливість, кмітливість та холоднокровність!

У наступних статтях, ми намагатимемося докладніше розповісти про підготовку до змагань, про те, які існують конструкції роботів, і, звичайно, як написати програму робота сумо.

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).

Рис. 5

  1. Слідом за блоком "Незалежне керування моторами"помістимо програмний блок. Режим роботи блоку встановимо значення "Порівняння - Яскравість відбитого світла" (Мал. 6)

Рис. 6

У цьому режимі програмний блок "Датчик кольору" "Жовтої палітри"візуально дуже схожий на програмний блок "Очікування" "Помаранчевої палітри"в режимі "Датчик кольору - Порівняння - Яскравість відбитого світла". Але, на відміну від блоку "Чекання", цей програмний блок не чекає на виконання умови, зазначеної параметрами "Тип порівняння" (Рис. 7 поз. 1)і "Порогове значення" (Рис. 7 поз. 2), а відразу видає логічне значення ( "Істина"або "Брехня") у вихідному параметрі та виміряне значення - у вихідному параметрі "Освітлення" (Рис. 7 поз. 4).

Параметри "Тип порівняння"і "Порогове значення"на Рис. 7 поз. 1, 2 "Результат порівняння" (Рис. 7 поз. 3)видавав логічне значення "Істина"при перетині датчиком кольору чорної межі рингу.

Рис. 7

  1. У разі використання ультразвукового датчика за блоком "Датчик кольору"встановимо програмний блок "Ультразвуковий датчик" "Жовтої палітри". Режим роботи блоку встановимо значення "Порівняння - Відстань у сантиметрах" (Рис. 8 поз. 1). Параметр "Тип порівняння" (Рис. 8 поз. 2), параметр "Порогове значення" (Рис. 8 поз. 3)встановимо таким чином, щоб вихідний параметр "Результат порівняння" (Рис. 8 поз. 4)видавав логічне значення "Істина"

Рис. 8

У разі використання інфрачервоного датчика за блоком "Датчик кольору"встановимо програмний блок "Інфрачервоний датчик" "Жовтої палітри". Режим роботи блоку встановимо значення "Порівняння - Наближення" (Рис. 9 поз. 1). Параметр "Тип порівняння" (Рис. 9 поз. 2), параметр "Порогове значення" (Рис. 9 поз. 3)встановимо таким чином, щоб вихідний параметр "Результат порівняння" (Рис. 9 поз. 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)"над вхідним значенням є протилежне значення.

  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). Дані налаштування завершать виконання циклу при "Істинному"внаслідок виконання логічної операції.

Рис. 11


Рис. 12

Давайте протестуємо алгоритм атаки, що вийшов! Для цього помістимо нашого робота всередину рингу, навпаки встановимо нерухомого суперника і запустимо програму атаки на виконання. Наш робот повинен впевнено виштовхати суперника за межі рингу та зупинитися над чорним кордоном поля. Вийшло? Отже наш сумоїст чітко контролює кордон рингу.

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

Підіб'ємо підсумок: ми реалізували алгоритм пошуку суперника і успішно його протестували, також пройшов перевірку алгоритм атаки.

Закінчена програма сумоїста має у нескінченному циклі виконувати послідовно пошук суперника, та був - атаку суперника. Можна було б об'єднати обидві частини нашої програми, якби не одне маленьке доповнення. Якщо наш робот зупинився над кордоном рингу, то перед тим, як розпочати пошук, роботу слід, від'їхавши трохи назад, повернутися всередину рингу. Доповнимо нашу програму атаки наступним кодом: за межами циклу атаки, скористаємося програмним блоком " Перемикач" "Помаранчевої палітри". Режим роботи блоку "Перемикач"встановимо в "Датчик кольору - Порівняння - Яскравість відбитого світла".Параметри "Тип порівняння"і "Порогове значення"встановимо аналогічно раніше використовуваним у програмному блоці "Датчик кольору" "Жовтої палітри". Отже, якщо наш робот зупинився над чорною лінією, виконання буде передано верхньому контейнеру програмного блоку "Перемикач". Саме у верхній контейнер помістимо програмний блок "Керування" "Зеленої палітри", з параметрами, що змушують робота від'їхати назад на один оборот моторів. У нижній контейнер програмного блоку "Перемикач"помістимо програмний блок, що вимикає мотори (Мал. 13). Повторно протестувавши алгоритм атаки, переконаємося, що після того, як робот-суміст виштовхнув суперника за межі рингу, він повернувся трохи назад.

Рис. 13

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

Висновок:

Програма, яку ми розібрали з вами на цьому уроці, реалізує лише один прямий силовий алгоритм поведінки робота-сумоїста. Вона має на увазі, що у прямому силовому протистоянні робот повинен неодмінно здолати свого суперника. Але наш навчальний робот, звичайно, зовсім не схожий на м'язистого борця-сумо. Для того, щоб впевнено виступити в цьому змаганні, необхідно приділити пильну увагу в першу чергу конструкції робота, створити міцну, захищену платформу, за допомогою додаткових провідних коліс або гусениць підвищити зчеплення з поверхнею рингу. На популярному відеохостингу Youtube.comна запит "сумо lego роботів"можна знайти безліч відеороликів з справжніх змагань роботів, з яких ви неодмінно почерпнете собі цікаві ідеї для реалізації у своїх конструкціях.

Головна ж мета цього уроку – на практичному прикладі показати вам метод безперервної обробки показань від кількох датчиків. Чи можна вдосконалити нашу програму? Безперечно! Наприклад, використовуючи програмний блок "Випадкове значення" "Червоної палітри", Змінити алгоритм пошуку суперника таким чином, щоб задавати випадкове обертання робота вліво або вправо, тим самим, дезорієнтуючи суперника. Спробуйте самостійно вбудувати цей додатковий код в нашу програму. Подумайте над тим, які зміни потрібно внести в прорамму, у разі проведення змагання на чорному рингу з білою кордоном. Можливо, що у вас з'являться власні ідеї покращення: поділіться ними у коментарях до уроку!

Сподобалася стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не був врахований.
Дякую. Ваше повідомлення відправлено
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!