Registro de datos con un cerebro VEX y sensores usando Python

Introducción

En este artículo, analizaremos cómo crear un proyecto de registro de datos que indique al robot VEX que recopile datos con el cerebro de VEX y los guarde en un archivo CSV en la tarjeta SD para el análisis de datos.

El registro de datos es una herramienta poderosa que podemos usar para ayudar a la investigación científica, realizar nuestros propios experimentos y resolver problemas específicos. Hay varias tareas divertidas y emocionantes que podemos hacer que el robot VEX realice con el registro de datos. Los siguientes son algunos ejemplos:

  • Recopilación de datos con el sensor de distancia para calcular la velocidad del robot.
  • Conducir el robot por el aula y recopilar datos con el sensor óptico para observar los cambios de luz en varios lugares.
  • Llevar al robot a una aventura y registrar datos de coordenadas GPS para crear un mapa.

Habilidades de codificación necesarias para desarrollar un proyecto de registro de datos

  • Utilice varios comandos para recopilar datos con VEX Brain/Sensors y agréguelos a una estructura de datos.
  • Escriba los datos en un archivo de valores separados por comas (CSV) en la tarjeta SD.

Hardware requerido para el registro de datos:

  • Un cerebro VEX (IQ, V5, EXP)
  • Una tarjeta SD
  • Un sensor o múltiples sensores (opcional, según los datos requeridos)

Obtención de datos del sensor

Podemos programar el robot VEX (IQ, V5, EXP) para capturar los datos de los siguientes sensores:

  • Sensor inercial
  • Sensor de distancia
  • Sensor óptico
  • Sensor de visión
  • Sensor de rotación (V5, EXP)
  • Sensor GPS (V5)

Nota: el cerebro VEX IQ (2ª generación) y el cerebro VEX EXP tienen un sensor inercial incorporado. Podemos recopilar los datos del sensor de inercia con estos cerebros VEX.

En este artículo, desarrollaremos un proyecto de registro de datos que recopila los datos de aceleración con el VEX IQ Brain (2ª generación) y los almacena en una tarjeta SD. 

En primer lugar, tenemos que escribir un breve programa para obtener lecturas del temporizador y el sensor inercial integrado en el cerebro VEX IQ (2ª generación).

  • Al comienzo de este programa, tendremos que importar los módulos de Python para controlar VEX IQ Brain (2ª generación) y obtener los datos de él. Por lo tanto, comience agregando estas instrucciones al proyecto.

    Diagrama que ilustra los componentes y características del robot V5, utilizado en tutoriales de Python con fines educativos en robótica.

  • A continuación, agregue el código para declarar una variable numOfDataEntries para almacenar el número de entradas de datos para la grabación, declare una variable polling_delay_msec para almacenar el valor del intervalo de tiempo para la lectura de datos y cree una variable de cadena vacía data_buffer para almacenar los datos leídos del sensor.

    Diagrama que ilustra cómo almacenar datos leídos de un sensor en VEX V5 usando Python, con fragmentos de código y representaciones visuales del flujo de datos y métodos de almacenamiento.

  • Como usaremos el valor actual del temporizador para agregar la marca de tiempo a los datos, debemos restablecer el valor del temporizador a 0 segundos antes de comenzar a recopilar datos.

    Captura de pantalla que muestra el proceso de restablecimiento del temporizador VEX V5 en Python, que ilustra cómo restablecer el valor del temporizador a 0 segundos antes de la recopilación de datos.

  • Antes de usar la instrucción que obtiene los datos del VEX IQ Brain (2nd) y los registra en el búfer, primero debemos entenderlos.
    La siguiente instrucción agrega el valor del temporizador actual a la variable data_buffer en un formato específico.

    Diagrama que ilustra el formato de una variable en Python, utilizado en V5 Category Description en Python Tutorials, que muestra la estructura y los componentes de una variable.

    Desglosemos la cadena de formato "%1.3f"

    • “%”: Introduce el especificador de conversión.
    • “1”: Indica el número mínimo de dígitos que deben estar presentes en la cadena.
    • “.3”: Especifica el número de decimales a incluir en el número formateado.
    • “f”: Indica que el valor a formatear es un número de coma flotante.

    Por lo tanto, podemos usar la cadena de formato%1.3f" " para formatear un número de coma flotante con un ancho mínimo de 1 dígito y una precisión de 3 decimales.

  • Ahora, podemos leer el temporizador y el valor de aceleración del sensor inercial incorporado en el cerebro VEX IQ (2ª generación) y luego agregar los datos a la variable data_buffer en el formato especificado.

    Diagrama que ilustra el formato variable en Python, parte de V5 Category Description, bajo Python Tutorials. La imagen representa visualmente la estructura y el uso de variables en la programación de Python.

    Nota: "\n" es el carácter Nueva línea. Indica que la línea termina aquí y el comienzo de una nueva línea.

  • Luego, para registrar un cierto número de entradas de datos en la variable data_buffer, podemos usar un bucle for para ejecutar repetidamente las instrucciones que obtienen los datos y adjuntar los datos a la variable data_buffer durante varias iteraciones. Nuestra estrategia es utilizar el valor de la variable numOfDataEntries para determinar el número de iteraciones.

    Gráfico que ilustra el número de iteraciones en un tutorial de Python VEX V5, que muestra puntos de datos y tendencias relacionadas con la programación de iteraciones en robótica.

  • Hasta ahora, nuestro programa registra los datos lo más rápido posible. Sin embargo, queremos registrar datos a intervalos de tiempo específicos. Por lo tanto, podemos usar una función wait() en el bucle for para pausar el programa y agregar el intervalo de tiempo específico entre dos lecturas. Utilizamos el valor de la variable polling_delay_msec para determinar el valor del intervalo de tiempo.

    Gráfico que ilustra el proceso de determinación del valor del intervalo de tiempo en Python, mostrando las variables clave y sus relaciones. Relevante para los tutoriales de Python V5.

¡Felicidades! Hemos terminado el programa para obtener lecturas (los datos de aceleración) del sensor inercial integrado en el cerebro VEX. A continuación, exploraremos cómo escribir los datos en un archivo CSV en la tarjeta SD.

Diagrama que ilustra la estructura de categorías V5 para tutoriales de Python, con componentes clave y relaciones dentro del ecosistema de VEX Robotics.




Conexión de la tarjeta SD al cerebro VEX

Antes de escribir los datos en un archivo en una tarjeta SD, inserte primero la tarjeta SD en la ranura para tarjetas SD del VEX Brain.

Diagrama que ilustra la configuración del robot V5 para tutoriales de Python, mostrando los componentes clave y sus conexiones con fines educativos.

Nota: Formatee la tarjeta SD en FAT32 para la escritura de datos. Recomendamos usar tarjetas SD de 32 GB o menos de tamaño.

Para garantizar que la escritura de datos en un archivo de la tarjeta SD se pueda realizar en las condiciones adecuadas, tendremos que añadir código para comprobar si la tarjeta SD está correctamente insertada en el VEX IQ Brain (2ª generación).

  • Utilice la funciónbrain.sdcard.is_inserted () para comprobar si la tarjeta SD está insertada. Si la tarjeta SD no está insertada, muestre el mensaje correspondiente en la pantalla VEX IQ Brain y mantenga el programa.

    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.


    Nota: la funciónbrain.sdcard.is_inserted () devuelve Verdadero si se inserta una tarjeta SD en el Cerebro.

Escribir los datos en un archivo CSV en la tarjeta SD

Hasta ahora, nuestro programa puede recopilar datos con el VEX IQ Brain (2ª generación). Para completar el proyecto de registro de datos, debemos escribir los datos en un archivo de valores separados por comas (CSV) en la tarjeta SD para su futuro examen y análisis.

  • Al escribir diferentes tipos de datos en un archivo CSV, queremos saber qué tipo de datos contiene cada columna. Para ello, podemos añadir el texto de la cabecera CSV a la variable data_buffer antes de grabar los datos.
    Por lo tanto, agregue el código para declarar una variable csvHeaderText para almacenar el texto del encabezado CSV para especificar los nombres de las columnas para el archivo CSV y declare una variable sd_file_name para contener el nombre del archivo CSV que se escribirá en la tarjeta SD.

    Diagrama que ilustra la descripción de la categoría V5 para los tutoriales de Python, mostrando los componentes clave y sus relaciones en un formato visual.

Nota: Asegúrese de que los encabezados estén en el mismo orden que los datos almacenados en la variable data_buffer.

  • A continuación, agregue el texto del encabezado CSV a la cadena data_buffer antes del bucle for para la recopilación de datos.

    Diagrama que ilustra el entorno de programación Python V5, mostrando los componentes clave y sus funciones, relevantes para la descripción de la categoría V5 y los tutoriales de Python.

  • Antes de escribir datos en un archivo de la tarjeta SD, primero vamos a entender cómo usar la función brain.sdcard.savefile ().

    Diagrama que ilustra la descripción de la categoría V5 para los tutoriales de Python, mostrando los componentes clave y las funcionalidades del sistema de robótica VEX V5.


    Esta instrucción escribe los datos almacenados en la
    variable data_buffer en un archivo CSV con nombre en la tarjeta SD.
    Vamos a desglosarlo:
    • brain.sdcard.savefile(): La función guarda una matriz de bytes en un archivo con nombre en la tarjeta SD. La función devuelve el número de bytes escritos en el archivo.

    • sd_file_name: El primer parámetro de la función. Indica el nombre del archivo a escribir. En este proyecto, el nombre del archivo se almacena en la variable sd_file_name.

    • bytearray(datat_buffer,’utf-8’): El segundo parámetro de la función. Representa la matriz de bytes que se escribirá en el archivo.

        • bytearray(): El método crea un bytearray mutable. En esta instrucción, lo usamos para convertir una cadena en un bytearray especificando la codificación.
        • data_buffer: El primer parámetro del método. Indica el origen que se convertirá en una matriz de bytes. En este proyecto, la fuente son los datos almacenados en la variable data_buffer. 
        • ‘utf-8’: El segundo parámetro del método. Indica la codificación especificada utilizada para codificar la cadena. La codificación es ‘utf-8’ en esta instrucción. 
  • Después del bucle for para la recopilación de datos, use la función brain.sdcard.savefile () para escribir los datos almacenados en la variable data_buffer en el archivo CSV de la tarjeta SD. Además, agregue el código para verificar el valor de retorno de la función brain.sdcard.savefile() para verificar si los datos se han escrito en el archivo con éxito y muestre el mensaje correspondiente en la pantalla VEX IQ Brain para obtener comentarios en tiempo real.

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


    Nota: La funciónbrain.sdcard.savefile () devuelve el número de bytes escritos en el archivo. En este proyecto, lo usamos para escribir los datos recopilados en un archivo CSV, por lo que el número de bytes escritos en el archivo debe ser mayor que cero. En otras palabras, si la funciónbrain.sdcard.savefile () devuelve 0, podemos concluir que los datos no se han escrito correctamente en el archivo. De lo contrario, los datos se han escrito en el archivo.

¡Felicidades! Hemos desarrollado un proyecto de registro de datos que recopila los datos de aceleración con el VEX IQ Brain (2ª generación) y los almacena en un archivo CSV en la tarjeta SD. A continuación, exploraremos cómo abrir el archivo CSV para el análisis de datos. 

Diagrama que ilustra los componentes del robot V5 y sus funciones, utilizado en los tutoriales de Python para la programación de la robótica VEX. La imagen proporciona una referencia visual para que los alumnos comprendan la configuración del hardware.

Abrir el archivo CSV para el análisis de datos

Una vez que los datos se han escrito en el archivo CSV de la tarjeta SD, podemos usar una aplicación de hoja de cálculo para abrir el archivo para leer y analizar los datos. 

Nota: Dos de las aplicaciones de hoja de cálculo más comunes son Google Sheets y Microsoft Excel. En este artículo, usaremos Google Sheets (basado en la web) para abrir el archivo CSV en la tarjeta SD. El proceso de uso de otras aplicaciones es similar.

  • Retire la tarjeta SD de la ranura para tarjetas SD del VEX IQ Brain. Si la computadora tiene una ranura para tarjeta Micro SD incorporada, podemos insertar la tarjeta SD directamente en esa ranura. De lo contrario, inserte la tarjeta SD en un adaptador de tarjeta SD y luego conecte el adaptador al ordenador. 
  • Inicia sesión en nuestra cuenta de Google y abre Google Sheets. Crear una nueva hoja de cálculo.
  • En la hoja de cálculo, abre el menú "Archivo ", selecciona el botón "Importar> " - "Cargar> " - "Examinar" y luego elige el archivo CSV en la computadora. Después de cargar el archivo CSV, haga clic en el botón "Importar datos". Después de importar los datos, haga clic en "Abrir ahora" para ver los datos recopilados en el archivo CSV.

    Imagen general del tutorial de Python VEX V5, que ilustra los conceptos y recursos clave para la programación con robótica VEX.

  • (Opcional) Una forma fácil de analizar los datos es dibujar un gráfico y luego buscar las tendencias en los datos. En la hoja de cálculo, abra el menú "Insertar" y seleccione "Gráfico" para dibujar un gráfico utilizando los datos del archivo CSV. El siguiente gráfico es el resultado de los datos de aceleración recogidos con el VEX IQ Brain (2ª generación).

    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.


    Nota: Podemos usar el editor de gráficos para seleccionar un tipo de gráfico diferente o editar el gráfico en función de nuestras necesidades.

Hasta este punto, hemos terminado el proyecto de registro de datos que recopila datos con el VEX IQ Brain (2ª generación) y los guarda en un archivo CSV en la tarjeta SD. Además, hemos aprendido a leer el archivo CSV en la tarjeta SD utilizando Google Sheets e incluso a crear un gráfico para su posterior análisis. ¿Y ahora qué? Intentemos planificar experimentos más emocionantes utilizando el robot VEX para el registro de datos, para observar cómo los factores ambientales cambiantes afectan a varios tipos de datos y obtener una comprensión más profunda del mundo que nos rodea.

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

Last Updated: