CONSIDERATIONS
3.2 Framework Design Issues
La idea b´asica del algoritmo de programaci´on din´amica consiste en construir un mapa de costos, donde cada celda indica el costo de ir de dicha celda a la meta. El objetivo es que por medio de este mapa de costos, el robot sepa cual es el siguiente mo-
3.2. C´alculo de la trayectoria Cap´ıtulo 3. Planeaci´on de trayectorias
vimiento para llegar a la meta desde cualquier celda en que se encuentre, simplemente eligiendo moverse hacia la celda vecina con menor costo.
Como se ver´a a continuaci´on el costo s´olo depende de la distancia a la meta y de la cercan´ıa de los obst´aculos. La reducci´on de la cantidad de giros se realizar´a poste- riormente procesando la trayectoria obtenida del algoritmo de programaci´on din´amica.
Para construir el mapa de costos, el usuario debe definir previamente dos par´ame- tros: el primero es la distancia deseada entre el robot y el obst´aculo m´as pr´oximo (Dpre f)
y el segundo es la m´ınima distancia segura entre el robot y el obst´aculo m´as pr´oximo (dmin). La distancia deseada Dpre f entre el robot y el obst´aculo m´as pr´oximo es usada
por el planificador para preferir trayectorias a esa distancia de los obst´aculos, mientras que la distancia m´ınima dmines utilizada para agrandar los obst´aculos de tal manera que
el robot jam´as elija moverse hacia una celda por debajo del valor de dmin. Cabe aclarar
que para efectos pr´acticos dmin siempre deber´a ser menor que Dpre f.
Para construir el mapa de costos se comienza con la celda que corresponde a la meta y se etiqueta con 0, luego se etiquetan sus vecinos con un valor v donde v es
√
2 ´o 1, dependiendo si se trata de una celda vecina en diagonal o no. En las regiones cercanas a los obst´aculos por debajo de Dpre f y por encima de dmin, para cada celda cj
con cercan´ıa a los obst´aculos dj(dmin <dj<Dpre f), el costo crece exponencialmente
a raz´on de eDpre f−dj. Esto ocasionar´a que el robot solamente elija pasar por esas celdas
si no existe una trayectoria que lo mantenga fuera de ella.
No existe una justificaci´on puntual ´o formal que respalde la elecci´on de la fun- ci´on eDpre f−dj, sin embargo como se sugiere en [Romero, 2001] y como se afirma
en [Batavia and Nourbakhsh, 2000] lo realmente importante es que en dicha regi´on el costo no crezca de manera lineal como en el resto del espacio libre y que la base sea mayor a 1+√2, pasando a segundo plano la elecci´on de la funci´on que se utilice.
En caso de encontrar una celda que corresponda a un obst´aculo o cuya distancia al obst´aculo m´as cercano sea menor que dmin, se le asigna un costo infinito con la
intenci´on de el robot nunca elija ese movimiento. En la pr´actica se le asigna un valor muy alto; el pseudo c´odigo se muestra en el Algoritmo 3.2.
En la Figura 3.8 se puede apreciar el resultado de la propagaci´on partiendo de la meta indicada en la Figura 3.7. Una vez que el mapa de costos es construido, este puede mostrarse como una imagen en 3D. Por analog´ıa, esta gr´afica puede interpretarse como una mesa delimitada con una leve pendiente, de tal manera que en cualquier
3.2. C´alculo de la trayectoria Cap´ıtulo 3. Planeaci´on de trayectorias
Algoritmo 3.2 Algoritmo de programaci´on din´amica.
Sean(linmeta,colmeta)las coordenadas de la meta en el mapa de celdas.
Sea obst[ ][ ] el mapa de cercan´ıa a los obst´aculos que se construy´o. Sea costo[ ][ ] el mapa de costos que se quiere construir
procedimiento programaci´on din´amica(){
Introducir (linmeta, colmeta) a la agenda con costo 0
repetir{
(lin,col)= primer elemento de la agenda
Para cada celda (lini, coli) en la vecindad de(lin,col) Si obst[lini][coli]<dminentonces
costo[lini][coli] = infinito
Si (lini, coli) est´a en diagonal entonces vi =√2 Si (lini, coli) no est´a en diagonal entonces vi= 1
Si obst[lini][coli]<Dpre f entonces vi= vi+ e(Dpre f−obst[lini][coli]) Si (costo[lin][col]+vi)<costo[lini][coli] entonces
costo[lini][coli] = (costo[lin][col]+vi) e introducir (lini, coli) a la agenda
}mientras la agenda no est´e vac´ıa
}
lugar que sea colocada una esfera, esta rodar´a hasta detenerse finalmente en la celda que corresponde a la meta. Las regiones m´as obscuras se refieren a los costos m´as grandes, de tal manera que dada cualquier celda inicial dentro del mapa, la estrategia ser´ıa: moverse hacia la celda con menor costo, hasta llegar a la celda con costo 0 que es la meta. En la Figura 3.9 puede observarse el detalle de la propagaci´on que corresponde al mapa de la Figura 3.2. La meta se encuentra en (3,11), el robot se encuentra en (3,3), el valor de Dpre f es 3 y el valor de dmin es 1.5; el valor -2 denota infinito.
Este mapa de costos sirve para llegar a una meta en particular desde cualquier punto inicial. Si cambia la meta, entonces habr´a que recalcular el costo de las celdas. Este sencillo mecanismo, converge hacia la meta y su implementaci´on es muy simple.
Como se observa en la Figura 3.10, la trayectoria obtenida solamente del al- goritmo de programaci´on din´amica no es adecuada si se toma en cuenta que un robot m´ovil es quien debe recorrerla; para hacerlo, el robot necesitar´ıa realizar una gran can- tidad de giros la mayor parte de ellos innecesarios. Esto se debe en gran parte, a que existe una limitante muy importante al considerar que el robot puede moverse s´olo ha-
3.2. C´alculo de la trayectoria Cap´ıtulo 3. Planeaci´on de trayectorias
Figura 3.7: La meta es indicada por el usuario
3.2. C´alculo de la trayectoria Cap´ıtulo 3. Planeaci´on de trayectorias 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 2 -1.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -1.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -1.0 3 -1.0 -2.0 19.7 19.3 18.9 19.3 -2.0 -1.0 -2.0 05.1 04.1 03.7 04.1 -2.0 -1.0 4 -1.0 -2.0 18.7 15.6 15.2 18.3 -2.0 -1.0 -2.0 04.7 01.0 00.0 03.7 -2.0 -1.0 5 -1.0 -2.0 17.7 14.6 14.2 17.3 -2.0 -1.0 -2.0 05.1 01.4 01.0 04.1 -2.0 -1.0 6 -1.0 -2.0 16.7 13.6 13.2 16.3 -2.0 -1.0 -2.0 05.5 02.4 02.0 05.1 -2.0 -1.0 7 -1.0 -2.0 16.3 12.6 12.2 14.2 -2.0 -2.0 -2.0 05.6 03.4 03.0 06.1 -2.0 -1.0 8 -1.0 -2.0 15.9 12.2 11.2 11.4 11.0 10.9 08.8 06.0 04.4 04.0 07.1 -2.0 -1.0 9 -1.0 -2.0 15.5 11.8 10.8 09.8 08.8 07.8 06.8 05.8 05.4 05.0 08.1 -2.0 -1.0 10 -1.0 -2.0 15.9 12.2 11.2 10.2 09.2 08.2 07.2 06.8 06.4 06.0 09.1 -2.0 -1.0 11 -1.0 -2.0 16.3 12.6 11.6 11.8 11.4 11.3 10.0 09.0 07.4 07.0 10.1 -2.0 -1.0 12 -1.0 -2.0 16.7 13.0 12.6 14.6 -2.0 -2.0 -2.0 10.6 08.4 08.0 11.1 -2.0 -1.0 13 -1.0 -2.0 17.1 16.7 16.3 16.7 -2.0 -1.0 -2.0 12.5 12.1 11.7 12.1 -2.0 -1.0 14 -1.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -1.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -1.0 15 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0 -1.0
Figura 3.9: Mapa de costos calculado usando el algoritmo de programaci´on din´amica.
cia una de las 8 celdas vecinas, ya que al hacerlo se est´a reduciendo la capacidad de giro del robot a intervalos de 45◦. Esto se aprecia mejor en la trayectoria encontrada en el mapa de celdas simple (ver Figura 3.11).
Figura 3.10: Trayectoria obtenida del algoritmo de programaci´on din´amica.
Para mejorar la trayectoria obtenida se realiza un post-procesamiento, el cual es descrito a continuaci´on.