Програма робота сумоїста

початок

 
Логічні операції

 

Логічні операції здійснюються лише над логічними значеннями (даними), результатом логічної операції також є логічне значення. Логічне значення може перебувати в одному з двох станів: "Істина" або "Брехня" . Логічні операції дуже часто записуються в табличній формі у вигляді: "вхідний параметр 1" - "вхідний параметр 2" = "результат" . Логічні операції, реалізовані програмним блоком "Логічні операції" "Червоної палітри" в табличній формі можна записати в такий спосіб:

Логічна операція "І (AND)"

Результатом логічної операції "І (AND)" буде значення "Істина" тільки, якщо обидва вхідних значення рівні "Істина" , у всіх інших випадках значення операції одно "Брехня" .

"A" операція "B"   результат
"Брехня" "І (AND)" "Брехня" = "Брехня"
"Брехня" "І (AND)" "Істина" = "Брехня"
"Істина" "І (AND)" "Брехня" = "Брехня"
"Істина" "І (AND)" "Істина" = "Істина"

Логічна операція "АБО (OR)"

Результатом логічної операції "АБО (OR)" буде значення "Брехня" тільки, якщо обидва вхідних значення рівні "Брехня" , у всіх інших випадках значення операції одно "Істина" .

"A" операція "B"   результат
"Брехня" "АБО (OR)" "Брехня" = "Брехня"
"Брехня" "АБО (OR)" "Істина" = "Істина"
"Істина" "АБО (OR)" "Брехня" = "Істина"
"Істина" "АБО (OR)" "Істина" = "Істина"

Логічна операція "Що виключає АБО"

Результатом логічної операції "виключає Або" буде значення "Істина" тільки, якщо одне з вхідних значень одно "Істина" , у всіх інших випадках значення операції одно "Брехня" .

"A" операція "B"   результат
"Брехня" "Що виключає АБО" "Брехня" = "Брехня"
"Брехня" "Що виключає АБО" "Істина" = "Істина"
"Істина" "Що виключає АБО" "Брехня" = "Істина"
"Істина" "Що виключає АБО" "Істина" = "Брехня"

Логічна операція "Виключення (NOT)"

Логічна операція "Виключення (NOT)" застосовується тільки до одного вхідного значенням. Результатом логічної операції "Виключення (NOT)" над вхідним значенням є протилежне значення.

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

Алгоритм "Атака суперника". Етап 5.Мал. 11

Алгоритм "Атака суперника". Етап 5. (Натисніть для збільшення)

Мал. 12

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

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

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

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

Від'їзд

Мал. 13

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

 

Програма робота-сумоїста

 

Програма робота-сумоїста

 

 

висновок:

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

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

Категорія: Уроки з LEGO | Додав: admin (05.07.2018)
Переглядів: 836 | Теги: Lego mindstorms EV3.сумо | Рейтинг: 0.0/0
Всього коментарів: 0
Додавати коментарі можуть лише зареєстровані користувачі.
[ Реєстрація | Вхід ]