Датчик изображения с искусственным интеллектом#

Введение#

Датчик 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 — Выбирает конкретный объект из списка обнаруженных объектов.

Значения — Доступ к собранным данным и их использование.

Действия#

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

Блок стека получить данные об объекте фильтрует данные из кадра датчика 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 цветовых сигнатур.

Утилита 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] из [AIVision1 v]
если <объект [AIVision1 v] существует?> то
вывести [Color detected!] на экран ▶

Цветовые коды#

Цветовой код — это структурированный шаблон, состоящий из 2–4 цветовых сигнатур, расположенных в определенном порядке. Эти коды позволяют датчику VEX IQ AI Vision распознавать заранее заданные цветовые шаблоны.

Цветовые коды особенно полезны для идентификации сложных объектов, выравнивания с элементами игры или создания уникальных маркеров для автономной навигации. Одновременно можно настроить до 8 цветовых кодов.

Интерфейс AI Vision Utility отображает подключенный датчик зрения, обнаруживающий два смежных объекта: синий прямоугольник слева и красный прямоугольник справа, объединенных в один белый ограничивающий прямоугольник с надписью BlueRed. Информация об обнаружении включает угол (A:11°), координаты (X:143, Y:103), ширину (W:233) и высоту (H:108). На правой панели указаны три цветовые сигнатуры: Red_Box, Blue_Box и BlueRed, с регулируемыми диапазонами оттенка и насыщенности. Сигнатура BlueRed объединяет Blue_Box и Red_Box. Под видеопотоком расположены кнопки с надписями Freeze Video, Copy Image, Save Image и Close.

Пример

при запуске
[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 задает, какой элемент из набора данных следует использовать.

Блок стека элементов объекта Set AI Vision.#
установить элемент объекта [AIVision1 v] (1)

Параметры

Описание

элемент

Номер элемента в наборе данных, который следует использовать.

Пример

Блок состоит из нескольких блоков, начиная с блока «При запуске», за которым следует блок комментариев с текстом «Отобразить наибольший обнаруженный идентификатор AprilTag». Внутри бесконечного цикла блок «Сделать снимок AI Vision» захватывает изображение идентификаторов AprilTag. Блок «Если» проверяет, существует ли объект AI Vision. Если да, блок «Установить элемент объекта AI Vision» присваивает количество объектов переменной, а блок «Печать» отображает идентификатор обнаруженного объекта на экране.#
при запуске
[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 сообщает, обнаружен ли какой-либо объект в наборе данных.

  • Верно — Набор данных содержит обнаруженный объект.

  • Ложь — Набор данных не содержит обнаруженных объектов.

Логический блок “Объект AI Vision существует”.#
<объект [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 отображает количество обнаруженных объектов в наборе данных в виде целого числа.

Блок стека элементов объекта Set AI Vision.#
(количество объектов [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#

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

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

Все значения свойств, кроме tagID, описывают положение и размер обнаруженного объекта в поле зрения датчика VEX IQ AI Vision в момент использования блока get object data. Эти значения измеряются в пикселях, исходя из разрешения датчика 320 на 240 пикселей.

Параметр

Описание

свойство

Какое свойство обнаруженного объекта использовать:

ширина#

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

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

Блок стека свойств объекта AI Vision с параметром, установленным на высоту.#
(объект [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.

Блок стека свойств объекта AI Vision с параметром, установленным на centerX.#
(объект [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.

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

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

Блок стека свойств объекта AI Vision с параметром, установленным на originX.#
(объект [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.

Блок стека свойств объекта AI Vision с параметром, установленным в значение originY.#
(объект [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 в виде целого числа.

Блок стека свойств объекта AI Vision с параметром, установленным на tagID.#
(объект [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? отображается логическое значение, указывающее, соответствует ли обнаруженный объект определенной классификации.

  • Верно — элемент в наборе данных представляет собой конкретный объект.

  • Ложь — Элемент в наборе данных не является конкретным объектом.

Классификация объектов в системе AI Vision представляет собой булевый блок.#
<объект [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.

Объект AI Vision представляет собой логический блок AprilTag.#
<объект [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 не является числом.

Система AI Vision обнаружила, что идентификатор 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] секунд