lunes, junio 05, 2017

Siga la línea (lo mejor que pueda)


Quizá una de las funciones más interesantes de los robots creados para robótica educativa es la que involucra los sensores de línea a los que había presentado en un viejo post hace ya algún tiempo.

El sensor de líneas permite dectectar "blanco" o "negro" sobre el suelo, lo cual resulta ideal para que el robot circule de acuerdo a un camino (o pista). Un programa básico para hacer funcionar al robot sobre una pista sería el siguiente:



En esta versión, el sensor detecta si se aleja de la línea blanca para corregir el curso con un giro según corresponda. El programa parece funcionar muy bien cuando lo probamos:



Pero... ¿si en vez de utilizar una línea blanca, utilizáramos una línea negra como pista? El desafío parece ser simple: invertimos los colores de detección y los correspondientes giros. Sin embargo, al probar el código en otra pista el robot pierde el curso y en curvas más exigentes se despista. Esto nos pone frente al desafío de intentar un programa más preciso. Veamos este intento:



Este es otro modo de pensar el código en el cual se coloca como condición a la eventual situación en la que se encontrarían ambos sensores para decidir giros y nivel de velocidad. El resultado es más preciso. El robot ya no pierde la línea tan facilmente como con la versión anterior.



Sin embargo, subsiste una falla... si el robot pierde la línea comienza a girar sobre sí mismo, lo cual reduce sus posiblidades de volver a encontrar la línea por la cual circulaba. ¿Cómo podría solucionarse esto?


Preguntas como esta se sucederán una y otra vez al probar el programa en pistas distintas. Y así es como el desafío se renueva y puede volverse más exigente. Porque no hay una única solución. No sirve con que funcione "teóricamente", el robot tiene lograrlo, hay que identificar el problema y proponer una hipótesis para corregirlo. Y cada vez que lo volvemos a pensar, hay algo nuevo que aprender.