Переконайтеся, що у вас налаштовано колірних підписів та кольорові коди за допомогою датчика зору штучного інтелекту, щоб їх можна було використовувати з вашими блоками. Щоб дізнатися більше про те, як їх налаштувати, ви можете прочитати статті нижче:

Датчик зору на базі штучного інтелекту також може виявляти класифікації штучного інтелекту та теги AprilTags. Щоб дізнатися, як увімкнути ці режими виявлення, перейдіть сюди:

Щоб дізнатися більше про ці окремі команди та про те, як їх використовувати у VEXcode, перейдіть на сайт API.


Отримання візуальних даних за допомогою датчика зору зі штучним інтелектом

Кожна команда датчика зору штучного інтелекту починатиметься з назви налаштованого датчика зору штучного інтелекту. Для всіх прикладів у цій статті назва використовуваного датчика зору на базі штучного інтелекту буде ai_vision_1.

зробити_знімок

Метод take_snapshot робить знімок того, що наразі бачить датчик зору штучного інтелекту, та витягує дані з цього знімка, які потім можна використовувати в проєкті. Під час створення знімка потрібно вказати, який тип об'єкта має збирати сенсор AI Vision Sensor, дані якого слід збирати:

  • AПідпис кольору абоКод кольору
    • Ці візуальні підписи починаються з назви датчика зору штучного інтелекту, подвійного підкреслення, а потім назви візуального підпису, наприклад: ai_vision_1__Blue.
  • Класифікації ШІ - AiVision.ALL_AIOBJS
  • квітеньТеги- AiVision.ВСІ_ТЕГИ

Зробивши знімок, ви створите кортеж усіх виявлених об'єктів, які ви вказали. Наприклад, якщо ви хочете виявити "синій" колірний підпис , і датчик зору штучного інтелекту виявив 3 різні сині об'єкти, дані з усіх трьох будуть поміщені в кортеж.

У цьому прикладі змінна vision_objects зберігає кортеж, що містить виявлені кольорові сигнатури "фіолетового"кольору від датчика зору штучного інтелекту з назвою 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, СЕКУНД)

Властивості об'єкта

Кожен об'єкт зі знімка має різні властивості, які можна використовувати для повідомлення інформації про цей об'єкт. Доступні властивості такі:

  • ідентифікатор
  • центрX та центрY
  • походженняX та походженняY
  • ширина
  • висота
  • кут
  • рахунок
  • існує

Щоб отримати доступ до властивості об'єкта, використовуйте ім'я змінної, яка зберігає кортеж, а потім індекс об'єкта.

Індекс об'єкта вказує, властивість якого конкретного об'єкта потрібно отримати. Після зйомки, датчик зору зі штучним інтелектом автоматично сортує об'єкти за розміром. Найбільшому об'єкту присвоюється індекс 0, а менші об'єкти отримують вищі індексні номери.

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

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

Властивість id доступна лише для класифікацій AI AprilTags та

Утиліта штучного інтелекту бачення відстежує три теги AprilTag. Кожна мітка ідентифікована, розташована та окреслена, що вказує на її відстеження системою. Ідентифікатори AprilTag у цьому прикладі мають значення 0, 3 та 9.

Для значенняAprilTagвластивість id представляє виявлений ідентифікаційний номерAprilTag(s)

Визначення конкретних квітневих тегів дозволяє вибіркову навігацію. Ви можете запрограмувати свого робота рухатися до певних міток, ігноруючи інші, ефективно використовуючи їх як покажчики для автоматичної навігації.

Утиліта AI Vision відстежує чотири об'єкти: два BuckyBall та два Ring. Кожен об'єкт ідентифікується, локалізується та окреслюється, що вказує на його відстеження системою. Утиліта записує ідентифікатор об'єкта, у цьому прикладі є червона куля, синя куля, зелене кільце та червоне кільце.

Длякласифікацій ШІвластивість id представляє конкретний тип виявленої класифікації ШІ.

Визначення конкретних Класифікації ШІдозволяє роботу зосереджуватися лише на певних об'єктах, наприклад, бажати рухатися лише до червоного Бакібола, а не до синього.

Перейдіть до цих статей, щоб отримати додаткові відомості про квітень, теги та , класифікації ШІ та про те, як увімкнути їх виявлення в утиліті ШІ Vision.

центрX та центрY

Це центральні координати виявленого об'єкта в пікселях.

Показано, що датчик зору штучного інтелекту відстежує синій Бакібол. Бакібол має прямокутник відстеження навколо себе, а позначка вище показує, що його позиція X становить 176, а позиція Y — 117. Центр прямокутника відстеження виділено, щоб показати, що положення вимірюється від центру.

Координати CenterX та CenterY допомагають з навігацією та позиціонуванням. Датчик зору зі штучним інтелектом має роздільну здатність 320 x 240 пікселів.

Показано, що датчик зору зі штучним інтелектом відстежує два сині куби. Куби мають прямокутники відстеження навколо себе, і один з них розташований набагато ближче до камери. Ближчий має позицію Y 184, а дальній — 70.

Ви можете бачити, що об'єкт, розташований ближче до датчика зору штучного інтелекту, матиме нижчу координату CenterY, ніж об'єкт, розташований далі.

У цьому прикладі, оскільки центр поля зору датчика штучного інтелекту (AI Vision Sensor) знаходиться в точці (160, 120), робот повертатиме праворуч, доки координата centraX виявленого об'єкта не стане більшою за 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 and 170 > vision_objects[0].centerX:

# Продовжуйте повертати праворуч, доки об'єкт не опиниться в центрі поля зору.
drivetrain.turn(ПРАВОРУЧ)
інакше:
drivetrain.stop()
wait(5, MSEC)

походження X та походження

OriginX та OriginY – це координата у верхньому лівому куті виявленого об'єкта в пікселях.

Показано, що датчик зору штучного інтелекту відстежує синій Бакібол. Бакібол має прямокутник відстеження навколо себе, а позначка вище показує, що його позиція X становить 176, а позиція Y — 117. Лівий верхній кут прямокутника відстеження виділено, щоб показати, що початкове положення вимірюється від його лівого верхнього кута.

Координати OriginX та OriginY допомагають з навігацією та позиціонуванням. Поєднуючи цю координату з шириною та висотою об'єкта, можна визначити розмір рамки розміру об'єкта. Це може допомогти у відстеженні рухомих об'єктів або навігації між об'єктами.

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

Це ширина або висота виявленого об'єкта в пікселях.

Показано, що датчик зору штучного інтелекту відстежує синій Бакібол. Бакібол має прямокутник відстеження навколо себе, а позначка вище показує, що його ширина становить 80 пікселів, а висота — 78 пікселів. Червоні стрілки підкреслюють прямокутник відстеження, демонструючи його ширину та висоту.

Вимірювання ширини та висоти допомагають ідентифікувати різні об'єкти. Наприклад, Бакібол матиме більшу висоту, ніж Кільце.

Показано, що датчик зору зі штучним інтелектом відстежує два сині куби. Куби мають прямокутники відстеження навколо себе, і один з них розташований набагато ближче до камери. Ближчий має ширину 144 та висоту 113, а дальній — ширину 73 та висоту 84.

Ширина та висота також вказують на відстань об'єкта від датчика зору штучного інтелекту. Менші виміри зазвичай означають, що об'єкт знаходиться далі, тоді як більші виміри свідчать про те, що він ближче.

У цьому прикладі ширина об'єкта використовується для навігації. Робот наближатиметься до об'єкта, доки його ширина не досягне певного розміру, перш ніж зупинитися.

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(ВПЕРЕД)
інакше:
drivetrain.stop()

wait(5, MSEC)

кут

Анімація червоного та зеленого квадратів, що обертаються разом, щоб продемонструвати значення кута на 360 градусів.

Властивість кута доступна лише дляколірних кодів таквітня. Теги

Це показує, чи виявлений Колірний кодабо AprilTag орієнтований по-різному.

Датчик зору штучного інтелекту відстежує колірний код спочатку зеленого, а потім синього. На відео показано Зелений куб, покладений поверх Синього куба. Значення кута колірного коду виділено та дорівнює 87 градусам, що вказує на вертикальну орієнтацію колірного коду.

Ви можете побачити, чи орієнтований робот по-іншому відносноColor Code абоAprilTag , і приймати рішення щодо навігації відповідно до цього.

Датчик зору штучного інтелекту відстежує колірний код спочатку зеленого, а потім синього. На відео видно Зелений куб поруч із Синім кубом, але вони розташовані під незручним кутом порівняно з датчиком. Значення кута колірного коду виділено та дорівнює 0 градусів, що вказує на те, що кут колірного коду неможливо прочитати.

Наприклад, якщо колірний код не виявляється під правильним кутом, то об'єкт, який він представляє, може бути не зможуть належним чином підняти роботом.

рахунок

Властивість балів використовується під час виявленнякласифікацій ШІ за допомогою датчика ШІ зору.

Утиліта AI Vision відстежує чотири об'єкти: два BuckyBall та два Ring. Кожен об'єкт ідентифікується, локалізується та окреслюється, що вказує на його відстеження системою. Утиліта також показує оцінку класифікації ШІ кожного об'єкта, у цьому прикладі кожна оцінка становить 99%.

Показник достовірності показує, наскільки впевнений датчик зору зі штучним інтелектом у своєму виявленні. На цьому зображенні видно 99% впевненість у визначенні класифікацій ШІ цих чотирьох об'єктів. Ви можете використовувати цей бал, щоб ваш робот зосереджувався лише на дуже впевнених виявленнях.

існує

Властивість exists використовується для визначення останньому зробленому знімку.

Це дозволяє перевірити, чи були виявлені якісь об'єкти на попередньому знімку. Ця властивість повертатиме значення True, якщо об'єкт існує, та False, якщо об'єкт не існує.

 

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

Last Updated: