Este proyecto consiste la implementación de varios algoritmos de búsqueda de rutas para vehículos autónomos, así como el siguimiento de las rutas generadas desde el inicio hasta la meta.
Está desarrollado usando el motor Unity 5.3.6f usando C# en xUbuntu 16.04, pero deberia funcionar en cualquier sistema que soporte esa versión de Unity y posteriores.
Para instalarlo, hay dos maneras:
-
Clonando el repositorio o mediante el archivo zip, y abriendo desde Unity el proyecto que se encuentra en el directorio Codigo/Algoritmos_de_busqueda_3D/.
-
Creando un proyecto nuevo en Unity, y desde Assets->Import Package.
Una vez instalado, se puede abrir alguna de las escenas disponibles para probar los algoritmos, y modifcarla como se desee.
El proyecto se puede ejecutar desde Unity, lo que proporciona ventajas ya que se dispone de varias vista para observar el desarrollo de los algoritmos, y el acceso a sus parámetros, las distintas opciones y la modificacion de la escena.
También hay un ejecutable que permite observar en escenas prefijadas a los distintos algooritmo y compararles, que se encuentra en release. En el archivo de zip se encuentran todos los archivos necesarios para las versiones de Linux y Windows.
Los algoritmos implementados han sido:
-
A*: The A* Algorithm El algoritmo A* original.
-
Theta*: Theta*: any angle paths Es una variación del A* que mejora los caminos encontrados.
-
A* con vértices: Una versión del A* que usa los vértices del Nav Mesh para mejorar su rendimiento.
-
Hybrid A*: Practical Search Techniques in Path Planning for Autonomous Driving Es una evolución del A* que tiene en cuenta las limitaciones de los vehículos no holonómicos, calculando los estados continuos a los que se pueden desplazar.
Para el desplazamiento autónomo del vehículo se ha utilizado un PID Controller.
Para el suavizado de las rutas se han usado curvas Bézier y el descenso gradiente.