Kodēšana ar AI redzes sensoru VEXcode EXP C++ 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.


Iegūstiet vizuālos datus, izmantojot 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 AIVision.

takeSnapshot

Metode takeSnapshot 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 AI 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: AIVision1__Blue.
  • Mākslīgā intelekta klasifikācijas aivision::
  • aprīlisBirkas::ALL_TAGS

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

Šajā piemērā tiek uzņemts mākslīgā intelekta redzes sensora ar nosaukumu AIVision1"Zilās" krāsas parakstamomentuzņēmums. Tas parāda masīvā noteikto objektu skaitu un ik pēc 0,5 sekundēm uzņem jaunu momentuzņēmumu.

while (true) {
// Iegūt visu zilās krāsas objektu momentuzņēmumu.
AIVision.takeSnapshot(AIVision1__Blue);

// Pirms datu izvilkšanas pārbauda, ​​vai momentuzņēmumā ir atrasts objekts.
ja (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
gaidīt(5, ms);
}

objekti

Katram momentuzņēmuma objektam ir dažādas īpašības, kuras var izmantot, lai ziņotu par informāciju par šo objektu. Objektu metode ļauj piekļūt šīm īpašībām.

Pieejamie īpašumi ir šādi:

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

Lai piekļūtu objekta īpašībai, izmantojiet AI redzes sensora nosaukumu, kam seko metode “objects” un pēc tam 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, būtu AIVision1.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 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.

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 objektu momentuzņēmumu.
  AIVision.takeSnapshot(AIVision__Blue);

  // Pirms datu izvilkšanas pārbaudiet, vai momentuzņēmumā ir atrasts objekts.
  ja (AIVision.objectCount > 0) {

    ja (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(right);
    } citādi {
      Drivetrain.stop();
    }
  }
  wait(5, ms);
}

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, Bekībolam būs lielāks augstums nekā gredzenam.

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 zilo objektu momentuzņēmumu.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Pirms datu izvilkšanas pārbaudiet, vai momentuzņēmumā ir atrasts objekts.
  ja (AIVision.objectCount > 0) {

    ja (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(uz priekšu);
    } citādi {
      Drivetrain.stop();
    }
  }
  wait(5, ms);
}

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

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


objektu skaits

objectCount metode atgriež pēdējā momentuzņēmumā atklāto objektu skaitu.

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.

Šajā piemērā ir atklāti divi objekti arkrāsu parakstu "Zila". Tie abi tiks ievietoti masīvā, kad tiks izmantota metode takeSnapshot.

Šis koda fragments nepārtraukti atjaunina EXP Brain ar atklāto objektu skaitu. Pamatojoties uz sniegto piemēru, tas atkārtoti nosūtīs vērtību 2, norādot, ka ir atklāti divi objekti.

while (true) {
// Iegūt visu zilo objektu momentuzņēmumu.
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Pirms datu izvilkšanas pārbauda, ​​vai momentuzņēmumā ir atrasts objekts.
ja (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
gaidīt(5, ms);
}

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

Last Updated: