Diferencia entre revisiones de «Ejemplo seguidor de líneas avanzado»

De Proyecto Butiá
Saltar a: navegación, buscar
Línea 8: Línea 8:
  
  
<center>[[Archivo:Gris.PNG|300px]]</center>
+
<center>[[Archivo:Gris.PNG|150px]]</center>
  
  

Revisión del 13:35 23 oct 2011

El programa desarrollado a continuación permitirá al robot Butia seguir el rastro de una línea de color negro sobre el suelo. Primeramente separaremos el programa partes más pequeñas para facilitar la comprensión de la situación:

  • Avanzar mientras el robot se encuentre sobre una zona Oscura.
  • En caso de salirse de la zona Oscura, buscar y retomar el camino.

Para llevar a cabo dicho programa utilizaremos un sensor de escala de grises, del cual debemos conocer sus valores en caso de encontrarse sobre una zona negra y una zona blanca.


Error al crear miniatura: No se ha podido guardar la miniatura


Para tomar estos valores, colocamos el sensor sobre una zona negra y utilizamos la pieza “Escala de gris Butiá”. Nos arrojará un valor que tendremos identificado como Valor sobre zona Oscura. Luego colocamos el sensor del robot sobre una zona blanca y utilizamos nuevamente la pieza “Escala de gris Butiá” para obtener el valor que identificaremos como Valor sobre zona Clara.


Grismenor.PNG


Este ejemplo toma como “Valor sobre zona Oscura” los valores menores a 200. Es decir, si el valor arrojado por el sensor es menor a 200, sabemos que nos encontramos sobre una zona oscura o negra. En conclusión, la primer parte del programa contiene las siguientes sentencias:


Forever.PNG


(Por siempre si “escala de grises” menor a 200, entonces avanzar)


En más de una ocasión nos daremos cuenta que hacer que el robot realice un chequeo es la forma más eficiente de solucionar un problema, como por ejemplo, si algo se mueve a un lugar aleatorio y el robot debe encontrarlo, uno no puede especificar cuánto debe girar para verlo o cuando sigue una línea y se encuentra con una curva, cuantos grados debe girar para retomarla. Este tipo de problemas el robot debería solucionarlos de forma autónoma; para esto haremos que el robot realice dicho chequeo oscilando de un lado al otro con un ángulo que debería ir aumentando si no llegara a encontrar el objeto o línea.


En caso de que el robot se pierda de curso, es decir, que nos encontramos sobre una zona blanca, tomamos el siguiente razonamiento para retomar el camino:

Girito.png

Primero guardamos en una variable el valor “10” que representará la cantidad de grados a girar en un principio (En la imagen la variable se representa con el nombre “Caja 1”). Luego seguimos los siguientes pasos:

1)Giramos el valor de nuestra variable en grados.

2)Preparamos la variable para el siguiente movimiento: Si tenemos un valor positivo, es decir, si nuestra variable es mayor a 0, sumamos el valor en 5 (variable + 5), y cambiamos el sentido, cambiando nuestro valor de signo (multiplicamos por -1). Si tenemos un valor negativo, es decir, si nuestra variable es menor a 0, restamos el valor en 5 (variable - 5), y cambiamos el sentido, cambiando nuestro valor de signo (multiplicamos por -1).

Y así consecutivamente hasta retomar el camino de la línea negra.

Ejemplo: Si nuestro valor en variable es 10, es decir, que anteriormente el robot busco 10 grados a la izquierda, el valor es positivo por lo tanto sumamos 5 grados y multiplicamos por –1. Ahora nuestro robot girará 15 grados hacia la derecha (-15). Luego el robot consulta si ya ha encontrado la línea negra. Si no la encuentra vuelve a repetir las instrucciones anteriores con los valores modificados de nuestras variables. Cuando el robot encuentra la línea negra, avanzará y limpiará la variable poniendo su valor inicial (10).

Las sentencias serían las siguientes :


Entero.PNG


Descargar este ejemplo para TortugarteButiá

El comportamiento en acción: