Вступ:Розділ "Практика" являє собою продовження курсу "Перші кроки" . Протягом ряду уроків ми розберемо рішення базових завдань робототехніки., Навчимося отримувати і обробляти інформацію від декількох датчиків. Сподіваємося, що отримані знання допоможуть вам надалі при самостійному вирішенні творчих і змагальних завдань. Урок №11 присвятимо розбору змагальної дисципліни під назвою "Кегельрінг". 11.1 Правила змагання. Підготовка поля для проведення змагань.Основні правила "Кегельрінг" досить прості: необхідно зібрати і запрограмувати робота, який виштовхує кеглі за межі рингу. Кеглями, як правило, виступають жерстяні банки ємністю 0,33 л, а роль рингу виконує біле поле, обмежене чорною окружністю з шириною лінії 50 мм. З одним з варіантів регламенту проведення змагання можете ознайомитися під спойлером нижче:
Отже: для проведення змагання нам знадобиться поле, точно таке ж, яке ми використовували при вирішенні Завдання №12 Уроку №6 курсу "Перші кроки" . Ви можете завантажити макет відповідного поля на сторінці "Макети полів для тренування і змагань" нашого сайту, а потім роздрукувати його в цифровий друкарні на банерній тканині, або виготовити поле самостійно, використовуючи плакатну папір відповідного розміру, великий циркуль, лінійку і чорну туш. Бляшані банки найкраще обклеїти по периметру самоклеящейся папером (нам знадобляться 2 - 4 банки білого кольору і стільки ж - чорного). Реквізит для уроку готовий! 11.2 Конструювання робота для конкретного виду змагання.На початковому етапі вирішення задачі давайте зробимо пару маленьких припущень: не звертатимемо увагу на задоволення вимоги до розмірів нашого робота, обмежимося пошуком і виштовхуванням всього однієї кеглі. Настає важливий етап моделювання робота - перед нами стоять дві взаємопов'язаних завдання:
Розглянемо наступну поведінкову модель:
Отже, наш робот повинен:
Дані вимоги диктують нам умови конструкції робота:
Всім умов в повній мірі відповідає наш робот, яким ми користувалися, коли проходили курс "Перші кроки" .
Ви можете скористатися запропонованою інструкцією або зібрати власного робота, що відповідає певним нами вимогам до його конструкції. У процесі складання конструкції не забудьте підключити мотори і датчики до модуля EV3: лівий мотор - до порту "B" , правий мотор - до порту "C" , ультразвукової або інфрачервоний датчик - до порту "2" , датчик кольору - до порту "3 " . Після складання робота приступимо до створення програми. 11.3 Створення програми для змагання "Кегельрінг".Детально пропишемо послідовність дій нашого робота для виявлення однієї кеглі на поле:
Приступимо до реалізації та налагодженні п. 1, 2 - навчимо нашого робота виявляти кеглю і зупинятися точно навпаки. Спочатку нам необхідно вибрати порогове значення для виявлення кеглі навпроти нашого робота. Для цього завантажимо середу програмування, створимо новий проект - "lessons-2" , нову програму в проекті назвемо "lesson-11" . Підключимо робота до середовища програмування, потім встановимо його точно в центр поля, поставимо напроти робота кеглю. На "Сторінці апаратних засобів" , що знаходиться в правому нижньому кутку середовища програмування, виберемо вкладку "Подання порту" (Рис. 1, 2 поз. 1) і знімемо показання датчика, що визначає відстань до кеглі, встановивши відповідний режим відображення показань. У нашому випадку ультразвуковий датчик в режимі "Відстань в сантиметрах" показує значення - 25,9 (Рис. 1 поз. 2) . Мал. 1 Інфрачервоний датчик в режимі "Наближення" показує значення - 48 (Рис. 2 поз. 2) Мал. 2
Тепер ми можемо запрограмувати знаходження роботом кеглі: ультразвуковий датчик
Мал. 5 інфрачервоний датчик
Мал. 6 Завантажимо вийшла програму в робота і запустимо її на виконання. Раз по раз, виконуючи програму, ми можемо помітити, що наш робот зупиняється не зовсім точно навпроти банки. Пов'язано це з тим, що датчик може виявляти предмет не тільки строго навпроти себе, а й на деякому відхиленні від напрямку погляду датчика. В цьому випадку можна, або після зупинки робота трохи докрутити його на необхідний кут, використовуючи додатковий блок "Незалежне керування моторами" , або поступово збільшувати швидкість обертання, підбираючи параметр потужність (Рис. 5, 6 поз. 1) , поки робот не стане зупинятися точно навпроти кеглі. Наприклад, нам потрібно було збільшити потужність до 50 одиниць для робота, зібраного з освітньої версії набору, і до 40 одиниць для робота, зібраного з домашньої версії набору. Переходимо до реалізації п. 3, 4 нашої послідовності дій. Рухатися вперед і зупинятися при перетині чорної лінії ми вже навчилися, коли розбирали Завдання №11 Уроку №6 курсу "Перші кроки" . Встановимо робота таким чином, щоб датчик кольору знаходився точно над чорною кордоном поля і виміряємо його значення в режимі "Яскравість відбитого світла" будь-яким зручним вам способом, розглянутим вище. У нашому випадку вийшло значення, рівне 7 . В якості порогового значення приймемо число 10 . Додамо до нашої програми виявлення кеглі наступні програмні блоки:
Мал. 7 Наш робот навчився успішно знаходити і виштовхувати кеглю, але поточна конструкція не дозволяє роботові впевнено її фіксувати при транспортуванні за межі поля. Давайте трохи доопрацюємо конструкцію робота, прикріпивши до нього клешні, які збільшать ширину захвату і дозволять міцно утримувати кеглю. На передньому бампері робота зліва і справа закріпіть деталі, як показано на малюнках нижче:
Тепер наш робот просто відмінно справляється зі своєю роботою! Залишилося тільки навчити його повертатися в центр кола ... "Сторінка апаратних засобів" середовища програмування дозволяє нам спостерігати не тільки поточні показники датчиків, а й накопичені показання датчика обертання мотора (Рис. 8 поз. 1) . Натиснувши, на значок мотора, ми можемо вибрати найбільш зручну нам висновок інформації про обертання мотора в "оборот" або "Градусах" (Рис. 8 поз. 2) . Мал. 8 Програмний блок "Обертання мотора" "Жовтої палітри" дозволяє отримувати і обробляти це значення в програмі. Режим "Скидання" програмного блоку "Обертання мотора" встановлює нульове значення датчика і відлік оборотів починається спочатку. (Рис. 9) Мал. 9 Скористаємося цією можливістю: якщо ми скинемо показання одного з датчиків моторів в 0 (в даному випадку можна обнулити значення будь-якого з моторів "B" і "C" , адже робот поїде прямо, а значить обидва колеса провернути на однакове значення), то після зупинки робота над чорною лінією, можна буде отримати значення датчика в "Градусах" або "оборот" і, подавши його на вхід відповідного параметра блоку "Рульове управління" , змусити робота проїхати точно таку ж відстань. А для того, щоб робот рухався назад, необхідно змінити значення параметра "Потужність" на негативне значення. Внесемо необхідні зміни в нашу програму:
Мал. 10 Завантажимо вийшла програму в робота і переконаємося, що робот знайшов кеглю, виштовхав її за межі поля і повернувся в центр поля! Для того, щоб змусити нашого робота виштовхувати необхідну кількість кеглів, всі наші програмні блоки помістимо всередину програмного блоку "Цикл" "Помаранчевої палітри" . Режим програмного блоку "Цикл" встановимо в значення "Підрахунок" , параметр "Підрахунок" встановимо рівною кількості кеглів (Рис. 11, 12 поз. 1) Для зручності відображення на екрані нам довелося оформити програму в два рядки - ви ж цілком можете скласти її в один рядок. Мал. 11
Мал. 12 Програма готова!11.4 Змагання "Кегельрінг" з дополнітельм умовоюНа сайті myROBOT.ru опубліковані ще два регламенту проведення змагання "Кегельрінг": "Кегельрінг-КВАДРО" і "Кегельрінг-МАКРО" . Основна умова - необхідно виштовхувати за межі поля білі кеглі, залишаючи на місці чорні. Як навчити робота на відстані визначати колір кеглі? Можна попереду, по ходу руху робота розташувати ще один датчик кольору і, наблизившись до кеглі на відстань 1 - 2 см, визначити її колір, втрачаючи при цьому дорогоцінний час, відведений на виконання завдання. Але, якщо ви уважно вивчили п. 8.2 Уроку №8курсу "Перші кроки" , то вже знаєте, що на показання інфрачервоного датчика в режимі "Наближення"впливає також колір предмета. Проведемо експеримент: встановимо робота з інфрачервоним датчиком в центр поля, навпаки помістимо білу кеглю і зафіксуємо показання датчика. У нашому випадку це значення дорівнює 49 . Тепер навпаки робота встановимо чорнукеглю - показання датчика змінилося і тепер, не дивлячись на однакову відстань, становить 64 . Отже, для успішного виявлення білих кеглів і ігнорування чорних, необхідно вибрати в якості порогового - значення, що знаходиться між цими числами. Число 55повністю задовольняє цій умові. Нам навіть не доведеться переробляти основний алгоритм програми! Спробуйте і переконайтеся в цьому самі! На жаль, вирішити це завдання з використанням тільки ультразвукового датчика, не представляється можливим ... висновок:При вирішенні практичного завдання робототехніки успіх приходить тільки при багаторазовому тестуванні робота. В процесі тестування можливе виникнення ситуації, коли вам потрібно буде вносити зміни не тільки в програму, але і конструкцію робота. Не бійтеся експериментувати, не бійтеся помилятися. Вдумливий аналіз помилок обов'язково принесе вам позитивний результат! Успіхів! впередназад | |||||||||
| |||||||||
Переглядів: 1022 | | |
Всього коментарів: 0 | |