• Nenhum resultado encontrado

[PENDING] НАПРАМКИ ДОСЛІДЖЕНЬ ТА РОЗВИТКУ КОМП’ЮТРНОЇ ІНЖЕНЕРІЇ

N/A
N/A
Protected

Academic year: 2024

Share "НАПРАМКИ ДОСЛІДЖЕНЬ ТА РОЗВИТКУ КОМП’ЮТРНОЇ ІНЖЕНЕРІЇ"

Copied!
62
0
0

Texto

(1)

Хмельницький національний університет

НАПРАМКИ ДОСЛІДЖЕНЬ ТА РОЗВИТКУ КОМП’ЮТРНОЇ

ІНЖЕНЕРІЇ

Методичні вказівки до виконання лабораторних робіт для магістрів спеціальності

“123 - Комп’ютерна інженерія”

Затверджено на засіданні кафедри системного програмування.

Протокол № 6 від 7.09.2018

Хмельницький 2018

(2)

Об’єктно-орієнтоване програмування : методичні вказівки до виконання лабораторних робіт для студентів напряму підготовки

“Комп’ютерна інженерія” / С. М. Лисенко. – Хмельницький : ХНУ, 2018. – 142 с.

Укладачі: Лисенко С. М., канд. техн. наук, доц.

Відповідальний за випуск: Говорущенко Т.О.

Редактор-коректор: Соколова Г.М.

Комп’ютерна верстка:

Макетування та друк здійснено редакційно-видавничим центром Хмельницького національного університету (м. Хмельницький, вул.

Інститутська, 7/1). Підп. до друку 15.02. 2018. Зам. № 299, тир. 150 прим., 2018.

© ХНУ, 2018

(3)

ВСТУП

Методичні вказівки для студентів шостого курсу за спеціальністю

«Комп’ютерна інженерія» призначені для набуття практичних навиків розробки та програмування роботизованих систем.

Завдання даного курсу - познайомити з основами та принципами побудови та програмування робототехнічних систем на базі конструктора Lego mindstorms EV3. Навчити будувати конструкції робототехнічних систем, програмувати їх під певні завдання.

Основною метою лабораторних робіт є:

• застосовування основ робототехніки для розв’язування задач синтезу робототехнічних систем;

• застосовування знань принципів побудови робототехнічних систем для ідентифікації, формулювання і розв’язування технічних задач спеціальності;

• розробка програмного забезпечення для робототехнічних систем;

експлуатувати готові робототехнічні системи;

• застосовування теорії та методів системного аналізу, математичного і комп’ютерного моделювання при проектуванні робототехнічних систем;

• розв’язування складних задач і проблем в галузі проектування робототехнічних систем, що передбачає проведення досліджень та/або здійснення інновацій;

• створення системного та прикладного програмного забезпечення для робототехнічних систем;

• проектування робототехнічних систем та їхні компонентів, програмне забезпечення для робототехнічних систем з урахуванням усіх аспектів їх життєвого циклу ПЗ, включаючи створення, налаштування, експлуатацію та обслуговування.

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

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

завдання для лабораторної роботи; результати роботи програми;

висновок, який включає в собі опис виконаної роботи із зазначенням

«що зроблено?», «за допомогою чого це зроблено?», «які отримано результати?», «вірність отриманих результатів».

Завдання до кожної лабораторної роботи мають три рівні складності, яки кожен студент обирає на власний розсуд.

Оцінку „відмінно”, за шкалою ECTS – А, отримує студент за вірне

(4)

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

Оцінку „добре”, за шкалою ECTS – В, отримує студент за повне засвоєння навчального матеріалу, володіння понятійним апаратом, орієнтування в вивченому матеріалі, свідоме використання знань для вирішення практичних завдань, грамотний виклад відповіді, але вирішив практичні завдання лише ІІ рівня складності.

Оцінку „добре”, за шкалою ECTS – С, отримує студент за правильно виконане завдання ІІ рівня складності з двома-трьома суттєвими помилками.

Оцінки "задовільно", за шкалою ECTS – D, заслуговує студент, який виконав завдання ІІ рівня складності та виявив знання основного навчально-програмного матеріалу в обсязі, необхідному для подальшого навчання та практичної діяльності за професією, що справляється з виконанням практичних завдань, передбачених програмою.

Оцінки "задовільно", за шкалою ECTS – E, заслуговує студент за неповне завдання ІІ рівня складності та неповне опанування програмного матеріалу, але отримані знання і набуті практичні навички відповідають мінімальним критеріям оцінювання.

(5)

7.2. Робот-поліцейський

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

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

Рис.6

Послідовність дій, виконуваних роботом, буде наступною:

● Робот чекає появи в зоні контролю об'єкта, що рухається;

● вимірює відстань до об'єкта;

● чекає 1 секунду;

● повторно вимірює відстань до об'єкта;

● знаходить пройдену відстань і порівнює його з пороговим значенням;

● виводить на екран результат і подає тривогу у разі перевищення швидкості.

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

1. За допомогою програмного блоку "Ожидание" чекаємо появи об'єкта в зоні контролю робота (Рис. 7 поз. 1). Відстань до об'єкту передаємо в програмний блок "Математика" (Рис. 7 поз. 4).

2. За допомогою програмного блоку "Ожидание" чекаємо 1 секунду.

3. Другий раз знімаємо показання ультразвукового давача (Рис. 7 поз. 3) і передаємо отримане значення в програмний блок

"Математика" (Рис. 7 поз. 4).

4. В програмному блоці "Математика" знаходимо відстань, пройдену об'єктом вимірювання за 1 секунду. Отримане значення

(6)

передаємо в програмний блок "Сравнение" (Рис. 7 поз. 5) і виводимо на екран (Рис. 7 поз. 6).

5. За допомогою програмного блоку "Сравнение" (Рис. 7 поз. 5) порівнюємо пройдену відстань з пороговим значенням, рівним 10.

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

Логічний висновок може приймати одне з двох значень: "Да" або

"Нет". Цей висновок передається в програмний блок

"Переключатель" (Рис. 7 поз. 7), налаштувавши його на прийом логічних значень. Зверніть увагу: шини даних, передають логічні значення, пофарбовані в зелений колір, на відміну від жовтих шин даних, передавальних числові значення.

6. За допомогою програмного блоку "Переключатель"

організуєються дві гілки поведінки програми в залежності від швидкості об'єкта. Якщо об'єкт за 1 секунду наблизився до роботу, більше ніж на 10 см, значить, будемо вважати його наближення критичним і подамо сигнали тривоги (Рис. 7 поз. 8). В іншому випадку будемо вважати, що об'єкт рухається повільно, в цьому випадку робот включить зелене підсвічування клавіш модуля EV3 і виголосить

"Okay".

7. В кінці програми ще раз скористаємося програмним блоком

"Ожидание" (Рис. 7 поз. 10) і "притримаємо" завершення програми на 5 секунд, щоб встигнути прочитати інформацію на екрані модуля EV3.

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

Спробуйте змінювати порогові значення в програмі.

7.3. Ультразвуковий давач - режим "Присутствие/слушать"

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

Результатом виявлення є логічне значення: "Да", якщо знайдено ультразвукове випромінювання, або "Нет", якщо нічого не знайдено.

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

(7)

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

(8)

Рис.7

(9)

Рішення Прикладу №13

Використовуючи знання, отримані раніше, спробуйте самостійно розібрати варіант рішення Приклад №13.

№8 – вивчення інфрачервоного давача

8.1. Вивчаємо інфрачервоний давач і інфрачервоний маяк Інфрачервоний давач (Рис. 1) у своїй роботі використовує світлові хвилі, невидимі людині - інфрачервоні хвилі*. Такі ж хвилі використовують, наприклад, дистанційні пульти управління різної сучасною побутовою технікою (телевізорами, відео та музичними пристроями). Інфрачервоний давач в режимі "Приближение"

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

У режимі "Удаленный" інфрачервоний давач вміє визначати натискання кнопок інфрачервоного маяка, що дозволяє організувати дистанційне керування роботом. У режимі "Маяк" інфрачервоний маяк посилає постійні сигнали, за якими інфрачервоний давач може визначати приблизний напрямок і відстань до маяка, що дозволяє запрограмувати робота таким чином, щоб він завжди слідував у бік

(10)

інфрачервоного маяка. Перед використанням інфрачервоного маяка в нього необхідно встановити дві батарейки AAA.

Рис.1 Рис.2

8.2. Інфрачервоний давач. Режим "Приближение"

Цей режим роботи інфрачервоного давача схожий на режим визначення відстані ультразвуковим давачем. Різниця криється в природі світлових хвиль: якщо звукові хвилі відбиваються від більшості матеріалів практично без загасання, то на відбиття світлових хвиль впливають не тільки матеріали, але і колір поверхні. Темні кольори на відміну від світлих сильніше поглинають світловий потік, що впливає на роботу інфрачервоного давача. Діапазон роботи інфрачервоного давача також відрізняється від ультразвукового - давач показує значення в межах від 0 (предмет знаходиться дуже близько) до 100 (предмет знаходиться далеко або не виявлений). Ще раз підкреслимо:

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

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

Із завданням визначення перешкоди перед собою інфрачервоний давач справляється цілком успішно.

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

(11)

У робота, зібраного по інструкції small-robot-31313, попереду по ходу руху встановлений інфрачервоний давач. З'єднаємо його кабелем з портом "3" модуля EV3 і приступимо до створення програми.

Розглянемо програмний блок "Ожидания" Помаранчевої палітри, переключивши його в Режим: "Инфракрасный давач" -

"Сравнение" - "Приближение" (Рис. 3). У цьому режимі програмний блок "Ожидание" має два вхідних параметра: "Тип сравнения" і

"Пороговое значення".

Рис.3 Рішення:

● Почати прямолінійний рух вперед

● Чекати, поки граничне значення інфрачервоного давача стане менше 20

● Припинити рух вперед

● Від'їхати назад на 1 оборот двигунів

● Повернути вправо на 90 градусів (розрахуйте необхідний кут повороту моторів)

● Продовжити виконання пунктів 1 - 5 в нескінченному циклі.

Рішення №17

(12)

Рис.4

8.3. Дистанційне керування роботом за допомогою інфрачервоного маяка

Інфрачервоний маяк, що входить в домашню версію конструктора Lego mindstorms EV3, в парі з інфрачервоним давачем дозволяє реалізувати дистанційне керування роботом. Познайомимося з маяком ближче:

1. Користуючись інфрачервоним маяком, направляйте передавач сигналу (Рис. 5 поз. 1) у бік робота. Між маяком і роботом мають бути відсутні будь-які перешкоди! Завдяки широкому куту огляду інфрачервоний давач впевнено приймає сигнали, навіть якщо маяк розташовується позаду робота!

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

3. З допомогою спеціального червоного перемикача (Рис. 5 поз.

3) можна вибрати один з чотирьох каналів для зв'язку маяка і давача. Зроблено це для того, щоб в безпосередній близькості можна було керувати декількома роботами.

Рис.5

Приклад №15. Написати програму дистанційного керування роботом за допомогою інфрачервоного маяка.

(13)

Для реалізації можливості вибору виконуваних блоків необхідно скористатися програмним блоком "Переключатель" Помаранчевої палітри. Встановимо режим роботи блоку "Переключатель" в

"Инфракрасный давач" - "Измерение" - "Удаленный" (Рис. 6).

Рис.6

Для активації зв'язку між інфрачервоним давачем і маяком необхідно встановити правильне значення параметра "Канал" (Рис. 7 поз. 1) у відповідності з обраним каналом на маяку! Кожного програмного контейнера блоку "Переключатель" необхідно зіставити один з

(14)

можливих варіантів натискання сірих клавіш (Рис. 7 поз. 2). Зауважте:

деякі варіанти включають одночасне натискання двох клавіш (натиснуті клавіші помічені червоним кольором). Всього в програмному блоці

"Переключатель" в цьому режимі можна обробляти до 12 різних умов (одна з умов повинна бути вибрана умовою за замовчуванням).

Додаються програмні контейнери в блок "Переключатель"

натисканням на "+" (Рис. 7 поз.3).

Рис.7

Пропонуємо реалізувати наступний алгоритм керування роботом:

● Натискання верхньої лівої кнопки включає обертання лівого мотора, робот повертає вправо (Рис. 7 поз. 2 значення: 1)

● Натискання верхньої правої кнопки включає обертання правого мотора, робот повертає вліво (Рис. 7 поз. 2 значення: 3)

● Одночасне натискання верхніх лівої і правої кнопок включає одночасне обертання вперед лівого і правого мотора, робот рухається вперед прямолінійно (Рис. 7 поз. 2 значення: 5)

● Одночасне натискання нижніх лівої і правої кнопок включає одночасне обертання назад тому лівого і правого мотора, робот рухається назад прямолінійно (Рис. 7 поз. 2 значення: 8)

● Якщо не натиснута жодна кнопка маяка - робот зупиняється (Рис. 7 поз.

2 значення: 0).

(15)

При розробці алгоритму дистанційного керування ви повинні знати наступне: коли натиснута одна з комбінацій сірих кнопок - інфрачервоний маяк безперервно посилає відповідний сигнал, якщо кнопки відпущені, то відправка сигналу припиняється. Виняток становить окрема горизонтальна сіра кнопка (Рис. 7 поз 2 значення: 9).

Ця кнопка має два стани: "ВКЛ" і "ВЫКЛ". У включеному стані маяк продовжує посилати сигнал, навіть якщо ви відпустите кнопку (про що сигналізує загоряється зелений світлодіод), щоб вимкнути надсилання сигналу в цьому режимі - натисніть горизонтальну сіру кнопку ще раз.

Приступимо до реалізації програми:

Алгоритм дистанційного управління передбачає 5 варіантів поведінки, відповідно програмний блок "Переключатель" буде складатися з п'яти програмних контейнерів. Займемося їх налаштуванням.

1. Варіантом за замовчуванням призначимо варіант, коли не натиснута жодна кнопка (Рис. 7 поз. 2 значення: 0). Встановимо в контейнер програмний блок "Независимое управление моторами", вимикає мотори "B" і "C".

2. У контейнер варіанти натискання верхньої лівої кнопки (Рис. 7 поз. 2 значення: 1) встановимо програмний блок "Большой мотор", що включає мотор "B".

3. У контейнер варіанти натискання верхньої правої кнопки (Рис.

7 поз. 2 значення: 3) встановимо програмний блок "Большой мотор", що включає мотор "C".

4. У контейнер варіанти одночасного натискання верхніх лівої і правої кнопок (Рис. 7 поз. 2 значення: 5) встановимо програмний блок

"Независимое управление моторами", що включає обертання моторів "B" і "C" вперед.

5. У контейнер варіанти одночасного натискання нижніх лівої і правої кнопок (Рис. 7 поз. 2 значення: 8) встановимо програмний блок

"Независимое управление моторами", що включає обертання моторів "B" і "C" назад.

6. Помістимо налаштований програмний блок "Переключатель"

всередину програмного блоку "Цикл".

Рішення Прикладу №15

(16)
(17)

Завантажте отриману програму в робота і запустіть його на виконання. Спробуйте управляти роботом за допомогою інфрачервоного давача.

9.1. Інфрачервоний давач. Режим "Маяк"

Для того, щоб використовувати інфрачервоний маяк в цьому режимі, слід, натиснувши окрему горизонтальну сіру кнопку, перевести маяк у режим безперервного випромінювання сигналу (Рис. 1 поз. 1).

При цьому на інфрачервоному маяку загориться зелений індикатор.

Рис.1

Давайте розглянемо програмний блок "Инфракрасный давач"

Жовтої палітри в режимі "Измерение" - "Маяк". (Рис. 2) У цьому режимі програмний блок має один вхідний параметр, що визначає номер каналу роботи інфрачервоного маяка (Рис. 2 поз.1), а також три вихідні параметри: "Направление" (Рис. 2 поз.2), "Приближение"

(Рис. 2 поз.3) і "Обнаружено" (Рис. 2 поз.4).

Рис.2

(18)

● Параметр "Обнаружено" видає булівське значення "Да" - якщо інфрачервоний маяк виявлений давачем, і "Нет" - в іншому випадку.

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

● Параметр "Направление" видає числове значення в діапазоні від -25 до + 25. Значення, рівне 0, означає, що інфрачервоний маяк знаходиться строго напроти інфрачервоного давача. Від’ємні значення свідчать про відхилення інфрачервоного давача в ліву сторону від напрямку давача (проти годинникової стрілки), а позитивні - у праву сторону від напрямку давача (за годинниковою стрілкою) (Рис. 3)

Рис.3

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

9.2. Пошук інфрачервоного маяка

На першому етапі приступимо до створення програми пошуку роботом інфрачервоного маяка.

(19)

Приклад № 16. Написати програму для робота, який обертається навколо своєї осі і зупиняється у напрямку інфрачервоного давача.

Рішення:

Використовуючи програмний блок "Независимое управление моторами", почати обертання робота навколо своєї осі проти годинникової стрілки (Рис. 4 поз. 1).

1. Використовуючи програмний блок "Ожидание" в режимі

"Инфракрасный давач" - "Сравнение" - "Приближение маяка"

(Рис. 4 поз. 2) з пороговим значенням рівним 80 (Рис. 4 поз. 3), чекаємо, поки робот не виявить інфрачервоний маяк (значення параметра

"Приближение" стане менше 100).

2. Так як робот обертається проти годинникової стрілки, то, коли інфрачервоний давач виявить маяк, його параметр "Направление"

прийме від’ємне значення. Тому наступний програмний блок

"Ожидание" в режимі "Инфракрасный давач" - "Сравнение"-

"Направление маяка" (Рис. 4 поз. 4) дасть можливість роботу обертатися до тих пір, поки робот не виявиться навпроти інфрачервоного маяка (значення параметра "Пороговое значение"

перевищить 0 (Рис. 4 поз. 5).

3. Так як робот, обертаючись з великою швидкістю, може повернути трохи більше в результаті сил інерції, то, на малій швидкості, використовуючи наступні два програмних блоки, повернемо робота за годинниковою стрілкою (Рис. 4 поз. 6, 7).

4. Вимкнемо мотори робота (Рис. 4 поз. 8).

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

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

(20)

Рис.4

9.3. Слідування за інфрачервоним маяком

Приклад №17: написати програму проходження робота за інфрачервоним світлом.

Рішення:

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

Скористаємося можливостями, наданими програмним блоком

"Инфракрасный давач" Жовтої палітри. Як поведеться робот, якщо в нескінченному циклі подати значення параметра "Приближение"

(Рис. 5 поз. 1) програмного блоку "Инфракрасного давача" на вхід параметра "Можность" (Рис. 5 поз. 2) програмного блоку "Рулевое управление" Зеленої палітри?

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

Завантажимо отриману програму (Рис. 5) робота і запустимо її на виконання. Наближаючись до маяка, робот буде поступово сповільнюватися. Під'їхавши впритул до маяка, робот зупиниться.

Якщо відсунути маяк, то робот знову кинеться в його бік.

(21)

Рис.5

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

(Рис. 6 поз. 1) програмного блоку "Инфракрасный давач", помножимо його на 2 (Рис. 6 поз. 2) подамо на вхід параметра "Рулевое управление" (Рис. 6 поз. 3) програмного блоку "Рулевое управление". Для чого нам потрібно множення? Діапазон значень параметра "Направление" від -25 до 25. Отримуючи значення цього діапазону, робот буде повертати на недостатній кут - множення ж розширює діапазон значень від -50 до 50, що дасть роботу впевнено йти за переміщеннями маяка.

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

Робот буде впевнено повертати в бік маяка!

Рис.6

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

(22)

параметра "Обнаружено" (Рис. 7 поз. 1) програмного блоку

"Инфракрасный давач". Якщо робот втрачає маяк, то значення параметра "Обнаружено" стає рівним "Нет". Подамо значення параметра "Обнаружено" на вхід програмного блоку

"Переключатель", встановленого в режим "Логическое значение". У контейнер логічного значення "Нет" встановимо програмний блок

"Прерывание цикла" Помаранчевої палітри (Рис. 7 поз. 2). Параметр

"Имя прерывания" програмного блоку "Прерывание цикла"

повинно відповідати імені циклу!

Рис.7

9.4. Пошук і слідування за інфрачервоним маяком

(23)

Приклад №18: написати програму пошуку і слідування за інфрачервоним світлом.

Рішення:

Всередину нескінченного циклу спочатку помістимо програму пошуку маяка (Рис. 4), а потім - програму проходження за маяком (Рис.

7). Отриману програму (Рис. 8) завантажимо в робота і запустимо на виконання.

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

Задача вирішена!

(24)
(25)

Вивчення гіроскопічного давача 10.1. Вивчення гіроскопічного давача

Гіроскопічний давач (Рис. 1) призначений для вимірювання кута обертання робота або швидкості обертання. Зверху на корпусі давача нанесені дві стрілки, що позначають площину, в якій працює давач. Тому важливо правильно встановити давач на робота. Також для більш точного вимірювання кріплення гіроскопічного давача повинне виключати його рухливість відносно корпуса робота. Навіть під час прямолінійного руху робота гіроскопічний давач може накопичувати похибку вимірювання кута і швидкості обертання, тому безпосередньо перед вимірюванням слід здійснити скидання в 0 поточного показання давача. Обертання робота проти годинникової стрілки формує від’ємні значення вимірювань, а обертання за годинниковою стрілкою - позитивні.

Рис.1

Розглянемо програмний блок "Гироскопический давач" (Рис.

2) Жовтої палітри. Цей програмний блок має три режими роботи:

"Измерение", "Сравнение" і "Сброс". У режимі " Измерение "

можна виміряти "Угол", "Скорость" або одночасно "Угол и скорость".

Рис.2

(26)

Закріпимо гіроскопічний давач на роботі (Рис. 3), підключимо його кабелем до порту 4 модуля EV3 і розглянемо приклади використання.

Рис. 3

Приклад №19: написати програму руху робота по квадрата з довжиною сторони квадрата, що дорівнює довжині кола колеса робота.

Рішення:

1. Перед початком руху скинемо давач в 0, використовуючи програмний блок "Гироскопический давач" Жовтої палітри;

2. Щоб проїхати прямолінійно необхідну відстань - необхідно, скориставшись програмним блоком "Независимое управление моторами", включити обидва мотора на 1 оборот.

3. Для повороту робота на 90 градусів в цей раз скористаємося гіроскопічним сенсором:

1. використовуючи програмний блок "Независимое управление моторами", змусимо робота обертатися вправо навколо своєї осі;

2. використовуючи програмний блок "Ожидание" в режимі

"Гироскопический давач", будемо чекати, поки значення кута повороту не досягне 90 градусів;

3. Вимкнемо мотори;

4. Використовуючи програмний блок "Цикл" в режимі "Подсчет", повторимо кроки 1 - 3 чотири рази.

(27)

Рішення Приклад №19

Рис.4

Кегельринг

11.1 Правила змагання. Підготовка поля для проведення змагань.

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

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

Регламент змагань роботів "Кегельринг"

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

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

2. На очищення рингу від кеглів дається максимум 2 хвилини.

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

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

(28)

2. Ринг

1. Колір рингу - світлий.

2. Колір обмежувальної лінії - чорний.

3. Діаметр рингу - 1 м (білий круг).

4. Ширина обмежувальної лінії - 50 мм.

3. Кеглі

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

2. Діаметр кеглі - 70 мм.

3. Висота кеглі - 120 мм.

4. Вага кеглі - не більше 50 гр.

5. Колір кеглі - білий.

4. Робот

1. Максимальна ширина робота 20 см, довжина - 20 див.

2. Висота і вага робота не обмежені.

3. Робот повинен бути автономним.

4. Під час змагання розміри робота повинні залишатися незмінними і не повинні виходити за межі 20 х 20 см

5. Робот не повинен мати ніяких пристосувань для виштовхування кеглів (механічних, пневматичних, вібраційних, акустичних та ін).

(29)

6. Робот повинен виштовхувати кеглі виключно своїм корпусом.

7. Заборонено використання будь-яких клейких пристосувань на корпусі робота для збору кеглів.

5. Гра

1. Робот поміщається строго в центр рингу.

2. На рингу встановлюється 8 кеглів.

3. Кеглі рівномірно розставляються всередині кола рингу. На кожну чверть кола має припадати не більше 2-х кеглів. Кеглі ставляться не ближче 12 див. і не далі 15 см. від чорної обмежувальної лінії. Перед початком гри учасник змагання може поправити розташування кеглів.

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

4. Мета робота полягає в тому, щоб виштовхнути кеглі за межі кола, обмеженого лінією.

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

6. Один раз залишила межі рингу кегля вважається виштовхнутою і може бути знята з рингу у разі зворотного закочування.

7. Робот повинен бути включений або ініціалізований вручну до початку змагання по команді судді, після чого в його роботу не можна втручатися. Заборонено дистанційне керування або подача роботу будь-яких команд.

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

1. Кожній команді дається не менше двох спроб (точне число визначається суддівською колегією в день проведення змагань).

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

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

Отже: для проведення змагання знадобиться поле.

Жерстяні банки найкраще обклеїти по периметру папером (нам знадобляться 2 - 4 банки білого кольору і стільки ж - чорного).

11.2 Конструювання робота для конкретного виду змагання.

(30)

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

Настає важливий етап моделювання робота - перед нами стоять два взаємопов'язаних завдання:

1. Розробка ключового алгоритму поведінки робота;

2. Розробка механічної конструкції робота, що дозволяє реалізувати необхідну поведінку.

Розглянемо наступну поведінкову модель:

1. Робот, перебуваючи в центрі поля, починає обертатися за годинниковою стрілкою, поки не помітить кеглю.

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

(31)

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

Отже, робот повинен:

1. вміти обертатися на місці навколо своєї осі;

2. вміти рухатися прямолінійно;

3. вміти виявляти предмет, вилучений на деяку відстань;

4. вміти виявляти кордон поля.

Дані вимоги диктують нам умови конструкції робота:

(32)

1. для реалізації перших двох умов застосуємо вже відому нам рухому платформу, що використовує два великих мотора і обертову опору (робот-візок);

2. для виявлення кеглі скористаємося одним з наявних в наявності давачів: інфрачервоним або ультразвуковим;

3. кордон поля нам допоможе виявити давач кольору.

Всім умовам повною мірою відповідає робот.

Lego mindstorms EV3 Home

Lego mindstorms EV3 Education

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

(33)

У процесі складання конструкції не забудьте підключити мотори і давачі до модулю EV3: лівий мотор - до порту "B", правий мотор - до порту "C", ультразвукової або інфрачервоний давач - до порту "2", давач кольору - до порту "3".

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

11.3 Створення програми для змагання "Кегельринг".

Докладно пропишемо послідовність дій робота для виявлення однією кеглі на полі:

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

2. зупинитися навпроти кеглі;

3. рухатися вперед, поки давач кольору не виявить чорну лінію кордону поля;

4. зупинитися;

5. рухатися назад в центр поля.

Приступимо до реалізації і налагодження п. 1, 2 - навчимо робота виявляти кеглю і зупинятися точно напроти. Спочатку нам необхідно вибрати порогове значення для виявлення кеглі напроти робота. Для цього завантажимо середовище програмування, створимо новий проект - "projects-2", нову програму в проекті назвемо "project- 11". Підключимо робота до середовища програмування, потім встановимо його точно в центр поля, поставимо навпроти робота кеглю.

На "Странице аппаратных средств", що знаходиться в правому нижньому кутку середовища програмування, виберемо вкладку "Представление порта" (Рис. 1, 2 поз. 1) і знімемо показання давача, що визначає відстань до кеглі, встановивши відповідний режим відображення показань.

У нашому випадку ультразвуковий давач в режимі "Расстояние в сантиметрах" показує значення - 25,9 (Рис. 1 поз. 2).

Рис.1

Інфрачервоний давач в режимі "Приближение" показує значення - 48 (Рис. 2 поз. 2)

(34)

Рис.2

Як визначити показники давача, використовуючи дисплей модуля EV3

Якщо Ви використовуєте підключення модуля EV3 до середовища програмування за допомогою USB-кабелю (докладно про способи підключення), то зможете спостерігати показання давачів на

"Странице аппаратных средств" тільки на максимальному віддаленні робота від комп'ютера, рівній довжині кабелю USB. В цьому випадку показання давача можна переглянути безпосередньо на екрані модуля EV3. Керуючи кнопками модуля EV3, перейдіть в меню (Рис. 3 поз. 1) виберіть пункт "Port View" і натисніть центральну кнопку (Рис. 3 поз.

2).

Рис.3

Верхній ряд блоків відображає свідчення моторів, підключених до модулю EV3 (Рис. 4 поз. 1).

Нижній ряд блоків відображає показання давачів, підключених до модулю EV3. Управляючи клавішами модуля EV3 можна переміщатися між показаннями для отримання детальної інформації про давач і виводиться значення (Рис. 4 поз. 2).

(35)

Рис.4

Тепер можна запрограмувати знаходження роботом кеглі.

Ультразвуковий давач

1. Для того, щоб змусити робота обертатися навколо своєї осі, скористаємося програмним блоком "Независимое управление моторами" "Зелёной палитры", Режим роботи блоку встановимо

"Включить", значення потужності для порту "B" встановимо рівним 30, значення потужності для порту "C" встановимо рівним -30 (Рис. 5 поз.1),

2. Для пошуку кеглі використовуємо програмний блок

"Ожидание" “Оранжевой палитры" в режимі "Ультразвуковой давач - Сравнение – Растояние в сантиметрах". Для гарантованого знаходження збільшимо значення порогу спрацьовування давача до 35 (Рис. 5 поз. 2)

3. Після того, як робот виявиться навпаки кеглі, використовуючи програмний блок "Независимое управление моторами" " Зелёной палитры " вимкнемо мотори (Рис. 5 поз. 3).

(36)

Рис.5

(37)

Інфрачервоний давач

1. Для того, щоб змусити робота обертатися навколо своєї осі, скористаємося програмним блоком "Независимое управление моторами" "Зелёной палитры", Режим роботи блоку встановимо

"Включить", значення потужності для порту "B" встановимо рівним 30, значення потужності для порту "C" встановимо рівним -30 (Рис. 6 поз.1),

2. Для пошуку кеглі скористаємося програмним блоком

"Ожидание" “Оранжевой палитры” в режимі "Инфракрасны давач - Сравнение - Приближение". Для гарантованого знаходження збільшимо значення порогу спрацьовування давача до 55 (Рис. 6 поз. 2) 3. Після того, як робот виявиться навпроти кеглі, використовуючи програмний блок "Независимое управление моторами" "Зелёной палитры" вимкнемо мотори (Рис. 6 поз. 3).

Рис.6

Завантажимо отриману програму в робота і запустимо її на виконання. Раз за разом, виконуючи програму, можна помітити, що робот зупиняється не зовсім точно напроти банки. Пов'язано це з тим, що давач може виявляти предмет не тільки строго напроти себе, а й на деякому відхиленні від напрямку погляду давача. В цьому випадку можна, або після зупинки робота трохи докрутити його на необхідний кут, використовуючи додатковий блок "Независимое управление моторами", або поступово збільшувати швидкість обертання, підбираючи параметр потужність (Рис. 5, 6 поз. 1), поки робот не стане зупинятися точно навпроти кеглі. Наприклад, нам потрібно було збільшити потужність до 50 одиниць для робота, зібраного з освітньої версії набору, і до 40 одиниць для робота, зібраного з домашньої версії набору.

Переходимо до реалізації п. 3, 4 послідовності дій.

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

(38)

"Яркость ображеного света" яким зручним вам способом, розглянутим вище. У нашому випадку вийшло значення, рівне 7. В якості порогового значення приймемо число 10.

Додамо до програми виявлення кеглі наступні програмні блоки:

1. Для того, щоб змусити робота рухатися прямолінійно, скористаємося програмним блоком "Рулевое управление" "Зелёной палитры". Режим роботи блоку встановимо "Включить", "Рулевое управление" = 0, параметр "Мощность" = 50. (Рис. 7 поз. 1)

2. Для пошуку давачем кольору чорної кордону скористаємося програмним блоком "Ожидание" "Оранжевой палитры" в режимі

«Датчик цвета - Сравнение – Яркость ображеного сигнала", параметр "Тип сравнения" = 4, "Пороговое значение" = 10. (Рис. 7 поз. 2)

3. Після того, як робот перетне чорну лінію, використовуючи програмний блок "Рулевое управление" "Зелёной палитры"

вимкнемо мотори (Рис. 7 поз. 3).

Рис.7

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

(39)

Lego mindstorms EV3 Home

Lego mindstorms EV3 Education

Тепер робот просто відмінно справляється зі своєю роботою!

Залишилося тільки навчити його повертатися в центр кола...

"Страница аппаратных средств" середовища програмування дозволяє нам спостерігати не тільки поточні показання давачів, але і накопичені показання давача обертання мотора (Рис. 8 поз. 1).

Натиснувши на значок мотора, можна встановити необхідну нам висновок інформації про обертання мотора в "Обортах" або "Градусах (Рис. 8 поз. 2).

Referências

Documentos relacionados