Убедитесь, что у вас настроены цветовых сигнатур и цветовых кодов с помощью датчика AI Vision, чтобы их можно было использовать с вашими блоками. Более подробную информацию об их настройке вы можете узнать, прочитав статьи ниже:
- Настройка цветовых подписей с помощью AI Vision Signature в VEXcode EXP
- Настройка цветовых кодов с помощью AI Vision Signature в VEXcode EXP
Датчик AI Vision также может обнаруживать AI-классификации и AprilTags. Чтобы узнать, как включить эти режимы обнаружения, перейдите по ссылке:
- Классификации ИИ с помощью датчика зрения ИИ в VEXcode EXP
- АпрельТеги с датчиком зрения ИИ в VEXcode EXP
Получайте визуальные данные с помощью датчика зрения ИИ
Каждая команда AI Vision Sensor будет начинаться с имени настроенного AI Vision Sensor. Во всех примерах в этой статье имя используемого датчика AI Vision будет AIVision.
takeSnapshot
Метод takeSnapshot делает снимок того, что в данный момент видит датчик AI Vision, и извлекает данные из этого снимка, которые затем можно использовать в проекте. При создании снимка вам необходимо указать, данные о каком типе объекта датчик AI Vision должен собирать:
- AЦветовая подпись илиЦветовой код
- Эти визуальные подписи начинаются с имени датчика искусственного интеллекта, двойного подчеркивания, а затем имени визуальной подписи, например:
AIVision1__Blue.
- Эти визуальные подписи начинаются с имени датчика искусственного интеллекта, двойного подчеркивания, а затем имени визуальной подписи, например:
-
Классификации ИИ -
aivision::ALL_AIOBJS -
апреляТеги-
aivision::ALL_TAGS
При создании снимка будет создан массив всех обнаруженных объектов, которые вы указали. Например, если вы хотите обнаружить «синий» цветовой признак, а датчик AI Vision обнаружил 3 разных синих объекта, данные со всех трех будут помещены в массив.
В этом примере делается снимок цветовой сигнатуры «Синий» с помощью датчика искусственного зрения AIVision1. Он отображает количество объектов, обнаруженных в массиве, и делает новый снимок каждые 0,5 секунды.
while (true) {
// Получить снимок всех объектов синего цвета.
AIVision.takeSnapshot(AIVision1__Blue);
// Перед извлечением данных проверяем, был ли обнаружен объект на снимке.
если (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, мсек);
}
объекты
Каждый объект из снимка имеет различные свойства, которые можно использовать для предоставления информации об этом объекте. Метод объектов позволяет получить доступ к этим свойствам.
Доступны следующие объекты недвижимости:
- идентификатор
- centerX и centerY
- originX и originY
- ширина
- высота
- угол
- существует
- счет
Чтобы получить доступ к свойству объекта, используйте имя датчика зрения ИИ, затем метод объекта, а затем индекс объекта.
Индекс объекта указывает, какое конкретно свойство объекта вы хотите получить. После создания снимка датчик AI Vision автоматически сортирует объекты по размеру. Самому большому объекту присваивается индекс 0, а объектам меньшего размера присваиваются более высокие индексные номера.
Например, вызов ширины самого большого объекта будет иметь вид AIVision1.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) {
// Получить снимок всех объектов синего цвета.
AIVision.takeSnapshot(AIVision__Blue);
// Перед извлечением данных убедитесь, что объект был обнаружен в снимке.
если (AIVision.objectCount > 0) {
если (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Привод.поворот(направо);
} иначе {
Привод.остановка();
}
}
wait(5, мс);
}
originX и originY
OriginX и OriginY — координаты верхнего левого угла обнаруженного объекта в пикселях.
Координаты OriginX и OriginY помогают в навигации и позиционировании. Объединив эту координату с шириной и высотой объекта, можно определить размер ограничивающей рамки объекта. Это может помочь при отслеживании движущихся объектов или навигации между объектами.
ширина и высота
Это ширина или высота обнаруженного объекта в пикселях.
Измерения ширины и высоты помогают идентифицировать различные объекты. Например, Бакибол будет иметь большую высоту, чем Кольцо.
Ширина и высота также указывают расстояние до объекта от датчика AI Vision. Меньшие значения обычно означают, что объект находится дальше, тогда как большие значения говорят о том, что он ближе.
В этом примере для навигации используется ширина объекта. Робот будет приближаться к объекту до тех пор, пока ширина не достигнет определенного размера, а затем остановится.
while (true) {
// Получить снимок всех синих объектов.
AIVision.takeSnapshot(AIVision1__Blue);
// Перед извлечением данных убедитесь, что объект был обнаружен в снимке.
если (AIVision.objectCount > 0) {
если (AIVision.objects[0].width < 250.0) {
Привод.движение(вперед);
} иначе {
Привод.остановка();
}
}
ждать(5, мсек);
}
угол
Свойство angle доступно только дляцветовых кодов и
Это показывает, ориентирован ли обнаруженный Цветовой кодили AprilTag по-разному.
Вы можете увидеть, ориентирован ли робот по-разному относительно цветового кода илиAprilTag , и принять решения по навигации в соответствии с этим.
Например, если цветовой код не обнаружен под правильным углом, то робот не сможет правильно захватить представляемый им объект.
счет
Свойство баллов используется при обнаруженииклассификаций ИИ с помощью датчика зрения ИИ.
Показатель уверенности показывает, насколько точно датчик AI Vision определяет объект. На этом изображении он на 99% уверен в идентификации классификаций ИИ этих четырех объектов. Эту оценку можно использовать, чтобы убедиться, что ваш робот фокусируется только на очень надежных обнаружениях.
существует
Свойство существует используется для определения того, была ли обнаружена указанная Визуальная сигнатура в последнем сделанном снимке.
Это позволяет проверить, были ли обнаружены какие-либо объекты в предыдущем снимке. Это свойство вернет True, если объект существует, и False, если объект не существует.
objectCount
Метод objectCount возвращает количество обнаруженных объектов в последнем снимке.
В этом примере обнаружено два объекта с цветовой сигнатуройи кодом «Синий». Они оба будут помещены в массив при использовании метода takeSnapshot.
Этот фрагмент кода постоянно обновляет EXP Brain, сообщая ему количество обнаруженных объектов. Исходя из приведенного примера, он будет многократно отправлять значение 2, что указывает на то, что обнаружено два объекта.
while (true) {
// Получить снимок всех синих объектов.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Перед извлечением данных проверяем, был ли обнаружен объект на снимке.
если (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, мсек);
}