El tercer ejercicio de esta práctica consiste en la evitación de obstáculos utilizando el sensor de ultrasonidos mediante el cálculo del vector resultante (VFF). Para este apartado lo más costoso ha sido calcular precisamente ese vector resultante, ya que aparecían senos, cosenos, etc. y no es que nos llevemos muy bien con la queridísima trigonometría, pero finalmente hemos conseguido que Menganitor tenga un comportamiento medianamente correcto y que por lo menos no choque con algunos objetos que va encontrando en su camino.
Los comportamientos utilizados para este ejercicio han sido:
AndaMirando
takecontrol( ): true
action( ): indicamos a los motores que vayan hacia adelante
supress( ): indicamos a los motores que se detengan
Esquiva
takecontrol( ): miramos si la media de las medidas es menor que 255
action( ): según la distancia y orientación respecto al objeto detectado giraremos de una forma u otra
supress( ): indicamos a los motores que se detengan
Esquivar obstáculos mediante VFF
Esquivar obstáculos mediante VFF
Por último, tenemos que mezclar estos comportamientos utilizados en los ejercicios anteriores para permitir al robot a la vez de que vaya suiguiendo la luz, que sea capaz de esquivar un obstáculo si se interpone en su camino y después continuar el comportamiento sigue-luz.
Los comportamientos utilizados para este ejercicio han sido:
DriveForward
takecontrol( ): true
action( ): indicamos a los motores que vayan hacia adelante
supress( ): indicamos a los motores que se detengan
takecontrol( ): true
action( ): indicamos a los motores que vayan hacia adelante
supress( ): indicamos a los motores que se detengan
SigueLuz
takecontrol( ): takecontrol( ): si el valor absoluto de la diferencia entre el valor de cada sensor de luz es mayor que un determinada cantidad, tomará el control
action( ): según hemos declarado los sensores, si dicha diferencia es negativa giraremos a la izquierda (llega más luz por el lado izquierdo del robot) y si la diferencia es positiva giraremos a la derecha
supress( ): indicamos a los motores que se detengan
Esquiva
takecontrol( ): si la distancia al objeto detectada es menor de un determinado valor
action( ): indicamos que gire adecuadamente para sortear el obstáculo
supress( ): indicamos a los motores que se detengan
Video sigue luz y esquiva
No hay comentarios:
Publicar un comentario