Убедитесь, что у вас настроены цветовых сигнатур и цветовых кодов с помощью датчика AI Vision, чтобы их можно было использовать с вашими блоками. Более подробную информацию об их настройке вы можете узнать, прочитав статьи ниже:
- Настройка цветовых подписей с помощью датчика AI Vision в VEXcode V5
- Настройка цветовых кодов с помощью датчика AI Vision в VEXcode V5
Датчик AI Vision также может обнаруживать AI-классификации и AprilTags. Чтобы узнать, как включить эти режимы обнаружения, перейдите по ссылке:
- Использование классификаций ИИ с датчиком зрения ИИ
- Использование AprilTags с датчиком искусственного интеллекта
Получайте визуальные данные с помощью датчика зрения ИИ
Каждая команда 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.
ДляAprilTagсвойство id представляет собой обнаруженный номерAprilTag ID.
Определение конкретных AprilTags позволяет осуществлять выборочную навигацию. Вы можете запрограммировать своего робота на движение к определенным меткам, игнорируя другие, эффективно используя их в качестве указателей для автоматизированной навигации.
Дляклассификаций ИИсвойство id представляет собой конкретный тип обнаруженной классификации ИИ.
Идентификация конкретных Классификации ИИпозволяет роботу фокусироваться только на определенных объектах, например, хотеть двигаться только к красному бакиболу, а не к синему.
Дополнительную информацию о классификациях ИИ AprilTags и и о том, как включить их обнаружение в утилите AI Vision, можно найти в этих статьях.
centerX и centerY
Это координаты центра обнаруженного объекта в пикселях.
Координаты CenterX и CenterY помогают в навигации и позиционировании. Датчик AI Vision имеет разрешение 320 x 240 пикселей.
Видно, что объект, расположенный ближе к датчику 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 — координаты верхнего левого угла обнаруженного объекта в пикселях.
Координаты OriginX и OriginY помогают в навигации и позиционировании. Объединив эту координату с шириной и высотой объекта, можно определить размер ограничивающей рамки объекта. Это может помочь при отслеживании движущихся объектов или навигации между объектами.
ширина и высота
Это ширина или высота обнаруженного объекта в пикселях.
Измерения ширины и высоты помогают идентифицировать различные объекты. Например, Бакибол будет иметь большую высоту, чем Кольцо.
Ширина и высота также указывают расстояние до объекта от датчика 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)
угол
Свойство angle доступно только дляцветовых кодов и
Это показывает, ориентирован ли обнаруженный Цветовой кодили AprilTag по-разному.
Вы можете увидеть, ориентирован ли робот по-разному относительно цветового кода илиAprilTag , и принять решения по навигации в соответствии с этим.
Например, если цветовой код не обнаружен под правильным углом, то робот не сможет правильно захватить представляемый им объект.
счет
Свойство баллов используется при обнаруженииклассификаций ИИ с помощью датчика зрения ИИ.
Показатель уверенности показывает, насколько точно датчик AI Vision определяет объект. На этом изображении он на 99% уверен в идентификации классификаций ИИ этих четырех объектов. Эту оценку можно использовать, чтобы убедиться, что ваш робот фокусируется только на очень надежных обнаружениях.
существует
Свойство существует используется для определения того, была ли обнаружена указанная Визуальная сигнатура в последнем сделанном снимке.
Это позволяет проверить, были ли обнаружены какие-либо объекты в предыдущем снимке. Это свойство вернет True, если объект существует, и False, если объект не существует.