ИИ-зрение#

Введение#

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

Датчик AI Vision имеет разрешение 320×240 пикселей. Начало координат (0, 0) расположено в верхнем левом углу, а центр датчика находится в точке (160, 120), как показано на схеме ниже:

Диаграмма, показывающая разрешение датчика AIM AI Vision Sensor, с координатами 0, 0 в верхнем левом углу, 320, 0 в верхнем правом углу и 0, 240 в нижнем левом углу, а также 160, 120 точно в центре.

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

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

  • Просмотрщик AI Vision на экране — Включает или отключает отображение видеопотока AI Vision в реальном времени на экране робота.

  • получить данные объекта — Захватывает данные для конкретной подписи, например, заданного цвета, предварительно обученного объекта или идентификатора AprilTag.

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

  • set AI Vision object item — Выбирает конкретный объект из списка обнаруженных объектов.

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

Действия#

Программа просмотра AI Vision на экране#

Блок Просмотрщик AI Vision на экране включает или отключает отображение видеопотока AI Vision в реальном времени на экране робота. При включении на экране отображаются данные датчиков в реальном времени, что предотвращает появление других изображений или текста. Для отображения другого контента используйте этот блок, чтобы скрыть видеопоток.

Блок «Показать или скрыть панель мониторинга AI Vision».#
[показать v] просмотрщик AI Vision на экране

Параметры

Описание

статус

Управляет отображением потока данных на экране робота: show отображает поток данных, а hide удаляет поток данных с экрана.

Пример

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

Параметр

Описание

подпись

Фильтрует набор данных, чтобы включить только данные с заданной сигнатурой. Доступные сигнатуры:

  • спортивный мяч
  • оранжевая бочка
  • синяя бочка
  • робот AIM
  • ID AprilTag 0
  • ID AprilTag 1
  • ID AprilTag 2
  • ID AprilTag 3
  • ID AprilTag 4
  • весь груз - спортивные мячи и все бочки
  • NAME - цвет или цветовой код, где NAME - имя, настроенное в утилите AI Vision

Пример

Блок состоит из нескольких блоков, начиная с блока «При запуске», за которым следует блок комментариев с текстом «Двигаться вперед, если обнаружен спортивный мяч». Блок «Получить данные объекта» захватывает изображение спортивного мяча. Затем блок «Если» проверяет, существует ли объект AI Vision. Если да, то блок «Двигаться вперед» перемещает робота вперед на 10 миллиметров.#
при запуске
[Move forward if a sports ball is detected.]
вечно
получить данные [спортивный мяч v] из AI Vision
если <объект AI Vision существует?> то
движение [вперёд v] на [10] [мм v] ▶

Цветовые сигнатуры#

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

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

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

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

Параметры

Описание

элемент

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

Пример

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

Параметр

Описание

объект

Объект, который необходимо обнаружить относительно ударного устройства робота:

  • спортивный мяч
  • любая бочка
  • оранжевая бочка
  • синяя бочка

Пример

Блок кода начинается с блока «При запуске», за которым следует блок комментариев «Ударить, когда у робота есть мяч». Внутри бесконечного цикла блок «if» проверяет, есть ли у робота спортивный мяч. Если это так, выполняется блок объекта «Ударить» со средней мощностью.#
при запуске
[Kick when the robot has a sports ball.]
вечно
если <есть [спортивный мяч v]? :: custom-ai-vision> то
ударить объект [средний v]

Объект AI Vision существует.#

Логический блок AI Vision object exists сообщает, обнаружен ли объект в наборе данных.

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

  • Ложь — Объекты не обнаружены.

Логический блок “Объект AI Vision существует”.#
<объект AI Vision существует?>

Параметры

Описание

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

Пример

Блок состоит из нескольких блоков, начиная с блока «При запуске», за которым следует блок комментариев с текстом «Двигаться вперед, если обнаружен мяч». Блок «Получить данные объекта» захватывает изображение спортивного мяча. Затем блок «Если» проверяет, существует ли объект AI Vision. Если да, то блок «Двигаться вперед» перемещает робота вперед на 10 миллиметров.#
при запуске
[Move forward if a sports ball is detected.]
вечно
получить данные [спортивный мяч v] из AI Vision
если <объект AI Vision существует?> то
движение [вперёд v] на [10] [мм v] ▶

Объект AI Vision — это#

Логический блок AI Vision object is сообщает, соответствует ли обнаруженный объект определенной классификации.

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

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

Классификация объектов в системе AI Vision представляет собой булевый блок.#
<объект AI Vision — [спортивный мяч v]?>

Параметр

Описание

объект

С каким объектом сравнивать данный предмет:

  • спортивный мяч
  • оранжевая бочка
  • синяя бочка
  • робот AIM

Пример

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

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

В центре рамки находится синяя бочка с оранжевой полосой, окруженная черным ограничивающим прямоугольником. Оси x и y обозначены цифрами от 0 до 320 слева направо по верхнему краю и от 0 до 240 сверху вниз по левому краю соответственно.

Параметр

Описание

свойство

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

ширина#

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

Примечание: Значения пикселей указаны относительно системы координат датчика. См. диаграмму во Введении для справки.

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

В центре рамки находится синяя бочка с оранжевой полосой, окруженная черным ограничивающим прямоугольником. От верхней части рамки вниз до центра ограничивающего прямоугольника проходит вертикальная красная пунктирная линия, указывающая X-координату центра.

Пример

при запуске
[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.#
объект AI Vision [centerY v]

В центре рамки находится синяя бочка с оранжевой полосой, окруженная черным ограничивающим прямоугольником. От левой стороны рамки до центра ограничивающего прямоугольника проходит горизонтальная красная пунктирная линия, указывающая Y-координату центра.

Пример

при запуске
[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.#
объект AI Vision [originX v]

В центре рамки находится синяя бочка с оранжевой полосой, окруженная черным ограничивающим прямоугольником. От верхней части рамки до левого края ограничивающего прямоугольника проходит вертикальная красная пунктирная линия, указывающая X-координату начала координат ограничивающего прямоугольника.

Пример

при запуске
[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.#
объект AI Vision [originY v]

В центре рамки находится синяя бочка с оранжевой полосой, окруженная черным ограничивающим прямоугольником. От левой стороны рамки до верхнего края ограничивающего прямоугольника проходит горизонтальная красная пунктирная линия, указывающая Y-координату начала координат ограничивающего прямоугольника.

Пример

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

Интерфейс камеры отображает вертикально расположенный объект с синей верхней половиной и красной нижней половиной, центрированный в кадре. Под объектом находится надпись Red_Blue A:270° CX:185 CY:81 W:93 H:150, указывающая название объекта, угол поворота, координаты центра по осям X и Y, ширину и высоту. Размеры изображения обозначены линиями сетки и числовыми осями, где X изменяется от 0 до 320, а Y — от 0 до 240.

Пример

при запуске
[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 означает, что объект находится в центре, положительные значения означают, что объект находится справа, а отрицательные значения — что объект находится слева.

Программируемый робот VEX AIM находится на поле, спортивный мяч расположен по диагонали вперед и влево. Между центром робота и мячом нарисован угол, обозначенный как -30 градусов. Программирующий робот VEX AIM находится на поле, спортивный мяч расположен по диагонали вперед и вправо. Между центром робота и мячом проведен угол, обозначенный как 30 градусов.
при запуске
[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.#
объект AI Vision [tagID v]

Пример

при запуске
[Move forward when AprilTag ID 0 is detected.]
вечно
получить данные [AprilTag ID 0 v] из AI Vision
если <объект AI Vision существует?> то
движение [вперёд v]
конец
остановить все движения