Kodēšana ar AI redzes sensoru VEXcode V5 Python valodā

Pārliecinieties, vai jūsu AI redzes sensorā ir konfigurēti krāsu paraksti un krāsu kodi , lai tos varētu izmantot ar jūsu blokiem. Lai uzzinātu vairāk par to konfigurēšanu, varat izlasīt tālāk norādītos rakstus:

Mākslīgā intelekta redzes sensors var noteikt arī mākslīgā intelekta klasifikācijas un AprilTags. Lai uzzinātu, kā iespējot šos noteikšanas režīmus, dodieties šeit:

Lai uzzinātu sīkāku informāciju par šīm atsevišķajām komandām un to izmantošanu VEXcode, apmeklējiet API vietni.


Vizuālo datu iegūšana ar mākslīgā intelekta redzes sensoru

Katra AI redzes sensora komanda sāksies ar konfigurētā AI redzes sensora nosaukumu. Visos šajā rakstā sniegtajos piemēros izmantotā AI redzes sensora nosaukums būs ai_vision_1.

uzņemt_momentuzņēmumu

Metode take_snapshot uzņem attēlu ar to, ko pašlaik redz AI redzes sensors, un no šī momentuzņēmuma izgūst datus, kurus pēc tam var izmantot projektā. Uzņemot momentuzņēmumu, ir jānorāda, kāda veida objekta dati mākslīgā intelekta redzes sensoram jāapkopo:

  • Krāsu paraksts vaiKrāsu kods
    • Šie vizuālie paraksti sākas ar AI redzes sensora nosaukumu, dubultu pasvītrojumu un pēc tam vizuālā paraksta nosaukumu, piemēram: ai_vision_1__Blue.
  • Mākslīgāklasifikācijas AiVision.ALL_AIOBJS
  • aprīlisBirkas

Uzņemot momentuzņēmumu, tiks izveidots visu norādīto atrasto objektu kortežs. Piemēram, ja vēlaties noteikt "zilu" krāsu parakstuun mākslīgā intelekta redzes sensors noteica 3 dažādus zilus objektus, dati no visiem trim tiktu ievietoti kortežā.

Šajā piemērā mainīgais vision_objects saglabā kortežu, kas satur no mākslīgā intelekta redzes sensora ar nosaukumu ai_vision_1noteiktos "violetos"krāsu parakstus. Tas parāda atrasto objektu skaitu un ik pēc 0,5 sekundēm uzņem jaunu momentuzņēmumu.

while True: 
# Iegūt visu purpura krāsu parakstu momentuzņēmumu un saglabāt to vision_objects failā.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Pirms datu izvilkšanas pārbaudiet, vai momentuzņēmumā ir atrasts objekts.
ja vision_objects[0].exists == True

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

brain.screen.print("Objektu skaits:", len(vision_objects))
wait(0.5, SEKUNDES)

Objekta īpašības

Katram momentuzņēmuma objektam ir dažādas īpašības, kuras var izmantot, lai ziņotu par informāciju par šo objektu. Pieejamie īpašumi ir šādi:

  • id
  • centrsX un centrsY
  • izcelsmeX un izcelsmeY
  • platums
  • augstums
  • leņķis
  • rezultāts
  • pastāv

Lai piekļūtu objekta īpašībai, izmantojiet mainīgā nosaukumu, kurā tiek glabāts kortežs, kam seko objekta indekss.

Objekta indekss norāda, kura konkrētā objekta īpašību vēlaties izgūt. Pēc momentuzņēmuma uzņemšanas AI redzes sensors automātiski sakārto objektus pēc izmēra. Lielākajam objektam tiek piešķirts indekss 0, bet mazākiem objektiem tiek piešķirti lielāki indeksa numuri.

Piemēram, izsaucot lielākā objekta platumu mainīgā vision_objects iekšpusē, izdotos šādi: vision_objects[0].width.

id

Īpašums id ir pieejams tikai AprilTags un AI klasifikācijām.

Trīs kvadrātveida identifikācijas marķieri, kas apzīmēti ar ID 0, 9 un 3, katram ar atbilstošām koordinātām un izmēru mērījumiem, kas attēloti baltā tekstā. ID 0 atrodas kreisajā pusē, ID 9 ir labajā pusē un ID 3 ir apakšā centrā. Katram marķierim kvadrāta iekšpusē ir unikāls melnbalts raksts.

AprilTaggadījumā id īpašība apzīmē noteiktoAprilTag(s) ID numuru.

Konkrētu  AprilTags identificēšana ļauj veikt selektīvu navigāciju. Jūs varat ieprogrammēt savu robotu, lai tas virzītos uz noteiktām atzīmēm, vienlaikus ignorējot citas, efektīvi izmantojot tās kā norādes automatizētai navigācijai.

Attēlā identificētas divas bumbiņas un divi gredzeni, ar etiķetēm, kas norāda to atrašanās vietu, izmēru un rezultātu. Sarkanā bumba ir kreisajā pusē, zilā bumba ir labajā pusē, zaļais gredzens ir apakšējā kreisajā stūrī, un sarkanais gredzens ir apakšējā labajā stūrī. Katrs objekts ir iezīmēts ar baltu lodziņu, un informācija, piemēram, X un Y koordinātas, platums, augstums un 99% rezultāts, tiek parādīta baltā tekstā.

AI klasifikācijāmīpašība id apzīmē konkrēto noteikto AI klasifikācijas veidu.

Konkrētu objektu identificēšana Mākslīgā intelekta klasifikācijasļauj robotam koncentrēties tikai uz konkrētiem objektiem, piemēram, vēloties pārvietoties tikai uz sarkanu Bakibolu, nevis zilu.

Lai iegūtu plašāku informāciju par aprīļa tagiem un , skatiet šos rakstus par AI klasifikācijām un to, kā iespējot to noteikšanu AI Vision Utility.

centrsX un centrsY

Šīs ir noteiktā objekta centra koordinātas pikseļos.

Zilu Bakibolu izseko datorredzes sistēma. Objekts ir iezīmēts ar baltu kvadrātu, un kontūras iekšpusē ir mazāks sarkans kvadrāts, kas ieskauj centrā novietotu baltu krustu. Attēla augšējā kreisajā stūrī etiķete norāda, ka objekts ir zils, ar koordinātām X:176, Y:117 un izmēriem W:80, H:78.

CenterX un CenterY koordinātas palīdz navigācijā un pozicionēšanā. Mākslīgā intelekta redzes sensora izšķirtspēja ir 320 x 240 pikseļi.

Divi zili kubiski objekti, kurus izseko redzes sistēma. Augšējais objekts ir apzīmēts ar koordinātām X:215, Y:70 un izmēriem W:73, H:84, ar baltu kontūru un centrā esošu baltu krustu. Apakšējais objekts ir apzīmēts ar koordinātām X:188, Y:184 un izmēriem W:144, H:113, kas arī ir iezīmēti baltā krāsā ar centrā esošu baltu krustu.

Var redzēt, ka objektam, kas atrodas tuvāk AI redzes sensoram, būs zemāka CenterY koordināta nekā objektam, kas atrodas tālāk.

Šajā piemērā, tā kā AI redzes sensora skata centrs ir (160, 120), robots griezīsies pa labi, līdz noteiktā objekta centra X koordināta būs lielāka par 150 pikseļiem, bet mazāka par 170 pikseļiem.

while True:
# Iegūt visu zilās krāsas parakstu momentuzņēmumu un saglabāt to vision_objects failā.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Pirms datu izvilkšanas pārbaudiet, vai momentuzņēmumā ir atrasts objekts.
if vision_objects[0].exists == True

# Pārbauda, ​​vai objekts neatrodas AI redzes sensora skata centrā.
ja vision_objects[0].centerX > 150 un 170 > vision_objects[0].centerX:

# Turpiniet griezties pa labi, līdz objekts atrodas skata centrā.
drivetrain.turn(LABĀ)
citādi:
drivetrain.stop()
wait(5, MSEC)

izcelsmeX un izcelsmeY

OriginX un OriginY ir noteiktā objekta augšējā kreisā stūra koordināta pikseļos.

Zilu Bakibolu izseko redzes sistēma. Objektu ieskauj balta kontūra, kuras iekšpusē ir centrēts balts krusts. Augšējā kreisajā stūrī esošā etiķete norāda objekta krāsu kā zilu, kā arī koordinātas X:176, Y:117 un izmērus W:80, H:78. Neliels sarkans kvadrāts iezīmē objekta augšējo kreiso stūri.

OriginX un OriginY koordinātas palīdz navigācijā un pozicionēšanā. Apvienojot šo koordinātu ar objekta platumu un augstumu, var noteikt objekta ierobežojošā lodziņa izmēru. Tas var palīdzēt izsekot kustīgiem objektiem vai pārvietoties starp objektiem.

platums un augstums

Šis ir noteiktā objekta platums vai augstums pikseļos.

Attēlā redzams zils Bekībols ar baltu kvadrātveida kontūru, kas to seko. Augšējā kreisajā stūrī ir uzlīme, kas norāda, ka tas ir zils objekts ar koordinātām X:176, Y:117 un izmēriem W:80, H:78. Sarkanās bultiņas iezīmē objekta platumu un augstumu.

Platuma un augstuma mērījumi palīdz identificēt dažādus objektus. Piemēram, Buckyball būs lielāks augstums nekā Ring.

Divus zilus kubiskus objektus izseko vizuālās atpazīšanas sistēma. Augšējam kubam ir balta kontūra ar etiķeti, kas norāda tā pozīciju kā X:215, Y:70 un izmērus W:73, H:84. Apakšējam kubam ir līdzīga balta kontūra ar etiķeti, kas attēlo X:188, Y:184 un izmērus W:144, H:113. Katram kubam ir centrālais balts krusts, kas, visticamāk, norāda izsekošanas fokusa punktu. Etiķetes izceļ katra objekta mērījumus un izsekošanas datus.

Platums un augstums norāda arī objekta attālumu no AI redzes sensora. Mazāki mērījumi parasti nozīmē, ka objekts atrodas tālāk, savukārt lielāki mērījumi liecina, ka tas ir tuvāk.

Šajā piemērā navigācijai tiek izmantots objekta platums. Robots tuvosies objektam, līdz tā platums sasniegs noteiktu izmēru, pirms apstāsies.

while True:
# Iegūt visu zilās krāsas parakstu momentuzņēmumu un saglabāt to vision_objects failā.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Pirms datu izvilkšanas pārbaudiet, vai momentuzņēmumā ir atrasts objekts.
if vision_objects[0].exists == True

# Pārbauda, ​​vai lielākais objekts atrodas tuvu AI redzes sensoram, izmērot tā platumu.
if vision_objects[0].width < 250:

# Piebrauc tuvāk objektam, līdz tas ir platāks par 250 pikseļiem.
drivetrain.drive(FORWARD)
citādi:
drivetrain.stop()

gaidīt(5, MSEC)

leņķis

Rotējošs gifs, kurā redzami sarkani un zaļi bloki. Kad bloki ir novietoti pilnīgi horizontāli no sarkanas līdz zaļai krāsai, tiek parādīts, ka tie ir 0 grādu leņķī. Ja sarkanais bloks vertikāli atrodas virs zaļā bloka, tas ir 90 grādu leņķī. Ja bloki horizontāli ir no zaļas līdz sarkanai krāsai, tas ir 180 grādi. Ja zaļais bloks vertikāli atrodas virs sarkanā bloka, tas ir 20 grādi.

Īpašība leņķis ir pieejama tikaikrāsu kodiem unAprilTags,

Tas norāda, vai noteiktais  Krāsu kodsvai  AprilTag ir orientēts atšķirīgi.

Divu kubu kaudze, viens zaļš augšpusē un otrs zils apakšā, ko izseko redzes sistēma. Abus kubus ieskauj balta kontūra, un zaļā kuba centrā ir balts krusts. Attēla apakšdaļā esošajā etiķetē ir redzams teksts Green_Blue A:87°, kas norāda noteiktās krāsas un leņķa mērījumu. Zemāk koordinātas ir norādītas kā X:117, Y:186, ar izmēriem W:137, H:172, kas attēlo sakrauto kubu pozīciju un izmēru rāmī.

Varat redzēt, vai robots ir orientēts atšķirīgi attiecībā pretkrāsu kodu vaiAprilTag , un pieņemt navigācijas lēmumus atbilstoši tam.

Divi kubi, viens zaļš un viens zils, novietoti blakus un tos izseko redzes sistēma. Abus kubus ieskauj balta kontūra ar baltu krustu centrā. Augšējā kreisajā stūrī esošā etiķete norāda Green_Blue A:0°, atsaucoties uz noteiktajām krāsām un leņķa mērījumu. Zemāk koordinātas ir parādītas kā X:150, Y:102, ar izmēriem W:179, H:109, kas attēlo kubu pozīciju un izmēru rāmī.

Piemēram, jakrāsu kods netiek noteikts pareizā leņķī, tad robots, iespējams, nevarēs pareizi uztvert objektu, ko tas attēlo.

rezultāts

Īpašība punktu skaits tiek izmantota, nosakotAI klasifikācijas ar AI redzes sensoru.

Attēlā redzami četri objekti, kurus izseko redzes sistēma: divas bumbiņas un divi gredzeni. Sarkanā bumba ir apzīmēta ar koordinātām X:122, Y:84, W:67, H:66 un rezultātu 99%. Zilajai bumbai ir X:228, Y:86, W:70, H:68, ar 99% rezultātu. Zaļajam gredzenam ir koordinātas X:109, Y:186, W:98, H:92 un rezultāts ir 99%. Sarkanais gredzens ir apzīmēts ar X:259, Y:187, W:89, H:91, un tā rezultāts ir 99%. Katrs objekts ir iezīmēts baltā krāsā, norādot izsekošanas precizitāti.

Uzticamības rādītājs norāda, cik pārliecināts AI redzes sensors ir par tā noteikšanu. Šajā attēlā ir 99% pārliecība par šo četru objektu AI klasifikāciju identificēšanu. Šo vērtējumu var izmantot, lai nodrošinātu, ka robots koncentrējas tikai uz ļoti pārliecinātiem noteikumiem.

pastāv

Īpašums existes tiek izmantots, lai noteiktu, vai pēdējā uzņemtajā momentuzņēmumā ir konstatēts norādītais vizuālais paraksts.

Tas ļauj pārbaudīt, vai iepriekšējā momentuzņēmumā tika atklāti kādi objekti. Šī īpašība atgriezīs vērtību “True”, ja objekts pastāv, un “False”, ja objekts nepastāv.

 

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

Last Updated: