Зрение#

Введение#

Дрон VEX AIR оснащен двумя визуальными датчиками, которые обнаруживают и отслеживают идентификаторы AprilTag. Это позволяет дрону анализировать окружающую среду, следить за объектами и реагировать на основе обнаруженных визуальных данных.

Ниже приведён список всех доступных блоков:

Действия — Управление видеопотоком и захват данных об объекте.

Настройки — Отрегулируйте, к каким обнаруженным объектам будет осуществляться доступ.

Значения — Получение информации о наличии объекта, его классификации и свойствах.

Действия#

получить данные объекта#

Блок стека получить данные объекта фильтрует данные из кадра датчика зрения. Датчики зрения могут распознавать идентификаторы AprilTag.

В наборе данных хранятся объекты, упорядоченные по ширине от наибольшего к наименьшему, начиная с индекса 0. Доступ к свойствам каждого объекта осуществляется с помощью блока Свойство объекта Vision. Если соответствующие объекты не обнаружены, сообщается о пустом наборе данных.

Блок стека «Получить данные объекта».#
получить данные [все 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 в данный момент какие-либо объекты.

  • Верно — Указанный датчик зрения обнаруживает объект.

  • Ложь — Указанный датчик зрения не обнаруживает объект.

Блок «Показать или скрыть панель мониторинга AI Vision».#
<объект Vision существует?>

Параметр

Описание

Этот блок не имеет параметров.

Пример

при запуске
[Climb upward when an AprilTag ID is detected.]
взлететь на [300] [мм v] ▶
вечно
получить данные [все AprilTags v] из камеры Vision [вперёд v]
если <объект Vision существует?> то
набор высоты [вверх v] на [200] [мм v] ▶

Объект визуализации — AprilTag ID#

Объект Vision — это AprilTag ID. Логический блок указывает, является ли AprilTag ID конкретным идентификационным номером.

  • Верно — Идентификатор AprilTag — это число.

  • Неверно — Идентификатор AprilTag не является числом.

Система AI Vision обнаружила, что идентификатор AprilTag представляет собой логический блок.#
<Vision object is AprilTag ID [1]>

Параметры

Описание

Идентификационный номер AprilTag

Число для сравнения с обнаруженным идентификационным номером 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 object count отображает количество обнаруженных объектов в наборе данных в виде целого числа.

Блок стека элементов объекта Set AI Vision.#
(количество объектов Vision)

Параметры

Описание

Этот блок не имеет параметров.

Пример

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

Свойство объекта Vision#

После использования блока получить данные объекта каждому объекту (показано ниже) присваивается несколько свойств.

Блок «Отчет о свойствах объекта AI Vision».#
(объект Vision [ширина v])

Все значения свойств, кроме id, описывают положение, размер, ориентацию или направление обнаруженного объекта в момент использования блока получить данные объекта. Эти значения измеряются в пикселях или градусах. Каждый датчик зрения имеет разное разрешение:

  • Разрешение лицевой стороны: 640 x 480 пикселей.

  • Направлено вниз: 640 x 400 пикселей

Параметр

Описание

свойство

Which property of the detected object to use:

ширина#

Свойство width отображает ширину обнаруженного объекта в пикселях в виде целого числа от 1 до 640.

Блок стека свойств объекта AI Vision с параметром, установленным на значение width.#
(объект 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!] в консоль ▶

несущий#

Свойство пеленг сообщает угол, указывающий положение объекта относительно дрона. Поведение зависит от используемого датчика зрения.

Значение 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] градусов ▶
иначе
зависнуть

originX#

Свойство 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 отображает идентификационный номер обнаруженного идентификатора AprilTag в виде целого числа.

Блок стека свойств объекта AI Vision с параметром, установленным на tagID.#
(объект Vision [id v])

Пример

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