Kodavimas naudojant dirbtinio intelekto regos jutiklį „VEXcode EXP Python“ kalboje

Į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 šias atskiras komandas ir kaip jas naudoti VEXcode, apsilankykite API svetainėje.


Vizualinių duomenų gavimas naudojant dirbtinio intelekto regos jutiklį

Kiekviena AI regėjimo jutiklio komanda prasidės sukonfigūruoto AI regėjimo jutiklio pavadinimu. Visuose šio straipsnio pavyzdžiuose naudojamo dirbtinio intelekto regėjimo jutiklio pavadinimas bus ai_vision_1.

fotografuoti_momentinę nuotrauką

Metodas take_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 arbaspalvų kodas
    • Šie vizualiniai parašai prasideda dirbtinio intelekto regėjimo jutiklio pavadinimu, dvigubu pabraukimu ir vizualinio parašo pavadinimu, pavyzdžiui: ai_vision_1__Blue.
  • Dirbtinioklasifikacijos AiVision.ALL_AIOBJS
  • balandisŽymės- AiVision.ALL_TAGS

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

Šiame pavyzdyje kintamasis vision_objects saugo rinkinį, kuriame yra aptikti „violetiniai“spalvų parašai iš dirbtinio intelekto regėjimo jutiklio, pavadinto ai_vision_1. Jis rodo aptiktų objektų skaičių ir kas 0,5 sekundės fiksuoja naują momentinę kopiją.

while True: 
# Gauti visų violetinės spalvos parašų momentinę kopiją ir išsaugoti ją faile vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
jei vision_objects[0].exists == True

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

brain.screen.print("Objektų skaičius:", len(vision_objects))
wait(0.5, SEKUNDĖS)

Objekto savybės

Kiekvienas momentinės nuotraukos objektas turi skirtingas savybes, kurias galima naudoti norint pateikti informaciją apie tą objektą. Galimos šios savybės:

  • id
  • centras X ir centras Y
  • kilmėX ir kilmėY
  • plotis
  • aukštis
  • kampas
  • rezultatas
  • egzistuoja

Norėdami pasiekti objekto savybę, naudokite kintamojo pavadinimą, kuriame saugoma seka, o po jo – objekto indeksą.

Objekto indeksas nurodo, kurio konkretaus objekto savybę norite gauti. Padarius momentinę nuotrauką, dirbtinio intelekto vaizdo jutiklis automatiškai rūšiuoja objektus pagal dydį. Didžiausiam objektui priskiriamas indeksas 0, o mažesniems objektams priskiriami didesni indekso numeriai.

Pavyzdžiui, iškvietus didžiausio objekto plotį kintamojo vision_objects viduje, būtų: vision_objects[0].width“.

id

Savybė id galima tik AprilTags ir AI klasifikacijoms.

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.

AprilTagatveju, id savybė nurodo aptiktoAprilTag(s) ID numerį.

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.

„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 atkreipia dėmesį į objekto ID; šiame pavyzdyje yra raudonas rutulys, mėlynas rutulys, žalias žiedas ir raudonas žiedas.

Jei AI klasifikacijų, savybė „
konkretų aptiktos AI klasifikacijos tipą.
Konkrečių objektų identifikavimas Dirbtinio intelekto klasifikacijosleidžia robotui sutelkti dėmesį tik į konkrečius objektus, pavyzdžiui, norėti naviguoti tik link raudono, o ne mėlyno Buckyball'o.

Daugiau informacijos apie balandžio mėn. žymas ir DI klasifikacijas ir kaip įjungti jų aptikimą DI vizijos programoje rasite šiuose straipsniuose.

centras X ir centras Y

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

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

while True:
# Gauti visų mėlynos spalvos parašų momentinę kopiją ir išsaugoti ją faile vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
if vision_objects[0].exists == True

# Patikrinama, ar objektas nėra dirbtinio intelekto regos jutiklio matymo lauko centre.
if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:

# Toliau sukite į dešinę, kol objektas bus vaizdo centre.
drivetrain.turn(RIGHT)
kita:
drivetrain.stop()
wait(5, MSEC)

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

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.

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

while True:
# Gauti visų mėlynos spalvos parašų momentinę kopiją ir išsaugoti ją faile vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
if vision_objects[0].exists == True

# Patikrinama, ar didžiausias objektas yra arti dirbtinio intelekto regos jutiklio, išmatuojant jo plotį.
if vision_objects[0].width < 250:

# Priartėti prie objekto, kol jis taps platesnis nei 250 pikselių.
drivetrain.drive(Į PRIEKĮ)
kita:
drivetrain.stop()

wait(5, MSEC)

kampas

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

Savybė angle galima tikColor Codes irAprilTags
.
Tai nurodo, ar aptiktas Spalvos 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.

rezultatas

balo savybė naudojama, kai AI regėjimo jutikliu aptinkamosDI klasifikacijos.

„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 99 % tikslumu galima identifikuoti šių keturių objektų dirbtinio intelekto klasifikacijas. Šį balą galite naudoti norėdami užtikrinti, kad jūsų robotas sutelktų dėmesį tik į labai patikimus aptikimus.

egzistuoja

Savybė exists naudojama norint aptikti, ar paskutinėje padarytoje momentinėje kopijoje buvo aptiktas nurodytas vizualinis parašas.

Tai leidžia patikrinti, ar ankstesnėje momentinėje kopijoje buvo aptikti kokie nors objektai. Ši savybė grąžins reikšmę „True“, kai objektas egzistuoja, ir „False“, kai objekto nėra.

 

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

Last Updated: