Koodaus tekoälynäköanturilla VEXcode EXP C++:ssa

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:

Tekoälynäköanturi pystyy myös havaitsemaan tekoälyn luokitukset ja AprilTagit. Lisätietoja näiden tunnistustilojen käyttöönotosta on täällä:

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

AI Vision Utility seuraa kolmea AprilTagia. Jokainen tunniste tunnistetaan, paikannetaan ja ääriviivat on merkitty, mikä osoittaa järjestelmän seurannan. Tässä esimerkissä AprilTag-tunnukset ovat 0, 3 ja 9.

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.

AI Vision -apuohjelma seuraa neljää kohdetta: kahta BuckyBall-palloa ja kahta Ringiä. Jokainen kohde tunnistetaan, paikannetaan ja ääriviivat merkitään, mikä osoittaa järjestelmän seurannan. Apuohjelma kirjaa muistiin objektin ID:n. Tässä esimerkissä on punainen pallo, sininen pallo, vihreä rengas ja punainen rengas.

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

Tekoälynäköanturi seuraa sinistä Buckyballia. Buckyballin ympärillä on seurantasuorakulmio, ja yllä oleva merkintä osoittaa, että sen X-sijainti on 176 ja Y-sijainti 117. Seurantasuorakulmion keskikohta on korostettu osoittamaan, että sijainti mitataan keskikohdasta.

CenterX- ja CenterY-koordinaatit auttavat navigoinnissa ja paikannuksessa. Tekoälynäköanturin resoluutio on 320 x 240 pikseliä.

Tekoälyinen näköanturi seuraa kahta sinistä kuutiota. Kuutioiden ympärillä on seurantasuorakulmiot, ja yksi on paljon lähempänä kameraa. Lähempänä olevan Y-akselin sijainti on 184 ja kauempana olevan 70.

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

Tekoälynäköanturi seuraa sinistä Buckyballia. Buckyballin ympärillä on seurantasuorakulmio, ja yllä oleva merkintä osoittaa, että sen X-sijainti on 176 ja Y-sijainti 117. Seurantasuorakulmion vasen yläkulma on korostettu osoittamaan, että lähtöpiste mitataan sen vasemmasta yläkulmasta.

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

Tekoälynäköanturi seuraa sinistä Buckyballia. Buckyballin ympärillä on seurantasuorakulmio, ja yllä oleva teksti osoittaa, että sen leveys on 80 pikseliä ja korkeus 78 pikseliä. Punaiset nuolet korostavat seurantasuorakulmiota havainnollistaen sen leveyttä ja korkeutta.

Leveys- ja korkeusmitat auttavat tunnistamaan erilaisia ​​esineitä. Esimerkiksi Buckyballilla on suurempi korkeus kuin Ringillä.

Tekoälyinen näköanturi seuraa kahta sinistä kuutiota. Kuutioiden ympärillä on seurantasuorakulmiot, ja yksi on paljon lähempänä kameraa. Lähempänä olevan leveys on 144 ja korkeus 113, ja kauempana olevan leveys on 73 ja korkeus 84.

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

Animaatio punaisesta ja vihreästä neliöstä, joita kierretään yhdessä kulman arvon 360 asteen havainnollistamiseksi.

kulma -ominaisuus on käytettävissä vainvärikoodeille ja

Tämä osoittaa, onko havaittu Värikooditai AprilTag eri suunnassa.

Tekoälyinen näköanturi näkyy seuraavana värikoodia, joka alkaa vihreästä ja sitten sinisestä. Videosyötteessä näkyy vihreä kuutio pinottuna sinisen kuution päälle. Värikoodin kulma-arvo on korostettu ja siinä lukee 87 astetta, mikä osoittaa, että värikoodi on pystysuunnassa.

Voit nähdä, onko robotti suunnattu eri tavalla suhteessaColor Code taiAprilTag een, ja tehdä navigointipäätöksiä sen mukaan.

Tekoälyinen näköanturi näkyy seuraavana värikoodia, joka alkaa vihreästä ja sitten sinisestä. Videosyötteessä näkyy vihreä kuutio sinisen kuution vieressä, mutta ne ovat hankalassa kulmassa anturiin verrattuna. Värikoodin kulma-arvo on korostettu ja siinä lukee 0 astetta, mikä tarkoittaa, että värikoodin kulmaa ei voida lukea.

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.

AI Vision -apuohjelma seuraa neljää kohdetta: kahta BuckyBall-palloa ja kahta Ringiä. Jokainen kohde tunnistetaan, paikannetaan ja ääriviivat merkitään, mikä osoittaa järjestelmän seurannan. Apuohjelma listaa myös jokaisen objektin tekoälyluokituspistemäärän, tässä esimerkissä jokainen pistemäärä on 99 %.

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.

Tekoälyinen näköanturi seuraa kahta sinistä kuutiota. Kuutioiden ympärillä on seurantasuorakulmiot, ja yksi on paljon lähempänä kameraa.

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);
}

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

Last Updated: