Vistas de página en total

jueves, 24 de noviembre de 2011

APRENDIENDO A VIAJAR SOLO!!

Aquí estoy una semana más para mostraros los avances que he realizado en la siguiente práctica. Como recordaréis, en la última entrada vimos la forma de trabajar con los sensores, cómo estos aportaban datos y cómo utilizarlos para realizar ciertos comportamientos (sigue pared, moverse por sonidos, chocar, etc). En esta nueva práctica se da por sentado que hemos adquirido estos conceptos y nos centramos en la navegación, concretamente navegación local, es decir, aquella que se caracteriza por utilizar los sensores para reconocer el entorno y moverse por él, al contrario de la global que hace uso de un mapa.

Bien, siguiendo con la estructura que siempre adopto para explicar cada una de las prácticas pasaré a explicar uno a uno los cuatro apartados que forman ésta:

BUMP & GO CON SENSORES DE CONTACTO

Supongo que este título ya os suena, sin embargo, no es exactamente igual al de la práctica anterior. En esta ocasión no sólo deberemos detectar cuando chocamos con un obstáculo, realizar un giro y continuar hasta chocar con otro, sino que el objetivo de este apartado es conseguir que Manué viaje de una posición a otra salvando los obstáculos que se encuentren a su paso.

Para conseguir este objetivo se ha hecho uso de la clase "Behavior" que ofrece ya el LEGO NXT implementado. La estructura es simple, existen dos comportamientos ("ir hacia la meta" y "chocar") que compiten por "entrar en acción", mientras que un "árbitro" es el que determina (por medio de unas condiciones) cual comportamiento debe ejecutarse en cada momento. El comportamiento "ir hacia la meta" tiene un objetivo bastante intuitivo, conseguir orientar al robot para que avance hacia el punto de destino, mientras que el comportamiento "chocar", determina lo que debe hacer el robot en caso de choque, que no será otra cosa que esquivar dicho obstáculo.

A continuación muestro unos vídeos sobre como Manué consigue realizar esta tarea con los obstáculos colocados de forma diferente y con situaciones distintas:



Aunque parece algo sencillo, hay que recordar que Manué no sabe en un principio donde se encuentran los obstáculos, solo sabe donde en que punto se encuentra la meta, con lo que siempre que esquiva un obstáculo debe orientarse para saber que paso ha hecho y saber donde está la meta en todo momento.

BUMP & GO CON SENSOR DE ULTRASONIDOS

"Sí, ahora hace lo mismo pero con el de ultrasonidos..." estareis pensando. Pues básicamente sí, el objetivo no es otro que el de llegar a un punto evitando los obstáculos que se encuentran en el camino. Pero en este caso tenemos algo más complejo, ya que he hecho uso del algoritmo VFF (o al menos eso he intentado). Este algoritmo se caracteriza por un vector atractivo que nos dirige continuamente hacia la meta, y varios vectores repulsivos, tantos como obstáculos haya en el camino.

Sin embargo, mi versión del programa no es completamente fiel a este algoritmo, ya que pienso (y esto es opinión mía) que la complejidad de realizar este algoritmo con las herramientas de las que disponemos supera con mucho a la eficiencia que éste puede dar, es decir, muy complicado para conseguir un resultado similar a otros más sencillos. El que yo propongo digamos que es una versión mucho más "light" puesto que no tengo en cuenta todos los obstáculos que ejercen fuerza repulsiva, sino que detecto si un objeto se encuentra al frente y, en este caso, giro para esquivarlo (aquí sí sumo del vector repulsivo de ese objeto con el atractivo de la meta), y finalmente vuelvo a orientar a Manué hacia la meta para que continúe su recorrido.

Bueno, mejor vemos el resultado, en este os adjunto un par de vídeos aumentando la distancia de la meta, siendo en uno de 1m y en el otro 2m:




PERSIGUE LA LUZ

PERSIGUE LA LUZ ESQUIVANDO

No hay comentarios:

Publicar un comentario