Datenprotokollierung mit einem VEX-Gehirn und Sensoren unter Verwendung von Python

Einführung

In diesem Artikel besprechen wir, wie man ein Datenprotokollierungsprojekt erstellt, das den VEX-Roboter anweist, Daten mit dem VEX Brain zu sammeln und sie zur Datenanalyse in einer CSV-Datei auf der SD-Karte zu speichern.

Die Datenprotokollierung ist ein leistungsstarkes Werkzeug, mit dem wir wissenschaftliche Forschung unterstützen, eigene Experimente durchführen und spezifische Probleme lösen können. Es gibt verschiedene unterhaltsame und spannende Aufgaben, die wir mit dem VEX-Roboter mithilfe der Datenprotokollierung erledigen können. Nachfolgend einige Beispiele:

  • Sammeln von Daten mit dem Distanzsensor zur Berechnung der Geschwindigkeit des Roboters.
  • Fahren Sie den Roboter durch das Klassenzimmer und sammeln Sie Daten mit dem optischen Sensor, um Lichtveränderungen an verschiedenen Orten zu beobachten.
  • Nehmen Sie den Roboter mit auf ein Abenteuer und zeichnen Sie GPS-Koordinatendaten auf, um eine Karte zu erstellen.

Für die Entwicklung eines Datenprotokollierungsprojekts erforderliche Programmierkenntnisse

  • Verwenden Sie verschiedene Befehle, um Daten mit VEX Brain/Sensors zu sammeln und sie einer Datenstruktur hinzuzufügen.
  • Schreiben Sie die Daten in eine CSV-Datei (Comma-Separated Values) auf der SD-Karte.

Erforderliche Hardware für die Datenprotokollierung:

  • Ein VEX-Gehirn (IQ, V5, EXP)
  • Eine SD-Karte
  • Ein Sensor oder mehrere Sensoren (optional, je nach den erforderlichen Daten)

Daten vom Sensor abrufen

Wir können den VEX-Roboter (IQ, V5, EXP) so programmieren, dass er die Daten der folgenden Sensoren erfasst:

  • Trägheitssensor
  • Abstandssensor
  • Optischer Sensor
  • Vision-Sensor
  • Rotationssensor (V5, EXP)
  • GPS-Sensor (V5)

Hinweis: Das VEX IQ Brain (2. Generation) und das VEX EXP Brain verfügen über einen integrierten Trägheitssensor. Mit diesen VEX-Gehirnen können wir die Daten des Trägheitssensors sammeln.

In diesem Artikel entwickeln wir ein Datenprotokollierungsprojekt, das die Beschleunigungsdaten mit dem VEX IQ Brain (2. Generation) sammelt und auf einer SD-Karte speichert. 

Zuerst müssen wir ein kurzes Programm schreiben, um Messwerte vom Timer und dem Trägheitssensor zu erhalten, die im VEX IQ Brain (2. Generation) integriert sind.

  • Zu Beginn dieses Programms müssen wir die Python-Module importieren, um VEX IQ Brain (2. Generation) zu steuern und die Daten daraus abzurufen. Beginnen Sie also damit, diese Anweisungen zum Projekt hinzuzufügen.

    Diagramm zur Veranschaulichung der Komponenten und Funktionen des V5-Roboters, verwendet in Python-Tutorials zu Bildungszwecken in der Robotik.

  • Fügen Sie als Nächstes den Code hinzu, um eine Variable numOfDataEntries zu deklarieren, um die Anzahl der Dateneinträge für die Aufzeichnung zu speichern, deklarieren Sie eine Variable polling_delay_msec , um den Wert des Zeitintervalls zum Lesen von Daten zu speichern, und erstellen Sie eine leere Zeichenfolgenvariable data_buffer zum Speichern die vom Sensor gelesenen Daten.

    Diagramm, das veranschaulicht, wie mit Python von einem Sensor gelesene Daten in VEX V5 gespeichert werden, mit Codeausschnitten und visuellen Darstellungen des Datenflusses und der Speichermethoden.

  • Da wir den aktuellen Wert des Timers verwenden, um den Zeitstempel zu den Daten hinzuzufügen, müssen wir den Timerwert auf 0 Sekunden zurücksetzen, bevor wir mit der Datenerfassung beginnen.

    Screenshot, der den VEX V5-Timer-Reset-Prozess in Python zeigt und veranschaulicht, wie der Timerwert vor der Datenerfassung auf 0 Sekunden zurückgesetzt wird.

  • Bevor wir die Anweisung verwenden, die die Daten vom VEX IQ Brain (2.) abruft und die Daten im Puffer aufzeichnet, müssen wir sie zunächst verstehen.
    Die folgende Anweisung hängt den aktuellen Timerwert in einem bestimmten Format an die Variable data_buffer an.

    Diagramm, das das Format einer Variablen in Python veranschaulicht, in der V5-Kategoriebeschreibung unter Python-Tutorials verwendet wird und die Struktur und Komponenten einer Variablen zeigt.

    Lassen Sie uns die Formatzeichenfolge „%1.3f“aufschlüsseln: 

    • „%“: Führt den Konvertierungsspezifizierer ein.
    • „1“: Gibt die Mindestanzahl an Ziffern an, die in der Zeichenfolge vorhanden sein müssen.
    • „.3“: Gibt die Anzahl der Dezimalstellen an, die in die formatierte Zahl einbezogen werden sollen.
    • „f“: Gibt an, dass der zu formatierende Wert eine Gleitkommazahl ist.

    Somit können wir mit der Formatzeichenfolge „%1.3f“ eine Gleitkommazahl mit einer Mindestbreite von 1 Ziffer und einer Genauigkeit von 3 Dezimalstellen formatieren.

  • Jetzt können wir den Timer und den Beschleunigungswert des im VEX IQ Brain (2. Generation) integrierten Trägheitssensors lesen und die Daten dann im angegebenen Format an die Variable data_buffer anhängen.

    Diagramm zur Veranschaulichung des Variablenformats in Python, Teil der V5-Kategoriebeschreibung unter Python-Tutorials. Das Bild stellt visuell die Struktur und Verwendung von Variablen in der Python-Programmierung dar.

    Hinweis: „\n“ ist das Zeichen für die neue Zeile. Es zeigt an, dass die Zeile hier endet und eine neue Zeile beginnt.

  • Um dann eine bestimmte Anzahl von Dateneinträgen in der Variablen data_buffer aufzuzeichnen, können wir eine for-Schleife verwenden, um die Anweisungen, die die Daten abrufen und die Daten für eine Reihe von Iterationen an die Variable data_buffer anhängen, wiederholt auszuführen. Unsere Strategie besteht darin, den Wert der Variablen numOfDataEntries zu verwenden, um die Anzahl der Iterationen zu bestimmen.

    Diagramm, das die Anzahl der Iterationen in einem VEX V5 Python-Tutorial veranschaulicht und Datenpunkte und Trends im Zusammenhang mit Programmieriterationen in der Robotik zeigt.

  • Bisher zeichnet unser Programm Daten so schnell wie möglich auf. Wir möchten jedoch Daten in bestimmten Zeitintervallen aufzeichnen. Daher können wir eine wait() Funktion in der for-Schleife verwenden, um das Programm anzuhalten, um das spezifische Zeitintervall zwischen zwei Messwerten hinzuzufügen. Wir verwenden den Wert der Variablen polling_delay_msec , um den Wert des Zeitintervalls zu bestimmen.

    Diagramm, das den Prozess der Zeitintervallwertbestimmung in Python veranschaulicht und wichtige Variablen und ihre Beziehungen zeigt. Relevant für V5 Python-Tutorials.

Glückwunsch! Wir haben das Programm abgeschlossen, um Messwerte (die Beschleunigungsdaten) vom im VEX Brain integrierten Trägheitssensor zu erhalten. Als Nächstes erfahren Sie, wie Sie die Daten in eine CSV-Datei auf der SD-Karte schreiben.

Diagramm, das die V5-Kategoriestruktur für Python-Tutorials veranschaulicht und wichtige Komponenten und Beziehungen innerhalb des VEX Robotics-Ökosystems hervorhebt.




Anbringen der SD-Karte am VEX Brain

Bevor Sie die Daten in eine Datei auf einer SD-Karte schreiben, stecken Sie zunächst die SD-Karte in den SD-Kartensteckplatz des VEX Brain.

Diagramm zur Veranschaulichung der V5-Roboterkonfiguration für Python-Tutorials. Es zeigt die wichtigsten Komponenten und ihre Verbindungen zu Bildungszwecken.

Hinweis: Formatieren Sie die SD-Karte zum Schreiben von Daten auf FAT32. Wir empfehlen die Verwendung von SD-Karten mit einer Größe von 32 GB oder weniger.

Um sicherzustellen, dass das Schreiben von Daten in eine Datei auf der SD-Karte unter geeigneten Bedingungen durchgeführt werden kann, müssen wir Code hinzufügen, um zu überprüfen, ob die SD-Karte ordnungsgemäß in das VEX IQ Brain (2. Generation) eingelegt ist.

  • Verwenden Sie die Funktion brain.sdcard.is_inserted() , um zu überprüfen, ob die SD-Karte eingelegt ist. Wenn die SD-Karte nicht eingelegt ist, zeigen Sie die entsprechende Meldung auf dem VEX IQ Brain-Bildschirm an und halten Sie das Programm gedrückt.

    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.


    Hinweis: Die brain.sdcard.is_inserted() Funktion gibt True zurück, wenn eine SD-Karte in das Brain eingelegt ist.

Schreiben der Daten in eine CSV-Datei auf der SD-Karte

Bisher kann unser Programm Daten mit dem VEX IQ Brain (2. Generation) sammeln. Um das Datenprotokollierungsprojekt abzuschließen, müssen wir die Daten zur späteren Prüfung und Analyse in eine CSV-Datei (Comma-Separated Values) auf der SD-Karte schreiben.

  • Wenn wir verschiedene Datentypen in eine CSV-Datei schreiben, möchten wir wissen, welche Datentypen jede Spalte enthält. Dazu können wir den CSV-Headertext vor der Datenaufzeichnung an die Variable data_buffer anhängen.
    Fügen Sie daher den Code hinzu, um eine Variable csvHeaderText zu deklarieren, um den CSV-Headertext zu speichern, um die Spaltennamen für die CSV-Datei anzugeben, und deklarieren Sie eine Variable sd_file_name , um den Namen der CSV-Datei zu speichern, in die geschrieben werden soll SD-Karte.

    Diagramm zur Veranschaulichung der V5-Kategoriebeschreibung für Python-Tutorials, das Schlüsselkomponenten und ihre Beziehungen in einem visuellen Format zeigt.

Hinweis: Stellen Sie sicher, dass die Header in derselben Reihenfolge sind wie die in der Variablen data_buffer gespeicherten Daten.

  • Als nächstes hängen Sie den CSV-Headertext an die Zeichenfolge data_buffer vor der Zeichenfolge für Schleife zur Datenerfassung an.

    Diagramm zur Illustration der V5-Python-Programmierumgebung, in dem die wichtigsten Komponenten und ihre Funktionen gezeigt werden, die für die V5-Kategoriebeschreibung und die Python-Tutorials relevant sind.

  • Bevor wir Daten in eine Datei auf der SD-Karte schreiben, wollen wir zunächst verstehen, wie die Funktion brain.sdcard.savefile() verwendet wird.

    Diagramm zur Veranschaulichung der V5-Kategoriebeschreibung für Python-Tutorials und zur Präsentation der wichtigsten Komponenten und Funktionen des VEX V5-Robotiksystems.


    Diese Anweisung schreibt die in der Variablen data_buffer gespeicherten Daten in eine benannte CSV-Datei auf der SD-Karte.
    Lassen Sie es uns aufschlüsseln:
    • brain.sdcard.savefile(): Die Funktion speichert ein Byte-Array in einer benannten Datei auf der SD-Karte. Die Funktion gibt die Anzahl der in die Datei geschriebenen Bytes zurück.

    • sd_file_name: Der erste Parameter der Funktion. Gibt den Namen der zu schreibenden Datei an. In diesem Projekt wird der Dateiname in der Variablen sd_file_name gespeichert.

    • bytearray(datat_buffer,'utf-8'): Der zweite Parameter der Funktion. Stellt das Bytearray dar, das in die Datei geschrieben werden soll.

        • bytearray(): Die Methode erstellt ein veränderbares Bytearray. In dieser Anleitung verwenden wir es, um einen String in ein Bytearray umzuwandeln, indem wir die Codierung angeben.
        • data_buffer: Der erste Parameter der Methode. Gibt die Quelle an, die in ein Bytearray konvertiert werden soll. In diesem Projekt sind die Daten, die in der Variablen data_buffer gespeichert sind, die Quelle. 
        • 'utf-8': Der zweite Parameter der Methode. Gibt die angegebene Codierung an, die zum Codieren der Zeichenfolge verwendet wird. Die Kodierung in dieser Anleitung ist „utf-8“. 
  • Verwenden Sie nach der for-Schleife zur Datenerfassung die Funktion brain.sdcard.savefile() , um die in der Variablen data_buffer gespeicherten Daten in die CSV-Datei auf der SD-Karte zu schreiben. Fügen Sie außerdem den Code hinzu, um den Rückgabewert der Funktion brain.sdcard.savefile() zu prüfen, um festzustellen, ob die Daten erfolgreich in die Datei geschrieben wurden, und um die entsprechende Meldung auf dem VEX IQ Brain Screen anzuzeigen, um Feedback in Echtzeit zu erhalten.

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


    Hinweis: Die Funktion brain.sdcard.savefile() gibt die Anzahl der in die Datei geschriebenen Bytes zurück. In diesem Projekt verwenden wir es, um die gesammelten Daten in eine CSV-Datei zu schreiben, daher muss die Anzahl der in die Datei geschriebenen Bytes größer als Null sein. Mit anderen Worten: Wenn die Funktion brain.sdcard.savefile() 0 zurückgibt, können wir daraus schließen, dass die Daten nicht erfolgreich in die Datei geschrieben wurden. Andernfalls wurden die Daten in die Datei geschrieben.

Glückwunsch! Wir haben ein Datenprotokollierungsprojekt entwickelt, das die Beschleunigungsdaten mit dem VEX IQ Brain (2. Generation) sammelt und in einer CSV-Datei auf der SD-Karte speichert. Als Nächstes erfahren Sie, wie Sie die CSV-Datei für die Datenanalyse öffnen. 

Diagramm, das die Komponenten und Funktionen des V5-Roboters veranschaulicht, wird in Python-Tutorials für die VEX-Robotikprogrammierung verwendet. Das Bild bietet Lernenden eine visuelle Referenz zum Verständnis des Hardware-Setups.

Öffnen der CSV-Datei zur Datenanalyse

Sobald die Daten in die CSV-Datei auf der SD-Karte geschrieben wurden, können wir die Datei mit einem Tabellenkalkulationsprogramm öffnen, um die Daten zu lesen und zu analysieren. 

Hinweis: Zwei der häufigsten Tabellenkalkulationsanwendungen sind Google Sheets und Microsoft Excel. In diesem Artikel verwenden wir Google Sheets (webbasiert), um die CSV-Datei auf der SD-Karte zu öffnen. Der Vorgang bei der Verwendung anderer Anwendungen ist ähnlich.

  • Entfernen Sie die SD-Karte aus dem SD-Kartensteckplatz des VEX IQ Brain. Wenn der Computer über einen integrierten Micro-SD-Kartensteckplatz verfügt, können wir die SD-Karte direkt in diesen Steckplatz einlegen. Andernfalls stecken Sie die SD-Karte in einen SD-Kartenadapter und schließen Sie den Adapter dann an den Computer an. 
  • Melden Sie sich bei unserem Google-Konto an und öffnen Sie Google Sheets. Erstellen Sie eine neue Tabelle.
  • Öffnen Sie in der Tabellenkalkulation das Menü „Datei“ , wählen Sie die Schaltfläche „Importieren“ -> „Hochladen“ -> „Durchsuchen“ und wählen Sie dann die CSV-Datei auf dem Computer aus. Klicken Sie nach dem Hochladen der CSV-Datei auf die Schaltfläche „Daten importieren“. Klicken Sie nach dem Importieren der Daten auf „Jetzt öffnen“ , um die gesammelten Daten in der CSV-Datei anzuzeigen.

    Übersichtsbild des VEX V5 Python-Tutorials, das wichtige Konzepte und Ressourcen für die Programmierung mit VEX-Robotik veranschaulicht.

  • (Optional) Eine einfache Möglichkeit, die Daten zu analysieren, besteht darin, ein Diagramm zu zeichnen und dann nach Trends in den Daten zu suchen. Öffnen Sie in der Tabelle das Menü „Einfügen“ und wählen Sie „Diagramm“ aus, um ein Diagramm mit den Daten in der CSV-Datei zu zeichnen. Das folgende Diagramm ist das Ergebnis der mit dem VEX IQ Brain (2. Generation) erfassten Beschleunigungsdaten.

    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.


    Hinweis: Wir können den Diagrammeditor verwenden, um einen anderen Diagrammtyp auszuwählen oder das Diagramm nach unseren Bedürfnissen zu bearbeiten.

Bis zu diesem Punkt haben wir das Datenprotokollierungsprojekt abgeschlossen, bei dem Daten mit dem VEX IQ Brain (2. Generation) gesammelt und in einer CSV-Datei auf der SD-Karte gespeichert werden. Außerdem haben wir gelernt, wie man die CSV-Datei auf der SD-Karte mit Google Sheets liest und sogar ein Diagramm zur weiteren Analyse erstellt. Was als nächstes? Versuchen wir, weitere spannende Experimente mit dem VEX-Roboter zur Datenprotokollierung zu planen, um zu beobachten, wie sich die sich ändernden Umweltfaktoren auf verschiedene Arten von Daten auswirken, und um ein tieferes Verständnis der Welt um uns herum zu erlangen.

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

Last Updated: