Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"

Boletín No. 86
1o. de septiembre de 2021




USO Y CONFIGURACIÓN DEL SISTEMA OPERATIVO EV3DEV COMO UNA PLATAFORMA EXPERIMENTAL A PARTIR DEL ROBOT LEGO EV3

 

M. en C. Rodrigo Vázquez López
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
M. en C. Esther Viridiana Vázquez Carmona
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
M. en C. Luis Alberto Flores Montaño
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Dr. Juan Carlos Herrera Lozada
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Instituto Politécnico Nacional
Centro de Innovación y Desarrollo Tecnológico en Cómputo (IPN-CIDETEC)

Dr. Jacobo Sandoval Gutiérrez
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Universidad Autónoma Metropolitana Unidad Lerma
Departamento de Procesos Productivos

 

Resumen

Existen diferentes plataformas de robots comerciales para la realización de pruebas y experimentos, sin embargo, las plataformas profesionales orientadas a la investigación son inaccesibles para los estudiantes y entusiastas de la robótica debido a su elevado costo. Por otra parte, en los últimos años han aparecido dispositivos electrónicos en forma de juguetes encaminados a fomentar el aprendizaje de la robótica en los jóvenes. Algunos de estos dispositivos cuentan con recursos y elementos suficientes para ser utilizados en diversas investigaciones y cuyo potencial se encuentra limitado por los fabricantes. Por lo anterior, el objetivo de este documento es presentar el uso y la configuración del robot LEGO EV3 como plataforma de experimentación empleando el sistema operativo de uso libre ev3dev.

1. Introducción

Existen diversas plataformas y herramientas comerciales para el desarrollo de aplicaciones y prueba de algoritmos en la robótica. No obstante, aunque dichas plataformas ofrecen diversos tipos de soluciones dependiendo de las necesidades de los usuarios, el alto costo limita su adquisición a laboratorios, áreas o personas que cuenten con los recursos y espacio suficiente para adquirirlas.

Por otra parte, el aumento de la velocidad de procesamiento de cómputo, disminución de tamaño de los sistemas de procesamiento y la reducción de costos de las nuevas tecnologías han propiciado la aparición de herramientas didácticas y juguetes cuyo objetivo es ayudar a desarrollar a los jóvenes el interés por la robótica y la programación. Dichas herramientas generalmente ofrecen recursos de cómputo suficientes, así como componentes adicionales como sensores y actuadores. Sin embargo, debido a que fueron concebidas como herramientas de enseñanza o diversión, generalmente los fabricantes limitan el uso y capacidad de aprovechamiento de las herramientas.

A su vez, existen plataformas las cuales los fabricantes permiten que la comunidad de software libre aporte soluciones que permitan aprovechar los recursos de estas herramientas para realizar proyectos de investigación.

El objetivo de este trabajo es presentar el uso del robot LEGO EV3 como plataforma experimental para el desarrollo y prueba de aplicaciones en la robótica. Por este motivo, se describe el proceso de instalación de un sistema operativo basado en GNU/Linux (ev3dev) y el proceso de desarrollo de un programa sencillo utilizando herramientas de software libre.

2. Características del robot EV3

El LEGO EV3 (figura 1) es un robot perteneciente a la línea de productos LEGO MINDSTORMS cuyo objetivo es ofrecer a estudiantes recursos para diseñar, construir y programar aplicaciones [1]. El robot se compone de piezas modulares y desmontables que se pueden conectar entre sí para construir diferentes tipos de aplicaciones. Adicionalmente, incluye cuatro tipos de sensores (sensor de contacto, giroscopio, de color y ultrasónico) y dos tipos de motores (servomotores con encoder y motor de DC). Dichos elementos se conectan a las entradas y salidas del brick o ladrillo inteligente.

 

Figura 1. Robot LEGO EV3.

 

El ladrillo inteligente es una computadora programable la cual se encarga de procesar de los datos provenientes de los sensores y controlar los motores. Para programar el bloque, el fabricante provee diversos recursos de software que permiten realizar distintos tipos de programación. Sin embargo, dichas herramientas limitan el acceso a los recursos de hardware que tiene el ladrillo, los cuales se resumen en la tabla 1.

 

Tabla. 1.
Características del ladrillo inteligente del LEGO EV3.

 

3. Desarrollo

Se propuso la instalación del sistema operativo ev3dev, el cuál es un sistema operativo basado en GNU/Linux diseñado para ejecutarse en el robot EV3 por medio de una tarjeta microSD [2]. La imagen de instalación del sistema se puede descargar en la siguiente dirección: https://www.ev3dev.org/downloads/

Para cargar la imagen en la tarjeta microSD se utilizó la herramienta balenaEtcher [3] tal y como se muestra en la figura 2.

 

Figura 2. Carga de la imagen del sistema ev3 en la tarjeta microSD.

 

Una vez que finalizó el proceso de escritura en la tarjeta, se insertó en el puerto correspondiente y se probó el funcionamiento tal y como se observa en la figura 3.

 

Figura 3. Funcionamiento del sistema ev3dev en el robot.

 

Para actualizar los paquetes del sistema operativo y desarrollar aplicaciones, se requiere conectar el robot a internet. Por este motivo el sistema ofrece diferentes alternativas de conexión: por medio de un cable USB o utilizando un adaptador USB bluetooth o de red inalámbrica (WiFi) [4]. Sin embargo, en caso de utilizar un adaptador de red inalámbrico es necesario consultar en [5] la lista de adaptadores compatibles con el sistema operativo.

Para esta prueba se utilizó una tarjeta de red inalámbrica TP-Link TL-WN725n la cual cuenta con un chipset que es reconocido por el sistema ev3dev. Para seleccionar y conectarse a la red se utilizó el menú de la pantalla y se seleccionó la opción Wireless and Networks y el submenú Wi-Fi tal y como se observa en la figura 4.

 

Figura 4. Configuración de la red inalámbrica.

 

Una vez conectado el robot a la red, se puede acceder al robot de forma remota desde una computadora utilizando ssh y el siguiente comando:

$ ssh cuenta@direccion_ip

Donde cuenta es el nombre de la cuenta de usuario y dirección_ip es la dirección IP del robot EV3. El nombre de usuario por defecto es robot y la clave de ingreso es maker. (figura 5)

 

Figura 5. Conexión al robot EV3 por medio de ssh.

 

Una vez conectado, es posible desarrollar aplicaciones aprovechando los recursos de hardware del robot y los lenguajes de programación soportados descritos en [6]. Sin embargo, la forma más sencilla para iniciar en el desarrollo de aplicaciones es utilizar el lenguaje de programación Python y las bibliotecas python-ev3dev. Dichas bibliotecas ofrecen funciones para acceder a los datos de los sensores y controlar el funcionamiento de los motores [7].

Para probar el funcionamiento de las bibliotecas, se utilizó el código que se muestra en el Anexo 1, el cual genera una secuencia de encendido y apagado de los LED’s del robot. El código se escribió utilizando el editor de texto nano y el comando:

$ nano prueba.py

Una vez que se terminó de escribir el código, es necesario cambiar los permisos de archivo para volverlo ejecutable, para eso se utiliza el siguiente comando:

$ chmod +x prueba.py

El programa se ejecutó con el siguiente comando:

$./prueba.py

4. Resultados

En la figura 6 se observan la ejecución y los resultados del programa de prueba. El programa ejecuta una secuencia de encendido de los LED ubicados en el ladrillo inteligente. En dicha secuencia, el LED izquierdo se enciende en color ámbar durante 5 segundos para después apagarse y encender el LED derecho en color rojo durante 5 segundos. La secuencia se repite de forma indefinida hasta que se detenga la ejecución del programa.

 

Figura 6. Ejecución y resultados del programa de prueba.

Haga clic aquí para consultar el código

5. Conclusiones

Se presentaron las características del robot EV3 y se mostró que es posible utilizarlo como herramienta de pruebas y desarrollo de aplicaciones de robótica apoyado de herramientas de software libre como es el sistema operativo ev3dev. Al ser ev3dev un sistema operativo basado en GNU/Linux es posible utilizar diferentes lenguajes de programación y herramientas de desarrollo, así como aprovechar los puertos para conectar comunicarse con diversos dispositivos.

El uso y aplicación de herramientas de software permite aprovechar de mejor forma los recursos de los dispositivos diseñados para de funcionar como juguetes o herramientas de enseñanza los cuales normalmente se encuentran limitados por las herramientas del fabricante. Sin embargo, con estas alternativas es posible que los entusiastas y aprendices de la robótica puedan acceder a plataformas de desarrollo y prueba a pequeña escala y a menor costo con respecto a las plataformas dedicadas.

Referencias

  1. LEGO Group. (2021). Mindstorms EV3. Recuperado de: https://education.lego.com/en-us/products/lego-mindstorms-education-ev3-core-set/5003400

  2. ev3devOrg. (2021). Getting Started with ev3dev. Recuperado de: https://www.ev3dev.org

  3. Balena. (2021). balenaEtecher – Flash OS Images to SD Cards & USB Drives. Recuperado de: https://www.balena.io/etcher/

  4. ev3devOrg. (2021). Networking. Recuperado de: https://www.ev3dev.org/docs/networking/

  5. Lechner, D. (2021). USB Wi Fi Dongles. Recuperado de: https://github.com/ev3dev/ev3dev/wiki/USB-Wi-Fi-Dongles

  6. ev3devOrg. (2021). Programming Languages. Recuperado de: https://www.ev3dev.org/docs/programming-languages/

  7. Hempelt R. (2021). Python language bindings for ev3dev. Recuperado de: https://ev3dev-lang.readthedocs.io/projects/python-ev3dev/en/stable/index.html