Kodavimas naudojant dirbtinio intelekto regos jutiklį VEXcode EXP blokuose

Įsitikinkite, kad jūsų dirbtinio intelekto regėjimo jutiklyje sukonfigūruoti spalvų parašai ir spalvų kodai , kad juos būtų galima naudoti su jūsų blokais. Norėdami sužinoti daugiau apie tai, kaip juos sukonfigūruoti, galite perskaityti toliau pateiktus straipsnius:

Dirbtinio intelekto vaizdo jutiklis taip pat gali aptikti dirbtinio intelekto klasifikacijas ir „AprilTag“ žymas. Norėdami sužinoti, kaip įjungti šiuos aptikimo režimus, eikite čia:

Norėdami sužinoti daugiau apie šiuos atskirus blokus ir kaip juos naudoti VEXcode, apsilankykite API svetainėje.


Padaryti momentinę nuotrauką

VEXcode EXP Take Snapshot blokas, kuriame rašoma: Paimkite AIVision1 COL1 momentinę kopiją. Yra du išskleidžiamieji meniu: vienas skirtas dirbtinio intelekto regėjimo jutikliui pasirinkti, o antrasis – spalvos kodui pasirinkti.

BlokasTake Snapshot nufotografuoja tai, ką šiuo metu mato dirbtinio intelekto vaizdo jutiklis, ir iš tos momentinės nuotraukos ištraukia duomenis, kuriuos vėliau galima naudoti projekte. Kai daroma momentinė nuotrauka, reikia nurodyti, kokio tipo objekto duomenis turėtų rinkti dirbtinio intelekto vaizdo jutiklis:

  • Spalvų parašas
  • Spalvos kodas
  • DI klasifikacijos
  • BalandisŽymės

Padarius momentinę kopiją, bus sukurtas visų jūsų nurodytų aptiktų objektų masyvas. Pavyzdžiui, jei norėtumėte aptikti „raudoną“spalvų parašąir dirbtinio intelekto regėjimo jutiklis aptiko 3 skirtingus raudonus objektus, visų trijų duomenys būtų įtraukti į masyvą.

Daugiau informacijos apie tai, kaip nurodyti skirtingus objektus, rasite šio straipsnio skyriuje „Nustatyti objekto elementą“.

VEXcode EXP Take Snapshot blokas, kuriame rašoma: Paimkite AIVision2 mėlynos spalvos momentinę kopiją.

Šiame pavyzdyje jis aptiks tik tuos objektus, kurie atitinka sukonfigūruotą „Mėlyną“ spalvos parašą ir nieko daugiau.

Duomenys, paimti iš momentinės kopijos

Turėkite omenyje, kad dirbtinio intelekto regėjimo jutiklis naudos paskutinę padarytą momentinę nuotrauką visiems vėlesniems blokams. Kad visada gautumėte naujausią informaciją iš savo dirbtinio intelekto regos jutiklio, kaskart norėdami iš jo išgauti duomenis, iš naujo padarykite momentinę kopiją. 

Rezoliucija

Dirbtinio intelekto vaizdo jutiklio skiriamosios gebos schema. Viršutinis kairysis kampas pažymėtas 0, 0, viršutinis dešinysis kampas – 320, 0, o apatinis kairysis kampas – 0, 240. Ekrano centras pažymėtas skaičiais 160, 120.

Norint tiksliai interpretuoti duomenis, labai svarbu suprasti dirbtinio intelekto vaizdo jutiklio skiriamąją gebą. Jutiklio skiriamoji geba yra 320x240 pikselių, o tikslus centras yra koordinatėse (160, 120).

X koordinatės, mažesnės nei 160, atitinka kairę jutiklio matymo lauko pusę, o didesnės nei 160 – dešinę pusę. Panašiai Y koordinatės, mažesnės nei 120, žymi viršutinę vaizdo pusę, o didesnės nei 120 – apatinę.

Daugiau informacijos apie tai, kaip objektai matuojami naudojant AI regėjimo jutiklį, rasite „Duomenų supratimas AI regėjimo programoje“ VEXcode EXP.

Plotis ir aukštis

Tai aptikto objekto plotis arba aukštis pikseliais.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis mėlyną „Buckyball“ kamuoliuką. „Buckyball“ rutulį supa sekimo stačiakampis, o aukščiau pateikta etiketė rodo, kad jo plotis yra 80 pikselių, o aukštis – 78 pikseliai. Raudonos rodyklės paryškina sekimo stačiakampį, kad būtų parodytas jo plotis ir aukštis.

Pločio ir aukščio matavimai padeda atpažinti skirtingus objektus. Pavyzdžiui, „Buckyball“ bus didesnio aukščio nei „Ring“.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis du mėlynus kubus. Kubai aplink save turi sekimo stačiakampius, o vienas iš jų yra daug arčiau kameros. Arčiau esančio plotis yra 144 ir aukštis – 113, o toliau esančio – 73 plotis ir 84 aukštis.

Plotis ir aukštis taip pat rodo objekto atstumą nuo dirbtinio intelekto vaizdo jutiklio. Mažesni matmenys paprastai reiškia, kad objektas yra toliau, o didesni – arčiau.

„VEXcode Blocks“ projektas, kuriame robotas artės prie objekto, kol jo plotis pasieks tam tikrą dydį, prieš sustodamas. Projektas prasideda nuo „When started“ bloko ir „Forever“ ciklo. Likusi projekto dalis yra „Forever“ ciklo viduje. Pirmiausia padarykite „Blue“ momentinę kopiją „AIVision1“, o likusi projekto dalis yra „If“ bloke, kuriame rašoma, ar „AIVision1“ objektas egzistuoja? Šio „If“ bloko viduje yra „If Else“ blokas, kuris nurodo, kad jei „AIVision1“ objekto plotis yra mažesnis nei 250, važiuokite pirmyn, kitu atveju – sustokite.

Šiame pavyzdyje objekto plotis naudojamas navigacijai. Robotas artės prie objekto, kol jo plotis pasieks tam tikrą dydį, o tada sustos.

CenterX ir CenterY

Tai yra aptikto objekto centro koordinatės pikseliais.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis mėlyną „Buckyball“ kamuoliuką. Bekbolą supa sekimo stačiakampis, o aukščiau pateikta etiketė rodo, kad jo X padėtis yra 176, o Y padėtis – 117. Sekimo stačiakampio centras yra paryškintas, siekiant parodyti, kad padėtis matuojama nuo centro.

„CenterX“ ir „CenterY“ koordinatės padeda naviguoti ir nustatyti padėtį. Dirbtinio intelekto vaizdo jutiklio skiriamoji geba yra 320 x 240 pikselių.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis du mėlynus kubus. Kubai aplink juos turi sekimo stačiakampius, o vienas iš jų yra daug arčiau kameros. Arčiau esančio Y padėtis yra 184, o toliau esančio – 70.

Matote, kad objektas, esantis arčiau dirbtinio intelekto vaizdo jutiklio, turės žemesnę CenterY koordinatę nei objektas, esantis toliau.

„VEXcode Blocks“ projektas, kuriame robotas pasisuks aptikto objekto link, kol šis atsidurs dirbtinio intelekto vaizdo jutiklio matymo lauko centre. Projektas prasideda nuo „When started“ bloko ir „Forever“ ciklo. Likusi projekto dalis yra „Forever“ ciklo viduje. Pirmiausia padarykite „Blue“ momentinę „AIVision1“ kopiją, o likusi projekto dalis yra „If“ bloke, kuriame rašoma, ar „AIVision1“ objektas egzistuoja? Šio „If“ bloko viduje yra „If Else“ blokas, kuris nurodo, kad jei „AIVision1“ objekto „centerX“ vertė yra didesnė nei 150, o „AIVision1“ objekto „centerX“ vertė yra mažesnė nei 170, reikia pasukti į dešinę, kitu atveju – sustoti.

Šiame pavyzdyje, kadangi dirbtinio intelekto regos jutiklio vaizdo centras yra (160, 120), robotas suksis į dešinę, kol aptikto objekto centro X koordinatė bus didesnė nei 150 pikselių, bet mažesnė nei 170 pikselių.

Kampas

Raudono ir žalio kvadratų, suktų kartu, animacija, rodanti 360 laipsnių kampo reikšmę.

„Angle“ yra savybė, prieinama tikspalvų kodams ir, o „AprilTags. Tai nurodo, ar aptiktasspalvų kodasarba „AprilTag yra orientuotas kitaip.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis spalvų kodą – žalią, o tada mėlyną. Vaizdo įraše rodomas žalias kubas, sudėtas ant mėlyno kubo. Spalvos kodo kampo reikšmė yra paryškinta ir rodo 87 laipsnius, o tai rodo, kad spalvos kodas yra orientuotas vertikaliai.

