Dataloggning med en VEX-hjärna och sensorer med hjälp av Python

Introduktion

I den här artikeln kommer vi att diskutera hur man skapar ett dataloggningsprojekt som instruerar VEX-roboten att samla in data med VEX Brain och spara den i en CSV-fil på SD-kortet för dataanalys.

Dataloggning är ett kraftfullt verktyg som vi kan använda för att underlätta vetenskaplig forskning, genomföra våra egna experiment och lösa specifika problem. Det finns olika roliga och spännande uppgifter som vi kan köra VEX-roboten att utföra med dataloggning. Följande är några exempel:

  • Samlar in data med avståndssensorn för att beräkna robotens hastighet.
  • Köra roboten runt i klassrummet och samla in data med den optiska sensorn för att observera ljusförändringar på olika platser.
  • Ta med roboten på ett äventyr och registrera GPS-koordinatdata för att skapa en karta.

Kodningsfärdigheter som behövs för att utveckla ett dataloggningsprojekt

  • Använd olika kommandon för att samla in data med VEX Brain/Sensors och lägga till den i en datastruktur.
  • Skriv informationen till en kommaseparerad fil (CSV) på SD-kortet.

Hårdvara som krävs för dataloggning:

  • En VEX-hjärna (IQ, V5, EXP)
  • Ett SD-kort
  • En eller flera sensorer (valfritt, beroende på vilka data som krävs)

Hämta data från sensorn

Vi kan programmera VEX-roboten (IQ, V5, EXP) att samla in data från följande sensorer:

  • Tröghetssensor
  • Avståndssensor
  • Optisk sensor
  • Synsensor
  • Rotationssensor (V5, EXP)
  • GPS-sensor (V5)

Obs: VEX IQ (2:a generationen) Brain och VEX EXP Brain har en inbyggd tröghetssensor. Vi kan samla in tröghetssensordata med dessa VEX-hjärnor.

I den här artikeln kommer vi att utveckla ett dataloggningsprojekt som samlar in accelerationsdata med VEX IQ Brain (2:a generationen) och lagrar den på ett SD-kort. 

Först behöver vi skriva ett kort program för att hämta avläsningar från timern och tröghetssensorn som är inbyggd i VEX IQ Brain (2:a generationen).

  • I början av det här programmet behöver vi importera Python-modulerna för att styra VEX IQ Brain (2:a generationen) och hämta data från den. Börja därför med att lägga till dessa instruktioner i projektet.

    Diagram som illustrerar V5-robotens komponenter och funktioner, som används i Python-handledningar för utbildningsändamål inom robotik.

  • Lägg sedan till koden för att deklarera variabeln numOfDataEntries för att lagra antalet dataposter för inspelning, variabeln , polling_delay_msec för att lagra värdet på tidsintervallet för att läsa data, och skapa en tom strängvariabel , data_buffer för att lagra data som lästs från sensorn.

    Diagram som illustrerar hur man lagrar data som lästs från en sensor i VEX V5 med hjälp av Python, med kodavsnitt och visuella representationer av dataflöde och lagringsmetoder.

  • Eftersom vi kommer att använda timerns aktuella värde för att lägga till tidsstämpeln till data, måste vi återställa timervärdet till 0 sekunder innan vi börjar samla in data

    Skärmdump som visar återställningsprocessen för VEX V5-timern i Python, som illustrerar hur man ställer in timervärdet tillbaka till 0 sekunder före datainsamling.

  • Innan vi använder instruktionen som hämtar data från VEX IQ Brain (2:a) och registrerar data i bufferten, måste vi först förstå den.
    Följande instruktion lägger till det aktuella timervärdet till variabeln data_buffer i ett specifikt format.

    Diagram som illustrerar formatet för en variabel i Python, som används i V5-kategoribeskrivningen under Python-handledningar, och visar strukturen och komponenterna i en variabel.

    Låt oss bryta ner formatsträngen “%1.3f”

    • "%": Introducerar konverteringsspecifikationen.
    • "1": Anger det minsta antalet siffror som får finnas i strängen.
    • ".3": Anger antalet decimaler som ska inkluderas i det formaterade talet.
    • ”f”: Indikerar att värdet som ska formateras är ett flyttal.

    Således kan vi använda formatsträngen "%1.3f" för att formatera ett flyttal med en minsta bredd på 1 siffra och en precision på 3 decimaler.

  • Nu kan vi läsa timern och accelerationsvärdet för tröghetssensorn som är inbyggd i VEX IQ Brain (2:a generationen) och sedan lägga till data till variabeln data_buffer i det angivna formatet.

    Diagram som illustrerar variabelformat i Python, del av V5-kategoribeskrivningen, under Python-handledningar. Bilden representerar visuellt strukturen och användningen av variabler i Python-programmering.

    Obs: "\n" är tecknet för ny rad. Det indikerar att raden slutar här och början på en ny rad.

  • För att sedan registrera ett visst antal dataposter i variabeln data_buffer kan vi använda en för loop för att upprepade gånger exekvera instruktionerna som hämtar data och lägger till data i variabeln data_buffer under ett antal iterationer. Vår strategi är att använda värdet på variabeln numOfDataEntries för att bestämma antalet iterationer.

    Diagram som illustrerar antalet iterationer i en VEX V5 Python-handledning, som visar datapunkter och trender relaterade till programmeringsiterationer inom robotik.

  • Hittills registrerar vårt program data så snabbt som möjligt. Vi vill dock registrera data med specifika tidsintervall. Därför kan vi använda en wait() funktion i for-loopen för att pausa programmet och lägga till det specifika tidsintervallet mellan två avläsningar. Vi använder värdet på variabeln polling_delay_msec för att bestämma värdet på tidsintervallet.

    Diagram som illustrerar processen för att bestämma tidsintervallvärden i Python, och visar viktiga variabler och deras samband. Relevant för V5 Python-handledningar.

Grattis! Vi har avslutat programmet för att hämta avläsningar (accelerationsdata) från tröghetssensorn som är inbyggd i VEX Brain. Härnäst ska vi utforska hur man skriver data till en CSV-fil på SD-kortet.

Diagram som illustrerar V5-kategoristrukturen för Python-handledningar, med viktiga komponenter och relationer inom VEX Robotics-ekosystemet.




Ansluta SD-kortet till VEX Brain

Innan du skriver data till en fil på ett SD-kort, sätt först in SD-kortet i SD-kortplatsen på VEX Brain.

Diagram som illustrerar V5-robotkonfigurationen för Python-handledningar, och visar viktiga komponenter och deras kopplingar för utbildningsändamål.

Obs: Formatera SD-kortet till FAT32 för dataskrivning. Vi rekommenderar att du använder SD-kort som är 32 GB eller mindre i storlek.

För att säkerställa att skrivning av data till en fil på SD-kortet kan utföras under lämpliga förhållanden måste vi lägga till kod för att kontrollera om SD-kortet är korrekt isatt i VEX IQ Brain (2:a generationen).

  • Använd funktionen brain.sdcard.is_inserted() för att kontrollera om SD-kortet är isatt. Om SD-kortet inte är isatt, visa motsvarande meddelande på VEX IQ Brain Screen och håll programmet i väntläge.

    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.


    Obs: funktionen brain.sdcard.is_inserted() returnerar True om ett SD-kort sätts i Brain.

Skriva data till en CSV-fil på SD-kortet

Hittills kan vårt program samla in data med VEX IQ Brain (2:a generationen). För att slutföra dataloggningsprojektet behöver vi skriva data till en kommaseparerad fil (CSV) på SD-kortet för framtida granskning och analys.

  • När vi skriver olika typer av data till en CSV-fil vill vi veta vilken typ av data varje kolumn innehåller. För att göra detta kan vi lägga till CSV-rubriktexten till variabeln data_buffer innan vi registrerar data.
    Lägg därför till koden för att deklarera en variabel csvHeaderText för att lagra CSV-rubriktexten för att ange kolumnnamnen för CSV-filen och deklarera en variabel sd_file_name för att lagra namnet på CSV-filen som ska skrivas till SD-kortet.

    Diagram som illustrerar V5-kategoribeskrivningen för Python-handledningar, och visar viktiga komponenter och deras relationer i ett visuellt format.

Obs: Se till att rubrikerna är i samma ordning som data som lagras i variabeln data_buffer.

  • Lägg sedan till CSV-rubriktexten i strängen data_buffer före för loop för datainsamling.

    Diagram som illustrerar V5 Python-programmeringsmiljön, som visar viktiga komponenter och deras funktioner, relevanta för V5-kategoribeskrivningen och Python-handledningarna.

  • Innan vi skriver data till en fil på SD-kortet, låt oss först förstå hur man använder funktionen brain.sdcard.savefile().

    Diagram som illustrerar V5-kategoribeskrivningen för Python-handledningar, och visar viktiga komponenter och funktioner i VEX V5-robotsystemet.


    Denna instruktion skriver data som lagras i variabeln data_buffer till en namngiven CSV-fil på SD-kortet.
    Låt oss bryta ner det:
    • brain.sdcard.savefile(): Funktionen sparar en byte-array i en namngiven fil på SD-kortet. Funktionen returnerar antalet byte som skrivits till filen.

    • sd_filnamn: Funktionens första parameter. Anger namnet på filen som ska skrivas. I det här projektet lagras filnamnet i variabeln sd_filnamn.

    • bytearray(datat_buffer,'utf-8'): Funktionens andra parameter. Representerar bytearrayen som ska skrivas in i filen.

        • bytearray(): Metoden skapar en föränderlig bytearray. I den här instruktionen använder vi den för att konvertera en sträng till en bytearray genom att ange kodningen.
        • data_buffer: Metodens första parameter. Anger källan som ska konverteras till en bytearray. I det här projektet är källan data som lagras i variabeln data_buffer. 
        • 'utf-8': Metodens andra parameter. Anger den angivna kodningen som används för att koda strängen. Kodningen är 'utf-8' i den här instruktionen. 
  • Efter för loop för datainsamling, använd funktionen brain.sdcard.savefile() för att skriva data som lagrats i variabeln data_buffer till CSV-filen på SD-kortet. Lägg dessutom till koden för att kontrollera returvärdet från funktionen brain.sdcard.savefile() för att verifiera om data har skrivits till filen och visa motsvarande meddelande på VEX IQ Brain-skärmen för att få feedback i realtid.

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


    Obs: Funktionen brain.sdcard.savefile() returnerar antalet byte som skrivits till filen. I det här projektet använder vi den för att skriva insamlad data till en CSV-fil, så antalet byte som skrivs till filen måste vara större än noll. Med andra ord, om funktionen brain.sdcard.savefile() returnerar 0, kan vi dra slutsatsen att data inte har skrivits till filen utan problem. Annars har informationen skrivits till filen.

Grattis! Vi har utvecklat ett dataloggningsprojekt som samlar in accelerationsdata med VEX IQ Brain (2:a generationen) och lagrar den i en CSV-fil på SD-kortet. Härnäst ska vi utforska hur man öppnar CSV-filen för dataanalys. 

Diagram som illustrerar V5-robotens komponenter och deras funktioner, som används i Python-handledningar för VEX-robotprogrammering. Bilden ger en visuell referens för eleverna att förstå hårdvaruinstallationen.

Öppna CSV-filen för dataanalys

När informationen har skrivits till CSV-filen på SD-kortet kan vi använda ett kalkylprogram för att öppna filen för att läsa och analysera informationen. 

Obs: Två av de vanligaste kalkylprogrammen är Google Sheets och Microsoft Excel. I den här artikeln kommer vi att använda Google Sheets (webbaserat) för att öppna CSV-filen på SD-kortet. Processen för att använda andra applikationer är liknande.

  • Ta ut SD-kortet från VEX IQ Brains SD-kortplats. Om datorn har en inbyggd Micro SD-kortplats kan vi sätta i SD-kortet direkt i den kortplatsen. Annars sätter du in SD-kortet i en SD-kortadapter och ansluter sedan adaptern till datorn. 
  • Logga in på vårt Google-konto och öppna Google Sheets. Skapa ett nytt kalkylblad.
  • I kalkylbladet öppnar du menyn ”Arkiv” , väljer ”Importera” > Ladda upp” ”> Bläddra väljer sedan CSV-filen på datorn. När du har laddat upp CSV-filen klickar du påImportera data”. Efter att du har importerat data klickar du på “Öppna nu” för att se den insamlade datan i CSV-filen.

    Översiktsbild för VEX V5 Python-handledningen, som illustrerar viktiga koncept och resurser för programmering med VEX-robotik.

  • (Valfritt) Ett enkelt sätt att analysera data är att rita ett diagram och sedan leta efter trender i data. I kalkylbladet öppnar du menyn ”Infoga” och väljer ”Diagram” för att rita ett diagram med hjälp av data i CSV-filen. Följande graf är resultatet av accelerationsdata som samlats in med VEX IQ Brain (2:a generationen).

    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.


    Obs: Vi kan använda Diagramredigeraren för att välja en annan diagramtyp eller redigera diagrammet baserat på våra behov.

Hittills har vi avslutat dataloggningsprojektet som samlar in data med VEX IQ Brain (2:a generationen) och sparar den i en CSV-fil på SD-kortet. Vi har också lärt oss hur man läser CSV-filen på SD-kortet med hjälp av Google Sheets och till och med skapar ett diagram för vidare analys. Vad händer nu? Låt oss försöka planera fler spännande experiment med VEX-roboten för dataloggning, för att observera hur förändrade miljöfaktorer påverkar olika typer av data och få en djupare förståelse av världen omkring oss.

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

Last Updated: