jueves, 10 de marzo de 2011

Práctica 3 (2ª Sesión)

Continuamos peleándonos con nuestro robot para seguir con los 2 ejercicios restantes.

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

        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