ИИ-зрение#
Введение#
Датчик визуального восприятия с искусственным интеллектом робота-программиста VEX AIM обнаруживает и отслеживает объекты, цвета и идентификаторы AprilTag. Это позволяет роботу анализировать окружающую среду, следовать за объектами и реагировать на основе обнаруженных визуальных данных.
Датчик AI Vision имеет разрешение 320×240 пикселей. Начало координат (0, 0) расположено в верхнем левом углу, а центр датчика находится в точке (160, 120), как показано на схеме ниже:

Ниже приведён список всех блоков:
Действия — Управление потоком данных AI Vision и сбор данных об объектах.
Просмотрщик AI Vision на экране — Включает или отключает отображение видеопотока AI Vision в реальном времени на экране робота.
получить данные объекта — Захватывает данные для конкретной подписи, например, заданного цвета, предварительно обученного объекта или идентификатора AprilTag.
Настройки — Отрегулируйте, к каким обнаруженным объектам будет осуществляться доступ.
set AI Vision object item — Выбирает конкретный объект из списка обнаруженных объектов.
Значения — Возвращает информацию о наличии объекта, его классификации и свойствах.
имеет объект — Проверяет, держит ли робот обнаруженный объект.
Объект AI Vision существует — Сообщает, обнаружен ли объект.
Объект AI Vision — Проверяет, соответствует ли обнаруженный объект определенной классификации.
Идентификатор объекта AI Vision — AprilTag — Проверяет, совпадает ли обнаруженный идентификатор AprilTag с конкретным идентификатором.
Количество обнаруженных объектов в AI Vision — Сообщает количество обнаруженных объектов.
Свойство объекта AI Vision — Сообщает такие подробности, как:
centerX & centerY — Координаты положения центра в поле зрения датчика.
originX & originY — Координаты положения верхнего левого угла в поле зрения датчика.
вращение — Ориентация объекта.
направление — Горизонтальный угол относительно передней части робота.
tagID — Идентификационный номер AprilTag ID.
Действия#
Программа просмотра AI Vision на экране#
Блок Просмотрщик AI Vision на экране включает или отключает отображение видеопотока AI Vision в реальном времени на экране робота. При включении на экране отображаются данные датчиков в реальном времени, что предотвращает появление других изображений или текста. Для отображения другого контента используйте этот блок, чтобы скрыть видеопоток.
[показать v] просмотрщик AI Vision на экране
Параметры |
Описание |
|---|---|
статус |
Управляет отображением потока данных на экране робота: show отображает поток данных, а hide удаляет поток данных с экрана. |
Пример
при запуске
[View the AI Vision Sensor's feed for five seconds.]
[показать v] просмотрщик AI Vision на экране
ждать [5] секунд
[скрыть v] просмотрщик AI Vision на экране
получить данные объекта#
Блок стека получить данные об объекте фильтрует данные из кадра датчика AI Vision, сохраняя их в виде единой сигнатуры — сохраненного описания объекта, который датчик может распознать, например, предварительно обученного объекта, идентификатора AprilTag или настроенного цвета или цветового кода.
Перед использованием этого блока необходимо предварительно настроить цвета и цветовые коды в утилите AI Vision Utility.
В наборе данных хранятся объекты, упорядоченные по ширине от наибольшего к наименьшему, начиная с индекса 0. Доступ к свойствам каждого объекта осуществляется с помощью блока Свойство объекта AI Vision. Если соответствующие объекты не обнаружены, сообщается о пустом наборе данных.
получить данные [спортивный мяч v] из AI Vision
Параметр |
Описание |
|---|---|
подпись |
Фильтрует набор данных, чтобы включить только данные с заданной сигнатурой. Доступные сигнатуры:
|
Пример
при запуске
[Move forward if a sports ball is detected.]
вечно
получить данные [спортивный мяч v] из AI Vision
если <объект AI Vision существует?> то
движение [вперёд v] на [10] [мм v] ▶
Цветовые сигнатуры#
Цветовая сигнатура — это уникальный цвет, который может распознать датчик AI Vision. Эти сигнатуры позволяют датчику обнаруживать и отслеживать объекты на основе их цвета. После настройки цветовой сигнатуры в утилите AI Vision датчик может идентифицировать объекты с этим конкретным цветом в своем поле зрения.
Цветовые сигнатуры используются в блоке получить данные объекта для обработки и обнаружения цветных объектов в реальном времени.

Пример
при запуске
[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 датчик может распознавать предопределенные цветовые шаблоны.
Цветовые коды особенно полезны для идентификации сложных объектов, сопоставления с элементами игры или создания уникальных маркеров для автономной навигации.

Пример
при запуске
[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 задает, какой элемент из набора данных следует использовать.
установить элемент объекта AI Vision (1)
Параметры |
Описание |
|---|---|
элемент |
Номер элемента в наборе данных, который следует использовать. |
Пример
при запуске
[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>
Параметр |
Описание |
|---|---|
объект |
Объект, который необходимо обнаружить относительно ударного устройства робота:
|
Пример
при запуске
[Kick when the robot has a sports ball.]
вечно
если <есть [спортивный мяч v]? :: custom-ai-vision> то
ударить объект [средний v]
Объект AI Vision существует.#
Логический блок AI Vision object exists сообщает, обнаружен ли объект в наборе данных.
Верно — Набор данных содержит обнаруженный объект.
Ложь — Объекты не обнаружены.
<объект AI Vision существует?>
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Move forward if a sports ball is detected.]
вечно
получить данные [спортивный мяч v] из AI Vision
если <объект AI Vision существует?> то
движение [вперёд v] на [10] [мм v] ▶
Объект AI Vision — это#
Логический блок AI Vision object is сообщает, соответствует ли обнаруженный объект определенной классификации.
Верно — Элемент в наборе данных представляет собой конкретный объект.
Ложь — Элемент в наборе данных не является конкретным объектом.
<объект AI Vision — [спортивный мяч v]?>
Параметр |
Описание |
|---|---|
объект |
С каким объектом сравнивать данный предмет:
|
Пример
при запуске
[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.#
The AI Vision object is AprilTag ID Boolean block reports whether a detected AprilTag ID matches a specific ID.
Верно — Идентификатор AprilTag — это число.
Неверно — Идентификатор AprilTag не является числом.
<AI Vision object is AprilTag ID [1] ?>
Параметры |
Описание |
|---|---|
Идентификатор AprilTag |
Число, которое нужно сравнить с обнаруженным идентификационным номером AprilTag. |
подсчет объектов в AI Vision#
Блок отчета AI Vision object count отображает количество обнаруженных объектов в наборе данных в виде целого числа.
количество объектов AI Vision
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Display the amount of sports balls and barrels.]
вечно
очистить строку [1] на экране
установить курсор на строку [1] столбец [1] на экране
получить данные [весь груз v] из AI Vision
если <объект AI Vision существует?> то
вывести (количество объектов AI Vision) на экран ▶
конец
ждать [0.5] секунд
свойство объекта AI Vision#
После использования блока получить данные объекта каждому объекту (показано ниже) присваиваются девять свойств.
объект AI Vision [ширина v]
Все значения свойств, кроме tagID, описывают положение, размер, ориентацию или азимут обнаруженного объекта в момент использования блока get object data. Эти значения измеряются в пикселях или градусах, исходя из разрешения датчика 320 на 240 пикселей.

Параметр |
Описание |
|---|---|
свойство |
Какое свойство обнаруженного объекта использовать: |
ширина#
Свойство width отображает ширину обнаруженного объекта в пикселях в виде целого числа от 1 до 320.
Примечание: Значения пикселей указаны относительно системы координат датчика. См. диаграмму во Введении для справки.
объект 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 [высота 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 v]

Пример
при запуске
[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 v]

Пример
при запуске
[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]
конец
иначе
остановить все движения
originX#
Свойство originX отображает координату x верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях в виде целого числа от 0 до 320.
Примечание: Значения пикселей указаны относительно системы координат датчика. См. диаграмму во Введении для справки.
объект AI Vision [originX v]

Пример
при запуске
[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 v]

Пример
при запуске
[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 [вращение v]

Пример
при запуске
[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 показывает, насколько объект смещен влево или вправо от центра поля зрения датчика AI Vision в градусах. Значение 0 означает, что объект находится в центре, положительные значения означают, что объект находится справа, а отрицательные значения — что объект находится слева.
при запуске
[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#
Свойство tagID отображает идентификационный номер обнаруженного идентификатора AprilTag в виде целого числа.
объект AI Vision [tagID v]
Пример
при запуске
[Move forward when AprilTag ID 0 is detected.]
вечно
получить данные [AprilTag ID 0 v] из AI Vision
если <объект AI Vision существует?> то
движение [вперёд v]
конец
остановить все движения