Galite matyti, ar robotas yra orientuotas kitaipspalvų kodo ar„AprilTag atžvilgiu, ir pagal tai priimti navigacijos sprendimus.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis spalvų kodą – žalią, o tada mėlyną. Vaizdo įraše matyti žalias kubas, sėdintis šalia mėlyno kubo, tačiau jie yra neįprastu kampu, palyginti su jutikliu. Spalvos kodo kampo reikšmė yra paryškinta ir rodoma kaip 0 laipsnių, o tai reiškia, kad spalvos kodo kampo nuskaityti negalima.

Pavyzdžiui, jeispalvos kodas neaptinkamas tinkamu kampu, robotas gali netinkamai paimti objekto, kurį jis vaizduoja.

OriginX ir OriginY

„OriginX“ ir „OriginY“ yra aptikto objekto viršutinio kairiojo kampo koordinatė pikseliais.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis mėlyną „Buckyball“ kamuoliuką. Bekbolą supa sekimo stačiakampis, o aukščiau pateikta etiketė rodo, kad jo X padėtis yra 176, o Y padėtis – 117. Sekimo stačiakampio viršutinis kairysis kampas yra paryškintas, siekiant parodyti, kad pradinė padėtis matuojama nuo viršutinio kairiojo kampo.

„OriginX“ ir „OriginY“ koordinatės padeda naviguoti ir nustatyti padėtį. Sujungę šią koordinatę su objekto pločiu ir aukščiu, galite nustatyti objekto ribojančios dėžės dydį. Tai gali padėti sekti judančius objektus arba naršyti tarp jų.

„VEXcode Blocks“ projektas, kuriame robotas ekrane nupieš aptiktą objektą kaip stačiakampį. Projektas prasideda nuo „When started“ bloko ir „Forever“ ciklo. Likusi projekto dalis yra „Forever“ ciklo viduje. Pirmiausia padarykite „Blue“ momentinę „AIVision1“ kopiją, o likusi projekto dalis yra „If“ bloke, kuriame rašoma, ar „AIVision1“ objektas egzistuoja? Šio „If“ bloko viduje yra „Draw rectangle“ blokas, kuris Brain sistemoje nuskaito „draw rectangle“ AIVision1 objekto kilmės X, AIVision1 objekto kilmės Y, AIVision1 objekto pločio ir aukščio duomenis.

Šiame pavyzdyje ant smegenų bus nubrėžtas stačiakampis, naudojant tikslias jo pradžios, pločio ir aukščio koordinates.

žymos ID

„tagID“ galimas tikAprilTags. Tai yra nurodytoAprilTagID numeris.

Trys „AprilTag“ žymės yra stebimos „AI Vision Utility“. Kiekviena žymė yra identifikuojama, surandama ir apibrėžiama, o tai rodo, kad sistema ją seka. Šiame pavyzdyje „AprilTag“ ID yra 0, 3 ir 9.

Konkrečių „AprilTags identifikavimas leidžia pasirinkti navigaciją. Galite užprogramuoti savo robotą judėti link tam tikrų žymų, ignoruojant kitas, efektyviai jas naudojant kaip automatinės navigacijos kelio ženklus.

Rezultatas

Rezultato savybė naudojama, kai AI regėjimo jutikliu aptinkamaAI klasifikacijų.

„AI Vision“ programa seka keturis objektus: du „BuckyBalls“ ir du „Rings“. Kiekvienas objektas yra identifikuojamas, surandamas ir apibrėžiamas, o tai rodo, kad sistema jį seka. Programa taip pat pateikia kiekvieno objekto dirbtinio intelekto klasifikavimo balą, šiame pavyzdyje kiekvienas balas yra 99 %.

Pasitikėjimo balas rodo, kiek užtikrintas dirbtinio intelekto regos jutiklis aptikimo metu. Šiame paveikslėlyje šių keturių objektų dirbtinio intelekto klasifikacijos identifikuojamos 99 % tikslumu. Šį balą galite naudoti norėdami užtikrinti, kad jūsų robotas sutelktų dėmesį tik į labai patikimus aptikimus.


Nustatyti objekto elementą

Kai dirbtinio intelekto vaizdo jutiklis aptinka objektą, jis įtraukiamas į matricą. Pagal numatytuosius nustatymus dirbtinio intelekto vaizdo jutiklis ims duomenis iš pirmojo masyvo objekto arba objekto, kurio indeksas yra 1. Jei jūsų dirbtinio intelekto vaizdo jutiklis aptiko tik vieną objektą, tas objektas bus pasirinktas pagal numatytuosius nustatymus.

Tačiau kai jūsų dirbtinio intelekto regėjimo jutiklis aptiko kelis objektus vienu metu, turėsite naudoti bloką„Nustatyti objekto elementą kad nurodytumėte, iš kurio objekto norite gauti duomenis.

VEXcode EXP Nustatyti objekto elemento bloką, kuriame rašoma „Nustatyti AIVision1 objekto elementą į 1“. Yra išskleidžiamasis meniu, kuriame galima pasirinkti AI regėjimo jutiklį, ir teksto laukas, kuriame galima įvesti objekto indeksą.

Kai dirbtinio intelekto vaizdo jutiklis aptinka kelis objektus, jie išdėstomi masyve nuo didžiausio iki mažiausio. Tai reiškia, kad didžiausiam aptiktam objektui visada bus suteiktas 1 objekto indeksas, o mažiausiam – didžiausias skaičius.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis du mėlynus kubus. Kubai aplink save turi sekimo stačiakampius, o vienas iš jų yra daug arčiau kameros. Arčiau esančio plotis yra 136, o toliau esančio – 78.

Šiame pavyzdyje aptikti du objektai, kurių spalvų parašas yrao spalvų parašas „Mėlyna“. Jie abu bus įtraukti į masyvą, kai bus naudojamas blokasTake Snapshot.

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis du mėlynus kubus. Kubai aplink save turi sekimo stačiakampius, o vienas iš jų yra daug arčiau kameros. Arčiau esantis kubas pažymėtas 1, o toliau esantis kubas – 2.

Čia priekyje esantis objektas taptų 1 objekto indeksu, nes tai didžiausias objektas, o mažiausias objektas taptų 2 objekto indeksu.


Objektas egzistuoja

Prieš ištraukiant bet kokius duomenis iš momentinės kopijos, patikrinti, ar dirbtinio intelekto regėjimo jutiklis pirmiausia aptiko kokius nors objektus toje momentinėje kopijoje. Čia praverčia blokasObject Exists.

VEXcode EXP objektas egzistuoja blokas, kuris skaito AIVision1 objektą? Yra išskleidžiamasis meniu, kuriame galite pasirinkti AI regėjimo jutiklį.

Šis blokas grąžins reikšmęTrue arbaFalse priklausomai nuo to, ar paskutinėje padarytoje momentinėje kopijoje yra aptiktų objektų.

Šis blokas visada turėtų būti naudojamas siekiant užtikrinti, kad nebandytumėte ištraukti jokių duomenų iš potencialiai tuščios momentinės kopijos.

„VEXcode Blocks“ projektas, kuriame robotas važiuos aptikto mėlyno objekto link. Projektas prasideda nuo „When started“ bloko ir „Forever“ ciklo. Likusi projekto dalis yra „Forever“ ciklo viduje. Pirmiausia padarykite „AIVision2“ mėlynos spalvos momentinę kopiją, tada – „If Else“ bloką, kuris nuskaito, ar „AIVision2“ objektas egzistuoja, tada važiuokite pirmyn, kitu atveju – sustokite.

Pavyzdžiui, čia robotas nuolat fotografuos naudodamas dirbtinio intelekto vaizdo jutiklį. Jei jis identifikuoja kurį objektą su „mėlynu“ spalvų parašu, jis važiuos pirmyn.


Jei kurioje nors momentinėje nuotraukoje nėra „mėlynos“ spalvos parašo, robotas nustos judėti.


Objektų skaičius

VEXcode EXP Objektų skaičiaus blokas, kuris nuskaito AIVision1 objektų skaičių. Yra išskleidžiamasis meniu, kuriame galite pasirinkti AI regėjimo jutiklį.

Naudodami bloką Object count , galėsite pamatyti, kiek konkretaus spalvų parašo objektų dirbtinio intelekto regėjimo jutiklis gali matyti paskutinėje momentinėje kopijoje. 

Rodomas dirbtinio intelekto vaizdo jutiklis, sekantis du mėlynus kubus. Kubai aplink juos turi sekimo stačiakampius, o vienas iš jų yra daug arčiau kameros.

Čia matome, kad dirbtinio intelekto regėjimo jutiklis turi sukonfigūruotą spalvų parašą „Mėlyna“ ir aptinka du objektus.

„VEXcode Blocks“ projektas, kuriame robotas spausdinimo konsolėje atspausdins aptiktų mėlynų objektų skaičių. Projektas prasideda nuo „When started“ bloko ir „Forever“ ciklo. Likusi projekto dalis yra „Forever“ ciklo viduje. Pirmiausia padarykite „AIVision2“ „Blue“ momentinę kopiją, išvalykite visas konsolės eilutes ir tada konsolėje perkelkite žymeklį į kitą eilutę. Toliau yra „If“ blokas, kuris nuskaito, ar egzistuoja „AIVision2“ objektas, tada konsolėje atspausdina „AIVision2“ objektų skaičių ir perkelia žymeklį į kitą eilutę. Už „If“ bloko yra „Wait“ blokas, nustatytas laukti 2 sekundes.Ankstesnio „VEXcode Blocks“ projekto „Print Console“ išvestis su atspausdintu pranešimu, rodančiu 2.

Šiame kode dirbtinio intelekto regėjimo jutiklis padarytų momentinę kopiją ir VEXcode konsolėje atspausdintų „2“, nes jis aptinka tik du „mėlynus“ spalvų parašus.


Objektas

VEXcode EXP AI Vision objektų blokas, kuris nuskaito AIVision1 objekto plotį. Yra išskleidžiamasis meniu, kuriame galima pasirinkti DI regėjimo jutiklį, ir atidarytas išskleidžiamasis meniu, kuriame galima pasirinkti objekto atributą jutimui. Parinkčių sąraše pateikiami šie parametrai: plotis, aukštis, X centras, Y centras, kampas, X vieta, Y vieta, žymės ID ir balas.

BlokasObject leidžia pranešti apie nurodyto objekto savybę. Tai leidžia naudoti bet kokius turimus duomenis, ištrauktus iš paskutinės momentinės kopijos.

Iš užfiksuotų momentinių kopijų galima išgauti šias objekto savybes:

  • plotis
  • aukštis
  • centrasX
  • centras Y
  • kampas
  • kilmėX
  • kilmėY
  • žymos ID
  • rezultatas

Daugiau informacijos apie šias ypatybes rasite šio straipsnio skyriuje „Duomenys, paimti iš momentinės kopijos“.


Aptikta „AprilTag“ yra

Ar VEXcode EXP Detected AprilTag yra blokas, kuris skaito: AIVision1 aptiktas AprilTag yra 1? Yra išskleidžiamasis meniu, kuriame galite pasirinkti AI regėjimo jutiklį.

Aptiktas „AprilTag“ yra blokas galimas tik tada, kai įjungtas„AprilTag“ aptikimo režimas

Šis blokas pateiks reikšmę „True“ arba „False“, priklausomai nuo to, ar nurodytas objektas yra tam tikras „AprilTag“.

Trys „AprilTag“ žymės yra stebimos „AI Vision Utility“. Kiekviena žymė yra identifikuojama, surandama ir apibrėžiama, o tai rodo, kad sistema ją seka. Šiame pavyzdyje „AprilTag“ ID yra 0, 3 ir 9.

Kai vienoje momentinėje kopijoje aptinkami keli „AprilTags“ žymekliai, jie masyve išdėstomi pagal jų identifikuotą ID, o ne pagal dydį.

Šiame paveikslėlyje aptikti trys „AprilTag“ žymės, kurių ID yra 0, 3 ir 9. Jie bus išdėstyti masyve didėjančia jų ID tvarka. 1 indekso objektas atitiktų „AprilTag“ su ID 0, 2 indekso objektas – „AprilTag“ su ID 3, o 3 indekso objektas – „AprilTag“ su ID 9.

Daugiau informacijos apie tai, kas yra „AprilTags“ ir kaip įjungti jų aptikimą naudojant dirbtinio intelekto vaizdo jutiklį, rasite šiame straipsnyje.


DI klasifikacija yra

Ar VEXcode EXP AI klasifikacija yra blokas, kuris skaito AIVision1? Ar AI klasifikacija yra „BlueBall“? Yra išskleidžiamasis meniu, kuriame galima pasirinkti AI regėjimo jutiklį, ir kitas išskleidžiamasis meniu, kuriame galima pasirinkti tikslinį AI klasifikavimo objektą.

AI klasifikacija yra blokas galimas tik tada, kai įjungtasAI klasifikacijos aptikimo režimas.

 

Šis blokas pateiks reikšmę „True“ arba „False“, priklausomai nuo to, ar nurodytas objektas atitinka tam tikrą dirbtinio intelekto klasifikaciją.

Kokias dirbtinio intelekto klasifikacijas gali aptikti dirbtinio intelekto regos jutiklis, priklauso nuo naudojamo modelio. Daugiau informacijos apie tai, kokios DI klasifikacijos yra prieinamos ir kaip įjungti jų aptikimą naudojant DI regos jutiklį, rasite šiame straipsnyje.

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

Last Updated: