8.31.2018

Robot Clasificador de Colores LEGO Mindstorms NXT 2.0

Llamado también en inglés como: Colour sorting robot with sorting tray. A continuación veremos una breve introducción al mundo LEGO, las especificaciones del set y la programación del robot.

Ladrillo programable LEGO NXT2.0

LEGO Mindstorms NXT es un set programable fabricado por LEGO. La versión del NXT que veremos a continuación salió en 2009, Lego Mindstorms NXT 2.0, la cual incluye un sensor de color y algunas otras mejoras comparado con la versión anterior. 

Actualmente existe un nuevo modelo llamado EV3.



El elemento principal del set es la CPU, el ladrillo programable NXT. El bloque soporta hasta 4 sensores y 3 motores, conectados mediante un cable RJ12. Cuenta con un micro-controlador de 32 bits ARM7TDMI-core Atmel AT91SAM7S256 con 256KB de memoria y 6KB de RAM, además de un micro-controlador de 8 bit Atmel AVR ATmega48.

Construcción

Dentro del manual del set LEGO, existen varios ejemplos por defecto, para lo cual armaremos nuestro robot de acuerdo al manual de Color Sorter, añadiendo a este la canasta de clasificación(Sorter Tray). Como en la imagen a continuación:



Programación

Para la programación del robot se utiliza el software basado en LabVIEW llamado Mindstorms NXT2.0, el cual provee una programación visual, lo que implica que en vez de tener que escribir el código simplemente se puede programar usando diagramas esquemáticos, práctico e ideal para un mejor entendimiento de los niños y adultos. A continuación una vista previa del programa:


Por defecto, existen ejemplos ya programados; los cuales pueden ser utilizados para pruebas y/o como auto-aprendizaje. A partir de los programas por defecto, se ha creado un nuevo desafío: 

  • Dentro de la bandeja de detección de color se introducen 12 pelotas(azul, verde, rojo y 9 amarillas). Después de presionado Enter, empieza el ciclo de clasificación. La pantalla del ladrillo debe mostrar "Start". Todas las pelotas amarillas deben ser lanzadas en 3 celdas de la canasta(de a 3 pelotas en cada celda), las pelotas sobrantes deben ser lanzadas a la 4ta celda. Determinando el color de cada pelota, en la pantalla del ladrillo se debe mostrar su color("Blue","Yellow"). En la pantalla se puede mostrar también la cantidad de pelotas lanzadas. Luego de lanzadas todas las 12 pelotas, la bandeja de clasificación debe volver a su posición inicial y la pantalla del ladrillo debe mostrar "Stop". Puede ocurrir que en el movimiento de la bandeja ninguna pelota caiga hasta la zona del detector de color. En este caso el contador no debe aumentar su valor y la pantalla debe mostrar "Lost Object". Después de terminado el ciclo debe existir la posibilidad de empezar otra vez sin necesidad de reanudar el programa. 

A continuación el programa explicado:
Utilizando los diagramas esquemáticos iniciamos un ciclo infinito con los bloques de flujo(naranja), el primero que repite el ciclo y el siguiente espera mientras no se ha presionado Enter.

Luego tenemos los bloques de acción(verdes) el primero que muestra en la pantalla la palabra "Start", el siguiente que gira la canasta hasta que se accione el sensor 2 y lo posiciona en la celda inicial.


Después añadimos los bloques de operaciones(rojo), creamos dos variables(cont_num para las pelotas amarillas, Number 1 para las demas pelotas) y le asignamos el valor inicial de cero(write=0) a cada una.

Se añade un ciclo que se repetirá hasta que todas las pelotas hayan sido clasificadas y se añade un bloque de flujo con sensor de color(amarillo) para empezar la clasificación, si la pelota analizada es amarilla el programa seguira hacia arriba, si es falso hacia abajo.

Se muestra en la pantalla el color detectado y luego con el bloque de operaciones (>) se comprueba con ciclos lógicos si el valor de la variable cont_num es mayor a 3, si es menor entonces se procede por la parte inferior.


Los bloques de operaciones suman una unidad a la variable cont_num hasta que se hayan arrojado las 3 primeras pelotas amarillas, para luego proseguir así mismo con las siguientes 3, cambiando el angulo de rotación al motor para que cambie de posición a otra celda.

Si el sensor detectó otro color diferente de amarillo se procede analizar que color(azul, rojo o verde) con los bloques de flujo y sensor, para luego mostrar en la pantalla dicho color, por consiguiente vamos añadiendo una unidad cada vez a la segunda variable Number 1. 
En caso de no detectar ningún color se muestra en la pantalla el mensaje "Lost Object" y se revuelve la bandeja.




Al final de todos los flujos, se suman las dos variables(cont_num y Number 1), si la suma da igual a 12 el ciclo termina, sino se repetirá hasta que las 12 pelotas hayan sido distribuidas. Finalmente se muestra en la pantalla la palabra "Stop" terminando así la clasificación.



Si se desea efectuar nuevamente la clasificación se presiona Enter y el programa empezará nuevamente.