Датчик изображения с искусственным интеллектом#
Введение#
Датчик VEX IQ AI Vision Sensor способен обнаруживать и отслеживать объекты, цвета и идентификаторы AprilTag. Это позволяет роботу анализировать окружающую среду, следовать за объектами и реагировать на основе обнаруженных визуальных данных.
Примеры AI Vision предназначены для использования с роботом Basebot, оснащенным датчиком VEX IQ AI Vision. В этих примерах датчик настроен с именем AIVision1, которое отображается в блоках.
Ниже приведён список всех блоков:
Действия — Получение данных с датчика VEX IQ AI Vision Sensor для выбранной подписи.
получить данные объекта — Захватывает данные для конкретной подписи, например, заданного цвета, предварительно обученного объекта или идентификатора AprilTag.
Настройки — Выберите объект, с которым будете взаимодействовать.
set AI Vision object item — Выбирает конкретный объект из списка обнаруженных объектов.
Значения — Доступ к собранным данным и их использование.
Объект AI Vision существует — Сообщает, обнаружен ли объект.
Количество обнаруженных объектов в AI Vision — Сообщает количество обнаруженных объектов.
Свойство объекта AI Vision — Сообщает такие подробности, как:
Объект AI Vision — это? — Проверяет, соответствует ли обнаруженный объект определенной классификации.
Объект AI Vision — AprilTag? — Проверяет, является ли обнаруженный объект AprilTag, соответствующим определенному идентификатору.
Идентификатор объекта AI Vision равен AprilTag? — Проверяет, совпадает ли обнаруженный идентификатор AprilTag с конкретным идентификатором.
Действия#
получить данные объекта#
Блок стека получить данные об объекте фильтрует данные из кадра датчика VEX IQ AI Vision Sensor и сохраняет их в виде единой сигнатуры — сохраненного описания объекта, который датчик может распознать, например, предварительно обученного объекта, идентификатора AprilTag или настроенного цвета или цветового кода.
Перед использованием этого блока необходимо предварительно настроить цвета и цветовые коды в утилите AI Vision Utility.
В наборе данных хранятся объекты, упорядоченные по ширине от наибольшего к наименьшему, начиная с индекса 0. Доступ к свойствам каждого объекта осуществляется с помощью блока Свойство объекта AI Vision. Если соответствующие объекты не обнаружены, сообщается о пустом наборе данных.
получить данные [SELECT_A_SIG v] из [AIVision1 v]
Параметр |
Описание |
|---|---|
подпись |
Фильтрует набор данных, чтобы включить только данные заданной сигнатуры. Доступные сигнатуры:
|
Примечание: Для отображения идентификатора AprilTag или параметров классификации ИИ необходимо включить их обнаружение в утилите AI Vision.
Пример
при запуске
[Drive forward if an AprilTag ID is detected.]
вечно
получить данные [AprilTag IDs v] из [AIVision1 v]
если <объект [AIVIsion1 v] существует?> то
движение [вперёд v] на [10] [мм v] ▶
Классификации ИИ#
Датчик VEX IQ AI Vision Sensor способен обнаруживать различные объекты в соответствии с определенными классификациями ИИ. В зависимости от модели классификации ИИ, выбранной при настройке датчика VEX IQ AI Vision Sensor в окне «Устройства», будут обнаруживаться разные объекты. В настоящее время доступны следующие модели:
Предметы для учебного класса
Синий шар
Гринболл
RedBall
БлюРинг
ГринРинг
RedRing
BlueCube
ГринКуб
RedCube
Соревнования по робототехнике VEX IQ: комбинированный вариант
Луч
RedPin
BluePin
OrangePin
Повысьте уровень соревнований по робототехнике VEX IQ
BlueBeanBag
RedBeanBag
YellowBeanBag
Цветовые сигнатуры#
Цветовая сигнатура — это уникальный цвет, который может распознавать датчик VEX IQ AI Vision. Эти сигнатуры позволяют датчику обнаруживать и отслеживать объекты на основе их цвета. После настройки цветовой сигнатуры датчик может идентифицировать объекты определенного цвета в своем поле зрения.
Цветовые сигнатуры используются в блоке получить данные объекта для обработки и обнаружения цветных объектов в реальном времени. Одновременно можно настроить до 7 цветовых сигнатур.

Пример
при запуске
[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] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
вывести [Color detected!] на экран ▶
Цветовые коды#
Цветовой код — это структурированный шаблон, состоящий из 2–4 цветовых сигнатур, расположенных в определенном порядке. Эти коды позволяют датчику VEX IQ AI Vision распознавать заранее заданные цветовые шаблоны.
Цветовые коды особенно полезны для идентификации сложных объектов, выравнивания с элементами игры или создания уникальных маркеров для автономной навигации. Одновременно можно настроить до 8 цветовых кодов.

