Wavefront Path Finding Algorithm

25
Algorithms for Robot Pathfinding Wavefront Pathfinding Algorithm

Transcript of Wavefront Path Finding Algorithm

Page 1: Wavefront Path Finding Algorithm

Algorithms for Robot Pathfinding

Wavefront Pathfinding Algorithm

Page 2: Wavefront Path Finding Algorithm

Navegación y Robot MappingLas teorías detrás de la navegación de robots en laberintos es inmensa – tanto que tomaría varios libros para cubrir solamente los principios. En la actualidad, uno de los métodos más básicos pero aun poderoso para la navegación del robot inteligente es el Wavefront. Existen cuatro pasos principales para ejecutar este algoritmo.

Page 3: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoCUATRO PASOS PRINCIPALES PARA EJECUTAR EL ALGORÍTMO WAVEFRONT

Crear una matriz cuadriculada X-Y para marcar el espacio vacio, la localización y la meta del robot y los obstáculos

Page 4: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoPor ejemplo, esta es la foto de una cocina. La caja de cereal en el suelo ha sido agregada como un ejemplo de obstáculo.

Page 5: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoUsando los datos del escaneo realizado por los sensores del robot superpongo una cuadricula básica sobre ella.

Page 6: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoCUATRO PASOS PRINCIPALES PARA EJECUTAR EL ALGORÍTMO WAVEFRONT

Así luce con todos los objetos removidos. Posteriormente declaro las fronteras y los aéreas con objetos no transitables (en rojo), Los objetos ya sean grandes o pequeños, se consideran como tamaño mínimo de una unidad de la cuadricula. Puedes, ya sea incluir las fronteras y objetos en tu código o tu robot puede agregarlos al tiempo que los detecta con un sensor.

Page 7: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoLo que obtienes es una matriz cuadriculada en X-Y, con R representando donde se encuentra el robot

Page 8: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoCUATRO PASOS PRINCIPALES PARA EJECUTAR EL ALGORÍTMO WAVEFRONT

Pero por supuesto así no es como luce en la memoria del robot. Más bien, luce como la matriz siguiente. Todo lo que se hizo fue aplanar el mapa, y almacenarlo como una matriz en el código. Se usa 0 para representar lo no transitable y 1 para representar al robot (marcado con una R en la imagen).

Page 9: Wavefront Path Finding Algorithm

Paso 1. Crear un Mapa DiscretizadoMapa discretizado en forma e matriz.

Page 10: Wavefront Path Finding Algorithm

NotaEn el código fuente

se pueden usar distintos valores. Los presentes son simplificaciones para un mejor entendimiento del algoritmo Wavefront.

Un ejemplo de una matriz de mapa en C luce así.

Page 11: Wavefront Path Finding Algorithm

Paso 2. Agregar las localizaciones del Robot y la Meta

CUATRO PASOS PRINCIPALES PARA EJECUTAR EL ALGORÍTMO WAVEFRONT

A continuación el robot debe escoger la localización de la meta, G (goal). La meta puede ser el refrigerador, un cuarto, etc. para simplificar las cosas, sin embargo no siendo óptimos, Asumimos que el robot solo puede rotar en giros de 90º.

Llamo a esta función: new_state=propagate_wavefront(robot_x,robot_y,goal_x,goal_y);

robot_x y robot_y marcan las coordenadas del robot, y goal_x y goal_y es la localización de la meta

Page 12: Wavefront Path Finding Algorithm

Paso 3. Llenar la OlaCUATRO PASOS PRINCIPALES PARA EJECUTAR EL ALGORÍTMO WAVEFRONT

En pocas palabras el algoritmo checará nodo por nodo, empezando desde arriba a la izquierda, hacia cual nodo esta cerca. Ignora las paredes, mira hacia los nodos que rodean tu nodo blanco, después empieza la cuenta progresiva. Por ejemplo si un nodo fronterizo tiene el numero 5, y es el nodo fronterizo menor, el nodo blanco será un 6. continua hasta llenar la matriz

Page 13: Wavefront Path Finding Algorithm

Paso 3. Llenar la OlaPSEU

DO

DIG

O

Page 14: Wavefront Path Finding Algorithm

Paso 3. Llenar la OlaPSEU

DO

DIG

O

Page 15: Wavefront Path Finding Algorithm

Paso 3. Llenar la Ola (Recursivamente)

ASUMIR que:El comienzo esta esta en un

extremoEl paro esta en el extremo

opuestoHay al menos un camino

posible.

Page 16: Wavefront Path Finding Algorithm

Paso 3. Llenar la Ola - EjemploEl nodo o casilla del robot se marca generalmente con 1 la meta con 2, y a partir de la meta se empieza un conteo progresivo hacia el origen, rodeando la casilla con números mayores sin tomar en cuenta si hay obstáculos o fronteras.

Haga clic en el icono para agregar una imagen

Page 17: Wavefront Path Finding Algorithm

Paso 3. Llenar la Ola - Ejemplo¿Notan el efecto de Ola? Esta es la razon por la que es llamado así. Tambien se ha llamado el Brushfire algorithm porque se expande como lo hace un incendio . . .

Haga clic en el icono para agregar una imagen

Page 18: Wavefront Path Finding Algorithm

Paso 3. Llenar la OlaAsí continuamos hasta llenar la matriz, sin importar que ya hallamos pasado la casilla del robot.

Haga clic en el icono para agregar una imagen

Page 19: Wavefront Path Finding Algorithm

Paso 3. Llenar la OlaComo se ve ya tenemos un camino bien definido . El camino se trazará desde el robot hacia la casilla inmediata con menor valor.

Haga clic en el icono para agregar una imagen

Page 20: Wavefront Path Finding Algorithm

Paso 4. Dirigir el Robot a la Cuenta RegresivaCUATRO PASOS PRINCIPALES PARA EJECUTAR EL ALGORÍTMO WAVEFRONT

Ahora que hay solución, dile al robot que se dirija al cuadro con el menor numero. En este caso el no. es 9, así que el robot debe dirigirse a la casilla 8. hay muchas casillas etiquetadas con 8, el robot puede ir a cualquiera. En este caso la casillo 8 de la izquierda es la mejor para un recorrido más optimo. Pero para simplicidad, esto realmente no importa.

Despues has que tu robot valla al cuadro 7, luego 6,5 y así. Tu robots se conducirá directamente a la meta.

Page 21: Wavefront Path Finding Algorithm

Adaptive MappingExtras Tu robot no siempre sabe donde están los

obstáculos. De esta manera puede encontrar una solución que quizá no funcione. Quizá no vio todos los obstáculos o quizá algo se movió. Lo que se debe hacer es.

1) haz que tu robot escanee después de cada movimiento2) actualiza el mapa con objetos nuevos o removidos 3) re-ejecuta el wavefront algorithm 4) y después reaccione a la nueva información.

No hay solución, borra obstáculos de tu mapa hasta encontrar la solución. – no es lo mejor, pero funciona.

Page 22: Wavefront Path Finding Algorithm

Ejercicio 1Notas. Los obstáculos pueden ser 1 o 0. El comienzo se marca con 2. el objetivo se marca con el numero mayor que se alcance según el algoritmo.

Haga clic en el icono para agregar una imagen

Page 23: Wavefront Path Finding Algorithm

Ejercicio 2Notas. Los obstáculos pueden ser 1 o 0. El comienzo se marca con 2. el objetivo se marca con el numero mayor que se alcance según el algoritmo.

Page 24: Wavefront Path Finding Algorithm

Ejercicio 2

Haga clic en el icono para agregar una imagen

Page 25: Wavefront Path Finding Algorithm

Prueba del Algoritmo Wavefront en el Robot