Dado que especificar una posición de destino adecuada podría ser complicado en muchas situaciones, vale la pena considerar el siguiente enfoque basado en mapas de cuadrícula de ocupación 2D. Se le conoce comúnmente como "iteración de valor" y, combinado con el gradiente de descenso / ascenso, proporciona un algoritmo de planificación de ruta simple y bastante eficiente (según la implementación). Debido a su simplicidad, es bien conocido en robótica móvil, en particular para "robots simples" que navegan en ambientes interiores. Como se indicó anteriormente, este enfoque proporciona un medio para encontrar un camino lejos de una posición de inicio sin especificar explícitamente una posición de destino de la siguiente manera. Tenga en cuenta que una posición de destino se puede especificar opcionalmente, si está disponible. Además, el enfoque / algoritmo constituye una búsqueda de amplitud,
En el caso binario, el mapa de cuadrícula de ocupación 2D es uno para celdas de cuadrícula ocupadas y cero en cualquier otro lugar. Tenga en cuenta que este valor de ocupación también puede ser continuo en el rango [0,1], volveré a eso a continuación. El valor de una celda de cuadrícula dada g i es V (g i ) .
La versión básica
- Suponiendo que la celda de cuadrícula g 0 contiene la posición de inicio. Establezca V (g 0 ) = 0 y coloque g 0 en una cola FIFO.
- Tome la siguiente celda de cuadrícula g i de la cola.
- Para todos los vecinos g j de g i :
- Si g j no está ocupado y no ha sido visitado previamente:
- V (g j ) = V (g i ) +1
- Marque g j como visitado.
- Agregue g j a la cola FIFO.
- Si todavía no se alcanza un umbral de distancia dado, continúe con (2.), de lo contrario continúe con (5.).
- La ruta se obtiene siguiendo el mayor gradiente de ascenso a partir de g 0 .
Notas sobre el paso 4.
- Como se indicó anteriormente, el paso (4.) requiere realizar un seguimiento de la distancia máxima cubierta, que se ha omitido en la descripción anterior por razones de claridad / brevedad.
- Si se proporciona una posición de destino, la iteración se detiene tan pronto como se alcanza la posición de destino, es decir, procesada / visitada como parte del paso (3.).
- Por supuesto, también es posible procesar simplemente todo el mapa de cuadrícula, es decir, continuar hasta que todas las celdas de cuadrícula (libres) hayan sido procesadas / visitadas. El factor limitante es obviamente el tamaño del mapa de cuadrícula junto con su resolución.
Extensiones y comentarios adicionales
La ecuación de actualización V (g j ) = V (g i ) +1 deja mucho espacio para aplicar todo tipo de heurísticas adicionales ya sea reduciendo V (g j )o el componente aditivo para reducir el valor de ciertas opciones de ruta. La mayoría de las modificaciones, si no todas, pueden incorporarse de manera agradable y genérica utilizando un mapa de cuadrícula con valores continuos de [0,1], que constituye efectivamente un paso de preprocesamiento del mapa de cuadrícula binario inicial. Por ejemplo, agregar una transición de 1 a 0 a lo largo de los límites de los obstáculos hace que el "actor" se mantenga preferiblemente libre de obstáculos. Tal mapa de cuadrícula puede, por ejemplo, generarse a partir de la versión binaria mediante desenfoque, dilatación ponderada o similar. Agregar las amenazas y los enemigos como obstáculos con un gran radio borroso, penaliza los caminos que se acercan a estos. También se puede usar un proceso de difusión en el mapa de cuadrícula general como este:
V (g j ) = (1 / (N + 1)) × [V (g j ) + suma (V (g i ))]
donde " suma " se refiere a la suma de todas las celdas vecinas. Por ejemplo, en lugar de crear un mapa binario, los valores iniciales (enteros) podrían ser proporcionales a la magnitud de las amenazas y los obstáculos presentan amenazas "pequeñas". Después de aplicar el proceso de difusión, los valores de la cuadrícula deben / deben escalarse a [0,1], y las celdas ocupadas por obstáculos, amenazas y enemigos deben establecerse / forzarse a 1. De lo contrario, la escala en la ecuación de actualización puede No funciona como se desea.
Hay muchas variaciones en este esquema / enfoque general. Los obstáculos, etc., pueden tener valores pequeños, mientras que las celdas de la cuadrícula libre tienen valores grandes, lo que puede requerir un descenso de gradiente en el último paso según el objetivo. En cualquier caso, el enfoque es, en mi humilde opinión, sorprendentemente versátil, bastante fácil de implementar y potencialmente bastante rápido (sujeto al tamaño / resolución del mapa de cuadrícula). Finalmente, como con muchos algoritmos de planificación de rutas que no asumen una posición de destino específica, existe el riesgo obvio de quedar atrapado en callejones sin salida. Hasta cierto punto, podría ser posible aplicar pasos dedicados de postprocesamiento antes del último paso para reducir este riesgo.
Aquí hay otra breve descripción con una ilustración en Java-Script (?), Aunque la ilustración no funcionó con mi navegador :(
http://www.cs.ubc.ca/~poole/demos/mdp/vi.html
Se pueden encontrar muchos más detalles sobre la planificación en el siguiente libro. La iteración del valor se trata específicamente en el Capítulo 2, Sección 2.3.1 Planes óptimos de longitud fija.
http://planning.cs.uiuc.edu/
Espero que ayude, saludos cordiales, Derik.