miércoles, 9 de marzo de 2011

Práctica 3 - Navegación local evitando obstáculos

Una nueva práctica, en la que en primer lugar tuvimos que modificar el diseño del robot ya que necesitábamos hacer uso de dos sensores de luz y acoplar un motor para que el sensor de ultrasonido pueda girar.




Para ésta práctica utilizamos los métodos para programar comportamientos que proporciona Lejos, gracias a estos métodos se simplifican bastante la realización de los enunciados, además de ser más legibles.


Comportamiento de evitación de obstáculos usando sensores de contacto:

     Para éste ejercicio no tuvimos ningún problema, nos llevo algo de tiempo ajustar los giros que debíamos ejecutar para que el robot quedara en la misma posición con la que llegaba al objeto. Para ello primero realizamos un giro prácticamente sobre si mismo, hacemos que avance durante unos centímetros, realizamos otro giro,avanzamos hasta dejar atrás el obstáculo y realizamos los mismos giros anteriores pero a la inversa. De esta forma recuperamos la posición inicial.



Comportamiento de evitación de obstáculos usando el sensor de ultrasonidos:


Este ejercicio es el que más esfuerzo nos ha llevado, ya que previamente tuvimos que realizar algunos cálculo para definir las fórmulas por las que se regirá el movimiento del robot al encontrarse algún obstáculo. Una vez definidas estas fórmulas el código simplemente realiza estos cálculos y ejecuta el giro oportuno para evitar el obstáculo.
La fuerza atractiva la fijamos en la distancia que obtenemos del sensor de ultrasonido para la componente x. Esta fuerza la multiplicamos por una constante = 3 para que la fuerza atractiva sea lo suficientemente grande como para que la fuerza resultante posterior siga el sentido fijado, en este caso hacia delante del robot. La componente y la fijamos a cero para que la fuerza atractiva siga siempre la dirección del robot.
Para calcular la fuerza repulsiva multiplicamos tanto la componente x como la componente y por la inversa de la distancia, para que de esta forma para distancias cortas crezca rápidamente y para distancias largas esta sea muy pequeña. Luego las multiplicamos por una constante BETA = 2000, para que las componentes sean lo suficientemente grandes, y el movimiento del robot se vea afectado.


FrX=cos(degree)*(1/d)*BETA
FrY=sin(degree)*(1/d)*BETA


Una vez calculados estos datos, realizamos la suma vectorial, con la que obtenemos los grados a los que deberá girar el robot para evitar el obstáculo.


Comportamiento ir hacia la luz:


El problema de este ejercicio consistía en ajustar un rango entre ambas mediciones de los sensores de luz para que el robot pueda ir hacia delante cuando este dentro de este rango y en caso contrario girar hacia el sensor que tenga más intensidad de luz. En primer lugar calibramos los sensores para que tome la intensidad de luz ambiente como el 0%.


Comportamiento ir hacia la luz evitando obstáculos:


En este ejercicio decidimos usar el método de evitación de obstáculos utilizando sensores. El ejercicio no es más que la combinación de las clases del ejercicio 1 y el 3. En este caso, el comportamiento más prioritario es el de evitar obstáculo, de forma que en el momento que lo detecte lo evite y posteriormente continúe siguiendo a la luz.

No hay comentarios:

Publicar un comentario