Ноу Інти, лекція, стану і події

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

Приклад 3.1. Діаграма переходів "Стан 1 → Подія → Стан 2" відповідна руху робота до чорної лінії (Рис. 3.1):

Ноу Інти, лекція, стану і події


збільшити зображення
Мал. 3.1. Діаграма переходів: рух робота до чорної лінії

  1. Робот знаходиться в стані руху.
  2. Датчик світла реєструє зниження яскравості до деякого порогового значення - це нове подія, яку можна назвати "робот доїхав до чорної лінії".
  3. В результаті реєстрації події робот змінює свій стан на бездіяльність (зупинка).

Таким чином, можна сказати, що робот повинен весь час чекати виникнення подій. Для цього в середовищі NXT-G є спеціальний блок Wait (Чекати):


Мал. 3.2. Варіанти блоку Wait в загальній палітрі

Джерелами подій можуть бути:

  • різні датчики (сенсори): кольору, освітленості, торкання, і ін .;
  • таймер;
  • кнопки NXT-блоку;
  • повідомлення від інших роботів, передані по Bluetooth з'єднанню.

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

Датчик кольору (Color Sensor)

Ноу Інти, лекція, стану і події

Датчик кольору (RGB-датчик) поєднує три функції:

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

Робота в режимі визначення кольору

Приклад 3.2. Очікування події від датчика кольору.

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

Ноу Інти, лекція, стану і події

Раніше в темі "Програмування моторів: команда Move" ми відзначили, що параметр Unlimited (обмеження немає) в настройках блоку Move дозволяє роботу рухатися без будь-яких обмежень до настання чергового події. Після цього можна змінити стан робота. Зміна стану не відбувається автоматично: його треба запрограмувати! У нашому прикладі після настання події (реєстрація датчиком синього кольору) запрограмована зупинка моторів B і C.

  • колір в полі Until задається за допомогою двох слайдерів.
  • Завдання 3.1. Протестуйте датчик кольору:

    • Додайте в конструкцію робота Five Minute Bot датчик кольору, розташований попереду і спрямований вниз, на висоті приблизно 1 - 1,5 см від поверхні підлоги (стола).
    • Додайте на поле програми блок Wait Color Sensor і протестуйте його на предметах різних кольорів:
      1. Підключіть блок NXT до комп'ютера через USB-з'єднання.
      2. Виділіть блок Wait і натисніть на кнопку Download and run selected контролера NXT (Рис. 3.4).
      3. Чи не отсоединяя USB-шнур, тримайте предмети різного забарвлення до датчика на відстань приблизно 1 см.
      4. Слідкуйте за результатом в поле зворотного зв'язку панелі налаштувань датчика (лівий нижній кут панелі налаштувань).
      5. Проведіть ті ж тести за допомогою меню View NXT. Чи збігаються результати тестів?


    Мал. 3.4. Компіляція і виконання виділеного фрагмента

    Завдання 3.2. Напишіть програму для руху робота по тестовій смузі 1 Тестова смуга - це таблиця різних кольорів, що йде по краю тестового поля. Містить чорний, синій, зелений, червоний, жовтий кольори і їх градації. до виявлення червоного (синього, зеленого і ін.) кольору. Після того, як заданий колір виявлений, робот повинен вимовити цей колір.

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

    Робота в режимі вимірювання освітленості

    Датчик кольору з нашого набору може працювати в двох режимах: власне датчик кольору, і датчик світла, що вимірює освітленість. Переведіть в настройках блоку Wait Color Sensor датчик кольору в режим датчика освітленості. Для цього в поле Action виберіть Light Sensor (Рис. 3.5). Зверніть увагу, що зовнішній вигляд блоку Wait змінився.

    Ноу Інти, лекція, стану і події


    Мал. 3.5. Налаштування блоку Wait Color Sensor в режимі вимірювання освітленості

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

    • рівень освітленості в поле Until задається за допомогою слайдера або введенням числового значення;
    • знак в очікувану подію перемикається клацанням по яскравому або темному "сонечка" (за замовчуванням стоїть знак ">");
    • поле Until Новомосковскется: "до тих пір поки освітленість не стане.". Так, на Рис. 3.5 очікується подія "рівень освітленості> 50", що означає виконання дії, що передує блоку Wait до тих пір, поки освітленість не стане> 50;
    • поле Function дозволяє використовувати датчик кольору в якості лампи червоного, зеленого або синього світла (включений прапорець Light). Вимірюючи інтенсивність відбитого від поверхні світла можна оцінити її яскравість: від світлої поверхні відіб'ється більше світла, ніж від темної. Взагалі кажучи, якщо виміри освітленості відбуваються при хорошому денному світлі, то підсвічування можна вимкнути (зняти прапорець Light). Однак виробник рекомендує в режимі вимірювання освітленості використовувати червоне підсвічування. Також при вимкненому світлі можна вимірювати загальну освітленість в навколишньому просторі.

    Завдання 3.4. Протестуйте роботу датчика кольору в режимі вимірювання освітленості на предметах різних кольорів так само, як робили в попередньому завданні:

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

    Завдання 3.5. Використовуючи RGB-датчик в режимі вимірювання освітленості, напишіть програму для руху робота по білому полю до виявлення чорного кольору. Для цього в поле Until вкажіть необхідний поріг чорного кольору. Після зупинки робот повинен вивести на екран відповідну інформацію (наприклад, "Black color found!").