Бачення#
Вступ#
Дрон VEX AIR має два датчики зору, які виявляють та відстежують ідентифікатори AprilTag. Вони дозволяють дрону аналізувати навколишнє середовище, стежити за об’єктами та реагувати на основі виявлених візуальних даних.
Нижче наведено список усіх доступних блоків:
Дії — керування потоком даних Vision та захоплення даних об’єкта.
get object data — Збирає дані для ідентифікаторів AprilTag.
Налаштування — налаштуйте, до яких виявлених об’єктів буде здійснюватися доступ.
set Vision object item — Вибирає певний об’єкт зі списку виявлених об’єктів.
Значення — Отримання інформації про наявність, класифікацію та властивості об’єкта.
Об’єкт бачення існує — Повідомляє, чи виявлено об’єкт.
Об’єкт Vision – це AprilTag ID — Перевіряє, чи збігається виявлений AprilTag ID із певним ID.
Кількість об’єктів бачення — Повідомляє кількість виявлених об’єктів.
Властивість об’єкта Vision — Отримує такі деталі, як:
centerX & centerY — Координати центрального положення в області зору датчика.
bearing — Кут об’єкта відносно переднього датчика зору або градуси, необхідні для того, щоб дрон повернувся до об’єкта.
обертання — Орієнтація об’єкта.
originX & originY — Координати положення верхнього лівого кута в області зору датчика.
id — Ідентифікаційний номер ідентифікатора AprilTag.
Дії#
отримати дані об’єкта#
Блок стеку get object data фільтрує дані з кадру датчика зору. Датчики зору можуть виявляти ідентифікатори AprilTag.
Набір даних зберігає об’єкти, відсортовані від найбільшого до найменшого за шириною, починаючи з індексу 0. Доступ до властивостей кожного об’єкта можна отримати за допомогою блоку Vision object property. Якщо не виявлено відповідних об’єктів, повідомляється про порожній набір даних.
отримати дані [всі 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 встановлює, який елемент у наборі даних використовувати.
встановити елемент об'єкта Vision на [1]
Параметри |
Опис |
|---|---|
елемент |
Номер елемента в наборі даних, який потрібно використовувати. |
Приклад
коли запущено
[Display the smallest-appearing AprilTag ID.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
встановити елемент об'єкта Vision на (кількість об'єктів Vision)
вивести (об'єкт Vision [id v]) на консоль ▶
Цінності#
Об’єкт бачення існує#
Логічний блок Об’єкт Vision існує повідомляє, чи виявляє вказаний датчик Vision наразі якісь об’єкти.
True — Зазначений датчик зору виявляє об’єкт.
Хибно — Зазначений датчик зору не виявляє об’єкт.
<об'єкт 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 не є числом.
<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 повідомляє кількість виявлених об’єктів у наборі даних у вигляді цілого числа.
(кількість об'єктів Vision)
Параметри |
Опис |
|---|---|
Цей блок не має параметрів. |
Приклад
коли запущено
[Display how many AprilTag IDs are detected.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
вивести (кількість об'єктів Vision) на консоль ▶
чекати [0.2] секунд
Властивість об’єкта зору#
Існує кілька властивостей, які додаються до кожного об’єкта (показано нижче), що зберігаються після використання блоку get object data.
(об'єкт Vision [ширина v])
Усі значення властивості, окрім id, описують положення, розмір, орієнтацію або пеленг виявленого об’єкта в момент використання блоку get object data. Ці значення вимірюються в пікселях або градусах. Кожен датчик зору має різну роздільну здатність:
Фронтальна панель: 640 x 480 пікселів
Донизу: 640 x 400 пікселів
Параметр |
Опис |
|---|---|
власність |
Яку властивість виявленого об’єкта використовувати: |
ширина#
Властивість width повідомляє ширину виявленого об’єкта в пікселях як ціле число від 1 до 640.
(об'єкт 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.
(об'єкт 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.
(об'єкт 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.
(об'єкт 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º. |
(об'єкт 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.
(об'єкт 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.
(об'єкт 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.
(об'єкт 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 як ціле число.
(об'єкт Vision [id v])
Приклад
коли запущено
[Display the detected AprilTag ID.]
назавжди
отримати дані [всі AprilTags v] з Vision камери [вперед v]
очистити консоль
якщо <об'єкт Vision існує?> тоді
вивести (об'єкт Vision [id v]) на консоль ▶
Кінець
чекати [0.2] секунд