Para poner en práctica las ideas expuestas en la entrada anterior he realizado una primera aproximación al algoritmo de comportamiento. En el enunciado de la práctica se recomienda usar un controlador tipo PID para estimar el error, pero para este intento he decidido omitirlo. El objetivo es simplemente aprender a controlar el robot actuando en consecuencia al error cometido. He extraído tres puntos de control a diferentes alturas de la imagen referencia, con los que he dibujado la línea ideal de trayectoria en recta. En cada iteración calculo el punto medio del ancho de la línea y estimo la distancia con el punto de referencia, en principio solo para el punto a media altura. Según la magnitud del error he fijado una serie de reglas para establecer la velocidad de avance y de giro. Si el error es muy grande la velocidad de avance debe de ser pequeña y la de giro grande. Sin embargo, cuando el error es pequeño la velocidad de avance se puede aumentar al mismo tiempo que se disminuye la de giro. Estableciendo una serie de umbrales de error, en los cuales se modifican ambas velocidades de acuerdo con las reglas anteriores, es posible que el robot complete la vuelta. Con los parámetros establecidos mediante prueba y error he conseguido un tiempo de 8min 30s y un comportamiento bastante suave.
Por contra, al coche le cuesta fijar una trayectoria en las rectas, donde se mueve de lado a lado. Además de momento no he añadido ningún tipo de comportamiento para cuando el coche pierde la línea, simplemente avanza recto. En posteriores mejoras también me gustaría introducir el error cometido en el punto de la línea más alejado. De este modo podré suavizar la entrada en curva y detectar mejor cuando el coche está en recta para acelerar más. El tiempo conseguido el bastante malo, aunque es lo máximo que he podido obtener con esta configuración. A partir de ahora, siguiendo las recomendaciones del enunciado, utilizaré un controlador PID para mejorar el comportamiento del robot. De momento continuaré con la misma estrategia puesto que los resultados obtenidos para esta aproximación no son del todo malos.
Por contra, al coche le cuesta fijar una trayectoria en las rectas, donde se mueve de lado a lado. Además de momento no he añadido ningún tipo de comportamiento para cuando el coche pierde la línea, simplemente avanza recto. En posteriores mejoras también me gustaría introducir el error cometido en el punto de la línea más alejado. De este modo podré suavizar la entrada en curva y detectar mejor cuando el coche está en recta para acelerar más. El tiempo conseguido el bastante malo, aunque es lo máximo que he podido obtener con esta configuración. A partir de ahora, siguiendo las recomendaciones del enunciado, utilizaré un controlador PID para mejorar el comportamiento del robot. De momento continuaré con la misma estrategia puesto que los resultados obtenidos para esta aproximación no son del todo malos.
Comentarios
Publicar un comentario