Skip to content

Conjunto de herramientas para la simulación y mejora de procesos de robótica de enjambre, incluyendo un planeador de trayectorias basado en RL y el PSO Tuner, un selector automático de parámetros para el algoritmo PSO basado en redes neuronales recurrentes. Parte de la Tesis "Reinforcement y Deep Learning Para Aplicaciones de Robótica de Enjambre".

Notifications You must be signed in to change notification settings

eddysanoli/swarm-robotics-toolbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

version build Matlab Matlab

Reinforcement y Deep Learning en Aplicaciones de Robótica de Enjambre

Índice

  1. Estructura de Carpetas
  2. Antecedentes
  3. Guía de Uso
  4. Hardware y Software
  5. Swarm Robotics Toolbox

Estructura de Carpetas

Swarm-Robotics-Toolbox
│
└─── Deep PSO Tuner
│   │
│   └─── Datasets:
|   |    Datos de entrenamiento y validación para las RNNs
│   │
│   └─── Modelos:
|   |    Modelos finales para las redes entrenadas
│   │
│   └─── Settings y Training Progress:
|        Modelos, estructuras de red e imágenes de progreso de entrenamiento.
|        Excel con registro del proceso de hyperparameter tuning para cada RNN.
|
|
└─── Ejemplos y Scripts Auxiliares
│   │
│   └─── Reinforcement Learning Coursera - Ejercicios:
|   |    Ejercicios (Matlab) para el curso de Reinforcement Learning impartido por la Universidad de Alberta.
|   |
│   └─── Sequence to Sequence Regression Using Deep Learning:
|   |    Ejemplo de Matlab para entrenar una RNN para predecir una secuencia.
|   |
│   └─── Importador_Mapas.mlx:
|   |    Versión mejor explicada de la función interna "ImportarMapa()".
|   |
│   └─── Train_Shallow&DeepNN_DatosSecuenciales:
|        Predicción de un sistema de ecuaciones diferenciales usando una Shallow NN.
|        Predicción de casos de gripe aviaria en los Estados Unidos usando RNN.
|
|
└─── Funciones
│   │
│   └─── Externas:
|   |    Funciones y métodos obtenidos en internet.
|   |
│   └─── Internas:
|        Funciones escritas específicamente para el SR Toolbox.
|
|
└─── Mapas
│   │
│   └─── Imágenes:
|   |    Imágenes en blanco y negro de los mapas a usar en la mesa de trabajo.
|   |
│   └─── Vertices:
|        Vértices para los polígonos que conforman los obstáculos de la mesa de trabajo.
|
|
└─── Media
│   │
│   └─── Figuras:
|   |    Figuras generadas durante la ejecución de los scripts de la SR Toolbox.
|   |    Una carpeta por simulación.
|   |
│   └─── Frames:
|   |    Cada una de las frames generadas durante la animación de la SR Toolbox.
|   |    Una carpeta por simulación.
|   |
│   └─── GIFs:
|   |    GIFs de la animación generada por la SR Toolbox.
|   |
│   └─── Frames:
|        Videos de la animación generada por la SR Toolbox.
|
|
└─── functionsSignatures.json:
|    Empleado para las sugerencias de autocompletado en funciones internas.
|
|
└─── Generar_Dataset.m:
|    Genera las entradas y salidas requeridas para el entrenamientos de las RNNs.
|
|
└─── Pruebas_PSOTuner.mlx:
|    Script para probar y generar estadísticas sobre el PSO Tuner.
|
|
└─── SR_Toolbox:
     Script principal del SR Toolbox.

Antecedentes

Aldo Aguilar (2019)

Tomó como base el algoritmo PSO y lo utilizó como un método de planificación de movimiento para robots diferenciales. Realizó pruebas con 8 controladores diferentes y encontró que aquellos con mejor rendimiento eran el LQR y LQI. La única desventaja que notó era que los robots describían trayectorias muy rectas, lo cual evitaba que los robots esquivaran obstáculos.

Juan Pablo Cahueque (2019)

Tomó los avances de Aldo y los utilizó en conjunto con "Artificial Potential Fields" para permitir que los robots esquivaran obstáculos presentes en el camino hacia la meta. En este caso, el controlador LQR resultó efectivo para esquivar obstáculos grandes, mientras que el PID con un filtro de "Hard-Stops" resultó efectivo para esquivar obstáculos pequeños y numerosos.

Eduardo Santizo (2020)

Las dos investigaciones previas fueron exitosas, pero requerían de la selección manual de los parámetros , y propios del algoritmo PSO. Para automatizar su selección se diseñó una red neuronal recurrente (RNN) capaz de tomar diferentes métricas del PSO y en base a estas generar valores para los parámetros del algoritmo. A la red neuronal se le denominó PSO Tuner y permitió mejorar la velocidad y precisión del algoritmo estándar PSO significativamente (figura de la derecha).

Además, también se propuso una alternativa al método de esquivado de obstáculos de Juan Pablo, el cual emplea aprendizaje reforzado para generar trayectorias alrededor de una variedad de escenarios (figura de la izquierda).

Guía de Uso

Como se mencionó previamente, se desarrollaron dos proyectos como parte de la tesis: El PSO Tuner y el planificador de trayectorias basado en Reinforcement Learning. Estos pueden probarse abriendo los livescripts Pruebas_PSOTuner.mlx y SR_Toolbox.mlx presentes en el path .../Código/Matlab/Eduardo Santizo.

Los pasos para la ejecución de ambos scripts son los siguientes:

  • Bajar a la primera sección: "Setup: Path".

  • De ser necesario, cambiar la raíz del path donde se encuentra actualmente el repositorio.

  • Hacer click en la sección y presionar el botón Run Section de Matlab. Esto cambiará automáticamente el directorio actual de Matlab, incluirá todas las subcarpetas necesarias para la operación de los scripts y comprobará que el archivo functionSignatures.json no contenga errores.

  • Bajar a la sección "Parámetros y Settings".
  • Algunas propiedades en esta sección se cambian por medio de dropdown menus. Si es la primera vez que se utiliza alguno de los livescripts, Matlab ejecutará el script cada vez que se intente cambiar una opción en los menús. Para evitar esto, el usuario debe deshabilitar manualmente esta opción para cada dropdown menu de la siguiente forma:

       Nota: Una vez cambiado, no es necesario volver a repetir este proceso.

  • El usuario puede alterar las diferentes propiedades de la simulación. Se provee una breve descripción de cada parámetro al lado de cada variable. La propiedad principal a alterar es la de Metodo (SR Toolbox) o CostFunc (Pruebas PSO Tuner). Para observar el generador de trayectorias, elegir la opción Dynamic Programming como método en SR_Toolbox.mlx.
  • Presionar Run Section. El programa debería de desplegar una figura de simulación acorde al Metodo / CostFunc elegido. Si se desea generar una nueva simulación, presionar nuevamente Run Section.

       Nota: El GIF fue acelerado artificialmente. La inicialización del script toma más tiempo del mostrado.

Hardware y Software

Los diferentes scripts del SR Toolbox se probaron en dos sistemas diferentes, cada uno con diferentes especificaciones de hardware y software.

Desktop PC Laptop
- CPU: i7-4790K (4.4GHz)
- GPU: Nvidia GTX 780
- RAM: 16 GB DDR3
- Matlab: 2020a
- CPU: i7-5700HQ (2.70GHz)
- GPU: Nvidia GTX 960M
- RAM: 16 GB DDR3
- Matlab: 2018b

En ambos sistemas los scripts corrían sin problemas, aunque en la laptop se observaba una ligera pérdida en desempeño (las animaciones corrían más lento y los tiempos de inicialización eran mayores).

Swarm Robotics Toolbox

Ver documentación

About

Conjunto de herramientas para la simulación y mejora de procesos de robótica de enjambre, incluyendo un planeador de trayectorias basado en RL y el PSO Tuner, un selector automático de parámetros para el algoritmo PSO basado en redes neuronales recurrentes. Parte de la Tesis "Reinforcement y Deep Learning Para Aplicaciones de Robótica de Enjambre".

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages