Después de realizar el estudio del script My_algorithm.py encargado de controlar el Formula 1, se vio la necesidad de tener variables self. para poder controlarlo óptimamente.
Para conseguir que el Formula 1 diése una vuelta entera al circuito, como se puede ver en el vídeo "Vuelta completa en 4:56" ha sido necesario crear tres variables nuevas:
-self.v, para controlar la velocidad del coche.
-self.xf, para guardar el valor x de la boundingbox que engloba la línea elegida.
-self.iteration, para controlar en que iteración se encuentra actualmente.
-self.i, para contabilizar el número de interaciones que el Formula 1 se encuentra dentro del umbral de recta.
Con estas variables creadas se ha elegido un rango de líneas de la mitad inferior de la imagen, de la 20 a la 29 (sin sumar la mitad de la imagen), y se ha detectado su bounding box para extraer el valor de x. En la primera iteración se guardará el valor de la x en self.xf, ya que se tiene en cuenta que el Formula 1 se encuentra centrado en la línea.
Una vez se tenga self.xf guardada se ha creado un umbral de recta para determinar que el Formula 1 se encuentra centrado, por lo tanto el Formula 1 se encontrará en el centro de la línea si:
-self.xf*0.9<x<self.xf*1.1
En caso de que el formula 1 no se encuentre en este umbral, se comprueba si la nueva x es menor o mayor que self.xf. Sabiendo si es menor o mayor se sabe si se encuentra en una curva hacia izquierdas y hacia derechas. Por lo tanto se realiza una disminución de velocidad a una constante (1) y se le añade una velocidad de rotación que se ha determinado por el método de prueba y error, y aquel valor que no falla es -0.3 y 0.3.
Una vez comprobado que el Formula 1 completa una vuelta entera se ha comprobado que en las rectas se pierde mucho tiempo. Como se tiene guardado el número de iteración actual dentro del umbral de recta en self.i se ha utilizado este valor para aumentar el valor de la velocidad. En concreto cada múltiple de 25 la variable self.v aumenta 3 puntos. Para realizar este ajuste también se ha realizado por el método de prueba y error.
Con los puntos anteriores se observa que aunque no consigue dar una vuelta en menos de 2:15 (récord actual) se consigue dar la vuelta completa sin ningún error.
Vuelta completa en 4:56
No hay comentarios:
Publicar un comentario