jueves, 11 de marzo de 2010

práctica choca-gira corregida

En esta nueva versión he realizado las siguientes mejoras:
* añadir distancia_lateral=300 y distancia_frontal=500 para crear un pasillo de visión del robot. El pasillo mejora notablemente el funcionamiento del robot ya que sigue adelante aunque detecte un obstáculo cercano lateralmente.
* implementado un autómata finito de estados para materializar el comportamiento pedido sin perder la ejecución iterativa. Esto ayuda ya que consume menos CPU el robot ahora por cada iteración. Los estados son los siguientes:
avance --> retroceso --> giro --> avance
donde el estado por defecto es avance y cambia al detectar un obstáculo.
* cambiar estado del robot utilizando un cronómetro (gettimeofday)

Adjunto el vídeo actualizado del comportamiento del robot:


Otra de las modificaciones a destacar es el modo de giro. El ángulo de giro debe ser aleatorio pero hay que escoger un rango adecuado. Si escogemos un rango demasiado grande es posible que giremos demasiado. Si escogemos demasiado poco, es posible que el giro sea inútil a la hora de salvar el obstáculo. Finalmente, con esta práctica se comprueba que lo más eficiente para obtener el ángulo es tener un random sobre un rango de 120 grados. Dicho ángulo se aplicará en el sentido contrario al del obstáculo detectado y dichos sentidos se obtienen al dividir las señales del laser entre 2, dos mitades de 90 grados.

No hay comentarios: