1. Ampliación de la capacidad de procesamiento del robot
Lego Mindstorms NXT con una Raspberry Pi
Víctor Manuel Rojas Nóbrega
Juan Antonio Fernández Madrigal
Ana María Cruz Martín
Departamento de Ingeniería de Sistemas y Automática
Universidad de Málaga
14 de febrero de 2014
1
2. Índice
1. Conceptos
2. Elementos involucrados en el sistema
3. Objetivos
4. Trabajos relacionados
5. Sistema desarrollado
6. Características del sistema
7. Resultados
8. Futuros trabajos
2
3. Conceptos
Robótica educativa
¿Qué es la robótica educativa?
Conjunto de actividades pedagógicas que apoyan y fortalecen áreas específicas del conocimiento y
desarrollan competencias en el alumno, a través de la concepción, creación, ensamble y puesta en
funcionamiento de robots.
Sus principales objetivos son:
La actividad de los estudiantes.
La integración de distintas áreas del conocimiento.
La observación y exploración de los problemas.
3
4. Conceptos
Single Board Computer
¿Qué es un Single Board Computer?
Un ordenador de placa reducida (en inglés: Single Board Computer o SBC) es un ordenador completo en
un sólo circuito.
Sus principales características son:
Tamaño reducido.
Uso en entornos industriales o de desarrollo.
Económico.
4
5. Elementos del sistema
Lego Mindstorms NXT
El robot Lego Mindstorms NXT es uno de los kits de aprendizaje más usados en
todo el mundo.
Está compuesto por una serie de sensores (distancia, luz, sonido, etc.) que
interactúan con el medio por el que circula movido por sus motores, todo ello
conectado y controlado por un ladrillo central que contiene un
microcontrolador.
La forma de interactuar con el robot puede ser a través de un programa cargado
previamente por USB en la memoria del ladrillo o mandándole órdenes vía
Bluetooth mediante el protocolo Direct Commands.
Robot Lego Mindstorms NXT
5
6. Elementos del sistema
Raspberry Pi
La Raspberry Pi es un SBC de bajo coste diseñado para estimular la
enseñanza de la computación en las escuelas de todo el mundo.
Posee conectores USB, Ethernet, HDMI, GPIO, MIPI CSI, salida audio de 3.5
mm y de vídeo RCA.
Se alimenta mediante micro USB.
Usa el sistema operativo Raspbian.
6
7. Objetivos
Aumentar la capacidad de cómputo y añadir sensor de visión
¿Qué problema se quiere resolver?
Las limitaciones que posee el robot Lego Mindstorms NXT con respecto a su capacidad de cómputo,
memoria y sensores.
Las limitaciones que tiene el robot en estos ámbitos son:
Un microcontrolador ARM7 a 70Mhz.
Una memoria de 64KBytes de capacidad.
Sensor de colores predefinidos.
7
8. Trabajos relacionados
Aumentar la capacidad de cómputo y añadir sensor de visión
¿Como lo resuelven otros?
Interactuando con el robot mediante dispositivos externos que cargan con todo el trabajo de cómputo,
delegando en el NXT comandos que únicamente interactuen con el firmware.
Unos ejemplos de soluciones propuestas por la comunidad de desarrolladores son:
Mover el robot con un mando de la consola Wii.
Controlarlo usando un smartphone y su cámara.
Mandar órdenes con el NXT usando Python y una Raspberry Pi.
8
12. Sistema desarrollado
Descripción del sistema
¿Como lo resolvemos nosotros?
Conectándo una webcam a la Raspberry Pi y dejándole todo el trabajo de cómputo, convirtiendo al robot
en un mero intérprete de comandos que le llegan vía Bluetooth.
El sistema se compone de:
Una placa Raspberry Pi.
Un robot Lego Mindstorms NXT.
Una webcam USB.
Un adaptador Bluetooth USB.
12
13. Sistema desarrollado
Descripción del sistema
Para controlar todos los elementos que componen el sistema, se ha desarrollado una API (escrita en C) que abstrae
al usuario de todas las operaciones y protocolos de comunicación entre los periféricos.
Esta API se compone de 3 módulos que controlan todas las partes implicadas del sistema:
NXTbt – Módulo de comunicación Bluetooth entre la Raspberry Pi y el robot.
NXTdc – Módulo que recoge la funcionalidad completa del NXT.
NXTwc – Módulo que interactúa con la webcam.
El módulo de los Direct Commands mantiene la misma sintáxis de las funciones que las del lenguaje NXC.
13
14. Sistema desarrollado
Funcionamiento del sistema
El carácter autónomo de los programas que se van a ejecutar sobre la Raspberry Pi hace que tengan que lanzarse
cuando el sistema se está iniciando, de forma que el robot pueda moverse libremente por el escenario del
experimento, sin necesidad de una conexión a un monitor y teclado, únicamente con el cable micro USB de
alimentación de la placa.
Al no existir un grupo de comandos firmware que controlen la pantalla LCD del robot, se ha optado por conectar un
diodo LED a la Raspberry Pi, de forma que se pueda saber cuando empieza y termina la ejecución de los programas
en el start-up del sistema.
La transferencia de ficheros entre la Raspberry Pi y el ordenador donde se quieran llevar a cabo los análisis de
resultados, se puede realizar mediante la conexión directa por cable de red y usando un programa como PuTTY.
14
16. Sistema desarrollado
Lego Mindstorms NXT
Este Proyecto no cambia la configuración del robot que se usa en el
Departamento de Ingeniería de Sistemas y Automática de la Universidad
de Málaga.
Debe tener conectados los siguientes sensores sensores:
Sensor de distancia.
Sensor de luz.
Sensor de sonido.
Configuración del robot Lego Mindstorms NXT
16
17. Sistema desarrollado
Raspberry Pi
La Raspberry Pi usada en este Proyecto Fin de Carrera pertence al modelo B
que posee únicamente dos puetos USB, por lo que es necesario conectar y
desconectar el teclado cada vez que se quiera reprogramar la placa.
Se conectan a la placa los siguientes elementos:
Webcam USB.
Adaptador Bluetooth USB.
Diodo LED en el puerto 11 de GPIO.
Elementos conectados a la Raspberry Pi
17
18. Sistema desarrollado
Montaje del sistema
El primer paso es colocar la Raspberry Pi en el sitio donde menos pueda
interferir con las lecturas del sensor de distancia debido a su tamaño: en
la parte posterior del robot.
Finalmente se coloca la webcam en la parte libre del robot que esté
más cerca del suelo, para poder detectar objetos que estén muy cerca.
Aspecto final del sistema completo
18
19. Sistema desarrollado
API-NXT
La creación de los programas que usan la API-NXT del Proyecto se realiza usando el editor de texto Nano que
incorpora el sistema operativo Raspbian de la Raspberry Pi. La compilación se produce a través del front-end para
C del compilador gcc.
Las funciones de comunicación Bluetooth usan la librería BlueZ, que se ocupa de la creación y cierre del socket de
transmisión de mensajes.
El encendido y apagado del LED se realiza usando la librería wiringPi, encargada del manejo de la matriz de
puertos GPIO de la Raspberry Pi.
El módulo que interactua con la webcam usa la librería OpenCV para la obtención y análisis de los fotogramas
que se van capturando con la cámara.
19
21. Características del sistema
Ventajas del sistema con respecto a otro tipo de soluciones
El uso de smartphones para gobernar un robot Lego Mindstorms no es aconsejable dentro de ambientes
académicos por su elevado coste si se compara con el de una Raspberry Pi.
El sensor de colores que posee el NXT permite únicamente detectar objetos de ciertos colores definidos en el
firmware del robot, mientras que con el uso de una webcam USB y se puede detectar cualquier color que
queramos, así como obtener valores de posición y tamaño de los objetos.
La matriz de conectores GPIO que posee la Raspberry Pi permite la posibilidad de conectar cualquier tipo de
dispositivo digital, pudiendo ampliar el abanico de sensores usando, por ejemplo, los disponibles para placas
como Arduino.
21
22. Resultados
Metas conseguidas con este Proyecto
Se ha aumentado 10 veces la capacidad de cómputo que tenían los usuarios del NXT, pasando de un
microcontrolador ARM7 de 70Mhz a un ARM11 a 700Mhz de la Raspberry Pi.
La cantidad de memoria disponible se ha multiplicado 8192 veces, de 64Kbytes en el robot a 512Mbytes.
Cualquier webcam USB que sea compatible con Raspbian se podrá utilizar en el montaje de este sistema,
reutilizando de esta manera hardware y ahorrandose el coste que supone la adquisición de la cámara oficial que
comercializa Lego (150$).
22
23. Resultados
Metas conseguidas con este Proyecto
Se ha creado una librería compuesta de tres módulos capaces de manejar los tres tipos de periféricos presentes
en este sistema: webcam, Bluetooth y el propio robot. Además del uso de la matriz GPIO con la API de wiringPi.
Las comunicaciones Bluetooth entre el robot y la Raspberry Pi no penalizan la velocidad del sistema, ya que el
cuello de botella se encuentra en el procesamiento de la imagen por parte de las funciones de OpenCV y de la
velocidad de refresco de la webcam.
Debido a que se quiere liberar a la Raspberry Pi de toda carga de trabajo ajena a la creación y ejecución de
programas que interactuen con el robot, se recomienda que la fase de análisis de los datos recogidos por los
sensores se haga de forma externa, transfiriendo hacia otro ordenador por red los ficheros generados.
23
24. Resultados
Conclusión final
Incremento en el desarrollo y comercialización de SBCs por parte de diversas compañías tecnológicas.
Expansión de los ordenadores de placa reducida entre usuarios del mundo de la enseñanza.
Aumento del uso de robots en entornos académicos como forma de aprendizaje.
Creciente interés en sistemas de visión por ordenador por parte de la comunidad de desarrolladores.
24
25. Futuros trabajos
Líneas de mejora del sistema
Desarrollo de todas las funciones que componen la API de NXC.
Creación de una interfaz LCD con botones conectada al puerto GPIO de la Raspberry Pi.
Desarrollo de una aplicación que obtenga los valores de color de un objeto sobre fondo blanco.
Mejora del rendimiento de las funciones de análisis de imagen que implementa el módulo de webcam de la API.
Creación de una interfaz hardware que permita la conexión de sensores del robot NXT al GPIO de la placa.
25