Datu reģistrēšana ar VEX Brain/sensoriem (Python versija)

Ievads

Šajā rakstā mēs apspriedīsim, kā izveidot datu reģistrēšanas projektu, kas uzdod VEX Robot apkopot datus ar VEX Brain un saglabāt tos CSV failā SD kartē datu analīzei.

Datu reģistrēšana ir spēcīgs rīks, ko varam izmantot, lai palīdzētu zinātniskiem pētījumiem, veiktu savus eksperimentus un risinātu konkrētas problēmas. Ir dažādi jautri un aizraujoši uzdevumi, kurus mēs varam vadīt ar VEX robotu, lai veiktu ar datu reģistrēšanu. Tālāk ir sniegti daži piemēri.

  • Datu vākšana ar attāluma sensoru, lai aprēķinātu robota ātrumu
  • Robota vadīšana pa klasi un datu vākšana ar optisko sensoru, lai novērotu gaismas izmaiņas dažādās vietās.
  • Dodiet robotu piedzīvojumā un ierakstiet GPS koordinātu datus, lai izveidotu karti.

Kodēšanas prasmes, kas nepieciešamas datu reģistrēšanas projekta izstrādei

  • Izmantojiet dažādas komandas, lai savāktu datus ar VEX Brain/Sensors un pievienotu tos datu struktūrai.
  • Ierakstiet datus komatatdalīto vērtību (CSV) failā SD kartē.

Datu reģistrēšanai nepieciešamā aparatūra:

  • A VEX Brain (IQ, V5, EXP)
  • SD karte
  • Sensors vai vairāki sensori (pēc izvēles, atkarībā no nepieciešamajiem datiem)

Datu iegūšana no sensora

Mēs varam ieprogrammēt VEX Robot (IQ, V5, EXP), lai uztvertu datus no šādiem sensoriem:

  • Inerciālais sensors
  • Attāluma sensors
  • Optiskais sensors
  • Redzes sensors
  • Rotācijas sensors (V5, EXP)
  • GPS sensors (V5)

Piezīme: VEX IQ (2. paaudzes) smadzenēm un VEX EXP smadzenēm ir iebūvēts inerciālais sensors. Mēs varam savākt inerciālo sensoru datus ar šiem VEX Brians.

Šajā rakstā mēs izstrādāsim datu reģistrēšanas projektu, kas apkopo paātrinājuma datus ar VEX IQ Brain (2.) un saglabā tos SD kartē. 

Pirmkārt, mums ir jāuzraksta īsa programma, lai iegūtu rādījumus no taimera un inerciālā sensora, kas iebūvēts VEX IQ Brain (2.).

  • Šīs programmas sākumā mums būs jāimportē Python moduļi, lai vadītu VEX IQ Brain (2.) un no tā iegūtu datus. Tāpēc sāciet ar šo instrukciju pievienošanu projektam.

    image5.png

  • Pēc tam pievienojiet kodu, lai deklarētu mainīgo numOfDataEntries , lai saglabātu datu ierakstu skaitu ierakstīšanai, deklarējiet mainīgo polling_delay_msec , lai saglabātu datu nolasīšanas laika intervāla vērtību, un izveidojiet tukšu virknes mainīgo data_buffer , lai saglabātu. no sensora nolasītie dati.

    image9.png

  • Tā kā mēs izmantosim pašreizējo taimera vērtību, lai datiem pievienotu laikspiedolu, pirms datu vākšanas mums ir jāatiestata taimera vērtība uz 0 sekundēm.

    image13.png

  • Pirms izmantot instrukciju, kas ienes datus no VEX IQ Brain (2.) un ieraksta datus buferī, mums vispirms tas ir jāsaprot.
    Šī instrukcija pievieno pašreizējo taimera vērtību mainīgajam data_buffer noteiktā formātā.

    image14.png

    Sadalīsim formāta virkni “%1.3f”

    • “%”: ievieš reklāmguvumu norādītāju.
    • “1”: norāda minimālo ciparu skaitu, kas jāiekļauj virknē
    • “.3”: norāda formatētajā ciparā iekļaujamo zīmju skaitu aiz komata.
    • “f”: norāda, ka formatējamā vērtība ir peldošā komata skaitlis.

    Tādējādi mēs varam izmantot formāta virkni “%1.3f”, lai formatētu peldošā komata skaitli ar minimālo platumu 1 cipara un ar precizitāti līdz 3 zīmēm aiz komata.

  • Tagad mēs varam nolasīt taimeri un VEX IQ Brain iebūvētā inerciālā sensora paātrinājuma vērtību (2.) un pēc tam pievienot datus mainīgajam data_buffer norādītajā formātā.

    image7.png

    Piezīme: “\n” ir New Line rakstzīme. Tas norāda, ka rinda beidzas šeit un jaunas rindas sākums.

  • Pēc tam, lai ierakstītu noteiktu skaitu datu ierakstu mainīgajā data_buffer , mēs varam izmantot for loop , lai atkārtoti izpildītu instrukcijas, kas izgūst datus, un pievienotu datus mainīgajam data_buffer vairākām iterācijām. Mūsu stratēģija ir izmantot mainīgā numOfDataEntries vērtību, lai noteiktu iterāciju skaitu.

    image12.png

  • Līdz šim mūsu programma ieraksta datus tik ātri, cik vien iespējams. Tomēr mēs vēlamies ierakstīt datus noteiktos laika intervālos. Tāpēc mēs varam izmantot funkciju wait() cilpā for , lai apturētu programmu un pievienotu noteiktu laika intervālu starp diviem nolasījumiem. Lai noteiktu laika intervāla vērtību, mēs izmantojam mainīgā polling_delay_msec vērtību.

    image8.png

Apsveicam! Mēs esam pabeiguši programmu, lai iegūtu rādījumus (paātrinājuma datus) no inerciālā sensora, kas iebūvēts VEX Brain. Tālāk mēs izpētīsim, kā ierakstīt datus CSV failā SD kartē.

image1.png




SD kartes pievienošana VEX Brain

Pirms datu ierakstīšanas failā SD kartē, vispirms ievietojiet SD karti VEX Brain SD kartes slotā.

EXP SD kartes slota norāde (1).png

Piezīme: Formatējiet SD karti uz FAT32 datu rakstīšanai. Mēs iesakām izmantot SD kartes, kuru izmērs ir 32 GB vai mazāks.

Lai nodrošinātu, ka datu ierakstīšanu failā SD kartē var veikt atbilstošos apstākļos, mums būs jāpievieno kods, lai pārbaudītu, vai SD karte ir pareizi ievietota VEX IQ Brain (2.).

  • Izmantojiet funkciju brain.sdcard.is_inserted() , lai pārbaudītu, vai SD karte ir ievietota. Ja SD karte nav ievietota, parādiet atbilstošo ziņojumu VEX IQ Brain ekrānā un turiet programmu.

    image17.png


    Piezīme: funkcija brain.sdcard.is_inserted() atgriež True, ja smadzenēs ir ievietota SD karte.

Datu ierakstīšana CSV failā SD kartē

Līdz šim mūsu programma var vākt datus, izmantojot VEX IQ Brain (2.). Lai pabeigtu datu reģistrēšanas projektu, mums ir jāieraksta dati SD kartes komatatdalīto vērtību (CSV) failā turpmākai pārbaudei un analīzei.

  • Rakstot dažāda veida datus CSV failā, mēs vēlamies zināt, kāda veida datus satur katra kolonna. Lai to izdarītu, pirms datu ierakstīšanas mainīgajam data_buffer varam pievienot CSV galvenes tekstu.
    Tādējādi pievienojiet kodu, lai deklarētu mainīgo csvHeaderText , lai saglabātu CSV galvenes tekstu, lai norādītu CSV faila kolonnu nosaukumus, un deklarējiet mainīgo sd_file_name , lai saglabātu CSV faila nosaukumu, ko rakstīt. SD karte.

    image10.png

Piezīme. Pārliecinieties, vai galvenes ir tādā pašā secībā kā dati, kas saglabāti mainīgajā data_buffer.

  • Pēc tam pievienojiet CSV galvenes tekstu virknei data_buffer pirms  cilpas datu apkopošanai.

    image15.png

  • Pirms datu ierakstīšanas failā SD kartē, vispirms sapratīsim, kā izmantot funkciju brain.sdcard.savefile().

    image4.png


    Šī instrukcija ieraksta datus, kas saglabāti mainīgajā data_buffer , nosauktā CSV failā SD kartē.
    Sadalīsim to:
    • brain.sdcard.savefile(): funkcija saglabā baitu masīvu nosauktā failā SD kartē. Funkcija atgriež failā ierakstīto baitu skaitu.

    • sd_file_name: pirmais funkcijas parametrs. Norāda rakstāmā faila nosaukumu. Šajā projektā faila nosaukums tiek saglabāts mainīgajā sd_file_name.

    • bytearray(datat_buffer,'utf-8'): otrais funkcijas parametrs. Apzīmē failā ierakstāmo baitu masīvu.

        • bytearray(): metode izveido mainīgu baitu masīvu. Šajā instrukcijā mēs to izmantojam, lai pārvērstu virkni baitu masīvā, norādot kodējumu.
        • data_buffer: pirmais metodes parametrs. Norāda avotu, kas jāpārvērš baitu masīvā. Šajā projektā avots ir dati, kas glabājas mainīgajā data_buffer. 
        • "utf-8": metodes otrais parametrs. Norāda norādīto kodējumu, kas izmantots virknes kodēšanai. Šajā instrukcijā kodējums ir "utf-8". 
  • Pēc cilpai datu apkopošanai izmantojiet funkciju brain.sdcard.savefile() , lai ierakstītu datus, kas saglabāti mainīgajā data_buffer , CSV failā SD kartē. Turklāt pievienojiet kodu, lai pārbaudītu atgriešanās vērtību no funkcijas brain.sdcard.savefile() , lai pārbaudītu, vai dati ir veiksmīgi ierakstīti failā, un parādiet atbilstošo ziņojumu VEX IQ smadzeņu ekrānā, lai iegūtu reālu laika atgriezeniskā saite.

    image6.png


    Piezīme. Funkcija brain.sdcard.savefile() atgriež failā ierakstīto baitu skaitu. Šajā projektā mēs to izmantojam, lai savāktos datus ierakstītu CSV failā, tāpēc failā ierakstīto baitu skaitam ir jābūt lielākam par nulli. Citiem vārdiem sakot, ja funkcija brain.sdcard.savefile() atgriež 0, mēs varam secināt, ka dati failā nav veiksmīgi ierakstīti. Pretējā gadījumā dati ir ierakstīti failā.

Apsveicam! Mēs esam izstrādājuši datu reģistrēšanas projektu, kas apkopo paātrinājuma datus ar VEX IQ Brain (2.) un saglabā tos CSV failā SD kartē. Tālāk mēs izpētīsim, kā atvērt CSV failu datu analīzei. 

image16.png

CSV faila atvēršana datu analīzei

Kad dati ir ierakstīti CSV failā SD kartē, mēs varam izmantot izklājlapu lietojumprogrammu, lai atvērtu failu datu lasīšanai un analīzei. 

Piezīme. Divas no visizplatītākajām izklājlapu lietojumprogrammām ir Google izklājlapas un Microsoft Excel. Šajā rakstā mēs izmantosim Google izklājlapas (tīmeklī), lai atvērtu CSV failu SD kartē. Citu lietojumprogrammu izmantošanas process ir līdzīgs.

  • Izņemiet SD karti no VEX IQ Brain SD kartes slota. Ja datoram ir iebūvēts Micro SD kartes slots, mēs varam ievietot SD karti tieši šajā slotā. Pretējā gadījumā ievietojiet SD karti SD kartes adapterī un pēc tam pievienojiet adapteri datoram. 
  • Piesakieties mūsu Google kontā un atveriet Google izklājlapas. Izveidojiet jaunu izklājlapu.
  • Izklājlapā atveriet izvēlni “Fails” , atlasiet “Importēt” -> “Augšupielādēt” -> “Pārlūkot” un pēc tam izvēlieties CSV failu datorā. Pēc CSV faila augšupielādes noklikšķiniet uz pogas “Import Data”. Pēc datu importēšanas noklikšķiniet uz “Atvērt tūlīt” lai skatītu apkopotos datus CSV failā.

    image11.png

  • (Neobligāti) Viens vienkāršs veids, kā analizēt datus, ir uzzīmēt diagrammu un pēc tam meklēt datos tendences. Izklājlapā atveriet izvēlni “ Ievietot” un atlasiet “Diagramma” , lai uzzīmētu diagrammu, izmantojot CSV failā esošos datus. Nākamajā diagrammā ir iegūti paātrinājuma dati, kas savākti ar VEX IQ Brain (2.).

    image3.png


    Piezīme: Mēs varam izmantot diagrammas redaktoru , lai izvēlētos citu diagrammas veidu vai rediģētu diagrammu atbilstoši mūsu vajadzībām.

Līdz šim mēs esam pabeiguši datu reģistrēšanas projektu, kas apkopo datus ar VEX IQ Brain (2.) un saglabā tos CSV failā SD kartē. Mēs arī esam iemācījušies nolasīt CSV failu SD kartē, izmantojot Google izklājlapas, un pat izveidot grafiku turpmākai analīzei. Kas tālāk? Mēģināsim plānot aizraujošākus eksperimentus, izmantojot VEX Robot datu reģistrēšanai, lai novērotu, kā mainīgie vides faktori ietekmē dažāda veida datus un iegūtu dziļāku izpratni par apkārtējo pasauli.

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

Last Updated: