Tietojen kirjaaminen VEX-aivoilla ja Python-antureilla

Johdanto

Tässä artikkelissa keskustelemme siitä, kuinka luodaan tiedonkeruuprojekti, joka ohjeistaa VEX-robottia keräämään tietoja VEX Brainin avulla ja tallentamaan ne CSV-tiedostoon SD-kortille tietojen analysointia varten.

Tiedon kirjaus on tehokas työkalu, jolla voimme auttaa tieteellistä tutkimusta, suorittaa omia kokeitamme ja ratkaista tiettyjä ongelmia. On olemassa erilaisia ​​hauskoja ja jännittäviä tehtäviä, joita voimme ajaa VEX Robotilla suorittamaan tiedonkeruun avulla. Seuraavassa on joitain esimerkkejä:

  • Tietojen kerääminen etäisyysanturilla robotin nopeuden laskemiseksi.
  • Robotin ajaminen luokkahuoneessa ja tietojen kerääminen optisella sensorilla valonmuutosten tarkkailemiseksi eri paikoissa.
  • Robotin vieminen seikkailuun ja GPS-koordinaattitietojen tallentaminen kartan luomiseksi.

Tietojen kirjausprojektin kehittämiseen tarvittavat koodaustaidot

  • Käytä erilaisia ​​komentoja tietojen keräämiseen VEX Brain/Sensors -sovelluksella ja lisää ne tietorakenteeseen.
  • Kirjoita tiedot SD-kortille CSV-tiedostoon (Comma-Separated Values).

Tietojen kirjaamiseen vaadittava laitteisto:

  • VEX-aivot (IQ, V5, EXP)
  • SD-kortti
  • Anturi tai useita antureita (valinnainen, vaadittujen tietojen mukaan)

Tietojen hakeminen anturista

Voimme ohjelmoida VEX Robotin (IQ, V5, EXP) sieppaamaan tiedot seuraavista antureista:

  • Inertia-anturi
  • Etäisyys anturi
  • Optinen anturi
  • Vision anturi
  • Pyörimisanturi (V5, EXP)
  • GPS-sensori (V5)

Huomautus: VEX IQ (2. sukupolvi) Brainissa ja VEX EXP Brainissa on sisäänrakennettu inertia-anturi. Voimme kerätä inertia-anturin tietoja näillä VEX-aivoilla.

Tässä artikkelissa kehitämme tiedonkeruuprojektin, joka kerää kiihtyvyystiedot VEX IQ Brainilla (2. sukupolvi) ja tallentaa ne SD-kortille. 

Ensin meidän on kirjoitettava lyhyt ohjelma saadaksemme lukemat VEX IQ Brainissa (2. sukupolvi) sisäänrakennetusta ajastimesta ja inertia-anturista.

  • Tämän ohjelman alussa meidän on tuotava Python-moduulit ohjataksemme VEX IQ Brain (2. sukupolvi) ja haettava tiedot siitä. Aloita siis lisäämällä nämä ohjeet projektiin.

    Kaavio, joka havainnollistaa V5-robotin komponentteja ja ominaisuuksia, jota käytetään Python-opetusohjelmissa robotiikan opetustarkoituksiin.

  • Lisää seuraavaksi koodi, joka ilmoittaa muuttujan numOfDataEntries tallentaaksesi datasyötteiden määrän, ilmoittaa muuttuja polling_delay_msec tallentaaksesi aikavälin datan lukemista varten ja luo tyhjä merkkijonomuuttuja data_buffer tallennettavaksi. anturin lukemat tiedot.

    Kaavio, joka havainnollistaa sensorista luetun tiedon tallentamista VEX V5:ssä Pythonin avulla, sisältää koodinpätkät ja visuaaliset esitykset tietovirrasta ja tallennusmenetelmistä.

  • Koska käytämme ajastimen nykyistä arvoa aikaleiman lisäämiseen tietoihin, meidän on palautettava ajastimen arvo takaisin 0 sekuntiin ennen tietojen keräämisen aloittamista.

    Näyttökuva, joka näyttää VEX V5 -ajastimen nollausprosessin Pythonissa, havainnollistaen kuinka ajastimen arvo asetetaan takaisin 0 sekuntiin ennen tiedonkeruuta.

  • Ennen kuin käytät ohjetta, joka hakee tiedot VEX IQ Brainista (2.) ja tallentaa tiedot puskuriin, meidän on ensin ymmärrettävä se.
    Seuraava ohje liittää nykyisen ajastimen arvon data_buffer -muuttujaan tietyssä muodossa.

    Kaavio, joka havainnollistaa Pythonin muuttujan muotoa, jota käytetään Python-opetusohjelmien V5:n luokkakuvauksessa ja joka näyttää muuttujan rakenteen ja komponentit.

    Puretaan muotomerkkijono “%1.3f”

    • "%": Esittelee muunnosmääritteen.
    • "1": Ilmaisee merkkijonossa olevien numeroiden vähimmäismäärän.
    • ".3": Määrittää muotoiltuun numeroon sisällytettävien desimaalien määrän.
    • "f": Ilmaisee, että muotoiltava arvo on liukuluku.

    Näin ollen voimme käyttää muotomerkkijonoa “%1.3f” muotoillaksesi liukulukua, jonka leveys on vähintään 1 numero ja jonka tarkkuus on 3 desimaalia.

  • Nyt voimme lukea VEX IQ Brainissa (2. sukupolvi) sisäänrakennetun inertia-anturin ajastimen ja kiihtyvyysarvon ja sitten liittää tiedot data_buffer -muuttujaan määritetyssä muodossa.

    Kaavio, joka havainnollistaa muuttuvaa muotoa Pythonissa, osa V5:n luokkakuvausta, Python Tutorials -osiossa. Kuva esittää visuaalisesti Python-ohjelmoinnin muuttujien rakennetta ja käyttöä.

    Huomautus: “\n” on uuden rivin merkki. Se osoittaa, että rivi päättyy tähän ja uuden rivin alkuun.

  • Sitten, jotta voimme tallentaa tietyn määrän datasyötteitä muuttujaan data_buffer , voimme käyttää for silmukkaa suorittamaan toistuvasti käskyt, jotka hakevat tiedot, ja liittääksemme tiedot data_buffer -muuttujaan useiden iteraatioiden ajaksi. Strategiamme on käyttää muuttujan numOfDataEntries arvoa iteraatioiden määrän määrittämiseen.

    Kaavio, joka havainnollistaa iteraatioiden määrää VEX V5 Python -opetusohjelmassa, näyttää datapisteitä ja trendejä, jotka liittyvät ohjelmointiiteraatioihin robotiikassa.

  • Toistaiseksi ohjelmamme tallentaa tiedot niin nopeasti kuin mahdollista. Haluamme kuitenkin tallentaa tietoja tietyin aikavälein. Siksi voimme käyttää wait() -funktiota for -silmukassa keskeyttääksemme ohjelman lisätäksemme tietyn aikavälin kahden lukeman välille. Käytämme muuttujan polling_delay_msec arvoa määrittääksemme aikavälin arvon.

    Kaavio, joka havainnollistaa aikavälin arvon määritysprosessia Pythonissa ja esittelee keskeisiä muuttujia ja niiden suhteita. V5 Python-opetusohjelmiin liittyvä.

Onnittelut! Olemme saaneet päätökseen ohjelman saadaksemme lukemat (kiihtyvyystiedot) VEX-aivoihin rakennetusta inertia-anturista. Seuraavaksi tutkimme, kuinka tiedot kirjoitetaan CSV-tiedostoon SD-kortille.

Kaavio, joka havainnollistaa Python-opetusohjelmien V5-luokkarakennetta, sisältäen avainkomponentit ja suhteet VEX Robotics -ekosysteemissä.




SD-kortin kiinnittäminen VEX Brainiin

Ennen kuin kirjoitat tiedot SD-kortilla olevaan tiedostoon, aseta SD-kortti ensin VEX Brainin SD-korttipaikkaan.

Kaavio, joka havainnollistaa V5-robotin kokoonpanoa Python-opetusohjelmia varten, esittelee tärkeimmät komponentit ja niiden liitännät opetustarkoituksiin.

Huomautus: Alusta SD-kortti FAT32-muotoon tietojen kirjoittamista varten. Suosittelemme käyttämään SD-kortteja, joiden koko on enintään 32 Gt.

Varmistaaksemme, että tietojen kirjoittaminen SD-kortilla olevaan tiedostoon voidaan suorittaa asianmukaisissa olosuhteissa, meidän on lisättävä koodi tarkistaaksemme, onko SD-kortti asetettu oikein VEX IQ Brainiin (2. sukupolvi).

  • Käytä funktiota brain.sdcard.is_inserted() tarkistaaksesi, onko SD-kortti paikallaan. Jos SD-korttia ei ole asetettu, näytä vastaava viesti VEX IQ Brain -näytössä ja pidä ohjelmaa.

    Screenshot of VEX IQ Brain screen displaying a message indicating that the SD card is not inserted, with instructions for holding the program. Relevant to Python tutorials in the V5 category.


    Huomautus: funktio brain.sdcard.is_inserted() palauttaa True, jos SD-kortti asetetaan aivoihin.

Tietojen kirjoittaminen SD-kortilla olevaan CSV-tiedostoon

Toistaiseksi ohjelmamme voi kerätä tietoja VEX IQ Brainilla (2. sukupolvi). Tiedonkeruuprojektin viimeistelemiseksi meidän on kirjoitettava tiedot CSV-tiedostoon (Comma-Separated Values) SD-kortille myöhempää tarkastelua ja analysointia varten.

  • Kun kirjoitetaan erityyppisiä tietoja CSV-tiedostoon, haluamme tietää, minkä tyyppisiä tietoja kukin sarake sisältää. Tätä varten voimme liittää CSV-otsikon tekstin muuttujaan data_buffer ennen tietojen tallentamista.
    Näin ollen lisää koodi ilmoittaaksesi muuttujan csvHeaderText tallentaaksesi CSV-otsikon tekstin määrittääksesi CSV-tiedoston sarakkeiden nimet ja ilmoittaaksesi muuttujan sd_file_name säilyttääksesi CSV-tiedoston nimen kirjoitettavaksi Sd-kortti.

    Kaavio, joka havainnollistaa Python-opetusohjelmien V5-luokan kuvausta, esittelee tärkeimmät komponentit ja niiden suhteet visuaalisessa muodossa.

Huomautus: Varmista, että otsikot ovat samassa järjestyksessä kuin data_buffer -muuttujaan tallennetut tiedot.

  • Liitä seuraavaksi CSV-otsikon teksti data_buffer -merkkijonoon ennen for silmukkaa tiedonkeruuta varten.

    Kaavio, joka havainnollistaa V5 Python -ohjelmointiympäristöä, esittelee tärkeimmät komponentit ja niiden toiminnot, jotka liittyvät V5:n luokkakuvaukseen ja Python-opetusohjelmiin.

  • Ennen kuin kirjoitat tietoja SD-kortilla olevaan tiedostoon, meidän on ymmärrettävä, miten funktiota brain.sdcard.savefile() käytetään.

    Kaavio, joka havainnollistaa Python-opetusohjelmien V5-kategorian kuvausta ja esittelee VEX V5 -robotiikkajärjestelmän avainkomponentteja ja toimintoja.


    Tämä ohje kirjoittaa muuttujaan data_buffer tallennetut tiedot nimettyyn CSV-tiedostoon SD-kortilla.
    Puretaan se:
    • brain.sdcard.savefile(): Toiminto tallentaa tavutaulukon nimettyyn tiedostoon SD-kortille. Funktio palauttaa tiedostoon kirjoitettujen tavujen määrän.

    • sd_tiedoston_nimi: funktion ensimmäinen parametri. Ilmaisee kirjoitettavan tiedoston nimen. Tässä projektissa tiedoston nimi on tallennettu muuttujaan sd_file_name.

    • bytearray(datat_buffer,'utf-8'): Funktion toinen parametri. Edustaa tiedostoon kirjoitettavaa tavutaulukkoa.

        • bytearray(): Menetelmä luo muuttuvan tavutaulukon. Tässä ohjeessa käytämme sitä muuntamaan merkkijono tavutaulukoksi määrittämällä koodauksen.
        • data_buffer: Menetelmän ensimmäinen parametri. Osoittaa lähteen, joka muunnetaan tavuryhmäksi. Tässä projektissa lähde on muuttujaan data_buffer tallennettu data. 
        • 'utf-8': Metodin toinen parametri. Ilmaisee määritetyn koodauksen, jota käytetään merkkijonon koodaamiseen. Koodaus on "utf-8" tässä ohjeessa. 
  • Tiedonkeruun silmukan n jälkeen käytä funktiota brain.sdcard.savefile() kirjoittaaksesi muuttujaan data_buffer tallennetut tiedot SD-kortin CSV-tiedostoon. Lisäksi lisää koodi tarkistaaksesi palautusarvon funktiosta brain.sdcard.savefile() varmistaaksesi, että tiedot on kirjoitettu tiedostoon onnistuneesti, ja näytä vastaava viesti VEX IQ Brain -näytössä saadaksesi todellisen aika palautetta.

    Diagram illustrating the V5 robot's components and their functions, used in Python tutorials for educational purposes.


    Huomautus: Funktio brain.sdcard.savefile() palauttaa tiedostoon kirjoitettujen tavujen määrän. Tässä projektissa käytämme sitä kerättyjen tietojen kirjoittamiseen CSV-tiedostoon, joten tiedostoon kirjoitettavien tavujen määrän on oltava suurempi kuin nolla. Toisin sanoen, jos funktio brain.sdcard.savefile() palauttaa arvon 0, voimme päätellä, että tietoja ei ole kirjoitettu tiedostoon onnistuneesti. Muuten tiedot on kirjoitettu tiedostoon.

Onnittelut! Olemme kehittäneet tiedonkeruuprojektin, joka kerää kiihtyvyystiedot VEX IQ Brainilla (2. sukupolvi) ja tallentaa ne CSV-tiedostoon SD-kortille. Seuraavaksi tutkimme, kuinka CSV-tiedosto avataan tietojen analysointia varten. 

V5-robotin komponentteja ja niiden toimintoja kuvaava kaavio, jota käytetään Python-tutoriaaleissa VEX-robotiikan ohjelmointiin. Kuva tarjoaa visuaalisen viittauksen oppijoille laitteiston asennuksen ymmärtämiseen.

CSV-tiedoston avaaminen tietojen analysointia varten

Kun tiedot on kirjoitettu SD-kortilla olevaan CSV-tiedostoon, voimme taulukkolaskentasovelluksella avata tiedoston tietojen lukemista ja analysointia varten. 

Huomautus: Kaksi yleisintä taulukkolaskentasovellusta ovat Google Sheets ja Microsoft Excel. Tässä artikkelissa käytämme Google Sheetsia (Web-pohjainen) SD-kortilla olevan CSV-tiedoston avaamiseen. Muiden sovellusten käyttöprosessi on samanlainen.

  • Irrota SD-kortti VEX IQ Brainin SD-korttipaikasta. Jos tietokoneessa on sisäänrakennettu Micro SD -korttipaikka, voimme asettaa SD-kortin suoraan siihen. Muussa tapauksessa aseta SD-kortti SD-korttisovittimeen ja liitä sitten sovitin tietokoneeseen. 
  • Kirjaudu sisään Google-tiliimme ja avaa Google Sheets. Luo uusi laskentataulukko.
  • Avaa laskentataulukossa "File" -valikko, valitse "Import" -> "Upload" -> "Selaa" ja valitse sitten CSV-tiedosto tietokoneelta. Kun olet ladannut CSV-tiedoston, napsauta "Import Data" -painiketta. Kun tiedot on tuotu, napsauta "Avaa nyt" nähdäksesi kerätyt tiedot CSV-tiedostossa.

    VEX V5 Python opetusohjelman yleiskuvaus, joka havainnollistaa VEX-robotiikan ohjelmoinnin keskeisiä käsitteitä ja resursseja.

  • (Valinnainen) Yksi helppo tapa analysoida tietoja on piirtää kaavio ja etsiä sitten tiedoista suuntauksia. Avaa laskentataulukossa valikko "Insert" ja valitse "Chart" piirtääksesi kaavion käyttämällä CSV-tiedoston tietoja. Seuraava kaavio on tulos VEX IQ Brainilla (2. sukupolvi) kerätyistä kiihtyvyystiedoista.

    Diagram illustrating the V5 Python tutorial structure, showcasing various components and their relationships in a clear and organized manner, designed to aid users in understanding the programming framework for VEX robotics.


    Huomautus: Voimme käyttää Kaavioeditoria valitaksesi toisen kaaviotyypin tai muokataksesi kaaviota tarpeidemme mukaan.

Tähän mennessä olemme saaneet päätökseen tiedonkeruuprojektin, joka kerää tietoja VEX IQ Brainilla (2. sukupolvi) ja tallentaa ne CSV-tiedostoon SD-kortille. Olemme myös oppineet lukemaan SD-kortilla olevan CSV-tiedoston Google Sheetsin avulla ja jopa luomaan kaavion jatkoanalyysiä varten. Mitä seuraavaksi? Yritetään suunnitella jännittävämpiä kokeita VEX Robotin avulla tiedonkeruussa, tarkkailla kuinka muuttuvat ympäristötekijät vaikuttavat erilaisiin tietotyyppeihin ja saada syvempää ymmärrystä ympäröivästä maailmasta.

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

Last Updated: