Práctica 1. Follow Line: Giro con Control P

Una vez conseguido el paso del filtro de color, se comienza a implementar el control reactivo con el que, a través de control visual sobre el resultado de nuestro filtro, se calcularán los parámetros de giro y velocidad.

Para comenzar mantendremos la Velocidad constante a 10 tal y como estaba indicada en los comentarios de nuestro método execute, e implementaremos un Control P para el giro.

Siguiendo la formula de los controladores PID, tenemos que:

Control P = Kp * errorP

¿Y cuál es nuestro error?

Una posible solución es la indicada en el enunciado práctica: La diferencia entre el centro del circuito cuando el robot está perfectamente alineado y el centro del circuito actualmente observado. Para calcularlo nos situaremos en una línea horizontal de la imagen y la recorreremos, almacenando el primer y ultimo pixel blanco encontrados en la imagen. Conocidos estos dos, podremos obtener el punto medio a partir de la fórmula (x1 + x2) / 2.

La primera vez que ejecutemos nuestro algoritmo almacenaremos este punto como referencia de alineamiento, ya que sabemos que en ese momento nuestro robot está perfectamente alineado, y a partir de ahí calcularemos errorP = (initCenter – actualMedPoint).

La Kp traducirá el valor de nuestro error (num pixeles) a la unidad de giro, y se obtiene a partir de prueba y error.

En el enunciado de la práctica se propone realizar el cálculo del error a un cuarto de altura. Se probó esta alternativa, pero se vió que estaba demasiado abajo y no daba tiempo para rectificar el giro a tiempo y si ampliábamos mucho la constante para intentar que el giro fuera grande el control se hacia ingobernable.

Es por ello que se probó a realizar la medición a mayor altura, analizando con mayor tiempo de respuesta el circuito. En concreto se realiza practicamente en la línea del horizonte,  height / 2 + 10. Con este punto de referencia, sí se consigue encontrar una constante con la cual podamos terminar el circuito (Kp = 0.01), aunque con grandes oscilaciones, lo cual causa que en algunas ocasiones, que no se precedibles, las oscilaciones hagan que nuestro robot se salga del circuito y sea incapaz de volver de nuevo al trazado.

En esta primera aproximación se completa el circuito en 1:46 min, como se puede observar en el siguiente vídeo: