VEX AI -robotin koodaus

Tämä artikkeli kattaa esimerkkiprojektin, joka näyttää kojelaudan, joka raportoi robottien ja robottien välisen viestinnän tilan VEXlinkin avulla sekä tilan Jetsonille. Ai_demo-projektia isännöi Github. Tämä demoprojekti kerää tietoja Jetson-prosessorista USB-sarjaliitännän kautta. Kun tiedot on vastaanotettu, ne näkyvät V5 Brainin näytöllä ja lähetetään myös kumppani V5-robotille, joka on yhdistetty VEXlinkin kautta.

Huomautus: Tämä projekti vaatii uusimman version VS Code Extension for V5. Lataa VS Code Extension for V5 tästä.


NVIDIA Jetson Nanosta VEX V5 Brain Communicationsille

Jetson-prosessori sisältää sovelluksen, joka kerää seuraavat tiedot VEX AI -ohjelmistosta:

OverUnder.png

Robotin sijaintitiedot:

  • Robotin X,Y sijainti metreinä pellon keskustasta.
  • Robotin atsimuutti (suunta), korkeus (pituus), kierto (rulla) kaikki radiaaneina.

Objektin tunnistustiedot (kolme tyyppiä):

Pikseli (0,0).png

Kuvantunnistus (tyyppi yksi):
  • Nämä tiedot edustavat VEX AI Intel -kameran havaitsemaa kohdetta.
  • Nämä tiedot kuvaavat kohdetta viitaten kameran kuvaan.
  • X:n, Y:n, leveyden ja korkeuden arvot ovat pikseleinä. Pikseliarvot viittaavat kuvan ja kohteen tunnistusruudun vasempaan yläkulmaan. Kuvan resoluutio on 640x480.

 

AI XY (1).png

Kartan tunnistus (tyyppi kaksi):

  • Nämä tiedot edustavat kohteen sijaintia pellolla samassa koordinaattijärjestelmässä kuin GPS-sensori, metreinä.
  • Jokainen objekti sisältää myös kohteen sijainnin suhteessa kentän keskipisteeseen. X:n ja Y:n arvot ovat metreinä pellon keskipisteestä vastaavalla akselillaan. Z:n arvo on metriä peltolaatoista (korkeus).

Havaintoobjekti (tyyppi kolme):

Rakenteet.PNG

  • Tämä kapseloi kaikki tiedot havaituista kohteista.
  • Jokainen objekti sisältää arvon, joka edustaa havaitun kohteen luokittelua. (Luokan tunnus: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Jokainen objekti sisältää myös todennäköisyyden, joka edustaa VEX AI:n luottamusta ilmaisuun. Tämä tapahtuu model.py-tiedoston suodattimen jälkeen, joka poistaa alhaisen todennäköisyyden havainnot.
  • Lisäksi kohteen syvyys raportoidaan metreinä VEX AI Intel -kamerasta.
  • Kuvantunnistus ja kartantunnistus on liitetty jokaiseen kohteeseen edustamaan kohteen koordinaatit kuvassa sekä todellisessa maailmassa.

Ai_demo-ohjelman erittely:

Main.cpp

image5.png

Standardi sisältää VEX-projekteille:

image7.png

Ilmoita Jetson-luokan esiintymä. Tätä luokkaa käytetään datapyyntöjen lähettämiseen Jetsonille sekä tietojen vastaanottamiseen USB-sarjaliitännän kautta.

#define MANAGER_ROBOT 1

Define_manager_robot_1.png

Ilmoita robot_link-luokan esiintymä. Tätä objektia käytetään yhdistämään ja siirtämään tietoja tämän robotin ja kumppanirobotin välillä. Tämä sama projekti voidaan ladata kahdelle erilliselle robotille. Yksi robotti tarvitsee rivin:

//#define MANAGER_ROBOT 1

Ennen kuin lataat koodin toiseen robottiin, sinun on kommentoitava tämä rivi:

Robot_link-luokka perustaa robotin VEXlinkin ja hoitaa datan lähettämisen ja vastaanottamisen kahden robotin välillä. Emme aio mennä tässä artikkelissa yksityiskohtiin siitä, kuinka tämä luokka toimii. Olisi hyvä idea ensin ymmärtää, miten VEXlink toimii. Jos haluat lisätietoja V5 VEXlink API:n käytöstä, tässä asiakirjassa selitetään uudet kirjastot ja kuinka niitä käytetään tehokkaasti robottien välisessä viestinnässä.

  • Kilpailutapahtumien ohjaajat

    firstAutoFlag.png

    Yksi suurimmista eroista VAIC:n ja VRC:n välillä on, että kuljettajan valvontajaksoa ei ole. Sen sijaan on kaksi autonomista jaksoa, eristysjakso ja vuorovaikutusjakso. Tässä esimerkissä jokaiselle autonomiselle ajanjaksolle on erilliset rutiinit. Koska VEX API ei tue kahta eri takaisinsoittoa, ohjelmassa on oltava lippu, joka määrittää suoritettavan rutiinin. Tässä esimerkkiohjelmassa "firstAutoFlag" -toimintoa käytetään kutsumaan eristystoimintoa, kun autonominen otetaan käyttöön ensimmäisen kerran, ja vuorovaikutustoimintoa, kun autonominen otetaan käyttöön toisen kerran. Yksi huomioitava asia on, että jos ottelu jostain syystä on nollattava, demo-ohjelma on käynnistettävä uudelleen, jotta ensimmäinen AutoFlag voidaan nollata.

  • Pää()

    Main (1).PNG

    Tämä on tämän projektin päätehtävä. Se alkaa kutsumalla vexcodeInit() määrittääkseen VEXcode-ympäristön oikein. Seuraavaksi paikallinen AI_RECORD-objekti määritetään tallentamaan Jetsonilta saamamme tiedot. Erillinen tehtävä on myös asetettu käsittelemään näytön päivittämistä uusimmilla tiedoilla. Tehtävän koodi on dashboard.cpp-tiedostossa. Autonominen takaisinsoitto on myös rekisteröity käsittelemään autonomisten jaksojen alkaessa.

    Main while()-silmukka alkaa kopioimalla uusimmat tiedot jetson_comms-objektista paikalliseen AI_RECORD-objektiin. Sitten se välittää robotin sijaintitiedot linkkiobjektille, jotta se voidaan välittää kumppanirobotillemme. Kun se on käsitellyt tiedot, se pyytää lisää tietoja Jetsonilta ja nukkuu 66 millisekuntia. Näiden tietojen kyselytaajuus on 15 Hz. Ei ole mitään syytä kyselyyn nopeammin, koska tekoälyjärjestelmän tiedot päivittyvät noin 15 Hz:n taajuudella.

    Huomautus: Jetson-karttatietoja tarvitsee pyytää vain yksi tehtävä.

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

Last Updated: