RASCAL v1.0+ es el primer robot que el C.R.A. presentó a un concurso, concretamente al de Rastreadores organizado por la Asociación AESS de la UPC de Barcelona el día 21 / 10 / 98. El robot debía seguir un rastro de línea blanca sobre un fondo negro hasta llegar al final, indicado por una pared vertical enfrente de él. El robot no podía perder el rastro durante más de un número fijo de segundos (si así fuese, perdía). Se competía contra otro robot en una pista paralela, empezando al mismo tiempo. El robot que llegaba primero a la meta era el ganador.
La dificultad consistía en, aparte de no perder el rastro de la línea blanca, en poder conocer todas las alternativas de camino que se tienen en todo momento (intersecciones) y, ya a un nivel más avanzado, ser capaz de detectar si se queda "atrapado" en cierta zona del laberinto, modificando su estrategia para así poder evitarlo. A un nivel aún más superior el robot dispondría de cierta "inteligencia" que le permitiese aventurar atajos, formas preconocidas, etc...
RASCAL v1.0+ se presentó como un robot sencillo y que, todo hay que decirlo, no estaba preparado para las pistas que nos encontramos. Nosotros teníamos en la cabeza una pista del tipo A, y nos encontramos con una del tipo B:
En pocas palabras, nos esperábamos una pista complicada, retorcida y corta. Por eso decidimos que la velocidad no era realmente importante, porque además eso nos haría perder la línea. De esa manera, decidimos conservar los servos que el robot llevaba desde el principio, y nos concentramos más en las estrategias que podrían inculcar al robot una mejor elección de posibilidades en las bifurcaciones. Pero en el concurso ¡ las pistas eran larguísimas ! y apenas tenían uno o dos bucles que podían hacer que el robot se confundiera. De esta manera estaba claro: la velocidad era lo primordial. Además las bifurcaciones no tenían ángulos muy cerrados, por lo que era muy difícil perder la pista a altas velocidades.
Inicialmente, en la categoría de Rastreadores éramos 9 quipos, pero 6 se retiraron antes de competir (algunos no estaban preparados para la pista, les afectaba la luz solar, o simplemente en ese momento no les tocaba funcionar); de esta manera sólo quedamos 3. Los otros dos eran realmente adecuados para las pistas: simplemente tenían una gran velocidad y unos sensores simples que ya les servían para seguir la línea. Normalmente, lo único que hacían era salir a toda pastilla rectos y no coger ninguna de las opciones laterales que se les presentaban. De esta manera, mientras uno de los dos contrincantes tardaba unos 27 segundos en completar el recorrido, RASCAL tardaba 1:30 minutos en sus mejores momentos. Además RASCAL, se pensaba mucho mejor las opciones que se le presentaban, de manera que a veces volvía sobre sus pasos (eso sí, siempre a un paso moderado, sin precipitarse...). El resultado era obvio: ¡ quedamos terceros de tres !, pero realmente creemos que fue un buen resultado: RASCAL funcionó bien en todo momento, sin perder la pista ni hacer cosas raras. Quisiéramos agradecer el apoyo del público a RASCAL, porque cuando los demás ya habían llegado, él todavía seguía dando espectáculo. También felicitamos al equipo CONCEPTUAL por haber ganado el concurso con gran facilidad.
* Sensorización
RASCAL disponía de 5 sensores: 4 para la línea y uno para la pared Sensores de línea
Se distribuían en dos para no perder la línea central que estuviese siguiendo en ese momento y dos más para detectar opción de girar a la izquierda o opción de girar a la derecha. Cuando empezamos a especular sobre que tipo de sensores debería llevar el robot, empezamos por pensar en LDRs simples, aunque nos dimos cuenta rápidamente que esos sensores se verían afectados por la luz ambiente y los descartamos rápidamente. Después pensamos en un par emisor-receptor infrarrojo: creímos que como en receptor solo respondía ante luz infrarroja no habría problema. De esta manera empezamos a hacer pruebas montando modelos en cartón. Excitábamos el LED infrarrojo emisor con una señal continua. La luz reflejaba en la pista y, dependiendo si detectaba blanco o negro, recibíamos en el receptor más o menos miliampérios. Pero el problema llegó cuando probábamos el robot con distintos niveles de luz ambiente: los sensores no funcionaban y, después de comernos mucho la cabeza llegamos a la conclusión que, como la luz ambiente ya tiene un pequeño nivel de infrarrojo, se sumaba a la pequeña luz que nos devolvía la pista, creándonos así un error muy grande. Entonces, no nos quedó otro remedio que excitar al emisor con un tren de pulsos , de forma que la señal recibida era:
De esta manera pudimos implementar un filtro derivador que eliminaba el efecto continua de la luz ambiente y respondía con pequeños picos en los flancos de subida de la señal de entrada: De esta manera recibíamos picos de tensión proporcionales a la luz que recibíamos de la pista, con lo que luego comparábamos con un valor intermedio entre la tensión para negro y la tensión para blanco y de esta manera el controlador ya sabía si el color detectado era uno de esos dos. Así además no hay que ajustar los sensores para situaciones diferentes. Solo había que calibrarlos en situaciones extraordinarias como una pista hecha de materiales muy reflectantes.
Sensor de pared
Este sensor era exactamente igual que los de línea, pero adaptado para poder detectar la pared a una cierta distancia.
* Controlador
El controlador de RASCAL era la parte que se encargaba de activar o desactivar cada motor en función de la combinación de los sensores. Como queríamos hacer una lógica que no fuese fija (no utilizar puertas lógicas) para programar ciertas estrategias al robot y como realizar una placa microprocesadora era demasiado complicado para nosotros, pensamos en usar una RAM como lógica programable y, además, que pudiésemos grabar esa lógica mediante el PC, de manera rápida y precisa, además de poder editar los datos de forma cómoda.
Esta placa funcionaba de la siguiente manera: al conectarle la alimentación la RAM no tenía ningún dato. Entonces poníamos la placa en posición de escritura y le descargábamos el programa desde el PC mediante el puerto paralelo Centronics. Luego, cambiábamos la placa a modo lectura y le conectábamos el puerto de los sensores, de manera que para cierta combinación de sensores, la RAM daba a sus salidas la combinación grabada previamente, controlando así a los motores. De esta manera podíamos optimizar programas para ver la mejor manera de controlar al robot. * Locomoción
Esta placa era la que controlaba los servos. Cuando se recibía la orden desde la placa controladora de que se activase algún servo, un oscilador daba una señal pulsada a éste de manera que lo hacíamos girar. También controlábamos la desactivación general de los servos con un pulsador para evitar su funcionamiento cuando se estaban volcando los datos a la RAM o simplemente para ahorrar baterías cuando RASCAL estaba en modo de reposo. Cuando queríamos que RASCAL arrancase, en vez de hacerlo mediante un botón se nos ocurrió que sería mucho más espectacular hacerlo mediante un mando a distancia que activaba un fotodiodo en la placa:
* Mando a Distancia
Era simplemente un oscilador que excitaba a dos LEDs infrarrojos dentro de una carcasa de ratón que incluía un par de pilas. Si bien su alcance era muy corto el efecto que causaba impactaba bastante.