Beleženje podatkov z VEX Brain/senzorji (različica Python)
Uvod
V tem članku bomo opisali, kako ustvariti projekt za beleženje podatkov, ki VEX robotu naroči, da zbira podatke z VEX Brain enoto in jih shrani v datoteko CSV na pomnilniški kartici SD za analizo podatkov.
Beleženje podatkov je zmogljivo orodje, ki ga lahko uporabimo za pomoč pri znanstvenem raziskovanju, izvajanju lastnih poskusov in reševanju konkretnih problemov. Z beleženjem podatkov lahko VEX robotu zaupamo različne zanimive in vznemirljive naloge. Spodaj je navedenih nekaj primerov:
Zbiranje podatkov z razdaljemernim senzorjem za izračun hitrosti robota
Vožnja robota po učilnici in zbiranje podatkov z optičnim senzorjem za opazovanje sprememb svetlobe na različnih mestih.
Odprava robota na pot in snemanje koordinatnih podatkov GPS za ustvarjanje zemljevida.
Programerske veščine, potrebne za razvoj projekta za beleženje podatkov
Uporaba različnih ukazov za zbiranje podatkov z VEX Brain/senzorji in njihovo dodajanje v podatkovno strukturo.
Zapis podatkov v datoteko z vrednostmi, ločenimi z vejico (CSV), na pomnilniški kartici SD.
Strojna oprema, potrebna za beleženje podatkov:
VEX Brain (IQ, V5, EXP)
Pomnilniška kartica SD
En ali več senzorjev (neobvezno, glede na zahtevane podatke)
Pridobivanje podatkov iz senzorja
VEX robot (IQ, V5, EXP) lahko sprogramiramo tako, da zajema podatke iz naslednjih senzorjev:
Inercijski senzor
Razdaljemernik
Optični senzor
Vizijski senzor
Rotacijski senzor (V5, EXP)
GPS senzor (V5)
Opomba: VEX IQ Brain (2. generacija) in VEX EXP Brain imata vgrajen inercijski senzor. Podatke inercijskega senzorja lahko zbiramo neposredno z navedenih VEX Brain enot.
V tem članku bomo razvili projekt za beleženje podatkov, ki zbira podatke o pospeševanju z VEX IQ Brain enoto (2. gen.) in jih shranjuje na pomnilniško kartico SD.
Najprej moramo napisati kratki program za pridobivanje odčitkov iz časovnika in inercijskega senzorja, vgrajenega v VEX IQ Brain (2. gen.).
Na začetku programa moramo uvoziti Python module za upravljanje VEX IQ Brain enote (2. gen.) in pridobivanje podatkov iz nje. Začnite tako, da projektu dodate naslednje ukaze.
# Library importsNato dodajte kodo za deklaracijo spremenljivke
numOfDataEntries, ki bo shranjevala število podatkovnih vnosov za snemanje, deklaracijo spremenljivkepolling_delay_msec, ki bo shranjevala vrednost časovnega intervala za branje podatkov, ter ustvarite prazno spremenljivko tipa nizdata_bufferza shranjevanje podatkov, prebranih iz senzorja.numOfDataEntries = 100Ker bomo za dodajanje časovnega žiga k podatkom uporabili trenutno vrednost časovnika, moramo vrednost časovnika ponastaviti na 0 sekund, preden začnemo zbirati podatke.
# Add timer initialization codePreden uporabimo ukaz, ki pridobiva podatke iz VEX IQ Brain (2. gen.) in jih zapisuje v medpomnilnik, ga moramo najprej razumeti. Naslednji ukaz doda trenutno vrednost časovnika v spremenljivko
data_bufferv določeni obliki.Razčlenimo oblikovni niz
„%1.3f":„%": Uvede pretvorni določevalnik.
„1": Označuje najmanjše število znakov, ki morajo biti prisotni v nizu.
„.3": Določa število decimalnih mest v oblikovani številki.
„f": Označuje, da je vrednost, ki jo je treba oblikovati, število s plavajočo vejico.
Oblikovni niz „%1.3f" torej lahko uporabimo za oblikovanje števila s plavajočo vejico z najmanjšo širino 1 znaka in natančnostjo 3 decimalnih mest.
Zdaj lahko preberemo vrednost časovnika in vrednost pospeška inercijskega senzorja, vgrajenega v VEX IQ Brain (2. gen.), ter podatke dodamo v spremenljivko
data_bufferv določeni obliki.# Commands to write the data to bufferOpomba: „\n" je znak za novo vrstico. Označuje konec trenutne vrstice in začetek nove.
Nato, da v spremenljivko
data_bufferposnamemo določeno število podatkovnih vnosov, lahko uporabimo zankofor, ki bo večkrat izvedla ukaze za pridobivanje podatkov in njihovo dodajanje v spremenljivkodata_buffer. Vrednost spremenljivkenumOfDataEntriesbo določala število ponovitev.# Data GenerationZaenkrat naš program snema podatke tako hitro, kot je le mogoče. Vendar pa želimo podatke snemati v določenih časovnih intervalih. Zato lahko v zanki
foruporabimo funkcijowait(), ki program zaustavi in s tem doda določen časovni interval med dvema odčitkoma. Vrednost spremenljivkepolling_delay_msecbo določala vrednost časovnega intervala.# Data Generation
Čestitamo! Zaključili smo program za pridobivanje odčitkov (podatkov o pospeševanju) iz inercijskega senzorja, vgrajenega v VEX Brain. Zdaj bomo spoznali, kako zapisati podatke v datoteko CSV na pomnilniški kartici SD.
# Library importsVstavljanje pomnilniške kartice SD v VEX Brain
Preden zapišemo podatke v datoteko na pomnilniški kartici SD, jo najprej vstavite v reže za kartico SD na VEX Brain enoti.
Opomba: Pomnilniško kartico SD formatirajte v sistem FAT32 za zapis podatkov. Priporočamo uporabo kartic SD z zmogljivostjo 32 GB ali manj.
Da zagotovimo, da se zapis podatkov v datoteko na pomnilniški kartici SD izvede pod ustreznimi pogoji, moramo dodati kodo za preverjanje, ali je kartica SD pravilno vstavljena v VEX IQ Brain (2. gen.).
Uporabite funkcijo
brain.sdcard.is_inserted()za preverjanje, ali je kartica SD vstavljena. Če kartica SD ni vstavljena, se na zaslonu VEX IQ Brain prikaže ustrezno sporočilo in program se zaustavi.# Hold the program if the SD card is not insertedOpomba: Funkcija
brain.sdcard.is_inserted()vrne vrednost True, če je kartica SD vstavljena v Brain enoto.
Zapis podatkov v datoteko CSV na pomnilniški kartici SD
Naš program zdaj zmore zbirati podatke z VEX IQ Brain (2. gen.). Da dokončamo projekt za beleženje podatkov, moramo zapisati podatke v datoteko z vrednostmi, ločenimi z vejico (CSV), na pomnilniški kartici SD za poznejši pregled in analizo.
Ko v datoteko CSV zapisujemo različne vrste podatkov, je koristno vedeti, katero vrsto podatkov vsebuje posamezni stolpec. To dosežemo tako, da v spremenljivko
data_bufferpred snemanjem podatkov dodamo besedilo glave CSV. Dodajte torej kodo za deklaracijo spremenljivkecsvHeaderTextza shranjevanje besedila glave CSV z imeni stolpcev datoteke CSV ter deklaracijo spremenljivkesd_file_nameza shranjevanje imena datoteke CSV, ki bo zapisana na pomnilniško kartico SD.csvHeaderText =
Opomba: Zagotovite, da so glave v enakem vrstnem redu kot podatki, shranjeni v spremenljivki data_buffer.
Nato dodajte besedilo glave CSV v niz
data_bufferpred zankoforza zbiranje podatkov.# Create CSV HeaderPreden zapišemo podatke v datoteko na pomnilniški kartici SD, spoznajmo, kako uporabiti funkcijo
brain.sdcard.savefile().
Ta ukaz zapiše podatke, shranjene v spremenljivkidata_buffer, v poimenovano datoteko CSV na pomnilniški kartici SD.
Razčlenimo ga:brain.sdcard.savefile(): Ta funkcija shrani polje bajtov (bytearray) v poimenovano datoteko na pomnilniški kartici SD. Funkcija vrne število bajtov, zapisanih v datoteko.
sd_file_name: Prvi parameter funkcije. Določa ime datoteke za zapis. V tem projektu je ime datoteke shranjeno v spremenljivki
sd_file_name.bytearray(data_buffer,'utf-8'): Drugi parameter funkcije. Predstavlja polje bajtov (bytearray), ki ga je treba zapisati v datoteko.
bytearray(): Ta metoda ustvari spremenljivo polje bajtov. V tem ukazu jo uporabimo za pretvorbo niza v polje bajtov z določitvijo kodiranja.
data_buffer: Prvi parameter metode. Določa vir, ki ga je treba pretvoriti v polje bajtov. V tem projektu je vir podatek, shranjen v spremenljivki
data_buffer.„utf-8": Drugi parameter metode. Določa kodiranje, uporabljeno za kodiranje niza. V tem ukazu je kodiranje „utf-8".
Po zanki
forza zbiranje podatkov uporabite funkcijobrain.sdcard.savefile()za zapis podatkov, shranjenih v spremenljivkidata_buffer, v datoteko CSV na pomnilniški kartici SD. Poleg tega dodajte kodo za preverjanje povratne vrednosti funkcijebrain.sdcard.savefile(), s katero preverite, ali so bili podatki uspešno zapisani v datoteko, ter na zaslonu VEX IQ Brain prikažite ustrezno sporočilo za sprotne povratne informacije. Stavek if na koncu doda sporočilo o stanju datoteke — izpiše bodisiSD Write ErrorbodisiData Written.# CSV Data GenerationOpomba: Funkcija
brain.sdcard.savefile()vrne število bajtov, zapisanih v datoteko. V tem projektu jo uporabimo za zapis zbranih podatkov v datoteko CSV, zato mora biti število zapisanih bajtov večje od nič. Z drugimi besedami: če funkcijabrain.sdcard.savefile()vrne 0, lahko sklepamo, da podatki niso bili uspešno zapisani v datoteko. V nasprotnem primeru so bili podatki v datoteko zapisani.
Čestitamo! Razvili smo projekt za beleženje podatkov, ki zbira podatke o pospeševanju z VEX IQ Brain enoto (2. gen.) in jih shranjuje v datoteko CSV na pomnilniški kartici SD. Zdaj bomo spoznali, kako odpreti datoteko CSV za analizo podatkov.
# Library importsOdpiranje datoteke CSV za analizo podatkov
Ko so podatki zapisani v datoteko CSV na pomnilniški kartici SD, jo lahko odpremo s pregledničarsko aplikacijo za branje in analizo podatkov.
Opomba: Dve najpogostejši pregledničarski aplikaciji sta Google Sheets in Microsoft Excel. V tem članku bomo za odpiranje datoteke CSV na pomnilniški kartici SD uporabili Google Sheets (spletna različica). Postopek z drugimi aplikacijami je podoben.
Odstranite kartico SD iz reže za kartico SD na VEX IQ Brain enoti. Če ima računalnik vgrajeno režo za kartico Micro SD, jo lahko vstavite neposredno vanjo. V nasprotnem primeru vstavite kartico SD v adapter za kartico SD in adapter priključite na računalnik.
Prijavite se v račun Google in odprite Google Sheets. Ustvarite novo preglednico.
V preglednici odprite meni „Datoteka", izberite „Uvozi" -> „Naloži" -> gumb „Prebrskaj", nato izberite datoteko CSV na računalniku. Po nalaganju datoteke CSV kliknite gumb „Uvozi podatke". Po uvozu podatkov kliknite „Odpri zdaj", da si ogledate zbrane podatke v datoteki CSV.
(Neobvezno) Enostaven način analize podatkov je risanje grafa in iskanje trendov v podatkih. V preglednici odprite meni „Vstavi" in izberite „Graf", da narišete graf s podatki iz datoteke CSV. Spodnji graf prikazuje rezultat podatkov o pospeševanju, zbranih z VEX IQ Brain enoto (2. gen.).
Opomba: Z urejevalnikom grafov (Chart editor) lahko izberete drugačno vrsto grafa ali ga urejate glede na svoje potrebe.
S tem smo zaključili projekt za beleženje podatkov, ki zbira podatke z VEX IQ Brain enoto (2. gen.) in jih shranjuje v datoteko CSV na pomnilniški kartici SD. Prav tako smo se naučili, kako brati datoteko CSV na pomnilniški kartici SD z aplikacijo Google Sheets in ustvariti graf za nadaljnjo analizo. Kaj sledi? Poskusite načrtovati bolj vznemirljive poskuse z VEX robotom za beleženje podatkov, opazujte, kako spreminjajoči se okoljski dejavniki vplivajo na različne vrste podatkov, in pridobite poglobljeno razumevanje sveta okoli nas.
Potrebujete dodatne dele?
Originalni VEX deli, razširitveni seti in kompleti — vse za vaš naslednji robotski projekt na trgovina.robotech.si.