Бачення#

Вступ#

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

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

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

  • get object data — Збирає дані для ідентифікаторів AprilTag.

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

  • set Vision object item — Вибирає певний об’єкт зі списку виявлених об’єктів.

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

Дії#

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

Блок стеку get object data фільтрує дані з кадру датчика зору. Датчики зору можуть виявляти ідентифікатори AprilTag.

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

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

Параметр

Опис

підпис

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

камера

Датчик зору для отримання даних, вперед або вниз.

Приклад

коли запущено
[Climb upward when an AprilTag ID is detected.]
злетіти на [300] [мм v] ▶
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
якщо <об'єкт Vision існує?> тоді
підніматися [вгору v] на [200] [мм v] ▶

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

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

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

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

Параметри

Опис

елемент

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

Приклад

коли запущено
[Display the smallest-appearing AprilTag ID.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
встановити елемент об'єкта Vision на (кількість об'єктів Vision)
вивести (об'єкт Vision [id v]) на консоль ▶

Цінності#

Об’єкт бачення існує#

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

  • True — Зазначений датчик зору виявляє об’єкт.

  • Хибно — Зазначений датчик зору не виявляє об’єкт.

Блок стека панелі інструментів AI Vision для відображення або приховання.#
<об'єкт Vision існує?>

Параметр

Опис

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

Приклад

коли запущено
[Climb upward when an AprilTag ID is detected.]
злетіти на [300] [мм v] ▶
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
якщо <об'єкт Vision існує?> тоді
підніматися [вгору v] на [200] [мм v] ▶

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

Логічний блок Об’єкт Vision — це AprilTag ID, що повідомляє, чи є AprilTag ID певним ідентифікатором.

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

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

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

Параметри

Опис

Ідентифікаційний номер квітневого тегу

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

Приклад

коли запущено
[Display when the target AprilTag ID is detected.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
якщо <Vision object is AprilTag ID [21]> тоді
вивести [Target found!] на консоль ▶
Кінець

Кількість об’єктів зору#

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

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

Параметри

Опис

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

Приклад

коли запущено
[Display how many AprilTag IDs are detected.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
вивести (кількість об'єктів Vision) на консоль ▶
чекати [0.2] секунд

Властивість об’єкта зору#

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

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

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

  • Фронтальна панель: 640 x 480 пікселів

  • Донизу: 640 x 400 пікселів

Параметр

Опис

власність

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

ширина#

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

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

Приклад

коли запущено
[Show if the AprilTag ID appears large or small.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
якщо <(об'єкт Vision [ширина v]) [math_greater_than v] [100]> тоді
вивести [Large] на консоль ▶
інакше
вивести [Small] на консоль ▶
Кінець
Кінець
чекати [0.2] секунд

висота#

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

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

Приклад

коли запущено
[Show if the AprilTag ID appears large or small.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
якщо <(об'єкт Vision [висота v]) [math_greater_than v] [100]> тоді
вивести [Large] на консоль ▶
інакше
вивести [Small] на консоль ▶
Кінець
Кінець
чекати [0.2] секунд

центрX#

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

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

Приклад

коли запущено
[Show if an AprilTag ID is to the left or the right of the camera.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
якщо <(об'єкт Vision [centerX v]) [math_less_than v] [320]> тоді
вивести [To the left] на консоль ▶
інакше
вивести [To the right] на консоль ▶
Кінець
Кінець
чекати [0.2] секунд

центрY#

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

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

Приклад

коли запущено
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
злетіти на [800] [мм v] ▶
отримати дані [всі AprilTags v] з Vision камери [вперед v]
якщо <об'єкт Vision існує?> тоді
якщо <(об'єкт Vision [centerY v]) [math_less_than v] [240]> тоді
вивести [Below the target!] на консоль ▶
інакше
вивести [Above the target!] на консоль ▶
Кінець
інакше
вивести [No target found!] на консоль ▶

підшипник#

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

Значення 0° вказує на те, що центр об’єкта та датчик вирівняні. Додатні значення означають, що об’єкт знаходиться праворуч, а від’ємні значення – що об’єкт знаходиться ліворуч.

Датчик

Повернення

Вниз

На скільки градусів передня частина дрона повинна повертатися, щоб вирівнятися з центром об’єкта, від –180º до 180º.

Вперед

Градуси зміщення об’єкта ліворуч або праворуч від центру датчика зору від –180º до 180º.

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

Приклади

коли запущено
[Align the front of the drone to an AprilTag ID.]
встановити швидкість повороту (15)%
злетіти на [500] [мм v] ▶
назавжди
отримати дані [всі AprilTags v] з Vision камери [вниз v]
якщо <об'єкт Vision існує?> тоді
якщо <[-20] [math_less_than v] (об'єкт Vision [азимут v]) [math_less_than v] [20]> тоді
[Hover once sensor is centered on the AprilTag ID.]
зависати
відтворити звук [успіх v] ▶
інакше якщо <(об'єкт Vision [азимут v]) [math_less_than v] [-21]> тоді
повернути [ліворуч v]
інакше
повернути [праворуч v]

обертання#

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

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

Приклад

коли запущено
[Turn left or right based on the rotation of an AprilTag ID.]
злетіти на [1000] [мм v] ▶
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
якщо <об'єкт Vision існує?> тоді
якщо <[240] [math_less_than v] (об'єкт Vision [обертання v]) [math_less_than v] [300]> тоді
повернути [ліворуч v] на [90] градусів ▶
інакше якщо <[60] [math_less_than v] (об'єкт Vision [обертання v]) [math_less_than v] [120]> тоді
повернути [праворуч v] на [90] градусів ▶
інакше
зависати

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

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

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

Приклад

коли запущено
[Draw lines to the AprilTag ID origin from all corners.]
назавжди
очистити екран
get [all AprilTags v] data from vision [forward v] camera
якщо <об'єкт Vision існує?> тоді
намалювати лінію [0] [0] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
намалювати лінію [0] [480] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
намалювати лінію [640] [0] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
намалювати лінію [640] [480] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
Кінець
чекати [0.2] секунд

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

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

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

Приклад

коли запущено
[Draw lines to the AprilTag ID origin from all corners.]
назавжди
очистити екран
get [all AprilTags v] data from vision [forward v] camera
якщо <об'єкт Vision існує?> тоді
намалювати лінію [0] [0] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
намалювати лінію [0] [480] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
намалювати лінію [640] [0] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
намалювати лінію [640] [480] (об'єкт Vision [originX v]) (об'єкт Vision [originY v]) на екрані
Кінець
чекати [0.2] секунд

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

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

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

Приклад

коли запущено
[Display the detected AprilTag ID.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
вивести (об'єкт Vision [id v]) на консоль ▶
Кінець
чекати [0.2] секунд