Duomenų registravimas naudojant VEX smegenis ir jutiklius naudojant Python

Įvadas

Šiame straipsnyje aptarsime, kaip sukurti duomenų registravimo projektą, kuris nurodytų VEX robotui rinkti duomenis su VEX Brain ir išsaugoti juos CSV faile SD kortelėje duomenų analizei.

Duomenų registravimas yra galingas įrankis, kurį galime naudoti norėdami padėti moksliniams tyrimams, atlikti savo eksperimentus ir spręsti konkrečias problemas. Yra įvairių įdomių ir įdomių užduočių, kurias galime vairuoti VEX robotu ir atlikti registruodami duomenis. Toliau pateikiami keli pavyzdžiai:

  • Duomenų rinkimas su atstumo jutikliu roboto greičiui apskaičiuoti.
  • Vairuoti robotą po klasę ir rinkti duomenis su optiniu jutikliu, kad būtų galima stebėti šviesos pokyčius įvairiose vietose.
  • Roboto išleidimas į nuotykius ir GPS koordinačių duomenų įrašymas, kad būtų sukurtas žemėlapis.

Kodavimo įgūdžiai, reikalingi kuriant duomenų registravimo projektą

  • Naudokite įvairias komandas, kad rinktumėte duomenis naudodami VEX Brain/Sensors ir įtraukite juos į duomenų struktūrą.
  • Įrašykite duomenis į kableliais atskirtų reikšmių (CSV) failą SD kortelėje.

Duomenų registravimui reikalinga aparatinė įranga:

  • A VEX Brain (IQ, V5, EXP)
  • SD kortelę
  • Jutiklis arba keli jutikliai (neprivaloma, atsižvelgiant į reikiamus duomenis)

Duomenų gavimas iš jutiklio

Galime užprogramuoti VEX robotą (IQ, V5, EXP), kad gautų duomenis iš šių jutiklių:

  • Inercinis jutiklis
  • Atstumo jutiklis
  • Optinis jutiklis
  • Regėjimo jutiklis
  • Sukimosi jutiklis (V5, EXP)
  • GPS jutiklis (V5)

Pastaba: VEX IQ (2-osios kartos) smegenyse ir VEX EXP smegenyse yra įmontuotas inercinis jutiklis. Su šiomis VEX smegenimis galime rinkti inercinio jutiklio duomenis.

Šiame straipsnyje mes sukursime duomenų registravimo projektą, kuris renka pagreičio duomenis naudojant VEX IQ Brain (2-osios kartos) ir išsaugo juos SD kortelėje. 

Pirmiausia turime parašyti trumpą programą, kad gautume rodmenis iš laikmačio ir inercinio jutiklio, įmontuoto VEX IQ Brain (2-osios kartos).

  • Šios programos pradžioje turėsime importuoti Python modulius, kad galėtume valdyti VEX IQ Brain (2-osios kartos) ir gauti iš jo duomenis. Taigi pradėkite pridėdami šias instrukcijas prie projekto.

    Diagrama, iliustruojanti V5 roboto komponentus ir funkcijas, naudojama Python mokymo programose robotikos mokymo tikslais.

  • Tada pridėkite kodą, kad deklaruotumėte kintamąjį numOfDataEntries , kad būtų išsaugotas įrašymo duomenų įrašų skaičius, deklaruokite kintamąjį polling_delay_msec , kad išsaugotumėte duomenų skaitymo laiko intervalo reikšmę, ir sukurkite tuščią eilutės kintamąjį data_buffer , kad būtų išsaugotas. iš jutiklio nuskaitytus duomenis.

    Diagrama, iliustruojanti, kaip saugoti duomenis, nuskaitytus iš jutiklio VEX V5 naudojant Python, su kodo fragmentais ir vaizdiniais duomenų srauto ir saugojimo metodų vaizdais.

  • Kadangi naudosime dabartinę laikmačio vertę, kad pridėtume laiko žymą prie duomenų, prieš pradėdami rinkti duomenis, turime iš naujo nustatyti laikmačio reikšmę iki 0 sekundžių.

    Ekrano kopija, kurioje rodomas VEX V5 laikmačio nustatymo iš naujo procesas Python, iliustruojantis, kaip prieš renkant duomenis nustatyti laikmačio reikšmę atgal į 0 sekundžių.

  • Prieš naudodami instrukciją, kuri paima duomenis iš VEX IQ Brain (2-oji) ir įrašo duomenis į buferį, pirmiausia turime ją suprasti.
    Ši instrukcija prideda esamą laikmačio reikšmę prie data_buffer kintamojo konkrečiu formatu.

    Diagrama, iliustruojanti Python kintamojo formatą, naudojamą V5 kategorijos aprašyme pagal Python Tutorials, parodanti kintamojo struktūrą ir komponentus.

    Išskaidykime formato eilutę “%1.3f”

    • „%“: pristato konversijos specifikaciją.
    • „1“: nurodo mažiausią skaitmenų skaičių, kuris turi būti eilutėje.
    • „.3“: nurodo skaičių po kablelio skaičių, kurį reikia įtraukti į formatuotą skaičių.
    • „f“: nurodo, kad formatuotina reikšmė yra slankiojo kablelio skaičius.

    Taigi galime naudoti formato eilutę „%1.3f“, kad suformatuotume slankiojo kablelio skaičių, kurio minimalus plotis yra 1 skaitmuo ir 3 skaitmenų po kablelio tikslumas.

  • Dabar galime nuskaityti laikmatį ir VEX IQ Brain (2-osios kartos) įtaisyto inercinio jutiklio pagreičio vertę, o tada pridėti duomenis prie data_buffer kintamojo nurodytu formatu.

    Diagrama, iliustruojanti kintamąjį formatą Python, V5 kategorijos aprašymo dalis, esanti Python mokymo programose. Vaizdas vizualiai parodo Python programavimo kintamųjų struktūrą ir naudojimą.

    Pastaba: „\n“ yra naujos eilutės simbolis. Tai rodo, kad eilutė baigiasi čia ir naujos eilutės pradžia.

  • Tada, norėdami įrašyti tam tikrą skaičių duomenų įrašų į data_buffer kintamąjį, galime naudoti for loop pakartotinai vykdyti instrukcijas, kurios gauna duomenis, ir pridėti duomenis prie kintamojo data_buffer , kad būtų galima atlikti keletą iteracijų. Mūsų strategija yra naudoti kintamojo numOfDataEntries reikšmę iteracijų skaičiui nustatyti.

    Grafikas, iliustruojantis iteracijų skaičių VEX V5 Python mokymo programoje, rodantis duomenų taškus ir tendencijas, susijusias su programavimo iteracijomis robotikoje.

  • Iki šiol mūsų programa įrašo duomenis taip greitai, kaip tik įmanoma. Tačiau norime įrašyti duomenis tam tikrais laiko intervalais. Todėl galime naudoti funkciją wait() 3 cikle for norėdami pristabdyti programą ir pridėti konkretų laiko intervalą tarp dviejų rodmenų. Laiko intervalo reikšmei nustatyti naudojame kintamojo polling_delay_msec reikšmę.

    Grafikas, iliustruojantis laiko intervalo reikšmės nustatymo procesą Python, parodantis pagrindinius kintamuosius ir jų ryšius. Susiję su V5 Python vadovėliais.

Sveikiname! Baigėme programą, skirtą gauti rodmenis (pagreičio duomenis) iš inercinio jutiklio, įmontuoto VEX smegenyse. Toliau išnagrinėsime, kaip įrašyti duomenis į CSV failą SD kortelėje.

Diagrama, iliustruojanti Python mokymo programų V5 kategorijos struktūrą, kurioje yra pagrindiniai komponentai ir ryšiai VEX Robotics ekosistemoje.




SD kortelės prijungimas prie VEX Brain

Prieš įrašydami duomenis į failą SD kortelėje, pirmiausia įdėkite SD kortelę į VEX Brain SD kortelės lizdą.

Diagrama, iliustruojanti V5 roboto konfigūraciją, skirtą Python mokymo priemonėms, demonstruojant pagrindinius komponentus ir jų jungtis švietimo tikslais.

Pastaba: Norėdami įrašyti duomenis, suformatuokite SD kortelę į FAT32. Rekomenduojame naudoti SD korteles, kurių dydis yra 32 GB ar mažesnis.

