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äritunnisteiden määrittäminen tekoälynäköanturilla VEXcode V5:ssä
- Värikoodien määrittäminen tekoälynäköanturilla VEXcode V5: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älyluokitusten käyttö tekoälynäköanturin kanssa
- AprilTags-sovelluksen käyttö tekoälynäköanturin kanssa
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 ai_vision_1.
ota_kuva
take_snapshot -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:
ai_vision_1__Sininen.
- Nämä visuaaliset allekirjoitukset alkavat tekoälynäköanturin nimellä, kaksoisalaviivalla ja sitten visuaalisen allekirjoituksen nimellä, esimerkiksi:
-
Tekoälyluokitukset
-
AiVision.ALL_TAGS
Tilannevedoksen ottaminen luo tuplen kaikista määrittämistäsi havaituista objekteista. Jos esimerkiksi haluat havaita "sinisen" väritunnisteenja tekoälynäköanturi havaitsee 3 erilaista sinistä kohdetta, kaikkien kolmen tiedot lisätään tupleen.
Tässä esimerkissä muuttuja vision_objects tallentaa tuplen, joka sisältää tekoälynäköanturista nimeltä ai_vision_1havaitut "violetit"väritunnisteet. Se näyttää havaittujen kohteiden määrän ja ottaa uuden tilannekuvan 0,5 sekunnin välein.
while True:
# Hakee tilannekuvan kaikista purppuranvärisistä allekirjoituksista ja tallentaa sen vision_objects-kansioon.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Tarkistetaan, että tilannekuvasta on havaittu objekti ennen datan hakemista.
jos vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Objektien määrä:", len(vision_objects))
wait(0.5, SEKUNTIA)
Objektin ominaisuudet
Jokaisella tilannevedoksen objektilla on erilaisia ominaisuuksia, joita voidaan käyttää objektin tietojen raportointiin. Käytettävissä olevat ominaisuudet ovat seuraavat:
- tunnus
- keskipiste X ja keskipiste Y
- alkuperäX ja alkuperäY
- leveys
- korkeus
- kulma
- pisteet
- olemassa
Päästäksesi objektin ominaisuuteen, käytä tuplen sisältävää muuttujan nimeä ja sen perään 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 muuttujan vision_objects sisällä olevan suurimman objektin leveyden kutsuminen olisi: vision_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:
# Hakee tilannekuvan kaikista sinisistä allekirjoituksista ja tallentaa sen vision_objects-kansioon.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Tarkistetaan, että tilannekuvasta on havaittu objekti ennen datan hakemista.
if vision_objects[0].exists == True
# Tarkistetaan, onko kohde tekoälynäköanturin näkymän keskellä.
jos vision_objects[0].centerX > 150 ja 170 > vision_objects[0].centerX:
# Jatka kääntymistä oikealle, kunnes kohde on näkymän keskellä.
voimansiirto.käännös(OIKEA)
muuten:
voimansiirto.pysäytys()
odota(5, MSEC)
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:
# Hakee tilannekuvan kaikista sinisen värin allekirjoituksista ja tallentaa sen vision_objects-kansioon.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Tarkistetaan, että tilannekuvasta on havaittu objekti ennen datan hakemista.
if vision_objects[0].exists == True
# Tarkistetaan, onko suurin kohde lähellä tekoälynäköanturia mittaamalla sen leveys.
if vision_objects[0].width < 250:
# Aja lähemmäs kohdetta, kunnes se on leveämpi kuin 250 pikseliä.
voimansiirto.drive(ETEEN)
muuten:
voimansiirto.stop()
odota(5, MSEC)
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.