martes, 7 de julio de 2015

Sesión 2: Ensayo de prototipos.

El primer prototipo terminado fue el Tilted Twister. Tras montarse y programarse se ensayó y funcionó aceptablemente. Empieza pidiéndote que pongas el cubo, el programa lo detecta gracias al sensor de ultrasonidos (que no tiene más utilidad que esa en este prototipo y en los demás) para, a continuación, empezar a leer los colores con el sensor de color. Para ello, voltea el cubo entero, ofreciendo al lector una cara distinta cada vez, utilizando también el giro de la bandeja que aloja el cubo. Tras terminar la lectura de colores emplea un algoritmo para calcular tres posibles soluciones (de unos 50-60 movimientos aproximadamente) y ejecutando la de menor número de movimientos.

Además de los dos sensores mencionados, el prototipo utiliza tres servomotores para, respectivamente, mover el brazo volteador/bloqueador, girar la bandeja que aloja el cubo y acercar/alejar el sensor de color.

El funcionamiento basado en la detección de la presencia del cubo, la lectura de los colores de sus caras, el cálculo de la secuencia de movimientos para la solución del cubo y la ejecución de esta secuencia es común para los cuatro prototipos montados.

Conviene aclarar el funcionamiento del brazo volteador/bloquedor:
  • El volteo consiste en, mediante un movimiento del brazo en un sentido y en el contrario, conseguir voltear el cubo entero 90º a la izquierda (según se mira con el brazo v/b a la izquierda y el sensor de color a la derecha); atención: el volteo del  Tilted Twister consiste en girar el cubo 90º a la derecha si se mira como se indicó antes.
  • El bloqueo consiste en bajar el brazo y sujetar las dos capas superiores del cubo para que, gracias al giro de la bandeja, hacer girar la capa inferior; a continuación, se desbloquea levantando el brazo.
Combinando volteos y bloqueos con giro en un sentido u otro de la capa inferior, conseguimos los clásicos movimientos del cubo F (girar la cara frontal 90º en el sentido de las agujas del reloj), F' (girar 90º la cara frontal en el sentido contrario al de las agujas del reloj), L y L' (para la cara izquierda), R, R', B, B', U, U', D, y D' (derecha, trasera, superior e inferior). Si queremos girar una capa intermedia, basta combinar dos de los anteriores (R y L', por ejemplo). Ya volveremos más adelante sobre estos movimientos y sobre su particularización para el robot que resuelve el cubo de Rubik de 2x2x2.

El caso es que el Tilted Twister fallaba con cierta frecuencia debido a un desfase en la posición original del brazo volteador/bloqueador que se iba acumulando hasta dar lugar a volteos y bloqueos disfuncionales. Esto llevó a retocar el código fuente y añadir un retraso de tres segundos tras cada volteo para corregir la posición del cubo manualmente, caso de que el volteo o elgiro de la capa inferior resultara fallido. Aparte de este inconveniente, iba como la seda. Este vídeo muestra el funcionamiento de nuestro prototipo con las "correcciones manuales" tras los volteos fallidos. Estas correcciones, indeseables si se desea que el robot lo haga todo solo sin ayuda exterior, se convirtieron en irrenunciables en lo sucesivo.


El siguiente en terminarse fue el MindCuber for NXT Education Base Set. Funcionó perfectamente una de las primeras veces (en unas condiciones de luz que no fuimos capaces de repetir) y el resto de las veces dio error en la lectura de los colores de las caras; quizá porque era un cubo como el que se ve en el vídeo anterior: de los blancos con los colores serigrafiados en vez del clásico negro con las pegatinas de color. Hicimos muchos intentos con las instrucciones que aporta David Gilday en su web para solucionar los problema de identificación de colores, pero no fructificaron. Ante la ausencia de tiempo para intentar retocar el código fuente y realizar la lectura de colores más pausadamente, lo dejamos correr. No obstante, os enlazamos un vídeo de David Gilday en el que se puede ver como trabaja comparativamente con la versión Home Edition.



Después se acabó el MindCuber for NXT 2.1 (Home Edition). El mal sabor de boca que dejó el prototipo anterior y la ausencia de tiempo (y de cubos clásicos negros con pegatinas para intentarlo), nos dejó con la duda de si hubiera funcionado o no. Aquí tenéis el vídeo que hizo David Gilday.



El MindCub3r for EV3 Education Core Set no se terminó hasta bien avanzada la tercera sesión. La idea de ensayarlo era impensable. Reconozco que buena parte de la culpa fue mía: se perdió mucho tiempo intentando hacerlo a partir de los planos que facilité para la versión Home Edition. No obstante, se puede ver qué tal funciona en este vídeo de su creador.


En el momento de redactar estas líneas (y con la perspectiva de la premura de tiempo que tuvimos para terminar el proyecto) dedicar una sesión a hacer funcionar los prototipos que resolvían el 3x3x3 fue un desperdicio de horas. Ver un prototipo ajeno ya programado resolver el Rubik 33 no era el objetivo de este proyecto Andalucía Profundiza; rediseñar el prototipo y programarlo para resolver el Rubik 23 sí lo era.

En realidad, el error fue montar los prototipos sin conocer los problemas que ofrecerían y cómo solucionarlos. Es una tarea que este profesor debe llevar ya hecha a la clase. Fue el primero de una serie de errores...