Зір штучного інтелекту#

Вступ#

Датчик зору на базі штучного інтелекту робота-кодера VEX AIM виявляє та відстежує об’єкти, кольори та ідентифікатори AprilTag. Це дозволяє роботу аналізувати своє оточення, стежити за об’єктами та реагувати на основі виявлених візуальних даних.

Датчик зору зі штучним інтелектом має роздільну здатність 320×240 пікселів. Початок координат (0, 0) розташований у верхньому лівому куті, а центр датчика знаходиться в точці (160, 120), як показано на діаграмі нижче:

Діаграма, що показує роздільну здатність датчика зору AIM AI, де координата 0, 0 знаходиться у верхньому лівому куті діаграми, 320, 0 — у верхньому правому куті та 0, 240 — у нижньому лівому куті, а 160, 120 — точно по центру.

Нижче наведено список усіх блоків:

Дії — керування подачею даних AI Vision та захопленням даних об’єкта.

  • Засіб перегляду AI Vision на екрані — Вмикає або вимикає пряму трансляцію AI Vision на екрані робота.

  • get object data — Збирає дані для певного підпису, такого як налаштований колір, попередньо навчений об’єкт або ідентифікатор AprilTag.

Налаштування — налаштуйте, до яких виявлених об’єктів буде здійснюватися доступ.

Значення — Повертає наявність, класифікацію та властивості об’єкта.

Дії#

Переглядач AI Vision на екрані#

Блок стеку AI Vision viewer on screen вмикає або вимикає пряму трансляцію AI Vision на екрані робота. Коли цю функцію ввімкнено, на екрані відображаються дані датчиків у режимі реального часу, що запобігає появі інших зображень або тексту. Щоб відобразити інший контент, використовуйте цей блок, щоб приховати трансляцію.

Блок стека панелі інструментів AI Vision для відображення або приховання.#
AI Vision [показати v] перегляд на екрані

Параметри

Опис

статус

Керує відображенням потоку даних на екрані робота: показати відображає поток даних, тоді як приховати видаляє поток даних з екрана.

Приклад

Стек блоків, що починається з блоку «when started», за яким йде блок коментаря «View AI Vision Sensor’s fied протягом п’яти секунд». Блок «show AI Vision dashboard» відображає фід, а потім блок «wait» призупиняє виконання на п’ять секунд. Після очікування блок «hide AI Vision dashboard» прибирає фід з поля зору.#
коли запущено
[View the AI Vision Sensor's feed for five seconds.]
AI Vision [показати v] перегляд на екрані
чекати [5] секунд
AI Vision [сховати v] перегляд на екрані

отримати дані об’єкта#

Блок стеку get object data фільтрує дані з кадру AI Vision Sensor до єдиного підпису — збереженого опису чогось, що може розпізнати датчик, наприклад, попередньо навченого об’єкта, ідентифікатора AprilTag або налаштованого кольору чи колірного коду.

Кольори та колірні коди необхідно спочатку налаштувати в утиліті AI Vision, перш ніж їх можна буде використовувати з цим блоком.

Набір даних зберігає об’єкти, відсортовані від найбільшого до найменшого за шириною, починаючи з індексу 0. Доступ до властивостей кожного об’єкта можна отримати за допомогою блоку AI Vision object property. Якщо не виявлено відповідних об’єктів, повідомляється про порожній набір даних.

Блок стека даних об’єкта Get.#
отримати дані [спортивний м'яч v] з AI Vision

Параметр

Опис

підпис

Фільтрує набір даних, щоб включити лише дані заданого підпису. Доступні підписи:

  • спортивний м’яч
  • помаранчева бочка
  • синя бочка
  • робот AIM
  • Ідентифікатор AprilTag 0
  • Ідентифікатор AprilTag 1
  • Ідентифікатор AprilTag 2
  • Ідентифікатор AprilTag 3
  • Ідентифікатор AprilTag 4
  • усі вантажі - Спортивні м’ячі та всі бочки
  • НАЗВА - Колір або код кольору, де НАЗВА - це назва, налаштована в утиліті AI Vision

Приклад

Стек блоків, що починається з блоку when started, за яким йде блок коментаря з текстом Move forward if a Sports Ball detected (Рухатися вперед, якщо виявлено спортивний м’яч). Блок get object data* фіксує зображення спортивного м’яча. Потім блок if перевіряє, чи існує об’єкт AI Vision. Якщо значення true (істина), блок move forward переміщує робота вперед на 10 міліметрів.#
коли запущено
[Move forward if a sports ball is detected.]
назавжди
отримати дані [спортивний м'яч v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
рухатися [вперед v] на [10] [мм v] ▶

Кольорові підписи#

Колірна сигнатура – ​​це унікальний колір, який може розпізнати датчик AI Vision. Ці сигнатури дозволяють датчику виявляти та відстежувати об’єкти на основі їхнього кольору. Після налаштування кольорової сигнатури в утиліті AI Vision датчик може ідентифікувати об’єкти з цим певним кольором у своєму полі зору.

Колірні сигнатури використовуються в блоці get object data для обробки та виявлення кольорових об’єктів у режимі реального часу.

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

Приклад

коли запущено
[Display if any objects matching the Red_Box signature is detected.]
назавжди
встановити курсор на рядок [1] стовпець [1] на екрані
очистити рядок [1] на екрані
[Change the signature to any configured Color Signature.]
отримати дані [Red_Box v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
вивести [Color signature detected!] на екран ▶

Колірні коди#

Колірний код — це структурований візерунок, що складається з 2–4 колірних сигнатур, розташованих у певному порядку. Після налаштування колірного коду в утиліті AI Vision Utility датчик може розпізнавати попередньо визначені кольорові візерунки.

Кольорові коди особливо корисні для ідентифікації складних об’єктів, вирівнювання з ігровими елементами або створення унікальних маркерів для автономної навігації.

Інтерфейс утиліти штучного інтелекту зору показує підключений датчик зору, який виявляє два суміжні об'єкти: синій прямокутник ліворуч і червоний прямокутник праворуч, згруповані разом в одному білому обмежувальному прямокутнику з позначкою BlueRed. Інформація про виявлення включає кут (A:11°), координати (X:143, Y:103), ширину (W:233) та висоту (H:108). На правій панелі перелічені три колірні сигнатури: Red_Box, Blue_Box та BlueRed з регульованими діапазонами відтінку та насиченості. Сигнатура BlueRed поєднує Blue_Box та Red_Box. Під відеопотоком розташовані кнопки з позначками Freeze Video (Заморозити відео), Copy Image (Копіювати зображення), Save Image (Зберегти зображення) та Close (Закрити).

Приклад

коли запущено
[Display if any objects matching the BlueRed code is detected.]
назавжди
встановити курсор на рядок [1] стовпець [1] на екрані
очистити рядок [1] на екрані
[Change the signature to any configured Color Code.]
отримати дані [BlueRed v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
вивести [Color code detected!] на екран ▶

Налаштування#

встановити елемент об’єкта AI Vision#

Блок стека set AI Vision object item встановлює, який елемент у наборі даних використовувати.

Блок стека елементів об’єкта Set AI Vision.#
встановити елемент об'єкта AI Vision на (1)

Параметри

Опис

елемент

Номер елемента в наборі даних, який потрібно використовувати.

Приклад

Стек блоків, що починається з блоку when started, за яким йде блок коментаря з текстом Display the largest detected AprilTag ID. Усередині циклу безкінечності блок даних об’єкта get фіксує зображення ідентифікаторів AprilTag. Блок if перевіряє, чи існує об’єкт AI Vision. Якщо значення true, блок set item об’єкта AI Vision призначає кількість об’єктів змінній, а блок print відображає ідентифікатор тегу виявленого об’єкта на екрані.#
коли запущено
[Display the width of the smallest detected object.]
назавжди
отримати дані [весь вантаж v] з AI Vision
очистити рядок [1] на екрані
встановити курсор на рядок [1] стовпець [1] на екрані
якщо <об'єкт AI Vision існує?> тоді
встановити елемент об'єкта AI Vision на (кількість об'єктів AI Vision)
вивести (об'єкт AI Vision [ширина v]) на екран ▶

Цінності#

має об’єкт#

Логічний блок has object повідомляє, чи робот наразі виявив об’єкт у своєму Kicker.

  • Правда — Робот має об’єкт.

  • Хибно — Робот не має об’єкта.

<має [спортивний м'яч v]? :: custom-ai-vision>

Параметр

Опис

об’єкт

Об’єкт, який потрібно виявити, встановивши кікер робота:

  • спортивний м’яч
  • будь-яка бочка
  • помаранчева бочка
  • синя бочка

Приклад

Стек блоків, що починається з блоку when started, за яким йде блок коментаря з текстом Kick when the robot has a Ball. Усередині циклу безкінечності блок if перевіряє, чи є у робота спортивний м’яч. Якщо це значення true, блок об’єкта kick виконується із середньою потужністю.#
коли запущено
[Kick when the robot has a sports ball.]
назавжди
якщо <має [спортивний м'яч v]? :: custom-ai-vision> тоді
штовхнути об'єкт [середній v]

Об’єкт AI Vision існує#

Логічний блок Об’єкт AI Vision існує повідомляє, чи виявлено об’єкт у наборі даних.

  • True — Набір даних містить виявлений об’єкт.

  • Хибно — Об’єктів не виявлено.

Об’єкт AI Vision існує як логічний блок.#
<об'єкт AI Vision існує?>

Параметри

Опис

Цей блок не має параметрів.

Приклад

Стек блоків, що починається з блоку when started, за яким йде блок коментаря з написом «Move forward if a Ball is detected» (Рухатися вперед, якщо виявлено м’яч). Блок даних об’єкта get фіксує зображення спортивного м’яча. Потім блок if перевіряє, чи існує об’єкт AI Vision. Якщо значення true (істина), блок move forward переміщує робота вперед на 10 міліметрів.#
коли запущено
[Move forward if a sports ball is detected.]
назавжди
отримати дані [спортивний м'яч v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
рухатися [вперед v] на [10] [мм v] ▶

Об’єкт ШІ Бачення є#

Булевий блок Об’єкт AI Vision is повідомляє, чи відповідає виявлений об’єкт певній класифікації.

  • True — Елемент у наборі даних є конкретним об’єктом.

  • Хибність — Елемент у наборі даних не є конкретним об’єктом.

Класифікація ШІ Vision AI є об’єктним логічним блоком.#
<об'єкт AI Vision є [спортивний м'яч v]?>

Параметр

Опис

об’єкт

З яким об’єктом порівняти предмет:

  • спортивний м’яч
  • помаранчева бочка
  • синя бочка
  • робот AIM

Приклад

Стек блоків, що починається з блоку when started, за яким йде блок коментаря з текстом Display if a sports ball is detected. Усередині циклу безперервності блок даних об’єкта get фіксує зображення за допомогою класифікацій штучного інтелекту. Екран очищається, а курсор встановлюється в рядок 1, стовпець 1. Блок if перевіряє, чи існує об’єкт AI Vision, і якщо це значення true, інший блок if перевіряє, чи є класифікація спортивним м’ячем. Якщо так, блок print відображає на екрані Ball detected!, а потім блок wait, який зупиняється на 0,5 секунди перед повторенням процесу.#
коли запущено
[Display if a sports ball is detected.]
назавжди
отримати дані [весь вантаж v] з AI Vision
очистити рядок [1] на екрані
встановити курсор на рядок [1] стовпець [1] на екрані
якщо <об'єкт AI Vision існує?> тоді
якщо <об'єкт AI Vision є [спортивний м'яч v]?> тоді
вивести [Sports ball detected!] на екран ▶
чекати [0.5] секунд

Об’єкт AI Vision має ідентифікатор AprilTag#

Булевий блок AI Vision – це AprilTag ID, що повідомляє, чи збігається виявлений AprilTag ID із певним ідентифікатором.

  • True — Ідентифікатор AprilTag є числом.

  • Хибність — Ідентифікатор AprilTag не є числом.

AI Vision виявив, що ідентифікатор AprilTag є логічним блоком.#
<AI Vision object is AprilTag ID [1] ?>

Параметри

Опис

Ідентифікатор тегу квітня

Число для порівняння з виявленим ідентифікатором AprilTag.

Кількість об’єктів AI Vision#

Блок репортера підрахунок об’єктів AI Vision повідомляє кількість виявлених об’єктів у наборі даних у вигляді цілого числа.

кількість об'єктів AI Vision

Параметри

Опис

Цей блок не має параметрів.

Приклад

коли запущено
[Display the amount of sports balls and barrels.]
назавжди
очистити рядок [1] на екрані
встановити курсор на рядок [1] стовпець [1] на екрані
отримати дані [весь вантаж v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
вивести (кількість об'єктів AI Vision) на екран ▶
Кінець
чекати [0.5] секунд

Властивість об’єкта AI Vision#

Існує дев’ять властивостей, які додаються до кожного об’єкта (показано нижче), що зберігаються після використання блоку get object data.

Блок звіту про властивості об’єкта AI Vision.#
об'єкт AI Vision [ширина v]

Усі значення властивості, окрім tagID, описують положення, розмір, орієнтацію або пеленг виявленого об’єкта в момент використання блоку get object data. Ці значення вимірюються в пікселях або градусах, на основі роздільної здатності датчика 320 на 240 пікселів.

Синя бочка з помаранчевою смугою розташована по центру кадру, оточена чорною обмежувальною рамкою. Осі x та y позначені відповідно від 0 до 320 зліва направо зверху та від 0 до 240 зверху вниз вздовж лівого боку.

Параметр

Опис

власність

Яку властивість виявленого об’єкта використовувати:

ширина#

Властивість width повідомляє ширину виявленого об’єкта в пікселях як ціле число від 1 до 320.

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

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на ширину.#
об'єкт AI Vision [ширина v]

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

Приклад

коли запущено
[Move towards a blue barrel until its width is larger than 100 pixels.]
назавжди
отримати дані [синя бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <(об'єкт AI Vision [ширина v]) [math_less_than v] [100]> тоді
рухатися [вперед v]
Кінець
інакше
зупинити весь рух

висота#

Властивість height повідомляє висоту виявленого об’єкта в пікселях як ціле число від 1 до 240.

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

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на висоту.#
об'єкт AI Vision [висота v]

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

Приклад

коли запущено
[Move towards a blue barrel until its height is larger than 100 pixels.]
назавжди
отримати дані [синя бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <(об'єкт AI Vision [висота v]) [math_less_than v] [100]> тоді
рухатися [вперед v]
Кінець
інакше
зупинити весь рух

центрX#

Властивість centerX повідомляє x-координату центру виявленого об’єкта в пікселях як ціле число від 0 до 320.

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

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на centerX.#
об'єкт AI Vision [centerX v]

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

Приклад

коли запущено
[Turn slowly until a blue barrel is centered in front of the robot.]
встановити швидкість повороту [30]%
повернути [праворуч v]
назавжди
отримати дані [синя бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <[140] [math_less_than v] (об'єкт AI Vision [centerX v]) [math_less_than v] [180]> тоді
зупинити весь рух

центрY#

Властивість centerY повідомляє y-координату центру виявленого об’єкта в пікселях як ціле число від 0 до 240.

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

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на centerY.#
об'єкт AI Vision [centerY v]

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

Приклад

коли запущено
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
назавжди
отримати дані [синя бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <(об'єкт AI Vision [centerY v]) [math_less_than v] [140]> тоді
рухатися [вперед v]
Кінець
інакше
зупинити весь рух

походженняX#

Властивість originX повідомляє x-координату верхнього лівого кута рамки визначення виявленого об’єкта в пікселях як ціле число від 0 до 320.

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

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на originX.#
об'єкт AI Vision [originX v]

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

Приклад

коли запущено
[Display if an orange barrel is to the left or the right.]
назавжди
очистити рядок [1] на екрані
встановити курсор на рядок [1] стовпець [1] на екрані
отримати дані [помаранчева бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <(об'єкт AI Vision [originX v]) [math_less_than v] [160]> тоді
вивести [To the left!] на екран ▶
інакше
вивести [To the right!] на екран ▶
Кінець
чекати [0.5] секунд

походженняY#

Властивість originY повідомляє y-координату верхнього лівого кута рамки визначення виявленого об’єкта в пікселях як ціле число від 0 до 240.

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

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на originY.#
об'єкт AI Vision [originY v]

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

Приклад

коли запущено
[Display if an orange barrel is close or far from the robot.]
назавжди
очистити рядок [1] на екрані
встановити курсор на рядок [1] стовпець [1] на екрані
отримати дані [помаранчева бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <(об'єкт AI Vision [originY v]) [math_less_than v] [80]> тоді
вивести [Far!] на екран ▶
інакше
вивести [Close!] на екран ▶
Кінець
чекати [0.5] секунд

обертання#

Властивість rotation повідомляє орієнтацію виявленого ідентифікатора AprilTag або колірного коду як ціле число в градусах від 0 до 359.

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на обертання.#
об'єкт AI Vision [обертання v]

Інтерфейс камери відображає вертикально складений об'єкт із синьою верхньою половиною та червоною нижньою половиною, розташованими по центру кадру. Під об'єктом є напис Red_Blue A:270° CX:185 CY:81 W:93 H:150, що вказує назву об'єкта, кут повороту, центральні координати X та Y, ширину та висоту. Лінії сітки та числові осі позначають розміри зображення, де X має значення від 0 до 320, а Y – від 0 до 240.

Приклад

коли запущено
[Slide left or right depending on how the Color Code is rotated.]
назавжди
отримати дані [Red_Blue v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <[50] [math_less_than v] (об'єкт AI Vision [обертання v]) [math_less_than v] [100]> тоді
рухатися [праворуч v]
інакше якщо <[270] [math_less_than v] (об'єкт AI Vision [обертання v]) [math_less_than v] [330]> тоді
рухатися [ліворуч v]
інакше
зупинити весь рух
Кінець
інакше
зупинити весь рух

підшипник#

Властивість bearing повідомляє, наскільки об’єкт знаходиться ліворуч або праворуч від центру поля зору датчика штучного інтелекту у градусах. Значення 0 означає, що об’єкт розташований по центру, додатні значення означають, що об’єкт знаходиться праворуч, а від’ємні значення означають, що об’єкт знаходиться ліворуч.

Робот-кодувальник VEX AIM на полі зі спортивним м'ячем по діагоналі вперед і ліворуч. Між центром робота та спортивним м'ячем проведено кут -30 градусів. Робот-кодувальник VEX AIM на полі зі спортивним м'ячем по діагоналі вперед і праворуч. Між центром робота та спортивним м'ячем проведено кут 30 градусів.
коли запущено
[Keep the blue barrel directly in front of the robot.]
встановити швидкість повороту [40]%
назавжди
отримати дані [синя бочка v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
якщо <(об'єкт AI Vision [азимут v]) [math_greater_than v] [5]> тоді
повернути [праворуч v]
інакше якщо <(об'єкт AI Vision [азимут v]) [math_less_than v] [-5]> тоді
повернути [ліворуч v]
інакше
зупинити весь рух

ідентифікатор тегу#

Властивість tagID повідомляє ідентифікаційний номер виявленого ID AprilTag як ціле число.

Блок стека властивостей об’єкта AI Vision з параметром, встановленим на tagID.#
об'єкт AI Vision [tagID v]

Приклад

коли запущено
[Move forward when AprilTag ID 0 is detected.]
назавжди
отримати дані [AprilTag ID 0 v] з AI Vision
якщо <об'єкт AI Vision існує?> тоді
рухатися [вперед v]
Кінець
зупинити весь рух