Rejestrowanie danych za pomocą mózgu i czujników VEX przy użyciu języka Python

Wstęp

W tym artykule omówimy, jak stworzyć projekt rejestracji danych, który instruuje Robota VEX, aby zbierał dane za pomocą VEX Brain i zapisywał je w pliku CSV na karcie SD w celu analizy danych.

Rejestrowanie danych to potężne narzędzie, które możemy wykorzystać do wspomagania badań naukowych, przeprowadzania własnych eksperymentów i rozwiązywania konkretnych problemów. Istnieje wiele zabawnych i ekscytujących zadań, które możemy wykonać za pomocą robota VEX za pomocą rejestrowania danych. Oto kilka przykładów:

  • Zbieranie danych za pomocą czujnika odległości w celu obliczenia prędkości robota.
  • Prowadzenie robota po klasie i zbieranie danych za pomocą czujnika optycznego w celu obserwacji zmian oświetlenia w różnych miejscach.
  • Zabierz robota na przygodę i zapisz współrzędne GPS, aby stworzyć mapę.

Umiejętności kodowania potrzebne do opracowania projektu rejestrowania danych

  • Użyj różnych poleceń, aby zebrać dane za pomocą VEX Brain/Sensors i dodać je do struktury danych.
  • Zapisz dane w pliku wartości rozdzielanych przecinkami (CSV) na karcie SD.

Sprzęt wymagany do rejestrowania danych:

  • Mózg VEX (IQ, V5, EXP)
  • Karta SD
  • Czujnik lub wiele czujników (opcjonalnie, w zależności od wymaganych danych)

Pobieranie danych z czujnika

Możemy zaprogramować Robota VEX (IQ, V5, EXP) tak, aby zbierał dane z następujących czujników:

  • Czujnik inercyjny
  • Czujnik odległości
  • Czujnik optyczny
  • Czujnik wizyjny
  • Czujnik obrotu (V5, EXP)
  • Czujnik GPS (V5)

Uwaga: Brain VEX IQ (2. generacji) i VEX EXP Brain mają wbudowany czujnik bezwładnościowy. Za pomocą tych mózgów VEX możemy zbierać dane z czujnika bezwładnościowego.

W tym artykule opracujemy projekt rejestrowania danych, który zbiera dane dotyczące przyspieszenia za pomocą VEX IQ Brain (2. generacji) i zapisuje je na karcie SD. 

