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:

Kaavio, joka havainnollistaa VEX AI:n käyttöprosessia, esittelee tärkeimmät komponentit ja työnkulkua V5-robotiikkajärjestelmien tehokkaaseen käyttöönottoon.

Robotin sijaintitiedot:

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

Objektin tunnistustiedot (kolme tyyppiä):

Kaavio, joka havainnollistaa VEX AI -järjestelmän komponentteja ja niiden vuorovaikutusta, ja näyttää kuinka VEX AI parantaa robotiikan toimintoja V5-kategoriassa.

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.

 

Kaavio, joka havainnollistaa VEX AI:n ominaisuuksia ja komponentteja, korostaa sen sovelluksia ja etuja robotiikassa osana V5-kategorian kuvausta.

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):

Kaavio, joka havainnollistaa VEX AI -järjestelmän komponentteja ja niiden vuorovaikutusta, korostaa V5-robotiikkaalustan tärkeimpiä ominaisuuksia ja toimintoja.

  • 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

Kaavio, joka havainnollistaa VEX AI:n ominaisuuksia ja toimintoja V5-kategoriassa ja näyttää kuinka teknologiaa käytetään tehokkaasti robotiikkasovelluksissa.

Standardi sisältää VEX-projekteille:

Kaavio, joka havainnollistaa VEX AI -järjestelmän osia ja niiden vuorovaikutuksia osana V5-kategorian kuvausta VEX AI:n käyttö -osiossa.

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

Kaavio, joka havainnollistaa VEX AI:n ominaisuuksia ja komponentteja V5-robotiikan kontekstissa, korostaa tärkeimpiä toimintoja ja käyttöohjeita.

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

    Kaavio, joka havainnollistaa VEX AI:n ominaisuuksia ja komponentteja V5-robotiikkajärjestelmässä ja korostaa sen kykyjä parantaa robotin suorituskykyä ja ohjelmointia.

    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ää()

    Kaavio, joka havainnollistaa VEX AI:n ominaisuuksia ja toimintoja V5-kategoriassa, korostaen avainkomponentteja ja niiden vuorovaikutuksia parannetun robotiikan ohjelmoinnin ja automaation kannalta.

    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: