Varmista, että sinulla on väritunnistetta ja värikoodit määritettynä tekoälynäköanturiisi, jotta niitä voidaan käyttää palikoidesi kanssa. Lisätietoja niiden määrittämisestä on alla olevissa artikkeleissa:
- Väriallekirjoitusten määrittäminen tekoälynäköallekirjoituksella VEXcode EXP:ssä
- Värikoodien määrittäminen tekoälynäköallekirjoituksella VEXcode EXP:ssä
Tekoälynäköanturi pystyy myös havaitsemaan tekoälyn luokitukset ja AprilTagit. Lisätietoja näiden tunnistustilojen käyttöönotosta on täällä:
- Tekoälyluokitukset tekoälynäköanturilla VEXcode EXP:ssä
- AprilTags ja tekoälynäköanturi VEXcode EXP:ssä
Lisätietoja näistä yksittäisistä komennoista ja niiden käytöstä VEXcodessa on API-sivustolla.
Hanki visuaalisia tietoja tekoälynäköanturilla
Jokainen tekoälynäköanturin komento alkaa konfiguroidun tekoälynäköanturin nimellä. Kaikissa tämän artikkelin esimerkeissä käytetyn tekoälynäköanturin nimi on AIVision.
otaSnapshot
takeSnapshot -metodi ottaa kuvan siitä, mitä tekoälynäköanturi sillä hetkellä näkee, ja hakee tästä tilannekuvasta tietoja, joita voidaan sitten käyttää projektissa. Kun tilannekuva otetaan, sinun on määritettävä, minkä tyyppisestä kohteesta tekoälynäköanturin tulisi kerätä tietoja:
- AVäriallekirjoitus taiVärikoodi
- Nämä visuaaliset allekirjoitukset alkavat tekoälynäköanturin nimellä, kaksoisalaviivalla ja sitten visuaalisen allekirjoituksen nimellä, esimerkiksi:
AIVision1__Blue.
- Nämä visuaaliset allekirjoitukset alkavat tekoälynäköanturin nimellä, kaksoisalaviivalla ja sitten visuaalisen allekirjoituksen nimellä, esimerkiksi:
-
Tekoälyluokitukset aivision::
-
huhtikuutaTunnisteet::ALL_TAGS
Tilannekuvan ottaminen luo taulukon kaikista määrittämistäsi havaituista kohteista. Jos esimerkiksi haluat havaita "sinisen" väritunnisteenja tekoälynäköanturi havaitsee 3 erilaista sinistä kohdetta, kaikkien kolmen tiedot lisätään taulukkoon.
Tässä esimerkissä otetaan tilannekuva tekoälynäköanturin AIVision1"sinisestä" väriallekirjoituksesta. Se näyttää matriisissa havaittujen objektien määrän ja ottaa uuden tilannekuvan 0,5 sekunnin välein.
while (true) {
// Ota tilannekuva kaikista sinisistä objekteista.
AIVision.takeSnapshot(AIVision1__Blue);
// Tarkistetaan, että tilannevedoksesta on havaittu objekti ennen datan hakemista.
jos (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
odota(5, millisekuntia);
}
esineet
Jokaisella tilannevedoksen objektilla on erilaisia ominaisuuksia, joita voidaan käyttää objektin tietojen raportointiin. objects-metodi antaa sinulle mahdollisuuden käyttää näitä ominaisuuksia.
Saatavilla olevat ominaisuudet ovat seuraavat:
- tunnus
- keskipiste X ja keskipiste Y
- alkuperäX ja alkuperäY
- leveys
- korkeus
- kulma
- olemassa
- pisteet
Päästäksesi objektin ominaisuuteen, käytä tekoälynäköanturin nimeä, sen jälkeen objects-metodia ja lopuksi objektin indeksiä.
Objekti-indeksi osoittaa, minkä tietyn objektin ominaisuuden haluat noutaa. Otettuaan tilannekuvan tekoälynäköanturi lajittelee objektit automaattisesti koon mukaan. Suurimmalle objektille annetaan indeksi 0, ja pienemmille objekteille annetaan suurempi indeksinumero.
Esimerkiksi suurimman objektin leveyden kutsuminen olisi AIVision1.objects[0].width.
tunnus
Ominaisuus id on käytettävissä vain tekoälyluokituksissa AprilTags ja
AprilTag-tunnisteelle id -ominaisuus edustaa havaitunAprilTag/Tag-tunnisteen/tunnisteiden tunnistenumeroa.
Tiettyjen AprilTags tunnistaminen mahdollistaa valikoivan navigoinnin. Voit ohjelmoida robottisi liikkumaan tiettyjä merkkejä kohti ja jättämään toiset huomiotta, jolloin voit käyttää niitä tehokkaasti opasteina automaattiseen navigointiin.
Jos tekoälyluokituksia on, id -ominaisuus edustaa havaitun tekoälyluokituksen tiettyä tyyppiä.
Tiettyjen tekoälyluokittelujentunnistaminen sallii robotin keskittyä vain tiettyihin kohteisiin, kuten haluta navigoida vain punaista Buckyballia kohti, ei sinistä.
Lisätietoja AprilTags ja AI Classifications -luokituksista ja niiden tunnistuksen ottamisesta käyttöön AI Vision Utility -apuohjelmassa on näissä artikkeleissa.
keskikohta X ja keskikohta
Tämä on havaitun kohteen keskipisteen koordinaatit pikseleinä.
CenterX- ja CenterY-koordinaatit auttavat navigoinnissa ja paikannuksessa. Tekoälynäköanturin resoluutio on 320 x 240 pikseliä.
Voit nähdä, että lähempänä tekoälynäköanturia olevalla objektilla on matalampi CenterY-koordinaatti kuin kauempana olevalla objektilla.
Tässä esimerkissä, koska tekoälynäköanturin näkymän keskipiste on (160, 120), robotti kääntyy oikealle, kunnes havaitun kohteen keskipisteen X-koordinaatti on suurempi kuin 150 pikseliä, mutta pienempi kuin 170 pikseliä.
while (true) {
// Ota tilannekuva kaikista sinisistä objekteista.
AIVision.takeSnapshot(AIVision__Blue);
// Tarkistetaan, että tilannevedoksesta havaittiin objekti ennen datan hakemista.
jos (AIVision.objectCount > 0) {
jos (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Voimansiirto.käännös(oikea);
} muuten {
Voimansiirto.pysäytys();
}
}
odota(5, millisekuntia);
}
alkuperäX ja alkuperäY
OriginX ja OriginY on havaitun objektin vasemmassa yläkulmassa oleva koordinaatti pikseleinä.
OriginX- ja OriginY-koordinaatit auttavat navigoinnissa ja paikannuksessa. Yhdistämällä tämän koordinaatin objektin leveyteen ja korkeuteen voit määrittää objektin rajaavan laatikon koon. Tämä voi auttaa liikkuvien kohteiden seuraamisessa tai kohteiden välillä navigoinnissa.
leveys ja korkeus
Tämä on havaitun kohteen leveys tai korkeus pikseleinä.
Leveys- ja korkeusmitat auttavat tunnistamaan erilaisia esineitä. Esimerkiksi Buckyballilla on suurempi korkeus kuin Ringillä.
Leveys ja korkeus osoittavat myös kohteen etäisyyden tekoälynäköanturista. Pienemmät mitat tarkoittavat yleensä, että kohde on kauempana, kun taas suuremmat mitat viittaavat siihen, että se on lähempänä.
Tässä esimerkissä objektin leveyttä käytetään navigointiin. Robotti lähestyy kohdetta, kunnes sen leveys on saavuttanut tietyn koon, ennen pysähtymistä.
while (true) {
// Ota tilannekuva kaikista sinisistä objekteista.
AIVision.takeSnapshot(AIVision1__Blue);
// Tarkistetaan, että tilannevedoksesta havaittiin objekti ennen datan hakemista.
jos (AIVision.objectCount > 0) {
jos (AIVision.objects[0].width < 250.0) {
Voimansiirto.drive(eteenpäin);
} muuten {
Voimansiirto.stop();
}
}
odota(5, millisekuntia);
}
kulma
kulma -ominaisuus on käytettävissä vainvärikoodeille ja
Tämä osoittaa, onko havaittu Värikooditai AprilTag eri suunnassa.
Voit nähdä, onko robotti suunnattu eri tavalla suhteessaColor Code taiAprilTag een, ja tehdä navigointipäätöksiä sen mukaan.
Jos esimerkiksivärikoodia ei havaita oikeassa kulmassa, robotti ei välttämättä pysty poimimaan sitä edustavaa kohdetta oikein.
pisteet
pistemäärä -ominaisuutta käytetään, kun tekoälynäköanturilla havaitaantekoälyluokitusta.
Luotettavuuspistemäärä osoittaa, kuinka varma tekoälynäköanturi on havaitsemisestaan. Tässä kuvassa se tunnistaa näiden neljän objektin tekoälyluokitukset 99-prosenttisen varmasti. Voit käyttää tätä pisteytystä varmistaaksesi, että robottisi keskittyy vain erittäin luotettaviin havaintoihin.
olemassa
Ominaisuutta exists käytetään havaitsemaan, onko viimeksi otetussa tilannevedoksessa havaittu määritetty visuaalinen allekirjoitus.
Näin voit tarkistaa, havaittiinko edellisessä tilannevedoksessa havaittuja kohteita. Tämä ominaisuus palauttaa arvon True, kun objekti on olemassa, ja arvon False, kun objektia ei ole olemassa.
objektien määrä
objectCount-metodi palauttaa viimeisimmässä tilannevedoksessa havaittujen objektien määrän.
Tässä esimerkissä on havaittu kaksi kohdetta, joiden väritunniste onja väri "Sininen". Molemmat lisätään taulukkoon, kun takeSnapshot-metodia käytetään.
Tämä koodinpätkä päivittää jatkuvasti EXP Brainia havaittujen objektien lukumäärällä. Annetun esimerkin perusteella se lähettää toistuvasti arvon 2, mikä osoittaa, että kaksi kohdetta on havaittu.
while (true) {
// Ota tilannekuva kaikista sinisistä objekteista.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Tarkistetaan, että tilannevedoksesta on havaittu objekti ennen datan hakemista.
jos (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
odota(5, millisekuntia);
}