Uno de los atractivos de la robótica es que permite, con un poco de ingenio, crear una gran variedad de diseños con equipamiento no necesariamente tan costoso, dando lugar a una gran variedad de robots que pueden realizar las funciones mas diversas.



Dentro de esta variedad, es todo un clásico el robot seguidor de líneas, que por su simpleza suele ser el “punto de entrada” a la robótica educativa.

Un seguidor de líneas es un robot que, de manera autónoma, es capaz de seguir una trayectoria arbitraria marcada con una línea que, según el diseño, puede ser de color claro (blanco) o de color oscuro (negro). Esto se logra habitualmente gracias a una cantidad variable de sensores infrarrojos que detectan el contraste entre la línea que define la trayectoria y el fondo sobre el que está pintada.

En el caso del robot creado en nuestra escuela, utilizando los componentes que integran el Kit N8 de la empresa Robotgroup, el movimiento se hace siguiendo una línea de color negro. Para mejorar el contraste, pintamos  una “pista” de color blanco de 15 cm con una línea negra al medio, de 5 cm de ancho sobre el piso. Este contraste es importante, porque permite que el robot detecte la diferencia entre los dos colores y sea capaz de seguir la línea que marca la trayectoria.

Pista robot

 Fig. 1. Pista de fondo blanco con línea central negra

Precisamente para detectar esa diferencia de color, usamos dos sensores infrarrojos del tipo CNY70 que están incluidos en el Kit. Estos sensores tienen un diodo que emite luz infrarroja y un fototransistor que la recibe. Cuando se lo apunta a una superficie, la cantidad de luz que detecta el receptor depende del color de la superficie: las superficies oscuras reflejan poca luz y la cantidad de luz detectada es baja, mientras que las superficies claras reflejan mas luz y la cantidad de luz detectada es alta. Nuestro robot está programado en Minibloq, que tiene un bloque o función especial para leer este tipo de sensores que devuelve un valor entre 0 y 100, según la cantidad de luz que se detecte. Entonces, cuando un sensor está sobre la linea negra, el bloque devuelve valores bajos, mientras que si está sobre el fondo blanco, el bloque devuelve valores altos.

CNY70Fig. 2. El sensor CNY70 y su circuito interno

Nuestro diseño emplea dos sensores de este tipo, que es el mínimo para un seguidor de líneas, separados unos cuatro centímetros. Dos sensores permiten saber si el robot se está desviando para la derecha o la izquierda, detectando cual es el que se sale de la línea negra. Otros diseños mas sofisticados emplean un número mas elevado de sensores, hasta 6 o incluso 8 de ellos. La separación entre los sensores es importante, porque está relacionada con la capacidad del robot para detectar rápidamente si se está desviando de la trayectoria.
sensores

Fig. 3. Sensores infrarrojos al frente del robot

Hay que tener especial cuidado con las condiciones de iluminación. Nuestras pruebas se realizaron en el patio de la escuela, es decir al aire libre y sujetas a muchos cambios de iluminación. La pintura negra tiene cierto brillo y puede reflejar la luz solar, produciendo lecturas altas equivalentes a la que da el color blanco en condiciones de menor iluminación. Esto puede solucionarse en parte cubriendo los sensores para crear una “zona de sombra” o haciendo mas inteligente el software de control (en nuestro caso exploramos sólo la primer opción)

sensores cubiertos Fig. 4. Sensores protegidos de la luz ambiente

El algoritmo de control es muy simple y se basa en que cada sensor controla un motor pero de forma cruzada: el sensor ubicado a la izquierda controla el motor derecho y el sensor ubicado a la derecha controla el motor izquierdo. Esto puede verse en la Fig. 5, donde se ven los sensores y motores conectados a la CPU que contiene el programa. Cuando un sensor detecta “color negro” pone en marcha el motor. Si detecta “color blanco” detiene el motor correspondiente. Esto tiene el efecto de que si el robot va sobre la línea negra, ambos sensores detectan color negro y los dos motores están encendidos, manteniendo el movimiento en línea recta (a), pero si la línea tuerce, por ejemplo a la derecha (b), el sensor izquierdo detectará el fondo blanco, deteniendo momentáneamente el motor derecho y produciendo una corrección del rumbo en esa dirección. Algo similar ocurriría si la linea tuerce a la izquierda (c). Esta detección y corrección se hace de manera constante, aplicando breves ajustes de dirección que permiten que el movimiento del robot se vaya adaptando a la trayectoria marcada.
Giro robot

Fig. 5. Principio de funcionamiento del robot siguelíneas

Como se dijo antes, el programa está escrito en Minibloq, por la simplicidad de uso que ofrece y porque el algoritmo es sencillo de implementar. En referencia a la Fig. 6, el bloque 1 marca el comienzo del programa y el bloque 2 inicia un bucle sin fin (generalmente todos los programas en robótica consisten en un bucle que se repite indefinidamente, porque el programa no termina nunca). El bloque 3 pregunta si el valor que entrega el sensor infrarrojo derecho es menor a 30. Si la respuesta es afirmativa (bloque 4) significa que ese sensor está sobre la pintura negra y prende el motor izquierdo al 40% (el signo menos es para ajustar correctamente el sentido de giro). Si la respuesta es negativa, el motor se para (bloque 5). Los bloques 6, 7 y 8 hacen lo mismo con el sensor izquierdo y el motor derecho. Finalmente el bloque 9 cierra el bucle del programa.
Programa

Fig. 6. Programa en Minibloq

El programa puede descargarse aquí

Para finalizar, algunas imágenes y videos del robot armado y las pruebas realizadas para ponerlo a punto. Un gran reconocimiento a Facundo, que le dedicó mucho tiempo extraescolar a este proyecto!

IMG_3108
IMG_3110
IMG_3111
IMG_3112
IMG_3113
IMG_3114
IMG_3115
IMG_3116
IMG_3118