Į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:
- Spalvų parašų konfigūravimas naudojant AI vizijos parašą VEXcode EXP
- Spalvų kodų konfigūravimas naudojant AI vizijos parašą VEXcode EXP
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:
- DI klasifikacijos naudojant DI regėjimo jutiklį VEXcode EXP
- „AprilTags“ su dirbtinio intelekto regėjimo jutikliu „VEXcode EXP“ programoje
Vizualinių duomenų gavimas naudojant dirbtinio intelekto regos jutiklį
Kiekviena dirbtinio intelekto regėjimo jutiklio komanda prasidės sukonfigūruoto dirbtinio intelekto regėjimo jutiklio pavadinimu. Visuose šio straipsnio pavyzdžiuose naudojamo AI regėjimo jutiklio pavadinimas bus AIVision.
takeSnapshot
takeSnapshot “ metodas 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 vaizdo jutiklio pavadinimu, dvigubu pabraukimu ir vizualinio parašo pavadinimu, pavyzdžiui:
AIVision1__Blue.
- Šie vizualiniai parašai prasideda dirbtinio intelekto vaizdo jutiklio pavadinimu, dvigubu pabraukimu ir vizualinio parašo pavadinimu, pavyzdžiui:
-
Dirbtinio
klasifikacijosaivision::ALL_AIOBJS -
balandisŽymėsaivision::
Padarius momentinę kopiją, bus sukurtas visų jūsų nurodytų aptiktų objektų masyvas. Pavyzdžiui, jei norėtumėte aptikti „mėlyną“ spalvų parašąir dirbtinio intelekto regėjimo jutiklis aptiko 3 skirtingus mėlynos spalvos objektus, visų trijų duomenys būtų įdėti į masyvą.
Šiame pavyzdyje padaryta „mėlynos“ spalvos parašomomentinė nuotrauka iš dirbtinio intelekto regėjimo jutiklio, pavadinto AIVision1. Jis rodo masyve aptiktų objektų skaičių ir kas 0,5 sekundės fiksuoja naują momentinę kopiją.
while (true) {
// Gauti visų mėlynos spalvos objektų momentinę kopiją.
AIVision.takeSnapshot(AIVision1__Blue);
// Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
jei (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
laukti(5, ms);
}
objektai
Kiekvienas momentinės nuotraukos objektas turi skirtingas savybes, kurias galima naudoti informacijai apie tą objektą pateikti. Objektų metodas leidžia pasiekti šias savybes.
Galimos šios savybės:
- id
- centras X ir centras Y
- kilmėX ir kilmėY
- plotis
- aukštis
- kampas
- egzistuoja
- rezultatas
Norėdami pasiekti objekto savybę, naudokite dirbtinio intelekto regėjimo jutiklio pavadinimą, po to – „objects“ metodą ir tada – 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į, būtų AIVision1.objects[0].width.
id
Savybė id galima tik AprilTags ir AI klasifikacijoms.
AprilTagatveju, id savybė nurodo aptiktoAprilTag(s) ID numerį.
Konkrečių „AprilTags“ nustatymas 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.
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. žymes 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.
„CenterX“ ir „CenterY“ koordinatės padeda naviguoti ir nustatyti padėtį. Dirbtinio intelekto vaizdo jutiklio skiriamoji geba yra 320 x 240 pikselių.
Matote, kad objektas, esantis arčiau dirbtinio intelekto vaizdo jutiklio, turės žemesnę CenterY koordinatę nei objektas, esantis toliau.
Šiame pavyzdyje, kadangi dirbtinio intelekto vaizdo 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 objektų momentinę kopiją.
AIVision.takeSnapshot(AIVision__Blue);
// Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
jei (AIVision.objectCount > 0) {
jei (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Drivetrain.turn(right);
} else {
Drivetrain.stop();
}
}
wait(5, ms);
}
originX ir originY
„OriginX“ ir „OriginY“ yra aptikto objekto viršutinio kairiojo kampo koordinatė pikseliais.
„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.
Pločio ir aukščio matavimai padeda atpažinti skirtingus objektus. Pavyzdžiui, „Buckyball“ bus didesnio aukščio nei „Ring“.
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ėlynų objektų momentinę kopiją.
AIVision.takeSnapshot(AIVision1__Blue);
// Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
jei (AIVision.objectCount > 0) {
jei (AIVision.objects[0].width < 250.0) {
Pavarų dėžė.drive(pirmyn);
} else {
Pavarų dėžė.stop();
}
}
laukti(5, ms);
}
kampas
Savybė angle galima tikColor Codes irAprilTags
.
Tai nurodo, ar aptiktas Spalvos kodasarba „AprilTag yra orientuotas kitaip.
Galite matyti, ar robotas yra orientuotas kitaipspalvų kodo ar„AprilTag atžvilgiu, ir pagal tai priimti navigacijos sprendimus.
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.
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.
objektų skaičius
„objectCount“ metodas grąžina aptiktų objektų skaičių paskutinėje momentinėje kopijoje.
Šiame pavyzdyje aptikti du objektai, kurių spalvos parašas yrao spalva – „Mėlyna“. Jie abu bus įtraukti į masyvą, kai bus naudojamas „takeSnapshot“ metodas.
Šis kodo fragmentas nuolat atnaujina EXP Brain su aptiktų objektų skaičiumi. Remiantis pateiktu pavyzdžiu, jis pakartotinai siųs reikšmę 2, nurodydamas, kad aptikti du objektai.
while (true) {
// Gauti visų mėlynų objektų momentinę kopiją.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Prieš ištraukiant duomenis, patikrinama, ar momentinėje kopijoje buvo aptiktas objektas.
jei (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
laukia(5, ms);
}