Пример
при запуске
[Display if any objects matching the RED_BLUE code is detected.]
вечно
установить курсор на строку [1] столбец [1] на экране
очистить строку [1] на экране
[Change the signature to any configured Color Code.]
получить данные [RED_BLUE v] из [AIVision1 v]
если <объект [AIVIsion1 v] существует?> то
вывести [Code detected!] на экран ▶
Настройки#
установить объект AI Vision элемент#
Блок стека set AI Vision object item задает, какой элемент из набора данных следует использовать.
установить элемент объекта [AIVision1 v] (1)
Параметры |
Описание |
|---|---|
элемент |
Номер элемента в наборе данных, который следует использовать. |
Пример
при запуске
[Display the largest detected AprilTag ID.]
вечно
получить данные [AprilTag IDs v] из [AIVision1 v]
очистить строку [1] на экране
установить курсор на строку [1] столбец [1] на экране
если <объект [AIVision1 v] существует?> то
установить элемент объекта [AIVision1 v] (количество объектов [AIVision1 v])
вывести (объект [AIVision1 v] [tagID v]) на экран ▶
Ценности#
Объект AI Vision существует.#
Логический блок AI Vision object exists сообщает, обнаружен ли какой-либо объект в наборе данных.
Верно — Набор данных содержит обнаруженный объект.
Ложь — Набор данных не содержит обнаруженных объектов.
<объект [AIVision1 v] существует?>
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Drive forward if an object is detected.]
вечно
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
движение [вперёд v] на [10] [мм v] ▶
подсчет объектов в AI Vision#
Блок отчета AI Vision object count отображает количество обнаруженных объектов в наборе данных в виде целого числа.
(количество объектов [AIVision1 v])
Параметры |
Описание |
|---|---|
Этот блок не имеет параметров. |
Пример
при запуске
[Display the total amount of cubes, rings, and balls.]
вечно
очистить строку [1] на экране
установить курсор на строку [1] столбец [1] на экране
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
вывести (количество объектов [AIVision1 v]) на экран ▶
конец
ждать [0.5] секунд
свойство объекта AI Vision#
После использования блока получить данные объекта каждому объекту (показано ниже) присваиваются девять свойств.
(объект [AIVision1 v] [ширина v])
Все значения свойств, кроме tagID, описывают положение и размер обнаруженного объекта в поле зрения датчика VEX IQ AI Vision в момент использования блока get object data. Эти значения измеряются в пикселях, исходя из разрешения датчика 320 на 240 пикселей.
Параметр |
Описание |
|---|---|
свойство |
Какое свойство обнаруженного объекта использовать: |
ширина#
Свойство width отображает ширину обнаруженного объекта в пикселях в виде целого числа от 1 до 320.
(объект [AIVision1 v] [ширина v])
Пример
при запуске
[Drive towards an object until its width is larger than 100 pixels.]
вечно
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <(объект [AIVision1 v] [ширина v]) [math_less_than v] [100]> то
движение [вперёд v]
конец
иначе
остановить движение
высота#
Свойство height отображает высоту обнаруженного объекта в пикселях в виде целого числа от 1 до 240.
(объект [AIVision1 v] [высота v])
Пример
при запуске
[Drive towards an object until its height is larger than 100 pixels.]
вечно
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <(объект [AIVision1 v] [высота v]) [math_less_than v] [100]> то
движение [вперёд v]
конец
иначе
остановить движение
центрX#
Свойство centerX отображает x-координату центра обнаруженного объекта в пикселях в виде целого числа от 0 до 320.
(объект [AIVision1 v] [centerX v])
Пример
при запуске
[Turn slowly until an object is centered in front of the robot.]
установить скорость поворота [30] [% v]
поворот [вправо v]
вечно
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <[140] [math_less_than v] (объект [AIVision1 v] [centerX v]) [math_less_than v] [180]> то
остановить движение
центрY#
Свойство centerY отображает y-координату центра обнаруженного объекта в пикселях в виде целого числа от 0 до 240.
(объект [AIVision1 v] [centerY v])
Пример
при запуске
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
вечно
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <(объект [AIVision1 v] [centerY v]) [math_less_than v] [140]> то
движение [вперёд v]
конец
иначе
остановить движение
угол#
Свойство angle отображает ориентацию обнаруженного цветового кода или идентификатора AprilTag в виде целого числа в градусах от 0 до 359.
(объект [AIVision1 v] [угол v])
Пример
при запуске
[Slide left or right depending on how the Color Code is rotated.]
вечно
получить данные [RED_BLUE v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <[50] [math_less_than v] (объект [AIVision1 v] [угол v]) [math_less_than v] [100]> то
движение [вправо v]
иначе если <[270] [math_less_than v] (объект [AIVision1 v] [угол v]) [math_less_than v] [330]> то
движение [влево v]
иначе
остановить движение
конец
иначе
остановить движение
originX#
Свойство originX отображает координату x верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях в виде целого числа от 0 до 320.
(объект [AIVision1 v] [originX v])
Пример
при запуске
[Display if an object is to the left or the right.]
вечно
очистить строку [1] на экране
установить курсор на строку [1] столбец [1] на экране
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <(объект [AIVision1 v] [originX v]) [math_less_than v] [160]> то
вывести [To the left!] на экран ▶
иначе
вывести [To the right!] на экран ▶
конец
ждать [0.5] секунд
происхождениеY#
Свойство originY отображает Y-координату верхнего левого угла ограничивающего прямоугольника обнаруженного объекта в пикселях в виде целого числа от 0 до 240.
(объект [AIVision1 v] [originY v])
Пример
при запуске
[Display if an object is close or far from the robot.]
вечно
очистить строку [1] на экране
установить курсор на строку [1] столбец [1] на экране
получить данные [AI Classifications v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <(объект [AIVision1 v] [originY v]) [math_less_than v] [80]> то
вывести [Far!] на экран ▶
иначе
вывести [Close!] на экран ▶
конец
ждать [0.5] секунд
tagID#
Свойство tagID отображает идентификационный номер обнаруженного идентификатора AprilTag в виде целого числа.
(объект [AIVision1 v] [tagID v])
Пример
при запуске
[Drive forward when AprilTag ID 0 is detected.]
вечно
получить данные [AprilTag IDs v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <(объект [AIVision1 v] [tagID v]) [math_equal v] [0]> то
движение [вперёд v]
иначе
остановить движение
конец
ждать [0.5] секунд
Что представляет собой объект, созданный с помощью ИИ-зрения?#
В блоке AI Vision object is? отображается логическое значение, указывающее, соответствует ли обнаруженный объект определенной классификации.
Верно — элемент в наборе данных представляет собой конкретный объект.
Ложь — Элемент в наборе данных не является конкретным объектом.
<объект [AIVision1 v] — [BlueBall v]?>
Параметр |
Описание |
|---|---|
объект |
С какой классификацией ИИ сравнивать этот элемент. |
Пример
при запуске
[Display if a Blue Cube is detected.]
вечно
получить данные [AI Classifications v] из [AIVision1 v]
очистить строку [1] на экране
установить курсор на строку [1] столбец [1] на экране
если <объект [AIVision1 v] существует?> то
если <объект [AIVision1 v] — [BlueCube v]?> то
вывести [Cube detected!] на экран ▶
ждать [0.5] секунд
Объект AI Vision — это AprilTag?#
В блоке AI Vision object is AprilTag? отображается логическое значение, указывающее, является ли обнаруженный объект меткой AprilTag, соответствующей определенному идентификатору.
Верно — Обнаруженный объект — это AprilTag с указанным ID.
Ложь — Обнаруженный объект не является AprilTag с указанным ID.
<объект [AIVision1 v] является AprilTag [0]?>
Параметр |
Описание |
|---|---|
Идентификатор AprilTag |
Идентификационный номер для сравнения с обнаруженным AprilTag. |
Пример
при запуске
[Report if AprilTag 3 is detected.]
вечно
очистить экран
установить курсор на строку [1] столбец [1] на экране
получить данные [AprilTag IDs v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <объект [AIVision1 v] является AprilTag [3]?> то
вывести [That is 3!] на экран ▶
иначе
вывести [That isn't 3!] на экран ▶
конец
конец
ждать [0.1] секунд
Объект AI Vision имеет идентификатор AprilTag?#
Блок AI Vision object is AprilTag ID? выводит логическое значение, указывающее, соответствует ли обнаруженный идентификатор AprilTag конкретному идентификатору.
Верно — идентификатор AprilTag — это число.
Ложь — идентификатор AprilTag не является числом.
<[AIVision1 v] object is AprilTag ID [1] ?>
Параметры |
Описание |
|---|---|
Идентификационный номер AprilTag |
Число, которое нужно сравнить с обнаруженным идентификационным номером AprilTag. |
Пример:
при запуске
[Report if AprilTag ID 3 is detected.]
вечно
очистить экран
установить курсор на строку [1] столбец [1] на экране
получить данные [AprilTag IDs v] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
если <[AIVision1 v] object is AprilTag ID [3] ?> то
вывести [That is 3!] на экран ▶
иначе
вывести [That isn't 3!] на экран ▶
конец
конец
ждать [0.1] секунд