Программирование с использованием датчика зрения ИИ в VEXcode V5 Python

Убедитесь, что у вас настроены цветовых сигнатур и цветовых кодов с помощью датчика AI Vision, чтобы их можно было использовать с вашими блоками. Более подробную информацию об их настройке вы можете узнать, прочитав статьи ниже:

Датчик AI Vision также может обнаруживать AI-классификации и AprilTags. Чтобы узнать, как включить эти режимы обнаружения, перейдите по ссылке:

Более подробную информацию об этих отдельных командах и о том, как их использовать в VEXcode, можно найти на сайте API.


Получайте визуальные данные с помощью датчика зрения ИИ

Каждая команда AI Vision Sensor будет начинаться с имени настроенного AI Vision Sensor. Во всех примерах в этой статье имя используемого датчика AI Vision будет ai_vision_1.

take_snapshot

Метод take_snapshot делает снимок того, что в данный момент видит датчик AI Vision, и извлекает данные из этого снимка, которые затем можно использовать в проекте. При создании снимка вам необходимо указать, данные о каком типе объекта датчик AI Vision должен собирать:

  • AЦветовая подпись илиЦветовой код
    • Эти визуальные сигнатуры начинаются с имени датчика искусственного интеллекта, двойного подчеркивания, а затем имени визуальной сигнатуры, например: ai_vision_1__Blue.
  • Классификации ИИ - AiVision.ALL_AIOBJS
  • АпрельТеги- AiVision.ALL_TAGS

При создании снимка будет создан кортеж всех обнаруженных объектов, которые вы указали. Например, если вы хотите обнаружить «синий» цветовой признак, а датчик искусственного интеллекта обнаружил 3 разных синих объекта, данные со всех трех будут помещены в кортеж.

В этом примере переменная vision_objects хранит кортеж, содержащий обнаруженные цветовые сигнатуры «фиолетового»цвета от датчика AI Vision с именем ai_vision_1. Он отображает количество обнаруженных объектов и делает новый снимок каждые 0,5 секунды.

while True: 
# Получить снимок всех сигнатур фиолетового цвета и сохранить его в vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Перед извлечением данных убедитесь, что объект был обнаружен в снимке.
если vision_objects[0].exists == True

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain.screen.print("Количество объектов:", len(vision_objects))
wait(0.5, SECONDS)

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

Каждый объект из снимка имеет различные свойства, которые можно использовать для предоставления информации об этом объекте. Доступны следующие объекты недвижимости:

  • идентификатор
  • centerX и centerY
  • originX и originY
  • ширина
  • высота
  • угол
  • счет
  • существует

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

Индекс объекта указывает, какое конкретно свойство объекта вы хотите получить. После создания снимка датчик AI Vision автоматически сортирует объекты по размеру. Самому большому объекту присваивается индекс 0, а объектам меньшего размера присваиваются более высокие индексные номера.

Например, вызов ширины самого большого объекта внутри переменной vision_objects будет выглядеть так: vision_objects[0].width.

идентификатор

Свойство id доступно только для AprilTags и AI Classifications.

Три квадратных идентификационных маркера с идентификаторами 0, 9 и 3, каждый из которых сопровождается соответствующими координатами и размерами, отображенными белым текстом. ID 0 находится слева, ID 9 — справа, а ID 3 — внизу по центру. Каждый маркер имеет уникальный черно-белый узор внутри квадрата.

ДляAprilTagсвойство id представляет собой обнаруженный номерAprilTag ID.

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

На изображении обозначены два мяча и два кольца с этикетками, указывающими их положение, размер и счет. Красный шар находится слева, синий шар — справа, зеленое кольцо — внизу слева, а красное кольцо — внизу справа. Каждый объект обозначен белой рамкой, а такие данные, как координаты X, Y, ширина, высота и оценка 99%, отображаются белым текстом.

Дляклассификаций ИИсвойство id представляет собой конкретный тип обнаруженной классификации ИИ.

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

Дополнительную информацию о классификациях ИИ AprilTags и и о том, как включить их обнаружение в утилите AI Vision, можно найти в этих статьях.

centerX и centerY

Это координаты центра обнаруженного объекта в пикселях.

Синий бакибол, отслеживаемый системой компьютерного зрения. Объект обведен белым квадратом, а внутри контура находится меньший красный квадрат, окружающий центральный белый крест. Метка в верхнем левом углу изображения указывает, что объект синий, с координатами X:176, Y:117 и размерами W:80, H:78.

Координаты CenterX и CenterY помогают в навигации и позиционировании. Датчик AI Vision имеет разрешение 320 x 240 пикселей.

Два синих кубических объекта, отслеживаемые системой зрения. Верхний объект обозначен координатами X:215, Y:70 и размерами W:73, H:84, с белым контуром и белым крестом по центру. Нижний объект обозначен координатами X:188, Y:184 и размерами W:144, H:113, также обведен белым цветом с белым крестом в центре.

Видно, что объект, расположенный ближе к датчику AI Vision, будет иметь более низкую координату CenterY, чем объект, расположенный дальше.

В этом примере, поскольку центр поля зрения датчика AI Vision находится в точке (160, 120), робот будет поворачивать направо до тех пор, пока координата centerX обнаруженного объекта не станет больше 150 пикселей, но меньше 170 пикселей.

while True:
# Получить снимок всех сигнатур синего цвета и сохранить его в vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Перед извлечением данных убедитесь, что объект был обнаружен в снимке.
if vision_objects[0].exists == True

# Проверяем, находится ли объект в центре поля зрения датчика зрения ИИ.
if vision_objects[0].centerX > 150 и 170 > vision_objects[0].centerX:

# Продолжайте поворачивать направо, пока объект не окажется в центре поля зрения.
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)

originX и originY

OriginX и OriginY — координаты верхнего левого угла обнаруженного объекта в пикселях.

Синий бакибол, отслеживаемый системой зрения. Объект окружен белым контуром, внутри которого находится белый крест по центру. Верхняя левая метка указывает цвет объекта (синий), а также координаты X:176, Y:117 и размеры W:80, H:78. Маленький красный квадрат выделяет верхний левый угол объекта.

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

ширина и высота

Это ширина или высота обнаруженного объекта в пикселях.

На изображении изображен синий бакибол с отслеживающим его белым квадратным контуром. В верхнем левом углу имеется метка, указывающая, что это синий объект с координатами X:176, Y:117 и размерами W:80, H:78. Красные стрелки указывают ширину и высоту объекта.

Измерения ширины и высоты помогают идентифицировать различные объекты. Например, Бакибол будет иметь большую высоту, чем Кольцо.

Два синих кубических объекта отслеживаются системой визуального распознавания. Верхний куб имеет белый контур с меткой, указывающей его положение как X:215, Y:70 и размеры W:73, H:84. Нижний куб имеет аналогичный белый контур с этикеткой X:188, Y:184 и размерами W:144, H:113. В центре каждого куба имеется белый крест, вероятно, указывающий точку фокусировки для отслеживания. На этикетках указаны измерения и данные отслеживания для каждого объекта.

Ширина и высота также указывают расстояние до объекта от датчика AI Vision. Меньшие значения обычно означают, что объект находится дальше, тогда как большие значения говорят о том, что он ближе.

В этом примере для навигации используется ширина объекта. Робот будет приближаться к объекту до тех пор, пока ширина не достигнет определенного размера, а затем остановится.

while True:
# Получить снимок всех сигнатур синего цвета и сохранить его в vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Перед извлечением данных убедитесь, что объект был обнаружен в снимке.
if vision_objects[0].exists == True

# Проверяем, находится ли самый большой объект близко к датчику зрения ИИ, измеряя его ширину.
if vision_objects[0].width < 250:

# Подъезжаем ближе к объекту, пока его ширина не станет больше 250 пикселей.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()

wait(5, MSEC)

угол

Вращающийся gif-файл, демонстрирующий красные и зеленые блоки. Когда блоки расположены идеально горизонтально от красного до зеленого, они отображаются под углом 0 градусов. Если красный блок находится вертикально над зеленым блоком, то он расположен под углом 90 градусов. Если блоки расположены горизонтально от зеленого к красному, это 180 градусов. Если зеленый блок находится вертикально над красным блоком, то это 20 градусов.

Свойство angle доступно только дляцветовых кодов и

Это показывает, ориентирован ли обнаруженный Цветовой кодили AprilTag по-разному.

Стопка из двух кубов, один зеленый сверху и один синий снизу, отслеживается системой технического зрения. Оба куба окружены белым контуром, а в центре зеленого куба находится белый крест. Метка в нижней части изображения отображает Green_Blue A:87°, что указывает на обнаруженные цвета и измерение угла. Ниже указаны координаты X:117, Y:186, с размерами W:137, H:172, представляющими положение и размер сложенных кубиков в рамке.

Вы можете увидеть, ориентирован ли робот по-разному относительно цветового кода илиAprilTag , и принять решения по навигации в соответствии с этим.

Два куба, зеленый и синий, размещены рядом и отслеживаются системой технического зрения. Оба куба окружены белым контуром с белым крестом в центре. Верхняя левая метка указывает Green_Blue A:0°, ссылаясь на обнаруженные цвета и измерение угла. Ниже показаны координаты X:150, Y:102, с размерами W:179, H:109, представляющими положение и размер кубов внутри кадра.

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

счет

Свойство баллов используется при обнаруженииклассификаций ИИ с помощью датчика зрения ИИ.

На изображении показаны четыре объекта, отслеживаемые системой технического зрения: два мяча и два кольца. Красный шар отмечен координатами X:122, Y:84, W:67, H:66 и оценкой 99%. Синий шар имеет X:228, Y:86, W:70, H:68, со счетом 99%. Зелёное кольцо имеет координаты X:109, Y:186, W:98, H:92 и оценку 99%. Красное кольцо обозначено X:259, Y:187, W:89, H:91, с оценкой 99%. Каждый объект обозначен белым цветом, что указывает на точность отслеживания.

Показатель уверенности показывает, насколько точно датчик AI Vision определяет объект. На этом изображении он на 99% уверен в идентификации классификаций ИИ этих четырех объектов. Эту оценку можно использовать, чтобы убедиться, что ваш робот фокусируется только на очень надежных обнаружениях.

существует

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

Это позволяет проверить, были ли обнаружены какие-либо объекты в предыдущем снимке. Это свойство вернет True, если объект существует, и False, если объект не существует.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: