Вступ:Урок №12 курсу "Практика" представляє розбір рішення, напевно, найпопулярнішого змагання роботів - "Сумо" . Головне завдання робота-сумоїста полягає в тому, щоб виштовхнути за межі рингу свого суперника. Існує безліч варіантів правил проведення цього змагання, що накладають різні обмеження в першу чергу на розміри і конструкцію роботів, тим не менш, базові алгоритми поведінки робота при цьому дуже схожі. Тому наш урок в значній мірі буде спрямований на реалізацію програми поведінки, а в завершальній частині уроку розглянемо деякі поради щодо практичної підготовки до змагання роботів. 12.1. П оле для проведення змагання. Правила змагання.Не дивлячись на те, що змагальна дисципліна "Сумо" більшістю організаторів змагань позиціонується як змагання, призначене для початківців робототехников, вона користується незмінною увагою не тільки учасників, а й глядачів! Змагання проводяться на двох видах полів: або біле коло, обмежений чорної окружністю, або, навпаки, чорний коло, обмежений білою окружністю. Дуже часто макет поля наноситься на круглий подіум невеликої висоти. В цьому випадку переможений робот принуждается до падіння (буває, що з подіуму падають обидва учасники битви). Для нашого уроку ми візьмемо те ж саме поле, яке використовували при розборі Уроку №11 - "Кегельрінг" . Це поле є білий круг, обмежений чорної окружністю. З класичними правилами проведення змагання "Сумо" за версією Російської асоціації освітньої робототехніки ви можете ознайомитися під спойлером нижче:
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 м. Під час роботи робота також були відсутні сторонні предмети, які могли б зашкодити пошуку. На "Сторінці апаратних засобів" , що знаходиться в правому нижньому кутку середовища програмування, виберемо вкладку "Подання порту" (Рис. 1, 2 поз. 1) і знімемо показання датчика, що визначає відстань до суперника, встановивши відповідний режим відображення показань. У нашому випадку ультразвуковий датчик в режимі "Відстань в сантиметрах" показує значення - 56,1 (Рис. 1 поз. 2) . За порогове значення приймемо число - 57 . Мал. 1 Інфрачервоний датчик в режимі "Наближення" показує значення - 68 (Рис. 2 поз. 2) . За порогове значення приймемо число - 70 . Мал. 2 За аналогією з "Кегельрінг" ми можемо запрограмувати знаходження роботом суперника, тільки, щоб трохи дистанціюватися від попереднього уроку, змінимо напрямок обертання робота на протилежне: ультразвуковий датчик
Мал. 3 інфрачервоний датчик
Мал. 4 На етапі налагодження цього алгоритму вам доведеться, підбираючи значення "Потужність" моторів "B" і "C" а також граничне значення датчика, домогтися від вашого робота точного виявлення і зупинки строго навпроти суперника. Тільки після цього можна буде переходити до програмної реалізації алгоритму атаки. Якщо пошук суперника в "Сумо" дуже схожий на пошук кеглі в "Кегельрінг" , то виштовхування суперника має важливе відмінність! Починаючи атаку, перше, що необхідно зробити, це прямолінійно спрямуватися на максимальній потужності моторів в сторону виявленого суперника, перевіряючи датчиком кольору виявлення кордону рингу. Але ж наш суперник теж може рухатися! Тому цілком можлива ситуація, коли суперник вийде в сторону з-під напрямки нашої атаки. В цьому випадку, наш робот, промахнувшись, буде рухатися в бік кордону рингу, втрачаючи суперника і дорогоцінний час. Отже, нам необхідно під час прямолінійного руху вперед аналізувати обидва датчика і припиняти атаку в разі, якщо робот втратить суперника АБО робот досягне межі рингу . Тому нам необхідно відмовитися від використання програмного блоку "Очікування" "Помаранчевої палітри" і самостійно в циклі отримувати і обробляти показання двох датчиків. Приступимо до поетапної реалізації алгоритму атаки суперника : для цього створимо в проекті тимчасову програму "lesson-12-1" і почнемо її наповнення програмними блоками.
Мал. 5
Мал. 6 В цьому режимі програмний блок "Датчик кольору" "Жовтої палітри" візуально дуже схожий на програмний блок "Очікування" "Помаранчевої палітри" в режимі "Датчик кольору - Порівняння - Яскравість відбитого світла" . Але, на відміну від блоку "Очікування" , цей програмний блок не чекає виконання умови, зазначеного параметрами "Тип порівняння" (Рис. 7 поз. 1) і "Поріг" (Рис. 7 поз. 2) , а відразу видає логічне значення ( "Істина" або "Брехня" ) в вихідному параметрі "Результат порівняння" (Рис. 7 поз. Параметри "Тип порівняння" і "Поріг" на Рис. 7 поз. 1, 2 встановимо таким чином, щоб вихідний параметр "Результат порівняння" (Рис. 7 поз. 3) видавав логічне значення "Істина" при перетині датчиком кольору чорної кордону рингу. Мал. 7
Мал. 8 У разі використання інфрачервоного датчика за блоком "Датчик кольору" встановимо програмний блок "Інфрачервоний датчик" "Жовтої палітри" . Режим роботи блоку встановимо в значення "Порівняння - Наближення" (Рис. 9 поз. 1) . Параметр "Тип порівняння" (Рис. 9 поз. 2) , параметр "Поріг" (Рис. 9 поз. 3) встановимо таким чином, щоб вихідний параметр "Результат порівняння" (Рис. 9 поз. 4) видавав логічне значення " істина " в разі втрати з уваги роботом суперника. Давайте ще раз проаналізуємо проміжний код нашого алгоритму атаки: ми включили мотори на максимальну потужність і рухаємося вперед, постійно в циклі опитуючи датчики. Якщо наш робот перетне чорну лінію кордону рингу, то значення вихідного параметра "Результат порівняння" "датчика кольору"прийме значення "Істина" . Якщо наш робот втратить суперника, то значення вихідного параметра "Результат порівняння" датчика, що стежить за суперником, також прийме значення "Істина" . У будь-якому з цих випадків нам слід припинити атаку, завершивши наш цикл. У цьому нам допоможе програмний блок "Логічні операції" "Червоної палітри" . Познайомимося з цим блоком докладніше:призначений для виконання операцій над логічними даними (Рис. 10) . Мал. 10 Обраний режим програмного блоку "Логічні операції" "Червоної палітри" визначає одну з чотирьох операцій над логічними даними: "І (AND)" , "АБО (OR)" , "Що виключає АБО" і "Виключення (NOT)". Два вхідних параметра "a" і "b" (для операції "Виключення (NOT)" - один вхідний параметр "a" ) передають в програмний блок вхідні значення, а результуюче значення видається вихідним параметром "Результат" . Якщо ви раніше не стикалися з логічними операціями,
Продовження
| |
| |
Переглядів: 1134 | | |
Всього коментарів: 0 | |