Najpierw musimy napisać krótki program, który pobierze odczyty z timera i czujnika inercyjnego wbudowanego w mózg VEX IQ (2. generacji).

  • Na początku tego programu będziemy musieli zaimportować moduły Pythona do sterowania VEX IQ Brain (2. generacji) i pobrać z niego dane. Zatem zacznij od dodania tych instrukcji do projektu.

    Schemat ilustrujący komponenty i funkcje robota V5, używany w samouczkach Pythona w celach edukacyjnych z zakresu robotyki.

  • Następnie dodaj kod deklarujący zmienną numOfDataEntries do przechowywania liczby wpisów danych do rejestracji, zadeklaruj zmienną polling_delay_msec do przechowywania wartości przedziału czasu do odczytu danych i utwórz pustą zmienną łańcuchową data_buffer do przechowywania dane odczytane z czujnika.

    Schemat ilustrujący sposób przechowywania danych odczytanych z czujnika w VEX V5 za pomocą języka Python. Zawiera fragmenty kodu i wizualne reprezentacje przepływu danych i metod przechowywania.

  • Ponieważ użyjemy bieżącej wartości Timera do dodania znacznika czasu do danych, przed rozpoczęciem zbierania danych musimy zresetować wartość timera z powrotem do 0 sekund.

    Zrzut ekranu przedstawiający proces resetowania licznika VEX V5 w Pythonie, ilustrujący sposób ustawienia wartości licznika z powrotem na 0 sekund przed rozpoczęciem zbierania danych.

  • Zanim skorzystamy z instrukcji pobierającej dane z VEX IQ Brain (2. miejsce) i zapisującej dane w buforze, musimy ją najpierw zrozumieć.
    Poniższa instrukcja dołącza bieżącą wartość licznika do zmiennej data_buffer w określonym formacie.

    Diagram ilustrujący format zmiennej w Pythonie, używany w opisie kategorii V5 w samouczkach Pythona, pokazujący strukturę i składniki zmiennej.

    Rozłóżmy ciąg formatujący „%1.3f”

    • „%”: wprowadza specyfikator konwersji.
    • „1”: Wskazuje minimalną liczbę cyfr w ciągu znaków.
    • „.3”: Określa liczbę miejsc dziesiętnych, które należy uwzględnić w sformatowanej liczbie.
    • „f”: wskazuje, że wartość do sformatowania jest liczbą zmiennoprzecinkową.

    W ten sposób możemy użyć ciągu formatującego „%1.3f” do sformatowania liczby zmiennoprzecinkowej o minimalnej szerokości 1 cyfry i dokładności do 3 miejsc po przecinku.

  • Teraz możemy odczytać licznik czasu i wartość przyspieszenia czujnika bezwładnościowego wbudowanego w mózg VEX IQ (2. generacji), a następnie dołączyć dane do zmiennej data_buffer w określonym formacie.

    Schemat ilustrujący format zmiennych w Pythonie, część Opisu kategorii V5, w sekcji Samouczki Pythona. Obraz wizualnie przedstawia strukturę i wykorzystanie zmiennych w programowaniu w języku Python.

    Uwaga: „\n” to znak nowej linii. Wskazuje, że linia kończy się w tym miejscu i zaczyna się nowa linia.

  • Następnie, aby zapisać pewną liczbę wpisów danych w zmiennej data_buffer , możemy użyć pętli for , aby wielokrotnie wykonać instrukcje, które pobierają dane i dołączają dane do zmiennej data_buffer przez pewną liczbę iteracji. Naszą strategią jest użycie wartości zmiennej numOfDataEntries do określenia liczby iteracji.

    Wykres ilustrujący liczbę iteracji w samouczku języka Python VEX V5, pokazujący punkty danych i trendy związane z iteracjami programowania w robotyce.

  • Póki co nasz program rejestruje dane najszybciej jak to możliwe. Chcemy jednak rejestrować dane w określonych odstępach czasu. Dlatego możemy użyć funkcji wait() w pętli for , aby wstrzymać program w celu dodania określonego odstępu czasu między dwoma odczytami. Do określenia wartości przedziału czasowego wykorzystujemy wartość zmiennej polling_delay_msec.

    Wykres ilustrujący proces określania wartości przedziału czasu w Pythonie, prezentujący kluczowe zmienne i ich relacje. Dotyczy samouczków języka Python w wersji 5.

Gratulacje! Zakończyliśmy program uzyskiwania odczytów (danych przyspieszenia) z czujnika inercyjnego wbudowanego w mózg VEX. Następnie przyjrzymy się, jak zapisać dane w pliku CSV na karcie SD.

Schemat ilustrujący strukturę kategorii V5 dla samouczków Pythona, prezentujący kluczowe komponenty i relacje w ekosystemie VEX Robotics.




Podłączanie karty SD do VEX Brain

Przed zapisaniem danych do pliku na karcie SD, włóż najpierw kartę SD do gniazda kart SD w VEX Brain.

Schemat ilustrujący konfigurację robota V5 na potrzeby samouczków Python, prezentujący kluczowe komponenty i ich połączenia w celach edukacyjnych.

Uwaga: Aby móc zapisywać dane, sformatuj kartę SD w systemie FAT32. Zalecamy używanie kart SD o pojemności 32 GB lub mniejszej.

Aby mieć pewność, że zapis danych do pliku na karcie SD będzie możliwy w odpowiednich warunkach, będziemy musieli dodać kod sprawdzający, czy karta SD jest prawidłowo włożona do VEX IQ Brain (2. generacji).

  • Użyj funkcji brain.sdcard.is_inserted() , aby sprawdzić, czy karta SD jest włożona. Jeśli karta SD nie jest włożona, wyświetl odpowiedni komunikat na ekranie VEX IQ Brain Screen i przytrzymaj 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.


    Uwaga: funkcja() zwraca wartość True, jeśli do Brain zostanie włożona karta SD.

Zapisywanie danych do pliku CSV na karcie SD

Jak dotąd nasz program może zbierać dane za pomocą VEX IQ Brain (2. generacji). Aby ukończyć projekt rejestrowania danych, musimy zapisać dane w pliku wartości rozdzielanych przecinkami (CSV) na karcie SD w celu przyszłego sprawdzenia i analizy.

  • Zapisując różne typy danych w pliku CSV, chcemy wiedzieć, jaki typ danych zawiera każda kolumna. Aby to zrobić, możemy dołączyć tekst nagłówka CSV do zmiennej data_buffer przed zarejestrowaniem danych.
    Zatem dodaj kod deklarujący zmienną csvHeaderText przechowujący tekst nagłówka CSV określający nazwy kolumn dla pliku CSV i deklarujący zmienną nazwa_pliku przechowujący nazwę pliku CSV do zapisania na Karta SD.

    Schemat ilustrujący opis kategorii V5 samouczków języka Python, prezentujący kluczowe komponenty i ich powiązania w formie wizualnej.

Uwaga: Upewnij się, że nagłówki są w tej samej kolejności, co dane zapisane w zmiennej data_buffer.

  • Następnie dołącz tekst nagłówka CSV do ciągu data_buffer przed pętlą for w celu gromadzenia danych.

    Schemat ilustrujący środowisko programistyczne Python V5, prezentujący kluczowe komponenty i ich funkcje, istotne w kontekście opisu kategorii V5 i samouczków Python.

  • Zanim zapiszemy dane do pliku na karcie SD, najpierw przyjrzyjmy się, jak używać funkcji brain.sdcard.savefile().

    Schemat ilustrujący opis kategorii V5 samouczków języka Python, prezentujący kluczowe komponenty i funkcjonalności systemu robotycznego VEX V5.


    Ta instrukcja zapisuje dane zapisane w zmiennej data_buffer do nazwanego pliku CSV na karcie SD.
    Rozłóżmy to na czynniki pierwsze:
    • brain.sdcard.savefile(): Funkcja zapisuje tablicę bajtów do nazwanego pliku na karcie SD. Funkcja zwraca liczbę bajtów zapisanych do pliku.

    • nazwa_pliku sd: Pierwszy parametr funkcji. Wskazuje nazwę pliku do zapisania. W tym projekcie nazwa pliku jest przechowywana w zmiennej sd_file_name.

    • bytearray(datat_buffer,'utf-8'): Drugi parametr funkcji. Reprezentuje tablicę bajtową, która ma zostać zapisana w pliku.

        • bytearray(): Metoda tworzy zmienną bajtarray. W tej instrukcji używamy go do konwersji ciągu znaków na tablicę bajtową poprzez określenie kodowania.
        • data_buffer: Pierwszy parametr metody. Wskazuje źródło, które ma zostać przekonwertowane na tablicę bajtową. W tym projekcie źródłem są dane zapisane w zmiennej data_buffer. 
        • „utf-8”: Drugi parametr metody. Wskazuje określone kodowanie użyte do kodowania ciągu. W tej instrukcji kodowanie to „utf-8”. 
  • Po pętli for do zbierania danych użyj funkcji brain.sdcard.savefile() w celu zapisania danych przechowywanych w zmiennej data_buffer do pliku CSV na karcie SD. Dodatkowo dodaj kod sprawdzający wartość zwracaną przez funkcję brain.sdcard.savefile() w celu weryfikacji, czy dane zostały pomyślnie zapisane do pliku, i wyświetl odpowiedni komunikat na ekranie mózgu VEX IQ, aby uzyskać informacje zwrotne w czasie rzeczywistym.

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


    Uwaga: Funkcja brain.sdcard.savefile() zwraca liczbę bajtów zapisanych do pliku. W tym projekcie wykorzystujemy go do zapisania zebranych danych do pliku CSV, więc liczba bajtów zapisywanych do pliku musi być większa od zera. Innymi słowy, jeśli funkcja brain.sdcard.savefile() zwróci 0, możemy stwierdzić, że dane nie zostały pomyślnie zapisane do pliku. W przeciwnym razie dane zostały zapisane w pliku.

Gratulacje! Opracowaliśmy projekt rejestrowania danych, który zbiera dane dotyczące przyspieszenia za pomocą VEX IQ Brain (2. generacji) i zapisuje je w pliku CSV na karcie SD. Następnie dowiemy się, jak otworzyć plik CSV w celu analizy danych. 

Schemat ilustrujący komponenty robota V5 i ich funkcje, używany w samouczkach Pythona dotyczących programowania robotów VEX. Obraz stanowi wizualny punkt odniesienia umożliwiający uczniom zrozumienie konfiguracji sprzętu.

Otwieranie pliku CSV do analizy danych

Po zapisaniu danych do pliku CSV na karcie SD możemy za pomocą aplikacji arkusza kalkulacyjnego otworzyć plik w celu odczytu i analizy danych. 

Uwaga: Dwie najpopularniejsze aplikacje arkuszy kalkulacyjnych to Arkusze Google i Microsoft Excel. W tym artykule użyjemy Arkuszy Google (internetowych) do otwarcia pliku CSV na karcie SD. Proces korzystania z innych aplikacji jest podobny.

  • Wyjmij kartę SD z gniazda karty SD VEX IQ Brain. Jeżeli komputer posiada wbudowany slot na kartę Micro SD, możemy włożyć kartę SD bezpośrednio do tego slotu. W przeciwnym razie włóż kartę SD do adaptera karty SD, a następnie podłącz adapter do komputera. 
  • Zaloguj się na nasze konto Google i otwórz Arkusze Google. Utwórz nowy arkusz kalkulacyjny.
  • W arkuszu kalkulacyjnym otwórz menu „Plik” , wybierz przycisk „Importuj” -> „Prześlij” -> „Przeglądaj” , a następnie wybierz plik CSV na komputerze. Po przesłaniu pliku CSV kliknij przycisk „Importuj dane”. Po zaimportowaniu danych kliknij „Otwórz teraz” , aby zobaczyć zebrane dane w pliku CSV.

    Obraz przedstawiający przegląd samouczka języka Python dla VEX V5, ilustrujący kluczowe koncepcje i zasoby dotyczące programowania robotyki VEX.

  • (Opcjonalnie) Jednym z łatwych sposobów analizowania danych jest narysowanie wykresu, a następnie wyszukanie trendów w danych. W arkuszu kalkulacyjnym otwórz menu „Wstaw” i wybierz „Wykres” , aby narysować wykres na podstawie danych z pliku CSV. Poniższy wykres przedstawia wynik danych o przyspieszeniu zebranych przy użyciu VEX IQ Brain (2. generacja).

    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.


    Uwaga: Możemy użyć Edytora wykresów aby wybrać inny typ wykresu lub edytować wykres według naszych potrzeb.

Do tego momentu zakończyliśmy projekt rejestrowania danych, który zbiera dane za pomocą VEX IQ Brain (2. generacji) i zapisuje je w pliku CSV na karcie SD. Dowiedzieliśmy się także, jak odczytać plik CSV na karcie SD za pomocą Arkuszy Google, a nawet stworzyć wykres do dalszej analizy. Co następne? Spróbujmy zaplanować bardziej ekscytujące eksperymenty z wykorzystaniem Robota VEX do rejestracji danych, aby obserwować, jak zmieniające się czynniki środowiskowe wpływają na różne typy danych i uzyskać głębsze zrozumienie otaczającego nas świata.

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

Last Updated: