Está en la página 1de 4

Proyecto de programacin de un robot mvil para la realizacin de un circuito.

Proyecto Sigue lneas

David Fenollar Belda Maria Lpez Osuna

David Fenollar Belda

Maria Lpez Osuna

Proyecto Sigue lneas


Introduccin
Se nos plantea la realizacin de un algoritmo para hacer que un robot mvil como el de la imagen inferior haga el seguimiento de un circuito construido a partir de una lnea negra, es decir, lo que vamos a hacer es que el robot mvil siga la lnea sin desviarse de su trayectoria.

Un robot mvil, a diferencia de los robots humanoides es aquel que se mueve mediante ruedas y no mediante pies o piernas, y para moverse autnomamente recibe la informacin de sensores situados en su parte delantera que nos dan informacin de la correcta o incorrecta trayectoria del robot. Los sensores utilizados son sensores infrarrojos, los cuales funcionan por emisin, reflexin y captacin de la luz reflejada en la superficie. El sistema de chips pertenece a un arduino de tipo UNO, y el cdigo lo vamos a realizar mediante la utilizacin del software LabView, ya que nos ofrece una interfaz grfica y no tener que escribir el cdigo en lenguaje C.

Desarrollo del cdigo


A continuacin vamos a explicar el procedimiento utilizado para la programacin del robot mvil mediante el software especificado, comenzando desde la parte ms bsica para llegar a la utilizacin de todos los sensores disponibles y as poder suavizar al mximo el recorrido y los bandazos del arduino. En primer lugar empezamos con dos sensores, contemplando de los 8 casos posibles, los 3 ms probables o los ms interesantes a nuestro parecer. As pues, mediante puertas AND, hemos cogido los sensores centrales (A2 y A3) y hemos contemplado los 3 casos siguientes: 1. Si los dos sensores estn tocando negro (el lector mide un nmero mayor que 2), entonces que los dos motores vayan a la misma velocidad

David Fenollar Belda

Maria Lpez Osuna

2. Si el sensor A2 toca blanco y el sensor A3 toca negro, el motor de la izquierda (correspondiente al pin 11 de velocidad y al pin 13 de direccin (siendo T la direccin hacia delante)) le hemos reducido la velocidad mucho y cambiado la direccin, haciendo que el motor girara hacia detrs para una rpida rectificacin. 3. Si el sensor A2 toca negro y el sensor A3 toca blanco, el motor de la derecha (correspondiente al pin 3 de velocidad y al pin 12 de direccin (siendo F la direccin hacia delante)) le hemos hecho lo mismo y con los mismos valores que en el caso 2.

A continuacin lo que hemos hecho ha sido aadido dos sensores ms, los dos de al lado (A1 y A4) simplemente utilizando dos CASE ms y dirigiendo el resultado buleano del sensor (si es mayor que 2, es que est tocando negro y por tanto ser TRUE) al CASE directamente de la siguiente forma: 4. Si el sensor A1 toca negro, entonces que haga una rectificacin ms brusca que le rectificacin que le hemos indicado en el caso 2. Esta rectificacin la hemos logrado de diferentes formas, ya sea aumentando la velocidad de marcha atrs del motor 11 o aumentando la marcha adelante del motor 3, o por otra parte buscando un equilibrio entre las dos subidas. Lo mismo para cuando el sensor A4 toca negro pero con el caso 3. Lo siguiente que hemos hecho ha sido realizar el caso 4 pero de forma que solo contemplemos los casos que nosotros deseamos y no dejar ningn caso que se pueda dar que sean los que nosotros queremos. Esto lo hemos hecho mediante puertas AND mltiples y operaciones buleanas del tipo NOT. Esto queda de la siguiente forma, hemos puesto los 4 sensores con la operacin mayor o igual que 2 y por otro lado un NOT para distinguir el caso menor o igual, y hemos puesto una puerta mltiple AND para dar la entrada a cada CASE mencionado anteriormente. Por ejemplo, a la puerta AND en el caso 4 con el sensor A1 le entra el sensor A1 >=2 y los otros con el NOT. Posteriormente, hemos variado las velocidades para conseguir realizar el circuito con menos tiempo. Finalmente lo que hemos hecho ha sido, una vez hemos verificado que funcionaba bien el algoritmo anterior, hemos aadido los dos ltimos sensores (A0 y A5), de la misma forma que en el caso anterior, considerando solo los 7 casos que nosotros necesitamos e impidiendo que se puedan producir los que no contemplamos mediante puertas AND mltiples, de la siguiente forma: 5. Cuando A0 toca negro y todos los otros estn en blanco lo que hacemos es que consideramos que est dando bandazos, de forma que lo que vamos a hacer es corregir los bandazos. Lo que hacemos es que la rueda derecha, correspondiente al pin 11, dar marcha atrs y la otra no se mover para as corregir y seguir dentro de la lnea.

David Fenollar Belda

Maria Lpez Osuna

Conclusin
En el primer intento, el de dos sensores, el motor no llegaba a trazar las curvas ms cerradas ya que tenamos que ajustar muy bien las velocidades y utilizar en los casos 2 y 3 velocidades hacia atrs del orden de 4 o 4.5 veces inferiores a las que tenamos hacia delante. Adems el caso 1 casi nunca se daba, ya que cuando empezaba a dar bandazos (cuando un motor se desviaba un poco ya sea en curva o en recta) pasaba una fraccin de tiempo muy pequea por el caso 1 y no se realizaba. En el segundo intento (4 sensores), no contemplbamos casos que se podan dar a la vez y que era posible que el programa dejase de funcionar por simultaneidad de casos, como por ejemplo, el caso del sensor 1 y 2 o el del caso 3 y 4 a la vez en negro, pero como eran casos que se daban en un tiempo muy pequeo, no le daba tiempo a entrar en contradiccin con los otros y por tanto el programa funcionaba correctamente. Aunque daba ms bandazos conforme la velocidad de avance aumentaba y menos bandazos conforme la diferencia de velocidades entre los motores hacia delante y los motores hacia atrs disminua, de esta ltima forma no logrbamos trazar las curvas ms cerradas. En el tercer intento, lo que ocurra era lo mismo que en el segundo intento pero con la diferencia de que no podan entrar en contradiccin ningn caso porque habamos contemplado los 5 casos que nosotros desebamos. En el ltimo caso lo que logrbamos era corregir un poco los bandazos que daba el coche cuando las curvas eran muy cerradas. Finalmente nos hemos dedicado a ajustar las velocidades de forma que consiguiramos hacer el mnimo tiempo posible, quedando en 15 segundos el mejor tiempo.