Robot seguidor de Línea

Un clásico de ferias e interescolares, "el carrito seguidor de línea". En primera instancia podría parecer como un proyecto aburrido, poco interesante y bastante ñoño, pero la verdad ... eso es lo que es. Sin embargo, este proyecto te permite entender y apreciar un poco más lo que es el controlador PID.
Por supuesto, no espero que todos sepan lo que es un controlador PID, por lo que les dejo una pequeña entrada con lo que sé (lo básico) y el resto pueden buscar en wikipedia o algo parecido.

Los materiales los puedes encontrar en Olimex:

 básicamente lo que tenemos son 4 sensores IR que detectan la luz proveniente de los 4 led´s IR. Ok, ok, ya sé... qué es IR? es infrared, en otras palabras es un espectro de la luz que existe pero no lo podemos ver. Esta bien, pero porque no mejor usar sensores de luz normales...Se puede, pero sería mejor si los sensores sólo detectasen la luz de nuestros sensores y no la de la lámpara, televisión o computador. Pues bien, una muy buena manera de lograrlo es con sensores y emisores IR, son baratos, sencillos y captan sólo lo que queremos que capten. Entonces, como les iba diciendo. La luz es enviada por estos 4 emisores (LED´s) y captada por estos 4 receptores.

El dibujo muestra como el LED dispara la luz, luego esta rebota contra la superficie para luego ser captada por el sensor IR. Ahora lo que haremos para marcar una trayectoria será marcar una trayectoria deseada con la cinta aisladora.
Lo que queremos lograr con esto es una superficie que no refleje la luz del led emisor, de esta manera los sensores no recibirán ningún estímulo y nuestro controlador sabrá que estamos sobre la línea.
El mismo proncipio se aplica para los 4 LED´s.

Pues bien, eso es con respecto al funcionamiento del proyecto, pero cómo lo implementamos? acá es donde juega un papel fundamental el controlador PID. Lo que haremos será tener un lazo cerrado donde como referencia ocuparemos el centro de la línea. De esta manera, si la línea se detecta en alguno de los sensores de la línea izquierda, el controlador se esforzará por girar el carro hacia la derecha y si la línea se detecta a la derecha, entonces el controlador se esforzará por doblar hacia la izquierda. Hasta acá todo bien, pero será necesario un controlador PID? yo creo que con un P, todo debería andar bien.

Pues bien, imaginémonos un poco, que somos este robot, y tengo 2 sensores, uno a mi izquierda y otro a mi derecha e idealmente quiero seguir la línea asi que lo mejor sería que nunca detectase algo con mis sensores (es decir, me gustaría mantener una línea recta), sin embargo, de pronto comienzo a perder la línea y prontamente uno de mis sensores lo detecta, si sólo tengo acción proporcional, entonces lo que haré será girar rápidamente el carro en la dirección opuesta y luego, debido a la rapidez de mi acción (ya que si no es lo suficientemente rápido me salgo de la trayectoria), el sensor de mi otro extremo lo detecta y hago lo mismo, causando que ambos sensores se vayan alternando, es como si la línea fuese rebotando de sensor en sensor. El resultado se puede ver en la imagen.

Si bien el resultado no es óptimo este si cumple el objetivo de satisfacer la trayectoria, sin embargo, al tener mucho margen de error (con respecto a la línea), perdemos mucha energía y si quisiésemos participar en un interescolar o alguna participación, esto no sería muy bueno (hay carreras de line followers en donde el carro da 40 vueltas alrededor de una trayectoria y el que presenta el menor tiempo gana, si perdemos mucha energía en trayectorias erráticas, corremos el riesgo de perder mucho tiempo o peor, no terminar la carrera). Por lo anterior, deseamos un controlador que sea mucho más fino y ceñido a la trayectoría. Es aquí donde entra el controlador PID, este nos permite ajustarnos debidamente a la trayectoria, logrando un desplazamiento como el de la imagen, donde si bien, el desplazamiento no es perfecto, este es mucho más eficiente que el controlador proporcional solamente.

Puede ser dificil de tragar. Les dejo el siguiente link, que es un simulador de "carrito seguidor de línea", donde podemos variar la acción P, I, D por separado ente otras variables y podemos ver claramente el efecto de las distintas acciones.

También les dejo este video, donde podemos ver una clara diferencia entre acción P y PID


Ok, manos a la obra. El circuito es el siguiente...

Los LED´s rojos son los transmisores y los grises son los receptores, los motores deben ir a sus respectivas cajas reductoras y el chip central es un doble puente H, el arduino puede ir conectado a la fuente de corriente (batería, pilas, etc) a través del jack de poder.

Para crear el chasis, puedes crear tu propio diseño, yo encontré este en la web, es bastante simple y por lo mismo, barato. Debes agregarle la rueda pivote (ball caster), para que los LED´s no se arrastren por el suelo.

Para hacer las ruedas, lo que te recomiendo es con una sierra copa, perforar una tabla de madera de bajo espesor, para de esta manera hacerte de un par de ruedas baratas y fáciles de conseguir ya que ruedas para la caja de engranajes que compramos no tienen en ninguna tienda (podríamos haber comprado otra caja de engranaje, pero esta nos ofrece una buena relación velocidad-torque).




3 comentarios:

Comenta aquí...