Parte 1: Comportamiento de evitación de obstáculos usando sensores de contacto.
Este primer ejercicio es simple. Se trata de que al chocar contra un obstáculo (detectado por el sensor de contacto) el robot realize un movimiento de evasión. No se trataba de bordear el objeto de forma exacta, por lo que hicimos un movimiento prefijado, preparado para esquivar un objeto pequeño.
Parte 2:
Parte 3: Comportamiento ir hacia la luz.
Esta parte nos dio bastantes problemas. Se trataba de colocar dos sensores de luz mirando cada uno 45 grados a izquierda y derecha de la linea de mira del robot. Si uno de los detectores devolvía un valor mayor que el otro, el robot debía girar en el sentido del valor mayor.
El problema principal fue la calibración de los sensores. Cada uno devolvía valores diferentes. Uno empezaba más arriba, pero tenía un rango menor que el otro, que aunque en oscuridad absoluta daba un valor menor, llegaba a mayores valores de luz intensa.
Además los sensores se mostraban casi siempre mas sensibles con el LED encendido, pero esto traía el problema de que al acercarse a la pared, el robot detectaba el reflejo de su propia luz y se iba directo a la misma.
Después de muchas pruebas logramos calibrar los sensores en modo pasivo (con el LED apagado) midiendo la diferencia entre ellos en un valor mínimo de luz, y multiplicando uno de los dos por la relación entre ambos valores.
Usamos otro multiplicador que servía para acotar la diferencia entre los valores de los sensores (que en principio podía ser de hasta 1023) a valores entre 0 y 200, apropiados para ser pasados a la función steer().
Parte 4: Comportamiento ir hacia la luz evitando obstáculos.
Este ejercicio lo realizamos sin usar comportamientos.
Mediante un if/else hicimos al robot alternar entre los códigos de las partes 1 y 3 de la práctica. El resultado fue el deseado, el robot seguía la luz, pero realizaba un movimiento de evasión si se encontraba cualquier objeto por el camino.
No hay comentarios:
Publicar un comentario