Norėdami užtikrinti, kad duomenis į failą SD kortelėje būtų galima įrašyti atitinkamomis sąlygomis, turėsime pridėti kodą, kad patikrintume, ar SD kortelė tinkamai įdėta į VEX IQ Brain (2-osios kartos).

  • Norėdami patikrinti, ar SD kortelė įdėta, naudokite funkciją brain.sdcard.is_inserted() Jei SD kortelė neįdėta, VEX IQ Brain ekrane parodykite atitinkamą pranešimą ir palaikykite programą.

    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.


    Pastaba: funkcija brain.sdcard.is_inserted() grąžina True, jei į smegenis įdėta SD kortelė.

Duomenų įrašymas į CSV failą SD kortelėje

Kol kas mūsų programa gali rinkti duomenis su VEX IQ Brain (2-osios kartos). Norėdami užbaigti duomenų registravimo projektą, turime įrašyti duomenis į kableliais atskirtų reikšmių (CSV) failą SD kortelėje, kad ateityje būtų galima ištirti ir analizuoti.

  • Rašydami skirtingų tipų duomenis į CSV failą, norime žinoti, kokio tipo duomenys yra kiekviename stulpelyje. Norėdami tai padaryti, prieš įrašydami duomenis galime pridėti CSV antraštės tekstą prie kintamojo data_buffer .
    Taigi, pridėkite kodą, kad deklaruotumėte kintamąjį csvHeaderText , kad išsaugotumėte CSV antraštės tekstą, kad nurodytumėte CSV failo stulpelių pavadinimus, ir deklaruokite kintamąjį sd_file_name , kad būtų įrašytas CSV failo pavadinimas, kurį norite įrašyti SD kortelė.

    Diagrama, iliustruojanti Python mokymo programų V5 kategorijos aprašymą, vaizdiniu formatu parodanti pagrindinius komponentus ir jų ryšius.

Pastaba: Įsitikinkite, kad antraštės yra tokia pat tvarka kaip ir duomenys, saugomi kintamajame data_buffer.

  • Tada CSV antraštės tekstą pridėkite prie data_buffer eilutės prieš ciklo duomenims rinkti.

    Diagrama, iliustruojanti V5 Python programavimo aplinką, demonstruojanti pagrindinius komponentus ir jų funkcijas, susijusius su V5 kategorijos aprašymu ir Python mokymo programomis.

  • Prieš įrašydami duomenis į failą SD kortelėje, supraskime, kaip pirmiausia naudoti funkciją brain.sdcard.savefile().

    Diagrama, iliustruojanti Python mokymo programų V5 kategorijos aprašą, kurioje pateikiami pagrindiniai VEX V5 robotikos sistemos komponentai ir funkcijos.


    Ši instrukcija įrašo duomenis, saugomus kintamajame data_buffer į pavadintą CSV failą SD kortelėje.
    Išskaidykime:
    • brain.sdcard.savefile(): funkcija išsaugo baitų masyvą į pavadintą failą SD kortelėje. Funkcija grąžina į failą įrašytų baitų skaičių.

    • sd_failo_pavadinimas: pirmasis funkcijos parametras. Nurodo failo, kurį reikia įrašyti, pavadinimą. Šiame projekte failo pavadinimas saugomas kintamajame sd_file_name.

    • bytearray(datat_buffer,'utf-8'): antrasis funkcijos parametras. Nurodo baitų masyvą, kuris turi būti įrašytas į failą.

        • bytearray(): Metodas sukuria kintamą bytearray. Šioje instrukcijoje mes ją naudojame norėdami konvertuoti eilutę į baitų masyvą, nurodydami kodavimą.
        • data_buffer: pirmasis metodo parametras. Nurodo šaltinį, kuris turi būti konvertuojamas į baitų masyvą. Šiame projekte šaltinis yra duomenys, saugomi kintamajame data_buffer. 
        • „utf-8“: antrasis metodo parametras. Nurodo nurodytą kodavimą, naudojamą eilutei koduoti. Šioje instrukcijoje kodavimas yra „utf-8“. 
  • Po rinkti, naudokite funkciją brain.sdcard.savefile() , kad įrašytumėte duomenis, saugomus kintamajame data_buffer į CSV failą SD kortelėje. Be to, pridėkite kodą, kad patikrintumėte grąžinamąją reikšmę iš funkcijos brain.sdcard.savefile() , kad patikrintumėte, ar duomenys sėkmingai įrašyti į failą, ir parodykite atitinkamą pranešimą VEX IQ smegenų ekrane, kad gautumėte tikrą laiko atsiliepimai.

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


    Pastaba: Funkcija brain.sdcard.savefile() grąžina į failą įrašytų baitų skaičių. Šiame projekte mes naudojame surinktus duomenis įrašyti į CSV failą, todėl į failą įrašytų baitų skaičius turi būti didesnis nei nulis. Kitaip tariant, jei funkcija brain.sdcard.savefile() grąžina 0, galime daryti išvadą, kad duomenys nebuvo sėkmingai įrašyti į failą. Kitu atveju duomenys buvo įrašyti į bylą.

Sveikiname! Sukūrėme duomenų registravimo projektą, kuris renka pagreičio duomenis su VEX IQ Brain (2-osios kartos) ir išsaugo juos į CSV failą SD kortelėje. Toliau išnagrinėsime, kaip atidaryti CSV failą duomenų analizei. 

Diagrama, iliustruojanti V5 roboto komponentus ir jų funkcijas, naudojama Python vadovėliuose VEX robotikos programavimui. Vaizdas suteikia vaizdinę nuorodą besimokantiesiems suprasti aparatinės įrangos sąranką.

CSV failo atidarymas duomenų analizei

Kai duomenys bus įrašyti į CSV failą SD kortelėje, galime naudoti skaičiuoklės programą, kad atidarytume failą, kad galėtume skaityti ir analizuoti duomenis. 

Pastaba: Dvi dažniausiai naudojamos skaičiuoklių programos yra „Google“ skaičiuoklės ir „Microsoft Excel“. Šiame straipsnyje mes naudosime „Google“ skaičiuokles (žiniatinklio pagrindu), kad atidarytume CSV failą SD kortelėje. Kitų programų naudojimo procesas yra panašus.

  • Išimkite SD kortelę iš VEX IQ Brain SD kortelės lizdo. Jei kompiuteryje yra įmontuotas Micro SD kortelės lizdas, SD kortelę galime įdėti tiesiai į tą lizdą. Kitu atveju įdėkite SD kortelę į SD kortelės adapterį ir prijunkite adapterį prie kompiuterio. 
  • Prisijunkite prie mūsų „Google“ paskyros ir atidarykite „Google“ skaičiuokles. Sukurkite naują skaičiuoklę.
  • Skaičiuoklėje atidarykite meniu „Failas“ , pasirinkite „Importuoti“ -> mygtuką „Įkelti“ -> „Naršyti“ , tada pasirinkite CSV failą kompiuteryje. Įkėlę CSV failą, spustelėkite mygtuką „Import Data“. Importavę duomenis spustelėkite „Atidaryti dabar“ kad pamatytumėte surinktus duomenis CSV faile.

    VEX V5 Python mokymo programos apžvalgos vaizdas, iliustruojantis pagrindines sąvokas ir išteklius programuojant su VEX robotika.

  • (Pasirenkama) Vienas paprastas būdas analizuoti duomenis – nubraižyti grafiką ir ieškoti duomenų tendencijų. Skaičiuoklėje atidarykite meniu „Įterpimas“ ir pasirinkite „Diagrama“ kad nubrėžtumėte grafiką naudodami CSV failo duomenis. Toliau pateikta diagrama yra pagreičio duomenų, surinktų naudojant VEX IQ Brain (2-osios kartos), rezultatas.

    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.


    Pastaba: Galime naudoti diagramų rengyklę norėdami pasirinkti kitą diagramos tipą arba redaguoti diagramą pagal savo poreikius.

Iki šiol baigėme duomenų registravimo projektą, kuris renka duomenis su VEX IQ Brain (2-os kartos) ir išsaugo juos CSV faile SD kortelėje. Be to, išmokome skaityti SD kortelėje esantį CSV failą naudodami „Google“ skaičiuokles ir netgi sukurti grafiką tolesnei analizei. Kas toliau? Pabandykime suplanuoti įdomesnius eksperimentus naudodami VEX Robotą duomenų registravimui, stebėti, kaip besikeičiantys aplinkos veiksniai veikia įvairių tipų duomenis ir giliau suprasti mus supantį pasaulį.

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

Last Updated: