Dirbtinio intelekto regėjimo jutiklis#

Įvadas#

„VEX IQ AI“ regos jutiklis gali aptikti ir sekti objektus, spalvas ir „AprilTag“ ID. Tai leidžia robotui analizuoti aplinką, sekti objektus ir reaguoti pagal aptiktus vaizdinius duomenis.

„AI Vision“ pavyzdžiai skirti naudoti su „Basebot“ su „VEX IQ AI Vision“ jutikliu. Šiuose pavyzdžiuose jutiklis sukonfigūruotas pavadinimu „AIVision1“, kuris rodomas blokuose.

Žemiau pateikiamas visų blokų sąrašas:

Veiksmai – užfiksuoti duomenis iš VEX IQ AI regėjimo jutiklio pasirinktam parašui.

  • gauti objekto duomenis – fiksuoja konkretaus parašo duomenis, pvz., sukonfigūruotą spalvą, iš anksto apmokytą objektą arba „AprilTag“ ID.

Nustatymai – pasirinkite, su kuriuo objektu sąveikauti.

Vertės – Pasiekite ir naudokite užfiksuotus duomenis.

Veiksmai#

gauti objekto duomenis#

Blokas „gauti objekto duomenis“ filtruoja duomenis iš „VEX IQ AI“ regėjimo jutiklio kadro iki vieno parašo – išsaugoto aprašymo to, ką jutiklis gali atpažinti, pvz., iš anksto apmokyto objekto, „AprilTag“ ID arba sukonfigūruotos spalvos ar spalvos kodo.

Spalvos ir spalvų kodai pirmiausia turi būti sukonfigūruoti „AI Vision Utility“ programoje, prieš juos naudojant su šiuo bloku.

Duomenų rinkinyje objektai saugomi surūšiuoti nuo didžiausio iki mažiausio pagal plotį, pradedant nuo indekso 0. Kiekvieno objekto savybes galima pasiekti naudojant bloką AI Vision object property. Jei nerandama atitinkančių objektų, pateikiamas tuščias duomenų rinkinys.

„Gauti objekto duomenų steką“ blokas.#
gauti [SELECT_A_SIG v] duomenis iš [AIVision1 v]

Parametras

Aprašymas

parašas

Filtruoja duomenų rinkinį, kad būtų įtraukti tik nurodyto parašo duomenys. Galimi parašai:

Pastaba: Kad būtų rodomos „AprilTag ID“ arba AI klasifikavimo parinktys, jų aptikimas turi būti įjungtas AI vizijos programoje.

Pavyzdys

kai pradėta
[Drive forward if an AprilTag ID is detected.]
amžinai
gauti [AprilTag IDs v] duomenis iš [AIVision1 v]
jei <[AIVIsion1 v] objektas egzistuoja?> tada
važiuoti [pirmyn v] per [10] [mm v] ▶

DI klasifikacijos#

„VEX IQ AI“ regėjimo jutiklis gali aptikti skirtingus objektus pagal tam tikras AI klasifikacijas. Priklausomai nuo AI klasifikacijos modelio, pasirinkto konfigūruojant „VEX IQ AI“ regėjimo jutiklį įrenginių lange, bus aptikti skirtingi objektai. Šiuo metu galimi modeliai:

Klasės objektai

  • Mėlynasis kamuolys

  • Žalias kamuolys

  • Raudonasis kamuolys

  • Mėlynasis žiedas

  • Žalias žiedas

  • Raudonasis žiedas

  • Mėlynasis kubas

  • Žaliasis kubas

  • Raudonasis kubas

VEX IQ robotikos varžybų maišymas ir derinimas

  • Spindulys

  • RedPin

  • Mėlynasis smeigtukas

  • OrangePin

VEX IQ robotikos varžybų lygis aukštyn

  • Mėlynųjų pupelių maišelis

  • RaudonpupųMaišas

  • Geltonpupų maišelis

Spalvų parašai#

Spalvos parašas yra unikali spalva, kurią atpažįsta „VEX IQ AI“ regėjimo jutiklis. Šie parašai leidžia jutikliui aptikti ir sekti objektus pagal jų spalvą. Sukonfigūravus spalvos parašą, jutiklis gali atpažinti objektus savo matymo lauke su ta konkrečia spalva.

Spalvų parašai naudojami get object data bloke, kad būtų galima apdoroti ir aptikti spalvotus objektus realiuoju laiku. Vienu metu galima konfigūruoti iki 7 spalvų parašų.

„AI Vision Utility“ programa rodo prijungtą regėjimo jutiklį, aptinkantį du spalvotus objektus. Kairėje pusėje rodomas tiesioginis kameros vaizdas su mėlynu langeliu kairėje ir raudonu langeliu dešinėje, kiekvienas iš jų apibrėžtas baltais ribojančiais langeliais. Juodos etiketės rodo jų atitinkamus pavadinimus, koordinates ir matmenis. Dešinėje pusėje yra spalvų parašo nustatymai su slankikliais, skirtais atspalviui ir sodrumo diapazonui tiek raudonam, tiek mėlynam langeliams. Mygtukai spalvoms pridėti, vaizdo įrašui sustabdyti, kopijuoti ir vaizdui išsaugoti yra apačioje, o uždarymo mygtukas – apatiniame dešiniajame kampe.

Pavyzdys

kai pradėta
[Display if any objects matching the RED_BOX signature is detected.]
amžinai
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
išvalyti eilutę [1] ekrane
[Change the signature to any configured Color Signature.]
gauti [RED_BOX v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
spausdinti [Color detected!] ekrane ▶

Spalvų kodai#

Spalvų kodas yra struktūrizuotas šablonas, sudarytas iš 2–4 spalvų parašų, išdėstytų tam tikra tvarka. Šie kodai leidžia VEX IQ AI regėjimo jutikliui atpažinti iš anksto nustatytus spalvų šablonus.

Spalvų kodai yra ypač naudingi norint identifikuoti sudėtingus objektus, suderinti juos su žaidimo elementais arba sukurti unikalius žymeklius autonominei navigacijai. Vienu metu galima konfigūruoti iki 8 spalvų kodų.

„AI Vision Utility“ sąsajoje rodomas prijungtas regėjimo jutiklis, aptinkantis du gretimus objektus: mėlyną langelį kairėje ir raudoną langelį dešinėje, sugrupuotus viename baltame ribojančiame langelyje, pažymėtame „BlueRed“. Aptikimo informacija apima kampą (A:11°), koordinates (X:143, Y:103), plotį (W:233) ir aukštį (H:108). Dešiniajame skydelyje išvardyti trys spalvų parašai: „Red_Box“, „Blue_Box“ ir „BlueRed“, su reguliuojamais atspalvio ir sodrumo diapazonais. „BlueRed“ parašas sujungia „Blue_Box“ ir „Red_Box“. Po vaizdo įrašo srautu yra mygtukai, pažymėti „Freeze Video“ (Užšaldyti vaizdo įrašą), „Copy Image“ (Kopijuoti vaizdą), „Save Image“ (Įrašyti vaizdą) ir „Close“ (Uždaryti).

Pavyzdys

kai pradėta
[Display if any objects matching the RED_BLUE code is detected.]
amžinai
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
išvalyti eilutę [1] ekrane
[Change the signature to any configured Color Code.]
gauti [RED_BLUE v] duomenis iš [AIVision1 v]
jei <[AIVIsion1 v] objektas egzistuoja?> tada
spausdinti [Code detected!] ekrane ▶

Nustatymai#

nustatyti AI vizijos objekto elementą#

Steko blokas nustatyti dirbtinio intelekto regėjimo objekto elementą nustato, kurį duomenų rinkinio elementą naudoti.

Objekto „Set AI Vision“ elementų krūvos blokas.#
nustatyti [AIVision1 v] objekto elementą į (1)

Parametrai

Aprašymas

prekė

Duomenų rinkinyje esančio elemento numeris, kuris bus naudojamas.

Pavyzdys

Blokų krūva, prasidedanti bloku „when started“, po kurio eina komentarų blokas su užrašu „Rodyti didžiausią aptiktą „AprilTag“ ID“. Amžino ciklo viduje blokas „take a AI Vision snapshot“ fiksuoja „AprilTag“ ID vaizdą. Blokas „if“ patikrina, ar egzistuoja AI Vision objektas. Jei „true“, blokas „set AI Vision object item“ priskiria objektų skaičių kintamajam, o blokas „print“ ekrane rodo aptikto objekto žymės ID.#
kai pradėta
[Display the largest detected AprilTag ID.]
amžinai
gauti [AprilTag IDs v] duomenis iš [AIVision1 v]
išvalyti eilutę [1] ekrane
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
jei <[AIVision1 v] objektas egzistuoja?> tada
nustatyti [AIVision1 v] objekto elementą į ([AIVision1 v] objektų skaičius)
spausdinti ([AIVision1 v] objektas [tagID v]) ekrane ▶

Vertybės#

Dirbtinio intelekto regėjimo objektas egzistuoja#

Loginis blokas „AI Vision“ objektas egzistuoja praneša, ar duomenų rinkinyje aptiktas koks nors objektas.

  • Teisinga – duomenų rinkinyje yra aptiktas objektas.

  • Klaidinga – Duomenų rinkinyje nėra jokių aptiktų objektų.

„AI Vision“ objektas egzistuoja loginiame bloke.#
<[AIVision1 v] objektas egzistuoja?>

Parametrai

Aprašymas

Šis blokas neturi parametrų.

Pavyzdys

kai pradėta
[Drive forward if an object is detected.]
amžinai
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
važiuoti [pirmyn v] per [10] [mm v] ▶

AI vizijos objektų skaičius#

AI vizijos objektų skaičiaus reporterio blokas pateikia aptiktų objektų skaičių duomenų rinkinyje kaip sveikąjį skaičių.

Objekto „Set AI Vision“ elementų krūvos blokas.#
([AIVision1 v] objektų skaičius)

Parametrai

Aprašymas

Šis blokas neturi parametrų.

Pavyzdys

kai pradėta
[Display the total amount of cubes, rings, and balls.]
amžinai
išvalyti eilutę [1] ekrane
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
spausdinti ([AIVision1 v] objektų skaičius) ekrane ▶
pabaiga
laukti [0.5] sekundžių

AI vizijos objekto ypatybė#

Kiekvienam objektui (parodyta žemiau) priskiriamos devynios savybės, kurios saugomos panaudojus bloką get object data.

„AI Vision“ objekto ypatybių reporterio blokas.#
([AIVision1 v] objektas [plotis v])

Visos ypatybių reikšmės, išskyrus tagID, apibūdina aptikto objekto padėtį ir dydį „VEX IQ AI“ regos jutiklio rodinyje tuo metu, kai buvo naudojamas blokas gauti objekto duomenis. Šios reikšmės matuojamos pikseliais, remiantis jutiklio 320 x 240 pikselių skiriamąja geba.

Parametras

Aprašymas

nuosavybė

Kurią aptikto objekto savybę naudoti:

plotis#

Savybė width nurodo aptikto objekto plotį pikseliais kaip sveikąjį skaičių nuo 1 iki 320.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip plotis.#
([AIVision1 v] objektas [plotis v])

Pavyzdys

kai pradėta
[Drive towards an object until its width is larger than 100 pixels.]
amžinai
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <([AIVision1 v] objektas [plotis v]) [math_less_than v] [100]> tada
važiuoti [pirmyn v]
pabaiga
kitu atveju
sustabdyti važiavimą

aukštis#

Savybė aukštis nurodo aptikto objekto aukštį pikseliais kaip sveikąjį skaičių nuo 1 iki 240.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip aukštis.#
([AIVision1 v] objektas [aukštis v])

Pavyzdys

kai pradėta
[Drive towards an object until its height is larger than 100 pixels.]
amžinai
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <([AIVision1 v] objektas [aukštis v]) [math_less_than v] [100]> tada
važiuoti [pirmyn v]
pabaiga
kitu atveju
sustabdyti važiavimą

centrasX#

Savybė centerX nurodo aptikto objekto centro x koordinatę pikseliais kaip sveikąjį skaičių nuo 0 iki 320.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip centerX.#
([AIVision1 v] objektas [centrasX v])

Pavyzdys

kai pradėta
[Turn slowly until an object is centered in front of the robot.]
nustatyti sukimosi greitį į [30] [% v]
sukti [dešinėn v]
amžinai
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <[140] [math_less_than v] ([AIVision1 v] objektas [centrasX v]) [math_less_than v] [180]> tada
sustabdyti važiavimą

centras Y#

Savybė centerY nurodo aptikto objekto centro y koordinatę pikseliais kaip sveikąjį skaičių nuo 0 iki 240.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip centerY.#
([AIVision1 v] objektas [centrasY v])

Pavyzdys

kai pradėta
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
amžinai
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <([AIVision1 v] objektas [centrasY v]) [math_less_than v] [140]> tada
važiuoti [pirmyn v]
pabaiga
kitu atveju
sustabdyti važiavimą

kampas#

Savybė kampas nurodo aptikto spalvos kodo arba „AprilTag“ ID orientaciją sveikuoju skaičiumi laipsniais nuo 0 iki 359.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip kampas.#
([AIVision1 v] objektas [kampas v])

Pavyzdys

kai pradėta
[Slide left or right depending on how the Color Code is rotated.]
amžinai
gauti [RED_BLUE v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <[50] [math_less_than v] ([AIVision1 v] objektas [kampas v]) [math_less_than v] [100]> tada
važiuoti [dešinėn v]
kitu atveju jei <[270] [math_less_than v] ([AIVision1 v] objektas [kampas v]) [math_less_than v] [330]> tada
važiuoti [kairėn v]
kitu atveju
sustabdyti važiavimą
pabaiga
kitu atveju
sustabdyti važiavimą

kilmėX#

Savybė originX nurodo aptikto objekto ribojančio langelio viršutinio kairiojo kampo x koordinatę pikseliais kaip sveikąjį skaičių nuo 0 iki 320.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip originX.#
([AIVision1 v] objektas [pradžiaX v])

Pavyzdys

kai pradėta
[Display if an object is to the left or the right.]
amžinai
išvalyti eilutę [1] ekrane
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <([AIVision1 v] objektas [pradžiaX v]) [math_less_than v] [160]> tada
spausdinti [To the left!] ekrane ▶
kitu atveju
spausdinti [To the right!] ekrane ▶
pabaiga
laukti [0.5] sekundžių

kilmėY#

Savybė originY nurodo aptikto objekto ribojančio langelio viršutinio kairiojo kampo y koordinatę pikseliais kaip sveikąjį skaičių nuo 0 iki 240.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip originY.#
([AIVision1 v] objektas [pradžiaY v])

Pavyzdys

kai pradėta
[Display if an object is close or far from the robot.]
amžinai
išvalyti eilutę [1] ekrane
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <([AIVision1 v] objektas [pradžiaY v]) [math_less_than v] [80]> tada
spausdinti [Far!] ekrane ▶
kitu atveju
spausdinti [Close!] ekrane ▶
pabaiga
laukti [0.5] sekundžių

žymos ID#

Ypatybė tagID nurodo aptikto „AprilTag“ ID identifikacinį numerį kaip sveikąjį skaičių.

„AI Vision“ objekto ypatybių bloko blokas, kurio parametras nustatytas kaip tagID.#
([AIVision1 v] objektas [tagID v])

Pavyzdys

kai pradėta
[Drive forward when AprilTag ID 0 is detected.]
amžinai
gauti [AprilTag IDs v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <([AIVision1 v] objektas [tagID v]) [math_equal v] [0]> tada
važiuoti [pirmyn v]
kitu atveju
sustabdyti važiavimą
pabaiga
laukti [0.5] sekundžių

Ar yra AI vizijos objektas?#

Blokas Ar tai AI vizijos objektas? pateikia loginę reikšmę, nurodančią, ar aptiktas objektas atitinka konkrečią klasifikaciją.

  • Tiesa – duomenų rinkinio elementas yra konkretus objektas.

  • Netiesa – duomenų rinkinio elementas nėra konkretus objektas.

AI vizijos AI klasifikacija yra objekto loginis blokas.#
<[AIVision1 v] objektas yra [BlueBall v]?>

Parametras

Aprašymas

objektas

Su kuria DI klasifikacija palyginti elementą.

Pavyzdys

kai pradėta
[Display if a Blue Cube is detected.]
amžinai
gauti [AI klasifikacijos v] duomenis iš [AIVision1 v]
išvalyti eilutę [1] ekrane
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <[AIVision1 v] objektas yra [BlueCube v]?> tada
spausdinti [Cube detected!] ekrane ▶
laukti [0.5] sekundžių

Ar „AI Vision“ objektas yra „AprilTag“?#

Blokas Ar „AI Vision“ objektas yra „AprilTag?“ pateikia loginę reikšmę, nurodančią, ar aptiktas objektas yra „AprilTag“, atitinkantis konkretų ID.

  • Tiesa – aptiktas objektas yra „AprilTag“ su nurodytu ID.

  • Netiesa – aptiktas objektas nėra „AprilTag“ su nurodytu ID.

„AI Vision“ objektas yra „AprilTag“ loginis blokas.#
<[AIVision1 v] objektas yra AprilTag [0]?>

Parametras

Aprašymas

AprilTag ID

ID numeris, kurį reikia palyginti su aptiktu „AprilTag“.

Pavyzdys

kai pradėta
[Report if AprilTag 3 is detected.]
amžinai
išvalyti ekraną
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
gauti [AprilTag IDs v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <[AIVision1 v] objektas yra AprilTag [3]?> tada
spausdinti [That is 3!] ekrane ▶
kitu atveju
spausdinti [That isn't 3!] ekrane ▶
pabaiga
pabaiga
laukti [0.1] sekundžių

Ar „AI Vision“ objektas yra „AprilTag“ ID?#

Blokas Ar „AI Vision“ objektas yra „AprilTag ID?“ pateikia loginę reikšmę, nurodančią, ar aptiktas „AprilTag“ ID atitinka konkretų ID.

  • Tiesa – „AprilTag“ ID yra skaičius.

  • Netiesa – „AprilTag“ ID nėra skaičius.

„AI Vision“ aptiktas „AprilTag“ ID yra loginis blokas.#
<[AIVision1 v] object is AprilTag ID [1] ?>

Parametrai

Aprašymas

AprilTag ID numeris

Skaičius, kurį reikia palyginti su aptiktu „AprilTag“ ID numeriu.

Pavyzdys:

kai pradėta
[Report if AprilTag ID 3 is detected.]
amžinai
išvalyti ekraną
nustatyti žymeklį į eilutę [1] stulpelį [1] ekrane
gauti [AprilTag IDs v] duomenis iš [AIVision1 v]
jei <[AIVision1 v] objektas egzistuoja?> tada
jei <[AIVision1 v] object is AprilTag ID [3] ?> tada
spausdinti [That is 3!] ekrane ▶
kitu atveju
spausdinti [That isn't 3!] ekrane ▶
pabaiga
pabaiga
laukti [0.1] sekundžių