Kodēšana ar AI redzes sensoru VEXcode EXP 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ē, izklausītos šādi: vision_objects[0].width.

id

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

Mākslīgā intelekta redzes utilīta izseko trīs AprilTag tagus. Katra atzīme tiek identificēta, atrasta un iezīmēta, norādot, ka sistēma to izseko. Šajā piemērā AprilTag ID ir 0, 3 un 9.

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.

Ar AI Vision utilītu tiek izsekoti četri objekti: divi BuckyBalls un divi Rings. Katrs objekts tiek identificēts, atrasts un iezīmēts, norādot, ka sistēma to izseko. Utilīta atzīmē objekta ID; šajā piemērā ir sarkana bumba, zila bumba, zaļš gredzens un sarkans gredzens.

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 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.

Attēlā redzams mākslīgā intelekta redzes sensors, kas seko zilajam bakibolam. Bakibolam ap to ir izsekošanas taisnstūris, un iepriekš redzamā etiķete norāda, ka tā X pozīcija ir 176 un Y pozīcija ir 117. Izsekošanas taisnstūra centrs ir iezīmēts, lai parādītu, ka pozīcija tiek mērīta no centra.

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.

Attēlā redzams mākslīgā intelekta redzes sensors, kas izseko divus zilus kubus. Kubiem ap tiem ir izsekošanas taisnstūri, un viens no tiem atrodas daudz tuvāk kamerai. Tuvākajam Y pozīcija ir 184, bet tālākajam - 70.

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.

Attēlā redzams mākslīgā intelekta redzes sensors, kas seko zilajam bakibolam. Bakibolam ap to ir izsekošanas taisnstūris, un iepriekš redzamā etiķete norāda, ka tā X pozīcija ir 176 un Y pozīcija ir 117. Izsekošanas taisnstūra augšējais kreisais stūris ir iezīmēts, lai parādītu, ka sākuma pozīcija tiek mērīta no tā augšējā kreisā stūra.

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 mākslīgā intelekta redzes sensors, kas seko zilajam bakibolam. Buckyball ir veidots ap izsekošanas taisnstūri, un iepriekš redzamā etiķete norāda, ka tā platums ir 80 pikseļi un augstums — 78 pikseļi. Sarkanās bultiņas iezīmē izsekošanas taisnstūri, lai parādītu tā 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.

Attēlā redzams mākslīgā intelekta redzes sensors, kas izseko divus zilus kubus. Kubiem ap tiem ir izsekošanas taisnstūri, un viens no tiem atrodas daudz tuvāk kamerai. Tuvākā platums ir 144 un augstums ir 113, bet tālākā — 73 un 84.

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

Animācija, kurā sarkans kvadrāts un zaļš kvadrāts tiek pagriezti kopā, lai parādītu leņķa vērtības 360 grādus.

Ī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.

Attēlā redzams mākslīgā intelekta redzes sensors, kas izseko krāsu kodu no zaļas un pēc tam zilas. Video plūsmā ir redzams zaļš kubs, kas sakrauts virs zila kuba. Krāsu koda leņķa vērtība ir iezīmēta un ir 87 grādi, kas norāda, ka krāsu kods ir orientēts vertikāli.

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.

Attēlā redzams mākslīgā intelekta redzes sensors, kas izseko krāsu kodu no zaļas un pēc tam zilas. Video plūsmā redzams zaļš kubs, kas atrodas blakus zilam kubam, taču tie atrodas neērtā leņķī salīdzinājumā ar sensoru. Krāsu koda leņķa vērtība ir iezīmēta un ir 0 grādi, kas norāda, ka krāsu koda leņķi nevar nolasīt.

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.

Ar AI Vision utilītu tiek izsekoti četri objekti: divi BuckyBalls un divi Rings. Katrs objekts tiek identificēts, atrasts un iezīmēts, norādot, ka sistēma to izseko. Utilīta norāda arī katra objekta AI klasifikācijas vērtējumu, šajā piemērā katrs vērtējums ir 99%.

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: