Skip to content

gdelasheras/Coche-Autonomo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Coche autónomo mediante un percentrón multicapa y algoritmos genéticos

Introducción

Objetivo

Este proyecto tiene como objetivo aunar todos los conocimientos adquiridos acerca de la inteligencia artificial. Para ello, se ha propuesto el desarrollo de un vehículo autónomo que aprenda a recorrer un trazado propuesto, sin especificar las instrucciones concretas para recorrerlo. El vehículo, funcionará gracias a la combinación de un MLP y de un algoritmo genético. El MLP contendrá las distintas soluciones al problema y el algoritmo genético proporcionará el marco de evolución para encontrar las mejores soluciones.

Alcance

Debido a la naturaleza de la asignatura, el objetivo primordial es el correcto funcionamiento de la inteligencia artificial que hace que el vehículo funcione. Todos los extras visuales se consideran en un segundo plano. Para el vehículo y para el mapa, se han descargado assets del mercado oficial de Unity, Unity Market. Debido al tipo de trazado obtenido, con todo tipo de curvas rápidas, lentas, cerradas y abiertas, el entrenamiento requerido es muy amplio, por lo que se considerará éxito que el vehículo recorra correctamente 1 vuelta completa (o más) al trazado.

Herramientas utilizadas

Para el desarrollo de este proyecto se han empleado las siguientes herramientas software:

  • Motor 3D Unity3D.
  • Visual Studio 2017.

Todo el desarrollo se ha realizado con el lenguaje C#.

Mapa

El trazado propuesto para el vehículo autónomo se ha elegido atendiendo al diseño del vehículo (sensores de distancia) de modo que este sea adecuado para su modo de funcionar. De esta forma, el mapa está ambientado en un puerto lleno de contenedores los cuales cubren en trazado en su totalidad para permitir a los sensores medir las distancias correctamente.

El recorrido comienza en el punto marcada con una M (Meta) y continua según el orden marcado en la imagen anterior.

Vehículo

El diseño del vehículo consta de 7 sensores de distancias (máximo 50 unidades) posicionados en la parte frontal cada uno con un grado de inclinación como marca la imagen siguiente.

El diseño en abanico está orientado a cubrir el mayor espacio posible para detectar obstáculos y reducir los puntos ciegos sin que suponga un número alto de sensores, pues al tratarse de las entradas proporcionadas a la red neuronal, a más sensores, más entradas y por tanto más pesos y cálculos a realizar.

Las especificaciones técnicas del vehículo son:

  • Para los giros de izquierda y derecha se ha establecido 30º como ángulo máximo de giro.
  • El número máximo de aceleración está establecido en 900 unidades.
  • Para girar, al objeto de Unity se le proporciona un valor entre -1 y 1 el cual se multiplica por el valor máximo de giro (30º) resultando:
    • Negativo (< 0º): Giro a la izquierda tantos grados como indique el valor resultante.
    • Positivo (> 0º): Giro a la derecha tantos grados como indique el valor resultante.
  • Para acelerar/frenar, al objeto de Unity se le proporciona un valor entre -1 y 1.
  • Las físicas del vehículo son las normales proporcionadas por el motor gráfico Unity

MLP

Tras un proceso de experimentación para encontrar la mejor arquitectura para la red neuronal, ésta se ha diseñado de la siguiente forma:

  • Capa de entrada (7 neuronas):
    • Se corresponden a las 7 distancias medidas por los sensores del vehículo normalizadas.
  • Capa oculta (5 neuronas):
    • Función de activación: tangente hiperbólica.
  • Capa de salida (2 neuronas):
    • 1 neurona representa el par motor aplicado siendo:
      • Positivo: Adelante (acelerar).
      • Negativo: Hacia atrás (frenar/marcha atrás)
    • 1 neurona representa el ángulo de giro del volante (y por tanto de las ruedas):
      • Negativo: Izquierda.
      • Positivo: Derecha.
    • Función de activación: tangente hiperbólica.

Algoritmo genético

La selección de los individuos padres se realiza mediante la selección del 20% de la población con mayor fitness, 4 individuos, los cuales generan la siguiente población mediante replicaciones con posibles mutaciones (selección elitista).

La mutación de los genes se realiza mediante un método de Montecarlo. Se selecciona un número aleatorio entre 0 y 1 el cual se compara con el factor de calidad (Q) elegido. Si la tirada es mayor que Q, se produce una mutación resultando el gen un nuevo número aleatorio. En caso de que la tirada sea menor que Q, el gen se copia exactamente igual.

Capturas

Vídeo

Vídeo coche autónomo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published