Validación de un algoritmo de inteligencia de enjambre enfocado en sincronización y control de formaciones de sistemas robóticos multi- agente en un entorno físico José Alejandro Rodríguez Porras UNIVERSIDAD DEL VALLE DE GUATEMALA Facultad de Ingeniería Validación de un algoritmo de inteligencia de enjambre enfocado en sincronización y control de formaciones de sistemas robóticos multi-agente en un entorno físico Trabajo de graduación presentado por José Alejandro Rodríguez Porras para optar al grado académico de Licenciado en Ingeniería Mecatrónica Guatemala, 2024 UNIVERSIDAD DEL VALLE DE GUATEMALA Facultad de Ingeniería Validación de un algoritmo de inteligencia de enjambre enfocado en sincronización y control de formaciones de sistemas robóticos multi-agente en un entorno físico Trabajo de graduación presentado por José Alejandro Rodríguez Porras para optar al grado académico de Licenciado en Ingeniería Mecatrónica Guatemala, 2024 Vo.Bo.: Tribunal Examinador: ��0«- (f) ----- ---���------ Dr. Luis Alberto Rivera Estrada (f)) --�--= .......... l'---"-------''----­ lng. Diego Morales lbáñez Fecha de aprobación: Guatemala, 13 de enero de 2024 Prefacio Llevar a cabo una de las primeras validaciones físicas de robótica de enjambre en Guate- mala ha sido una de las mejores experiencias en el campo de investigación que he vivido, y considero que es un paso en la dirección correcta para el crecimiento del área de la robótica en el país. Espero que en el futuro se continúe con el estudio del algoritmo validado en este trabajo, ya que tiene un gran valor de aplicación en un mundo constantemente cambiante a nivel tecnológico. Que el lector encuentre el valor aportado en este proyecto y lo use para seguir desarro- llando nuevas aplicaciones de robótica de enjambre. A lo largo de este año he tenido muchas lecciones importantes en mi vida, y reconozco que gracias a la oportunidad de trabajar en este proyecto he desarrollado más mi potencial en el área de investigación y búsqueda del conocimiento, así como adaptabilidad. Quisiera agradecer a los siguientes seres que me ayudaron a lograr este trabajo: A mi familia: A mis hermanas Dani y Marisa por siempre estar allí para mí, con apoyo y diversión. A mi hermano y perro, Timoteo, quien me acompañó desde que era un niño y compar- timos un amor incondicional. A mis padres, Byron y Soledad, por siempre apoyarme tanto en mi vida como mis logros, en las buenas y en las malas, que sé que siempre lo han hecho con amor. A mis abuelos, por atraer más alegría a mi vida. A mi Milksha- ke, mi gata, quien es mi protegida desde hace unos meses y contribuye también a mi inspiración por hacer un mundo mejor. A mis amigos de la carrera, especialmente a Jorge Lanza, Fernando Caceros, Fredy Godoy y Juan Diego Villafuerte, realmente estoy agradecido por haberlos conocido y espero sigamos creando buenos proyectos. A mi pareja, Dina, por estar a mi lado con bondad. A las personas que me han aportado de su conocimiento de buena forma. A mi asesor, el Dr. Luis Rivera, por la disponibilidad de apoyo, resolución de dudas, aporte de consejos en mi trabajo y compartir su conocimiento conmigo. v A Jonathan Menéndez, por su colaboración en el Robotat para las pruebas del algo- ritmo. A Andrea Maybell Peña y su buen trabajo en el desarrollo del algoritmo en la fase de simulación previa a mi trabajo. vi Índice Prefacio vi Lista de figuras xvi Lista de cuadros xviii Resumen xix Abstract xx 1. Introducción 1 2. Antecedentes 3 2.1. Robótica de enjambre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Kilobots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3. WsBot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4. Robotat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5. Algoritmos de Robótica de Enjambre implementados en UVG . . . . . . . . . 6 2.5.1. Particle Swarm Optimization (PSO) . . . . . . . . . . . . . . . . . . . 6 2.5.2. Ant Colony Optimization . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5.3. Algoritmo de sincronización y control de sistemas de robots multi- agente para misiones de búsqueda . . . . . . . . . . . . . . . . . . . . . 9 2.6. Plataformas Robóticas Móviles en UVG . . . . . . . . . . . . . . . . . . . . . 11 3. Justificación 13 4. Objetivos 15 4.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2. Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5. Alcance 16 vii 6. Marco teórico 18 6.1. Definiciones importantes de robótica de enjambre . . . . . . . . . . . . . . . . 18 6.1.1. Agente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1.2. Formaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1.3. Control centralizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.1.4. Control descentralizado . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.2. Teoría de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.2.1. Conceptos básicos en teoría de grafos . . . . . . . . . . . . . . . . . . . 19 6.2.2. Matrices de interés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.3. Teoría de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.3.1. Control de formaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.3.2. Modelo del robot diferencial . . . . . . . . . . . . . . . . . . . . . . . . 23 6.4. Herramientas matemáticas relevantes . . . . . . . . . . . . . . . . . . . . . . . 24 6.4.1. Ecuación de consenso . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.4.2. Función de tensión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.4.3. Error Cuadrático Medio (e.c.m.) . . . . . . . . . . . . . . . . . . . . . 25 6.5. Infraestructura en Robotat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.5.1. Mesa de pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.5.2. OptiTrack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.5.3. Comunicación del Robotat . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.6. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.6.1. Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.6.2. Webots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.7. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.7.1. Plataforma móvil: Robot Diferencial Pololu 3Pi+ modificado . . . . . 29 6.7.2. Microcontrolador del agente: ESP32 . . . . . . . . . . . . . . . . . . . 30 7. Algoritmo de sincronización y control de formaciones 32 7.1. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7.1.1. Algoritmo de sincronización y control centralizado (Supervisor) . . . . 32 7.1.2. Algoritmo de control de uniciclo para cada agente . . . . . . . . . . . . 33 7.2. Lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7.3. Restauración y actualización del algoritmo . . . . . . . . . . . . . . . . . . . . 36 7.3.1. Recreación del mundo de Webots . . . . . . . . . . . . . . . . . . . . . 37 7.3.2. Actualización del código de 2019 para su funcionamiento en 2023 . . . 38 7.4. Variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.4.1. Creación de subgrupos de formación . . . . . . . . . . . . . . . . . . . 45 7.4.2. Alejamiento de agentes en formación . . . . . . . . . . . . . . . . . . . 46 8. Adaptación del algoritmo para su ejecución en un entorno físico 47 8.1. Migración de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 8.1.1. Comunicación con servidor Robotat . . . . . . . . . . . . . . . . . . . 48 8.1.2. Control de Pololu 3Pi+ . . . . . . . . . . . . . . . . . . . . . . . . . . 48 8.2. Modificaciones al algoritmo en entorno Webots con pruebas preliminares . . . 51 8.2.1. Calibración de marcadores para su uso en el algoritmo . . . . . . . . . 53 8.2.2. Modelo 1: Aplicación de información de marcadores . . . . . . . . . . 54 8.2.3. Modelo 2: Pruebas preliminares de algoritmo dinámico en físico . . . . 56 viii 8.2.4. Modelo 3: Integración para funcionamiento híbrido de algoritmo en físico y almacenamiento de datos . . . . . . . . . . . . . . . . . . . . . 67 9. Diseño experimental 69 9.1. Opciones de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 9.2. Configuración de escenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 9.2.1. Variantes de condiciones iniciales para el escenario . . . . . . . . . . . 72 10.Ejecución de algoritmo de sincronización y control de formaciones en los robots diferenciales en ambiente controlado 76 10.1. Resultados de experimentos para probar las características del algoritmo y su desempeño en el entorno físico . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 10.1.1. Experimento 1: Ejecución del algoritmo completo en físico con 4 agentes 76 10.1.2. Experimento 2: Reproducibilidad del algoritmo en físico con 4 agentes 79 10.1.3. Experimento 3: Visualización de gráficas generadas por la ejecución del algoritmo en físico con 4 agentes con distintas condiciones iniciales de agente pero mismas marcas de inicio. . . . . . . . . . . . . . . . . . 81 10.1.4. Experimento 4: Ejecución del algoritmo completo en físico con 5 agen- tes y generación de gráficas de velocidad en x y y, así como el análisis de la trayectoria de cada agente involucrado. . . . . . . . . . . . . . . 84 10.1.5. Experimento 5: Ejecución del algoritmo completo en físico con 9 agentes. 88 10.2. Resultados de validación primaria del algoritmo en un entorno físico . . . . . 89 11.Comparación de desempeño del algoritmo en diferentes entornos: físico vs. simulación 90 11.1. Resumen de escenarios y explicación de herramientas de análisis de datos . . 90 11.1.1. Escenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 11.1.2. Herramientas de análisis . . . . . . . . . . . . . . . . . . . . . . . . . . 92 11.2. Resultados de corridas en físico y simulación de cada escenario . . . . . . . . 94 11.2.1. Escenario AAA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 11.2.2. Escenario AB1A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 11.2.3. Escenario AB2A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 11.2.4. Escenario AB1B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 11.2.5. Escenario ACA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 11.2.6. Escenario ACC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 11.2.7. Escenario BCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 11.2.8. Escenario CB1A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 11.2.9. Escenario CCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 11.2.10.Escenario ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.3. Resultados del total de corridas en físico y simulación . . . . . . . . . . . . . . 144 12.Conclusiones 148 13.Recomendaciones 150 14.Bibliografía 152 15.Anexos 155 ix Lista de figuras 1. Taxonomía de la robótica de enjambre [3]. . . . . . . . . . . . . . . . . . . . . 4 2. Kilobots [5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. WsBot [6]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. WsBot en ambiente de trabajo [6]. . . . . . . . . . . . . . . . . . . . . . . . . 6 5. Trayectorias generadas de PSO para un enjambre de 10 agentes [8]. . . . . . . 7 6. PSO en la naturaleza [9]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7. Diagrama de feromona y camino encontrado [12]. . . . . . . . . . . . . . . . . 8 8. Trayectoria del camino encontrado con feromona [13]. . . . . . . . . . . . . . . 8 9. Movimiento en formación mínimamente rígida a través de obstáculos [16]. . . 9 10. Simulación en Webots de la formación moviéndose a través de obstáculos [16]. 9 11. Control de formaciones usando un grafo rígido en Matlab [16]. . . . . . . . . . 10 12. Formación inicial experimentando deformación para estar en las posiciones adecuadas [16]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 13. Simulación en Webots de formación y dirección hacia meta [16]. . . . . . . . . 11 14. Ejemplo de un grafo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 15. Ejemplo de dígrafo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 16. Lazo cerrado de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 17. Modelo de un uniciclo en 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 18. Ejemplo de sistema de captura de movimiento OptiTrack [30]. . . . . . . . . . 26 19. Cámara de Captura de Movimiento Primex 41 [30]. . . . . . . . . . . . . . . . 27 20. Entorno de desarrollo en Webots. . . . . . . . . . . . . . . . . . . . . . . . . . 28 21. Pololu 3Pi+ [33]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 22. Especificaciones de sensores del Pololu 3Pi+ [33]. . . . . . . . . . . . . . . . . 30 23. Especificaciones del Pololu 3Pi+ [33]. . . . . . . . . . . . . . . . . . . . . . . . 31 24. ESP32 Pinout [35]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 25. Diagrama de flujo para el Supervisor/Algoritmo de sincronización. . . . . . . 34 26. Formación triangular (izquierda) y hexagonal (derecha), con sus respectivas posiciones de agente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 27. Diagrama de flujo para procesamiento de velocidades en agente individual. . . 36 28. Estado del mundo de Webots creado en 2019 al abrirlo con Webots 2023b. . . 37 29. Recreación del mundo de Webots en versión 2023b. . . . . . . . . . . . . . . . 38 x 30. Prueba de funcionamiento de formación. . . . . . . . . . . . . . . . . . . . . . 42 31. Prueba de funcionamiento de movimiento en formación hacia la meta. . . . . 43 32. Resultado de optimización de parámetros para formación. . . . . . . . . . . . 44 33. Variante de creación de subgrupos de formación. . . . . . . . . . . . . . . . . 45 34. Variante de alejamiento de agentes en formación. . . . . . . . . . . . . . . . . 46 35. Obtención de poses de múltiples marcadores usando las funciones migradas a Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 36. Conexión con Pololu 3Pi+ con ID 7, usando las funciones migradas a Python. 49 37. Envío de instrucciones para poner a girar a agentes Pololu, usando las fun- ciones migradas a Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 38. Envío de instrucciones para mover en línea recta a agentes Pololu, usando las funciones migradas a Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 39. Mundo de Webots basado en Robotat y optimizado para pruebas. . . . . . . . 52 40. Calibración de marcadores 1 al 15 para su uso en Pololus 3Pi+. . . . . . . . . 53 41. Proceso de calibración de ángulo de desfase de bearing. . . . . . . . . . . . . . 54 42. Escenario de primera prueba en el Robotat, visto desde distintos ángulos. . . 55 43. Resultado al cargar la información guardada del mundo real en Webots. . . . 55 44. Movimiento en círculos alrededor del objetivo, del modelo 2.0. . . . . . . . . . 56 45. Secuencia del movimiento de alineación perpendicular del Modelo 2.0. . . . . 57 46. Descripción del movimiento de alineación perpendicular del Modelo 2.0. . . . 57 47. Orientación del E-Puck vs. Pololu con respecto de sus ejes. . . . . . . . . . . . 58 48. Secuencia de seguimiento dinámico de objetivo, prueba 1. . . . . . . . . . . . 58 49. Descripción del seguimiento dinámico de objetivo, prueba 1. . . . . . . . . . . 59 50. Secuencia de seguimiento dinámico de objetivo, prueba 2. . . . . . . . . . . . 59 51. Descripción del seguimiento dinámico de objetivo, prueba 2. . . . . . . . . . . 60 52. Descripción del seguimiento dinámico de objetivo, prueba 3. . . . . . . . . . . 60 53. Agente detenido al llegar al marcador objetivo. . . . . . . . . . . . . . . . . . 61 54. Descripción de movimiento de 1 agente hacia objetivo virtual, prueba 1. . . . 61 55. Secuencia de movimiento de 2 agentes hacia objetivos virtuales, prueba 2. . . 62 56. Descripción de movimiento de 2 agentes hacia objetivos virtuales, prueba 2. . 62 57. Secuencia de movimiento de 9 agentes, para colocarse en posiciones iniciales en línea, prueba 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 58. Descripción de movimiento de 9 agentes, para colocarse en posiciones iniciales en línea, prueba 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 59. Escenario de posiciones iniciales para prueba 2 con obstáculos virtuales. . . . 64 60. Secuencia (izquierda a derecha) de movimiento de 9 agentes físicos y 1 agente inmóvil (marcador) hacia objetivos virtuales en forma de L invertida, prueba 2. 65 61. Secuencia (izquierda a derecha) de movimiento de 9 agentes físicos y 1 agente inmóvil (marcador) para acercar a los agentes entre sí, prueba 1. . . . . . . . 66 62. Resultado de la formación con 9 agentes físicos y 1 agente inmóvil (marcador), prueba 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 63. Secuencia (izquierda a derecha) del resultado del movimiento artificial del líder (marcador agente 1) y el seguimiento de la formación (agentes 2 al 10). . 67 64. Diagrama de diseño experimental 1. . . . . . . . . . . . . . . . . . . . . . . . 71 65. Configuraciones de posición iniciales de agentes para las corridas de escenario. 73 66. Configuraciones de posición de obstáculos para las corridas de escenario. . . . 74 xi 67. Configuraciones de posición de objetivo para las corridas de escenario. . . . . 75 68. Secuencia Experimento 1: primera fase del algoritmo, posicionamiento de agentes en marcas iniciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 69. Secuencia Experimento 1: segunda fase del algoritmo, acercamiento de agentes y construcción de formación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 70. Secuencia Experimento 1: tercera fase del algoritmo, movimiento de líder hacia objetivo manteniendo formación. . . . . . . . . . . . . . . . . . . . . . . 78 71. Secuencia Experimento 1.1: Verificación del comportamiento dinámico de los agentes en formación luego de llegar al objetivo. . . . . . . . . . . . . . . . . . 79 72. Secuencia Experimento 2: Reproducibilidad de algoritmo en físico con 4 agentes. 80 73. Trayectoria desde marcas iniciales de los 4 agentes, excluyendo el camino hacia las marcas iniciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 74. Histórico de velocidades, incluyendo el camino hacia las marcas iniciales. . . . 82 75. Trayectoria desde marcas iniciales de los 4 agentes, excluyendo el camino hacia las marcas iniciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 76. Histórico de velocidades, excluyendo el camino hacia las marcas iniciales. . . . 83 77. Secuencia Experimento 4: Ejecución del algoritmo completo en físico con 5 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 78. Trayectoria completa de los 5 agentes, incluyendo el camino hacia las marcas iniciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 79. Histórico de velocidades, incluyendo el camino hacia las marcas iniciales. . . . 86 80. Trayectoria de los 5 agentes a partir de las marcas iniciales. . . . . . . . . . . 87 81. Histórico de velocidades, a partir de las marcas iniciales. . . . . . . . . . . . . 87 82. Ejecución del algoritmo por los 9 agentes. . . . . . . . . . . . . . . . . . . . . 88 83. Leyenda para trayectorias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 84. Trayectoria de los 6 agentes en el escenario AAA, corrida 1 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 85. Trayectoria del centro de masa de la formación en el escenario AAA, corrida 1 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 95 86. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AAA, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . 96 87. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AAA, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . 96 88. Histórico de velocidades de los agentes en el escenario AAA, corrida 1, en físico. 97 89. Histórico de velocidades de los agentes en el escenario AAA, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 90. Histórico de velocidades en las ruedas de los agentes en el escenario AAA, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 91. Histórico de velocidades en las ruedas de los agentes en el escenario AAA, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 92. Trayectoria de los 6 agentes en el escenario AB1A, corrida 3 en físico (izquier- da) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 93. Trayectoria del centro de masa de la formación en el escenario AB1A, corrida 3 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 100 94. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AB1A, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . 101 xii 95. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AB1A, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . 101 96. Histórico de velocidades de los agentes en el escenario AB1A, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 97. Histórico de velocidades de los agentes en el escenario AB1A, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 98. Histórico de velocidades en las ruedas de los agentes en el escenario AB1A, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 99. Histórico de velocidades en las ruedas de los agentes en el escenario AB1A, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 100. Trayectoria de los 6 agentes en el escenario AB2A, corrida 1 en físico (izquier- da) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 101. Trayectoria del centro de masa de la formación en el escenario AB2A, corrida 1 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 105 102. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AB2A, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . 106 103. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AB2A, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . 106 104. Histórico de velocidades de los agentes en el escenario AB2A, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 105. Histórico de velocidades de los agentes en el escenario AB2A, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 106. Histórico de velocidades en las ruedas de los agentes en el escenario AB2A, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 107. Histórico de velocidades en las ruedas de los agentes en el escenario AB2A, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 108. Trayectoria de los 6 agentes en el escenario AB1B, corrida 3 en físico (izquier- da) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 109. Trayectoria del centro de masa de la formación en el escenario AB1B, corrida 3 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 110 110. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AB1B, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . 111 111. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario AB1B, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . 111 112. Histórico de velocidades de los agentes en el escenario AB1B, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 113. Histórico de velocidades de los agentes en el escenario AB1B, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 114. Histórico de velocidades en las ruedas de los agentes en el escenario AB1B, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 115. Histórico de velocidades en las ruedas de los agentes en el escenario AB1B, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 116. Trayectoria de los 6 agentes en el escenario ACA, corrida 2 en híbrido (iz- quierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . 115 117. Trayectoria del centro de masa de la formación en el escenario ACA, corrida 2 en híbrido (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . 115 118. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario ACA, corrida 2, en híbrido. . . . . . . . . . . . . . . . . . . . . . 116 xiii 119. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario ACA, corrida 2, en simulación. . . . . . . . . . . . . . . . . . . . 116 120. Histórico de velocidades de los agentes en el escenario ACA, corrida 2, en híbrido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 121. Histórico de velocidades de los agentes en el escenario ACA, corrida 2, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 122. Histórico de velocidades en las ruedas de los agentes en el escenario ACA, corrida 2, en híbrido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 123. Histórico de velocidades en las ruedas de los agentes en el escenario ACA, corrida 2, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 124. Trayectoria de los 6 agentes en el escenario ACC, corrida 1 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 125. Trayectoria del centro de masa de la formación en el escenario ACC, corrida 1 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 120 126. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario ACC, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . . 121 127. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario ACC, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . 121 128. Histórico de velocidades de los agentes en el escenario ACC, corrida 1, en físico.121 129. Histórico de velocidades de los agentes en el escenario ACC, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 130. Histórico de velocidades en las ruedas de los agentes en el escenario ACC, corrida 1, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 131. Histórico de velocidades en las ruedas de los agentes en el escenario ACC, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 132. Trayectoria de los 6 agentes en el escenario BCA, corrida 3 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 133. Trayectoria del centro de masa de la formación en el escenario BCA, corrida 3 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 125 134. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario BCA, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . . 126 135. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario BCA, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . 126 136. Histórico de velocidades de los agentes en el escenario BCA, corrida 3, en físico.127 137. Histórico de velocidades de los agentes en el escenario BCA, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 138. Histórico de velocidades en las ruedas de los agentes en el escenario BCA, corrida 3, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 139. Histórico de velocidades en las ruedas de los agentes en el escenario BCA, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 140. Trayectoria de los 6 agentes en el escenario CB1A, corrida 1 en híbrido (iz- quierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . 129 141. Trayectoria del centro de masa de la formación en el escenario CB1A, corrida 1 en híbrido (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . 130 142. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario CB1A, corrida 1, en híbrido. . . . . . . . . . . . . . . . . . . . . . 130 143. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario CB1A, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . 131 xiv 144. Histórico de velocidades de los agentes en el escenario CB1A, corrida 1, en híbrido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 145. Histórico de velocidades de los agentes en el escenario CB1A, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 146. Histórico de velocidades en las ruedas de los agentes en el escenario CB1A, corrida 1, en híbrido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 147. Histórico de velocidades en las ruedas de los agentes en el escenario CB1A, corrida 1, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 148. Trayectoria de los 6 agentes en el escenario CCA, corrida 2 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 149. Trayectoria del centro de masa de la formación en el escenario CCA, corrida 2 en físico (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . 134 150. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario CCA, corrida 2, en físico. . . . . . . . . . . . . . . . . . . . . . . . 135 151. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario CCA, corrida 2, en simulación. . . . . . . . . . . . . . . . . . . . 135 152. Histórico de velocidades de los agentes en el escenario CCA, corrida 2, en físico.135 153. Histórico de velocidades de los agentes en el escenario CCA, corrida 2, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 154. Histórico de velocidades en las ruedas de los agentes en el escenario CCA, corrida 2, en físico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 155. Histórico de velocidades en las ruedas de los agentes en el escenario CCA, corrida 2, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 156. Trayectoria de los 6 agentes en el escenario ADD, corrida 3 en híbrido (iz- quierda) y simulación (derecha). . . . . . . . . . . . . . . . . . . . . . . . . . . 138 157. Trayectoria del centro de masa de la formación en el escenario ADD, corrida 3 en híbrido (izquierda) y simulación (derecha). . . . . . . . . . . . . . . . . . 139 158. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario ADD, corrida 3, en híbrido. . . . . . . . . . . . . . . . . . . . . . 140 159. Histórico de norma de velocidad de la formación y error cuadrático medio en el escenario ADD, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . 140 160. Histórico de velocidades de los agentes en el escenario ADD, corrida 3, en híbrido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 161. Histórico de velocidades de los agentes en el escenario ADD, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 162. Histórico de velocidades en las ruedas de los agentes en el escenario ADD, corrida 3, en híbrido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 163. Histórico de velocidades en las ruedas de los agentes en el escenario ADD, corrida 3, en simulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 164. Perspectiva adicional 1 de la adquisición de datos para la calibración de los marcadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 165. Perspectiva adicional 2 de la adquisición de datos para la calibración de los marcadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 166. Trayectoria desde marcas iniciales de los 4 agentes del experimento 1, inclu- yendo el camino hacia las marcas iniciales. . . . . . . . . . . . . . . . . . . . . 156 xv 167. Secuencia Completa de Final Trial en escenario AAA, corrida física 1 (in- cluyendo la etapa 0 de agentes llegando a la posición inicial del experimento [primeros 5 fotogramas]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 168. Secuencia de Final Trial en escenario AAA, corrida física 3. . . . . . . . . . . 158 169. Secuencia de Final Trial en escenario AB1A, corrida física 1. . . . . . . . . . . 159 170. Secuencia de Final Trial en escenario AB1A, corrida física 3. . . . . . . . . . . 160 171. Secuencia de Final Trial en escenario ACC, corrida física 1. . . . . . . . . . . 161 172. Secuencia de Final Trial en escenario BCA, corrida física 1. . . . . . . . . . . 162 173. Secuencia de Final Trial en escenario BCA, corrida física 3. . . . . . . . . . . 163 174. Secuencia de Final Trial en escenario CCA, corrida física 1. . . . . . . . . . . 164 175. Secuencia de Final Trial en escenario CCA, corrida física 2. . . . . . . . . . . 165 176. Secuencia de Final Trial en escenario CCA, corrida física 3. . . . . . . . . . . 166 177. Secuencia de Final Trial en escenario CB1A, corrida híbrida 1. . . . . . . . . . 167 xvi Lista de cuadros 1. Resultados de éxito de simulación en la fase previa [16]. . . . . . . . . . . . . 10 2. Comparación de disposición de ejes de mundo de Webots, según el año. . . . . 40 3. Comparación de indexación de posiciones de mundo de Webots, según el año. 41 4. Desfases angulares al alinear los marcadores con el eje y. . . . . . . . . . . . . 54 5. Tabla de variables almacenadas al final de la corrida del algoritmo. . . . . . . 70 6. Codificación de experimentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7. Interpretación de los escenarios. . . . . . . . . . . . . . . . . . . . . . . . . . . 91 8. Comparación de métricas entre corridas en simulación y físico, escenario AAA, corrida 1, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 9. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario AAA, con 6 agentes. . . . . . . . . . . . . . . 99 10. Resultado de éxito todas las corridas del escenario AAA, con 6 agentes. . . . 99 11. Comparación de métricas entre corridas en simulación y físico, escenario AB1A, corrida 3, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 104 12. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario AB1A, con 6 agentes. . . . . . . . . . . . . . . 104 13. Resultado de éxito todas las corridas del escenario AB1A, con 6 agentes. . . . 104 14. Comparación de métricas entre corridas en simulación y físico, escenario AB2A, corrida 1, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 108 15. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario AB2A, con 6 agentes. . . . . . . . . . . . . . . 109 16. Resultado de éxito todas las corridas del escenario AB2A, con 6 agentes. . . . 109 17. Comparación de métricas entre corridas en simulación y físico, escenario AB1B, corrida 3, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 113 18. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario AB1B, con 6 agentes. . . . . . . . . . . . . . . 114 19. Resultado de éxito todas las corridas del escenario AB1B, con 6 agentes. . . . 114 20. Comparación de métricas entre corridas en simulación e híbrido, escenario ACA, corrida 2, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 118 xvii 21. Comparación de promedio de métricas entre corridas en simulación e híbrido, todas las corridas del escenario ACA, con 6 agentes. . . . . . . . . . . . . . . 119 22. Resultado de éxito todas las corridas del escenario ACA, con 6 agentes. . . . . 119 23. Comparación de métricas entre corridas en simulación y físico, escenario ACC, corrida 1, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 24. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario ACC, con 6 agentes. . . . . . . . . . . . . . . 123 25. Resultado de éxito todas las corridas del escenario ACC, con 6 agentes. . . . . 124 26. Comparación de métricas entre corridas en simulación y físico, escenario BCA, corrida 3, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 27. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario BCA, con 6 agentes. . . . . . . . . . . . . . . 128 28. Resultado de éxito todas las corridas del escenario BCA, con 6 agentes. . . . . 129 29. Comparación de métricas entre corridas en simulación y físico, escenario CB1A, corrida 1, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 132 30. Comparación de promedio de métricas entre corridas en simulación e híbrido, todas las corridas del escenario CB1A, con 6 agentes. . . . . . . . . . . . . . . 133 31. Resultado de éxito todas las corridas del escenario CB1A con 6 agentes. . . . 133 32. Comparación de métricas entre corridas en simulación y físico, escenario CCA, corrida 2, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 33. Comparación de promedio de métricas entre corridas en simulación y físico, todas las corridas del escenario CCA, con 6 agentes. . . . . . . . . . . . . . . 137 34. Resultado de éxito todas las corridas del escenario CB1A con 6 agentes. . . . 137 35. Comparación de métricas entre corridas en simulación y físico, escenario ADD, corrida 3, con 6 agentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 36. Comparación de promedio de métricas entre corridas en simulación e híbrido, todas las corridas del escenario ADD, con 6 agentes. . . . . . . . . . . . . . . 143 37. Resultado de éxito todas las corridas del escenario ADD, con 6 agentes. . . . 144 38. Comparación de promedio de métricas entre corridas en simulación y físico, de la totalidad de corridas (60 en total) de todos los escenarios, con 6 agentes. 144 39. Porcentajes de éxito de cada escenario. . . . . . . . . . . . . . . . . . . . . . . 145 40. Resultado de éxito todas las corridas en todos los escenarios, con 6 agentes. . 146 xviii Resumen En el presente trabajo se llevó a cabo una validación de un algoritmo previamente de- sarrollado en 2019, específicamente el algoritmo de inteligencia de enjambre enfocado en sincronización y control de formaciones de sistemas robóticos multi-agente. La validación se llevó a cabo en un entorno físico, específicamente en el ecosistema de robots existente en la universidad, llamado Robotat, usando un robot diferencial Pololu 3Pi+ modificado para servir como agente del enjambre. Como primer paso se realizó una migración del software previamente desarrollado en Matlab hacia Python con la adición de nuevas funciones y características, para facilitar su compatibilidad con el ambiente de Webots, haciendo los ajustes y variantes del algoritmo necesarias para optimizar el proceso de validación. La validación física consistió en realizar una serie de diversos experimentos para poner a prueba el algoritmo en el ambiente controlado. Entre los factores de evaluación más im- portantes se hizo énfasis en el estudio del desempeño de cada agente, la generación de las trayectorias, el posicionamiento inicial, intermedio y final de los agentes, las configuraciones de formación, los diversos escenarios de interés con obstáculos, etc. En síntesis, se examinó la ejecución del algoritmo para observar su desempeño, encontrando puntos de mejora y posibles aplicaciones según los escenarios propuestos. xix Abstract In the present work, the validation of an algorithm previously developed in 2019 was carried to completion, specifically focused in the synchronization and formation control algorithm for multi-agent robotic systems. The validation was carried out in a physical environment, to be specific the robot ecosystem at the university, called Robotat, using a modified Pololu 3Pi+ differential robot to serve as a swarm agent. As first step, a migration from a previously developed software in Matlab was done, to Python, with the addition of new functions and characteristics, to facilitate the compatibility of the Webots environment, making the necessary variants and adjustments to optimize the validation process. The validation consisted in making a series of diverse experiments to test the algorithm in the controlled environment. Among the most important evaluation factors the emphasis was in the study of the performance of each agent, the trajectory generation, initial, intermediate and final positioning of the agents, the formation configurations, the diverse settings of interest with obstacles, etc. In summary, the execution of the algorithm was examined to observe its performance, find its improvement areas and possible applications according to the proposed scenarios. xx CAPÍTULO 1 Introducción El presente trabajo consistió en la continuación de la línea de investigación de desarro- llo de robótica de enjambre, específicamente con enfoque en el desarrollo y aplicación del algoritmo de sincronización y control de formaciones de sistemas robóticos multi-agente. Se trató de una continuación debido a que en la fase previa se llegó hasta pruebas del algoritmo desarrollado en simulaciones, y en el presente trabajo ya se contaba con la infraestructura necesaria para las pruebas en una ambiente controlado con agentes físicos. El objetivo principal giró en torno a la validación del algoritmo previamente mencionado en sistemas físicos, con su respectiva evaluación de funcionamiento en el ecosistema Robotat. Para cumplir con el mismo, se utilizaron las herramientas disponibles en la universidad como apoyo, entre las cuales se puede mencionar: el sistema de captura de movimiento OptiTrack, la plataforma de pruebas, los robots diferenciales Pololu 3Pi+ modificados y la red de comunicación TCP/IP existente en el Robotat. Como tareas principales que se llevaron a cabo de forma específica para lograr llegar al objetivo principal, se asignó la tarea de migrar el software previamente desarrollado para su uso en 2023 en el Robotat. Una vez logrado, el siguiente paso propuesto fue la evaluación de trayectorias usando los marcadores del OptiTrack, siguiendo con la observación de la ejecu- ción del algoritmo en la mesa de pruebas con los Pololu 3Pi+ y finalmente una comparación de resultados físicos con simulados. El contenido relacionado a las tareas llevadas a cabo se muestra en los Capítulos 7 al 10. En los dos primeros Capítulos se detalla sobre el proceso para integración de funcionamiento. En el Capítulo 7 se aborda la explicación y restauración del algoritmo, luego, en el Capítulo 8 se elabora sobre la adaptación del algoritmo para su funcionamiento en un entorno físico real. En dos últimos Capítulos se muestran los diseños de experimentos (Capítulo 9) y sus resultados (Capítulo 10). Con la validación de este algoritmo se creó un buen cimiento para la continuación con la creciente tecnología por la robótica de enjambre. Observar la ejecución de las trayectorias generadas por el algoritmo en un entorno controlado representa un paso significativo en el 1 campo, pues abre las puertas a nuevas aplicaciones y un mayor potencial de este tema en el mundo moderno. 2 CAPÍTULO 2 Antecedentes 2.1. Robótica de enjambre Conforme ha avanzado la tecnología en el área de la ingeniería, el área de robótica ha ido creciendo tanto en capacidad como complejidad, lo que se puede observar en proyectos como el Atlas de Boston Dynamics [1], el cual presenta grandes capacidades de movilidad, pero que también puede llegar a ser muy costoso por las mismas razones. Habiendo mencionado sus fortalezas, cabe resaltar que este trabaja de forma individual, lo que resulta siendo una limitación para distintas aplicaciones que involucran tareas que necesitan más de un individuo, como es el caso de búsquedas de rescate, explorar un área, o incluso realizar varias tareas de forma paralela. Es en estos casos donde entra el campo de investigación de la robótica de enjambre, el cual, contrario a Atlas se basa en robótica “simple”. El área de robótica de enjambre consiste en realizar alguna tarea compleja a gran escala usando múltiples robots de construcción y capacidad simple. Estos robots suelen ser de bajo costo y consumo, de dimensiones relativamente pequeñas y su funcionamiento a nivel individual no es demasiado exigente en términos de procesamiento, pero al momento de trabajar como conjunto estos pueden desempeñar tareas a niveles de alta complejidad [2], teniendo así una operación multiagente. Esta área de la robótica está inspirada en sistemas en la naturaleza compuestos por múltiples individuos, como es el caso de insectos sociales como las colmenas de abejas y colonias de hormigas, bancos de peces, etc. Entre las principales ventajas de la robótica de enjambre se destacan la robustez, flexibilidad y escalabilidad. A grandes rasgos esta disciplina puede tomar modelos de la naturaleza y adaptarlos al ámbito de control para los robots, o bien, se pueden crear nuevos algoritmos [3]. En el diagrama de la Figura 1 se muestran los principales ejes de estudio de la robótica de enjambre, los cuales tienen ramificaciones según su aplicación. 3 Figura 1: Taxonomía de la robótica de enjambre [3]. 2.2. Kilobots En 2014 la Universidad de Harvard (Instituto de Wyss) desarrolló estudios con enjambres de hasta 1024 agentes, los cuales se denominan Kilobots (Figura 2), cuyas dimensiones son muy cercanas a las de un centavo estadounidense y un costo menor a los 20 dólares. El enjambre que formó parte del estudio fue de 1024 robots con lo que se logró realizar distintas formaciones bidimensionales tanto artificiales como imitaciones de la naturaleza en entre 2 y 12 horas según la complejidad de la figura. Estos robots tienen la capacidad de comunicarse entre sí de forma local a través de señales de luz infrarroja y descentralizada, con la característica de tener una alta robustez. El principio de movimiento de Kilobot se basa en vibraciones, estos poseen tres patas y según a donde se necesite mover estos vibran de una manera específica para moverse en esa dirección. La meta principal detrás del desarrollo de estos robots es desarrollar agentes cada vez más pequeños para que estos se puedan ensamblar en objetos como herramientas o bien mover objetos en conjunto [4]. 2.3. WsBot En 2019 se desarrolló el WsBot, con el objetivo principal de servir como un robot de bajo costo para aplicaciones de enjambre inteligente en la industria, principalmente pero no 4 Figura 2: Kilobots [5]. de forma exclusiva para fábricas inteligentes. El WsBot posee atributos similares a los de máquinas industriales, como máquinas elevadoras (forklifts), para lograr comportamientos inteligentes ya sea con tareas individuales pequeñas para lograr una mayor o trabajar en conjunto con los demás agentes para completar un trabajo global. La estructura de este agente es la de un robot diferencial basado en un ROS (Sistema Robótico Operativo), capaz de comunicarse con los demás agentes a través de Wi-Fi [6]. Figura 3: WsBot [6]. En la Figura 3 se puede apreciar con más detalle el Wsbot y en la Figura 4 se muestra este en un ambiente de aplicación. Con la aparición de esta plataforma robot se busca posicionar esta tecnología en un área de mayor acceso a la población y aplicaciones de uso más cotidiano. 5 Figura 4: WsBot en ambiente de trabajo [6]. 2.4. Robotat En la Universidad del Valle de Guatemala se realizó el megaproyecto de múltiples fases, Robotat, en las cuales tanto catedráticos como alumnos colaboraron en su desarrollo. El Robotat es un ecosistema de experimentación robótico, diseñado para que este sirva como un campo de pruebas para que los estudiantes puedan estudiar a los robots con herramientas avanzadas de las cuales destacan el sistema de captura de movimiento OptiTrack y la red de comunicación Wi-Fi. En la última tésis, de Camilo Perafán Montoya en 2021 [7], se completó la red de comu- nicación para múltiples agentes, expansión que permite la implementación de nuevas tecno- logías que en las iteraciones previas no se había logrado, entre las cuales está principalmente la robótica de enjambre. Además se desarrolló una librería en el lenguaje de programación C para que un microcontrolador ESP32 se pudiera conectar a la red implementada, y recibir datos del OptiTrack por medio del protocolo MQTT, así como enviar datos por el mismo hacia un servidor. Es importante recalcar que una de las conclusiones principales de este proyecto fue que el número máximo de agentes que se pueden conectar en simultáneo a la red para que su decodificación de datos se mantenga eficiente es de 11 agentes. Para que agentes no robóticos puedan interactuar con el sistema se diseñó una antena inteligente. 2.5. Algoritmos de Robótica de Enjambre implementados en UVG 2.5.1. Particle Swarm Optimization (PSO) Este algoritmo consiste en que un conjunto de partículas comiencen desde una posición aleatoria y arbitraria para luego reunirse en conjunto en un punto específico. En la UVG, desde 2019 se ha trabajado con este algoritmo desde una perspectiva modificada, es decir un Modified PSO (MPSO), para dejar de estudiar a los agentes como partículas solamente, sino tomar en cuenta sus características al tratarse de robots diferenciales. 6 Figura 5: Trayectorias generadas de PSO para un enjambre de 10 agentes [8]. Figura 6: PSO en la naturaleza [9]. Primero se estudió en la tésis de Aldo Aguilar [8], donde se avanzó hasta simulaciones de Matlab y Webots. Luego, en años siguientes se continuó con el desarrollo de estos algoritmos para refinarlos hasta llegar a intentos de implementación en físico, como es el caso del trabajo de Alex Maas [10] usando una plataforma Raspberry Pi para obtener las poses en tiempo real y la comunicación entre robots por medio de UDP, aunque cabe resaltar que existieron limitaciones relacionadas a la falta de de una plataforma móvil por lo que la validación se tuvo que realizar de forma que se movieran los marcadores manualmente, haciendo varias capturas para emular el movimiento que hubiera presentado un robot móvil, la verificación de las poses/posiciones se hizo mediante un algoritmo de visión de computadora. Los últimos avances de la implementación de este algoritmo se dieron en 2022, con la tésis de Rubén Lima [11], al comenzar con la validación del algoritmo en físico usando el equipo de captura de movimiento del Robotat, continuando con el diseño de una plataforma móvil llamada ByteBot3D compuesta por una Raspberry Pi. Se incursionó con la comunicación TCP/IP. Debido a que no se usaron encoders el rendimiento del comportamiento mecánico no fue el esperado por lo que se optó por mover la plataforma manualmente. 7 2.5.2. Ant Colony Optimization El algoritmo se basa en el comportamiento que tienen las colonias de hormigas para encontrar rutas hacia comida mediante feromonas, cada hormiga (agente) explora el terreno y si una encuentra comida (meta) va marcando el camino con lo que lo encontró con feromonas (probabilidad) y las demás hormigas siguen este camino eventualmente. Si por el contrario una hormiga no encuentra alimento en su exploración, su rastro se desvanece y termina siguiendo el rastro de feromonas de otra hormiga. Figura 7: Diagrama de feromona y camino encontrado [12]. Figura 8: Trayectoria del camino encontrado con feromona [13]. En la tésis de Gabriela Iriarte [12] se desarrolló un algoritmo de Ant Colony en UVG por primera vez y en otra iteración Daniela Baldizón [13] realizó una versión modificada, Modified Ant Colony Optimization (ACO), para adaptarlo a exploración de terrenos, planificación de trayectorias, reconocer y evadir obstáculos. Se implementó en Matlab a nivel de simulación con validación usando 3 mapas distintos para probar el algoritmo. El trabajo realizado por Walter Sierra [14] continuó con el algoritmo de Ant System (AS), implementado previamente en la universidad solamente a nivel de simulación. En este caso, se expandió la implementación a una plataforma Raspberry Pi para probar su 8 funcionamiento en un ambiente físico. Debido a que no se contaba con una plataforma móvil se realizaron las pruebas de forma manual analizando mediante marcadores en una mesa de pruebas y visión de computadora. 2.5.3. Algoritmo de sincronización y control de sistemas de robots multi- agente para misiones de búsqueda Este algoritmo fue desarrollado e implementado por Andrea Maybell Peña [15], centrado en manejar el sistema de robots multi-agente para misiones de búsqueda, apoyándose de teoría de grafos y control moderno para mantener a los agentes en formaciones específicas, generando una especie de cuerpo con los robots diferenciales como sus partes, con la capaci- dad de “fluir” a través de obstáculos. Se crearon subalgoritmos para mantener la formación y un control para la evasión de obstáculos. Figura 9: Movimiento en formación mínimamente rígida a través de obstáculos [16]. Figura 10: Simulación en Webots de la formación moviéndose a través de obstáculos [16]. Se avanzó hasta simulaciones en Matlab modelando al agente como partícula, para luego realizar simulaciones en Webots, adaptando al agente a un modelo de un robot diferencial. La plataforma robótica elegida en ese momento para la tarea fue un BitBot, mas nunca se llego a probar en dicho robot. En 2022, se volvió a estudiar este algoritmo de formaciones con un enfoque 3D, en la tésis de Kenneth Aldana [17]. Se implementó el algoritmo en simulaciones de Matlab y Webots solamente, no se llegó a implementar en físico tampoco. Desarrollo previo en simulaciones para el algoritmo de interés El trabajo actual consiste en continuar con la siguiente fase de implementación del al- goritmo de sincronización y control de formaciones, por lo que es útil revisar los resultados principales de la fase anterior. La fase anterior fue realizada por Maybell Peña, y su trabajo consistió en el desarrollo del algoritmo, con sus respectivas simulación en Matlab y Webots. 9 A continuación se muestran los resultados de las simulaciones, con distintas configuraciones de obstáculos: Configuración de obstáculos Rigidez Goal No goal 1 Total 58 42 1 Minimal 86 0 2 Total 50 40 2 Minimal 78 10 Cuadro 1: Resultados de éxito de simulación en la fase previa [16]. Se puede observar en el Cuadro 1, la cantidad de simulaciones con éxito y fallidas para llegar a la meta en distintas configuraciones de obstáculos. Enfocándose en la comparación de usar un grafo rígido contra uno mínimamente rígido, el mínimamente rígido tuvo una visible mayor eficiencia para llegar a la meta. Figura 11: Control de formaciones usando un grafo rígido en Matlab [16]. En la Figura 11 se pueden observar las trayectorias ejecutadas en la simulación con 10 agentes, uno de ellos siendo el líder, usando un grafo rígido. En la Figura 12 se pueden observar tres reconfiguraciones de formación para poder pasar a través de los obstáculos y mantener la formación, debido a que esta es un grafo mínimamente rígido. En la Figura 13 se puede observar la simulación completa (el orden es de izquierda a derecha y de arriba hacia abajo) de Webots con los robots diferenciales ejecutando la formación, luego las trayectorias evadiendo obstáculos hasta llegar a la meta. Se puede observar con claridad la efectividad que presentan los grafos míniminamente rígidos debido a su capacidad de deformarse para atravesar los obstáculos y llegar a la meta. 10 Figura 12: Formación inicial experimentando deformación para estar en las posiciones adecuadas [16]. Figura 13: Simulación en Webots de formación y dirección hacia meta [16]. 2.6. Plataformas Robóticas Móviles en UVG A lo largo de los últimos años se ha buscado desarrollar plataformas móviles adecuadas para la robótica de enjambre en el ambiente Robotat de la UVG. Entre los primeros pros- pectos se mencionaron los Bitbots [15], y también se mostró interés en los Epucks. En los años más recientes se han desarrollado varios robots diferenciales como lo son: ByteBot: Implementado por Julio Rodríguez [18], consiste de una Rasberry Pi Zero con Servomotor, sensores de proximidad y cámara; cuenta con comunicación inalámbrica TCP IP y UDP. Alphabot: Es un Alphabot con modificaciones que usa una Raspberry Pi, se imple- 11 mentó en el Robotat con sistema OptiTrack. Rediseño por Luis Nij [19]. ByteBot3D: Es una continuación del trabajo realizado en el ByteBot, modificado por Rubén Lima [11], utiliza el mismo controlador y comunicación que la versión anterior, usa el sistema de captura de movimiento del Robotat. 12 CAPÍTULO 3 Justificación La inteligencia de enjambre es un campo relativamente nuevo en el área de inteligencia artificial, con potencial en diversas aplicaciones que van desde el contexto de la vida cotidiana hasta un ambiente industrial. La mayor ventaja que presenta es que se compone de múltiples agentes para llevar a cabo tareas complicadas y se forma de unidades simples de bajo costo. Con este atributo, los sistemas robóticos basados en la inteligencia de enjambre no son vulnerables en caso de que uno de los agentes falle o se pierda, lo que les da robustez. Esta misma ventaja resulta útil en misiones de búsqueda y rescate, así como la movilización de distintos tipos de agentes (entre ellos terrestres, acuáticos y aéreos) según la aplicación lo requiera. Se ha elegido estudiar la robótica de enjambre debido a que esta resulta ideal para poner en práctica los conocimientos adquiridos a lo largo de la carrera de Ingeniería Mecatrónica, principalmente los conceptos avanzados sobre robótica y control adquiridos en los últimos años de estudio. Desde 2019 en la Universidad del Valle de Guatemala se comenzó con el estudio y me- jora de algoritmos de inteligencia de enjambre, de entre los cuales se destaca el algoritmo de sincronización y control de formaciones en sistemas robóticos multiagente, cuya alta coordinación y flexibilidad representa una alta eficiencia al momento recorrer áreas estraté- gicamente. Esto se puede aplicar a la búsqueda de sobrevivientes para catástrofes naturales, dada la versatilidad del algoritmo de control de los robots. Habiendo mencionado los avances previos en la UVG, cabe resaltar que todos los avances que se han hecho han sido a nivel de simulación en software como Matlab y Webots, por lo que realmente no se ha tenido una validación formal física de la mayoría de los algoritmos en robots móviles funcionales, entre ellos el algoritmo de sincronización y control de forma- ciones desarrollado por Maybell Peña [15]. Esta falta de validación se debió a que no había infraestructura adecuada, pero ahora sí existe y el algoritmo está listo para realizar pruebas en el Robotat, con el sistema OptiTrack y los robots diferenciales con ESP32. Con la opor- tunidad que estos recursos presentan, se puede validar el algoritmo en un ambiente físico, lo que sería un gran paso para la investigación de la inteligencia de enjambre. Finalmente, 13 esto dejaría un precedente con buena base para futuro estudio del tema, haciendo cada vez más factible su uso en el mundo moderno. 14 CAPÍTULO 4 Objetivos 4.1. Objetivo general Validar el algoritmo de inteligencia de enjambre enfocado en sincronización y control de formaciones de sistemas robóticos multi-agente previamente desarrollado a nivel de simula- ción, en sistemas físicos, y evaluar su funcionamiento en el ecosistema Robotat. 4.2. Objetivos específicos Adaptar el software desarrollado anteriormente para su aplicación en la mesa de prue- bas del Robotat y los robots diferenciales Pololu 3Pi+. Evaluar la generación de trayectorias usando marcadores en el Robotat y el sistema de captura de movimiento OptiTrack. Examinar el comportamiento de los robots diferenciales al ejecutar las trayectorias generadas por el algoritmo de sincronización y control, en distintos escenarios. Comparar los resultados obtenidos en simulaciones con los obtenidos con los agentes físicos en ambientes controlados. 15 CAPÍTULO 5 Alcance Con esta validación, se produjo un algoritmo funcional para la ejecución de trayectorias para agentes, ya sea en un contexto de simulación o en el contexto de un ambiente real y controlado como lo es el Robotat. Se optimizó el algoritmo previamente desarrollado en 2019, otorgando una mayor flexibilidad de número de agentes y obstáculos, con una comunicación mejorada y una sincronización aumentada para evitar la pérdida de datos y coordinación. Cabe resaltar que el algoritmo generado como producto de la migración es dinámico con respecto a los agentes, pues constantemente se está actualizando su posición con los marcadores del OptiTrack, proporcionando una mejor adaptación a cambios en el entorno. Se añadió un sistema de configuración de escenarios dentro de la inicialización del algo- ritmo para facilitar el estudio y generación de datos del mismo, así como un aumento de su reproducibilidad al permitir guardar las condiciones iniciales de cada prueba en físico. Con este sistema, la comparación entre las pruebas físicas y simuladas se vuelve más precisa, ya que existen menos diferencias innecesarias entre las pruebas. También se generaron funciones de comunicación del Robotat y el Pololu 3Pi+ en Python, que antes sólo existían en Matlab, lo que representa un progreso en términos de eficiencia computacional, así como el añadido de estar hecho en un lenguaje open-source. El hecho de ser open-source representa una mayor accesibilidad para futuros investigadores del tema. Otro de los productos resultantes del proyecto fue un código de procesamiento de datos para la generación de las gráficas de las trayectorias, facilitando su visualización, manipula- ción de los datos y análisis de los mismos. El proyecto llegó hasta pruebas en físico, con la limitación de número de agentes robóticos siendo 6 para la mayoría de experimentos, debido a la disponibilidad de robots en la UVG. La escasez de robots se debió tanto a que el número máximo de Pololus 3Pi+ habilitados por la universidad fue de 10, de los cuales algunos se encontraban fuera de servicio, mientras que otros se tenían que compartir con los demás estudiantes para sus proyectos respectivos. Otra 16 de las limitaciones fue la disponibilidad del ecosistema Robotat, pues se tenían un tiempo máximo de pruebas por semana de alrededor de 6 horas, de las cuales, también se tenía que compartir la mesa con otros estudiantes. Esto resultaba en un tiempo disminuido para hacer pruebas exclusivas del algoritmo, por lo que no se pudo hacer demasiadas pruebas de repetición en cuanto a escenarios. En síntesis, se llegó a adaptar el algoritmo para su ejecución para pruebas físicas en el Robotat, generando trayectorias de forma dinámica a partir de las mediciones obtenidas del OptiTrack, y comparar los resultados de escenarios de interés. 17 CAPÍTULO 6 Marco teórico Es importante entender el contexto del algoritmo de sincronización y control de for- maciones multi-agente, para lograr aplicarlo correctamente a un entorno real. Es por esto que en las siguientes secciones se desarrolla un poco más sobre los conceptos claves detrás del algoritmo que se compone de teoría de grafos principalmente, funciones y herramientas matemáticas de interés, sistemas de control, funcionamiento, resultados previos de simula- ción, el software y hardware relevante, la infraestructura disponible, el sistema de captura de movimiento, etc. 6.1. Definiciones importantes de robótica de enjambre 6.1.1. Agente Un agente es un individuo simple que forma parte del enjambre, en este caso un robot de dimensiones relativamente pequeñas que posee la capacidad de realizar acciones simples para cumplir un objetivo más complejo de forma cooperativa; recibir y transmitir información, así como instrucciones [3]. 6.1.2. Formaciones En los enjambres de la naturaleza comúnmente se puede notar la emergencia de patrones entre los agentes, creando formaciones y comportamientos aparentemente coordinados, ya sea a propósito o no. Esto no es diferente en la robótica de enjambre, pues también se pueden realizar formaciones simples o complejas según la aplicación lo requiera. Se pueden crear movimiento coordinados mediante la generación de trayectorias con evasión de obstáculos y control de velocidad, con restricciones de distancia entre agentes, se elaborará sobre esto más adelante. Existen dos tipos principales para la coordinación de las formaciones, los cuales son control centralizado y descentralizado [3]. 18 6.1.3. Control centralizado Este enfoque no está construido alrededor de comunicación entre agentes por medio de sensores, sino que alrededor de un sistema de transmisión de datos a un mismo receptor (un CPU que se encarga de coordinación). Esto se debe a que agentes robóticos, por lo general, sólo reportan su posición a un sistema de cómputo principal y este le devuelve instrucciones al robot, sin necesidad de que este se tenga que comunicar con los demás agentes de forma directa. La formación de patrones descentralizada tiende a ser más costosa debido a la necesidad de un CPU de control y procesamiento, también es menos escalable y con menor robustez a fallas [20]. Cabe resaltar que la adaptación a nivel grupal sólo se puede obtener mediante un control centralizado o permitiendo que los agentes comuniquen sus información del exterior entre sí [3]. 6.1.4. Control descentralizado Este tipo de control consiste en que los agentes realicen mediciones individuales de su entorno y se comuniquen entre sí, sin necesidad de un CPU externo que les otorgue ins- trucciones. Esto implica que el programa y procesamiento debe ocurrir completamente en los agentes, según la información que obtengan de sus agentes cercanos. Este enfoque, al no poseer una unidad central de procesamiento, resulta ser más barato y menos propenso a fallas o pérdidas, pues cada uno de los robots tiene el mismo peso de información para la formación [3]. 6.2. Teoría de grafos Es una rama de la matemática que se centra en el estudio de los grafos, los cuales son una especie de mapas de ruta, que se dibujan con puntos y líneas. Generalmente, los grafos son herramientas útiles en el modelado de problemas, para representar las relaciones de los componentes importantes y sirven para resolver problemas de búsqueda de caminos eficientes, entre otros. Esta teoría emplea estructuras matriciales para representar a los grafos y realizar operaciones con los mismos [21]. 6.2.1. Conceptos básicos en teoría de grafos Vértices: También llamados nodos, son los puntos que conforman al grafo. Cada vértice tiene una valencia asociada según la cantidad de aristas que confluye en él. Aristas: También llamados arcos, son las líneas que conectan a los vértices, y tienen una longitud de la conexión asociada. Cuando dos aristas se cruzan se le llama cruce [21]. Se pueden clasificar en: Adyacentes: Estas convergen en un mismo vértice. Paralelas: Se caracterizan por compartir tanto el vértice inicial como el final. 19 Figura 14: Ejemplo de un grafo. Cíclicas: Su vértice final es el mismo que el inicial. Camino: Conjunto de vértices interconectados por aristas. Tipos de grafo: Existen diferentes tipos de grafos según sus características, configuración, utilidad y complejidad. A continuación se muestran las distintas clases de grafos principales clasificados según las cualidades de las aristas, vértices, su peso y formas de conexión [21] [22]: Simple: Definición estándar de un grafo, que indica que este sólo acepta una arista para unir dos vértices. Multigrafo: Acepta más de una arista. Dígrafo: Poseen una orientación en las aristas, representada por una flecha (Ver Figura 15). Etiquetado: Los vértices tienen etiqueta y las aristas un peso. Aleatorio: Sus aristas están asociadas a una probabilidad. Hipergrafo: Las aristas son inicidentes a 3 o más vértices. Infinito: El cardinal de los vértices y aristas es infinito. Plano: Este se puede representar sin ninguna intersección entre vértices y aristas. Regular: Todos sus vértices tienen el mismo nivel de valencia. 20 Figura 15: Ejemplo de dígrafo. 6.2.2. Matrices de interés Entre las matrices que serán de principal utilidad para el algoritmo de sincronización y control de formaciones se puede mencionar las siguientes [21] [22]: Matriz de adyacencia: El grafo se representa con una matriz cuadrada A de tamaño n2, siendo n el número de vértices. Si existe una arista entre el vértice x y el y, el elemento ax,y es 1, si no, es 0. Matriz de incidencia: El grafo se representa por una matriz de A×V , es decir aristas por vértices. La matriz según v,m brinda información sobre la arista, con 1 siendo conectado y 0 no conectado. Matriz de grados: Matriz diagonal D que contiene información del grado de cada vértice, lo que indica cuantas aristas están conectadas al vértice. Combinando esta y la matriz de adyacencia se consigue una matriz laplaciana [23][24]. Matriz laplaciana: Esta matriz L se obtiene al restar la matriz de adyacencia A a la matriz de grados D de un grafo. Es decir L = D −A [25]. Matriz de rigidez: Esta matriz sirve para representar grafos rígidos, y cuyo enfoque es relacionar los desplazamientos de un conjunto de vértices de una estructura, con las fuerzas exteriores que se necesitan para poder lograr un desplazamiento. Ya que sus distancias entre 21 vértices son constantes, el grafo se mueve en su totalidad como una estructura rígida [22]. Existe otra variación de este grafo, que forma parte de la familia de gráficos de Lamam, llamado grafo mínimamente rígido, o gráfico de Laman. Se describe como un grafo G = (V,E) con n vértices V = {1,2,...,n}, m = |E| aristas que cumple con m = 2n−3 y cada subconjunto con k ≥ 2 vértices abarca hasta 2k − 3 aristas [26]. Para construir un grafo mínimamente rígido es necesario usar la variación de la matriz de rigidez y ejecutar el algoritmo de inserción de Henneburg, que sirve para la gene- ración de este tipo de grafo “flexible”, ya que cada vértice se queda con dos grados de libertad. El algoritmo consiste en los siguientes pasos [27]: • Numerar todos los vértices. • Agregar una arista entre el vértice 1 y el vértice 2. • Los vértices restantes se van agregando en orden al componente conectado del grafo, conectando cada uno a la estructura de grafo con 2 aristas. • Mantener el número de conexiones necesarias para n vértices menor a (n2−n)/2. 6.3. Teoría de control Para lograr implementar un manejo de las formaciones de agentes robusto, y mantenerlos en las posiciones adecuadas de un grafo mínimamente rígido es necesario tomar en cuenta el elemento de control. Luego de haber construido un grafo mínimamente rígido, se debe tomar en cuenta la información devuelta por los agentes. Esto desemboca en la necesidad de un grafo etiquetado, es decir sus aristas tienen una ponderación o peso, según la dinámica de un lazo cerrado del sistema de control multi-agente. El hecho de que sea dinámico implica que la longitud de las aristas varía en el tiempo [15] [27]. Figura 16: Lazo cerrado de control. 6.3.1. Control de formaciones El control de formaciones se basa en dos niveles de control, uno superior y uno inferior. El superior se encarga del comportamiento de los robots como agentes, para mantener sus posiciones relativas entre así, así como la posición global de los mismos [15]. El control de capa inferior se encarga de controlar la velocidad de las ruedas para que los motores de las ruedas izquierda y derecha coincidan con la magnitud esperada. 22 6.3.2. Modelo del robot diferencial Es importante adaptar el movimiento de formaciones de enjambre al contexto donde se implementará el algoritmo, pues en una simulación de partículas el movimiento es mucho más simple, pues carecen de dimensiones, volumen y masa. La adaptación corresponde en este caso al modelo de un robot diferencial, pues estos son los agentes con la tarea de ejecutar las trayectorias encontradas[15] [16]. Este modelo contempla las dimensiones físicas del robot, y las distancias l del motor hasta su centro, ϕ es el ángulo de orientación del uniciclo en el plano XY, v es la velocidad lineal, ω es la velocidad angular del robot y r es el radio de las ruedas del robot. El subíndice ctrl indica control. Se tienen las siguientes ecuaciones principales para analizar la cinemática del robot [28]: v = r(Φ̇R + Φ̇L) 2 (1) ω = r(Φ̇R + Φ̇L) 2l (2) Figura 17: Modelo de un uniciclo en 2D. De donde se puede llegar a las siguientes expresiones de la velocidad angular controlada de tanto la rueda izquierda como la derecha, como se muestra a continuación: ϕ̇L,ctrl = vctrl − lωctrl r (3) ϕ̇R,ctrl = vctrl + lωctrl r (4) De forma resumida, para pasar de un modelo de uniciclo no holónomico, al robot móvil, se deben realizar tres pasos: 23 Se prueba que el modelo del agente robótico pueda mapearse al uniciclo. Se aplica control al uniciclo para calcular las velocidades de control vctrl y ωctrl. Se realiza un mapeo de las velocidades de control hacia el robot real. 6.4. Herramientas matemáticas relevantes Para lograr efectuar un control de múltiples capas con un funcionamiento correcto y adecuado para mantener la formación del enjambre de forma óptima se recurre a funciones, ecuaciones y otras herramientas matemáticas. 6.4.1. Ecuación de consenso Para mantener la formación de agentes en los lugares asignados es necesario aplicar el concepto de la ecuación de consenso. Esta herramienta toma en cuenta el centro de masa de la formación y se obtiene la velocidad para cada agente individual, lo que induce a mantener la forma del grafo. Se describe como: vi = ∑ i∈N(j) (xi − xj) (5) Donde N es el número de vecinos j, es decir agentes en los vértices adyacentes/conectados a la unidad de interés i. Al añadir pesos se obtiene la ecuación derivada de velocidad para la formación con tensiones de aristas entre agentes (vértices del grafo): ∂eij ∂xi = ωij(∥xi − xj∥)(xi − xj) (6) Con esta ecuación ya es posible despejar el peso para construir el control de formación tomando en cuenta tensiones, así como el mantenimiento de la conectividad [16] [29]. 6.4.2. Función de tensión Las funciones de tensión definen como se comportarán los agentes al intentar mantenerse en sus posiciones asignadas. Según la función de tensión así son las características de reunión de los agentes y cuanta holgura pueden tener estos entre su posición actual y la objetivo. Las principales funciones de tensión usadas para el control de formaciones en la ecuación de consenso son [15]: Evasión de colisiones. 24 ϵ(x) = x2 x− r (7) Control de formación: Donde d es la distancia entre agentes. ϵ(x) = (x− d)2 2 (8) Combinación de las previamente mencionadas con mantenimiento de conectividad. ϵ(x) = (x− d)2 (x− r)(x−R) (9) Otras combinaciones, evasión de colisiones. ϵ(x) = 0.05 ∗ (d− 2 ∗ (r + 0.05)) (d− (r + 0.05))2 (10) Coseno Hiperbólico. ϵ(x) = 0.15 ∗ sinh(15 ∗ d− 6) d (11) 6.4.3. Error Cuadrático Medio (e.c.m.) En inglés Mean Squared Error (m.s.e.), es una medida estadística utilizada para evaluar la precisión o desempeño de un modelo. Se define como la media de los cuadrados de las diferencias entre valores del modelo deseado y valores reales. Para el caso de este proyecto, el e.c.m. sirve para comparar las matrices del grafo de formación de agentes, entre la formación deseada y la formación real obtenida. De forma generalizada el e.c.m. se expresa de la siguiente forma: ECM = 1 n n∑ i=1 (yi − ŷi) 2 (12) Donde n es el número de agentes, yi representa los valores reales de distancia entre los agentes en la formación, y ŷi los valores deseados de la formación que se busca. Su forma de interpretación es: ecm = 0: Ambas formaciones son idénticas. ecm < 1: Se puede considerar una formación, entre más cercano a 0 más parecidas son la formación real y la deseada. ecm = 1: Aún se puede considerar una formación, pero la diferencia ya es considerable. ecm > 1: Ya no se considera formación. 25 6.5. Infraestructura en Robotat El Robotat (Robot Habitat), como se explicó previamente, es un ecosistema de desarrollo de robots, consistente de varias herramientas útiles para experimentar con la robótica de enjambre, y a continuación se describirán las herramientas generales con las que cuenta el Robotat. 6.5.1. Mesa de pruebas Es una plataforma plana de 3.8×4.8 m, con bordes alrededor de ella para servir como barreras delimitadoras para que los robots se mantengan dentro del ecosistema. Además cuenta con 6 cámaras de captura de movimiento alrededor de la plataforma que forman parte del sistema OptiTrack. 6.5.2. OptiTrack Es un sistema de captura de movimiento con cámaras ultra precisas fabricado por la empresa OptiTrack, cuyas principales aplicaciones en el mundo son: producción virtual para películas, ciencias del movimiento, realidad virtual, robótica, animaciones, etc. A continua- ción se muestran los distintos dispositivos que lo componen y un ejemplo de montaje [30]. Figura 18: Ejemplo de sistema de captura de movimiento OptiTrack [30]. El modelo disponible en la universidad es el Primex 41 (Figura 19), cuyas características más importantes son: Rango de captura: 100 pies, 290 pies3/por cámara para marcadores pasivos y 1000000 pies3/por cámara para marcadores activos. Infrarrojos discretos. Captura de imágenes. Incertidumbre de ± de 0.1 mm y errores rotacionales menores a 0.5 grados. Lentes de 12 mm. 26 Figura 19: Cámara de Captura de Movimiento Primex 41 [30]. Retrocompatibilidad. Captura de datos 2D/3D y cuerpos rígidos. Calibración y sincronización de cámaras. Precio: $6499 6.5.3. Comunicación del Robotat El Robotat tiene la capacidad de realizar mediciones por medio de las cámaras OptiTrack, transmitirlas usando un switch de por medio, a un servidor principal en una computadora de laboratorio por medio del protocolo UDP. Este servidor de Python luego transmite los datos por medio de Wi-Fi usando un Router. Las computadoras que se encuentre en el rango del inalámbrico del Router pueden conectarse al servidor y extraer datos específico según se necesiten, como coordenadas, ángulos de Euler, pose, etc. Por último, el Robotat cuenta con plataformas robóticas diferenciales, los Pololus 3Pi+, y se les puede enviar comandos a estos por medio de Wi-Fi también. 6.6. Software Para lograr manejar y controlar los agentes de robótica de enjambre es necesario in- volucrar varios tipos de software, entre ellos lenguajes de programación especializados y simuladores de precisión con enfoque en entornos físicos. A continuación se menciona el software principal. 27 6.6.1. Matlab Matlab es una plataforma de programación y cómputo numérico especializada en te- mas de ingeniería y ciencias, para analizar datos, desarrollar algoritmos y crear modelos; desarrollada por la compañía MathWorks [31]. Para este trabajo de validación del algoritmo de sincronización y control de formaciones, se utiliza como el centro de procesamiento de datos y generación de trayectorias, lo que le da un enfoque centralizado a este caso de robótica de enjambre. 6.6.2. Webots Es una plataforma de código abierto creada por la compañía Cyberbotics[32] centrada en la simulación de robots, provee una ambiente completo de desarrollo para programar, simular y modelar distintos tipos de robots. Cuenta con un GUI moderno, un physics engine, un rendering engine y un editor de texto. La plataforma permite crear y añadir distintos tipos de objetos dentro de un mundo .wbt, modificar los parámetros de varios componentes, usar modelos ya preexistentes, sensores, implementar controladores (en lenguajes C, C++, Python, Java, Matlab, ROS, o un API). En esta plataforma se realizan las simulaciones con el modelo adaptado a un uniciclo para los robots diferenciales, en lugar de sólo partículas. Los códigos desarrollados en la fase previa trabajada por Maybell Peña [15] están programados en Python para los controladores de Webots. Figura 20: Entorno de desarrollo en Webots. 28 6.7. Hardware Como último tema a profundizar, se aborda el hardware que se utilizará con el agente para ejecutar las trayectorias generadas por el algoritmo de sincronización y control de formaciones. El robot a utilizar como agente es un robot diferencial Pololu 3Pi+. 6.7.1. Plataforma móvil: Robot Diferencial Pololu 3Pi+ modificado La plataforma móvil elegida para realizar la validación del algoritmo es un Pololu 3Pi+ modificado, pues el original tiene una capacidad de procesamiento menor, ya que utiliza como cerebro del robot a un Arduino (ATmega32U4 MCU). Ya que el robot necesita una mayor capacidad de procesamiento para ejecutar las trayectorias, se decidió incluir un microcon- trolador ESP32, para realizar el control de capa superior para la ejecución de trayectorias, mientras que el Arduino se encarga de realizar el control de capa baja, es decir se enfoca en controlar la velocidad de los motores. Figura 21: Pololu 3Pi+ [33]. Las características principales del Pololu 3Pi+ son [33]: Modelo: modelo 3pi+ 32U4 OLED Robot Encoders de cuadratura dual para control de lazo cerrado de posición o velocidad Sensores de línea Sensores de choque frontales IMU: Acelerómetro de 3 ejes, magnetómetro, giroscopio Motores reductores micrometálicos de 30:1 MP de 6V Precio: $159.95 Alimentación: 4 baterías AAA 29 Figura 22: Especificaciones de sensores del Pololu 3Pi+ [33]. cable USB A a Micro-B cable para programarlos y debuguearlos Velocidad máxima: 1.5 m/s Peso: 100 gramos (sin ESP32) Dimensiones: 97×96×36 mm Diámetro de las ruedas: 32 mm 6.7.2. Microcontrolador del agente: ESP32 El microcontrolador ESP32 fue el elegido para adaptarse al Pololu 3Pi+ debido a sus características ventajosas de procesamiento y conectividad. El ESP32 posee un módulo Blue- tooth y Wi-Fi integrado, por lo que esto facilita la comunicación a distancia con el control centralizado de los agentes, para recibir la trayectoria a ejecutar. Además cuenta con las siguientes características principales [34]: Procesador: microprocesador de 32-bit Xtensa LX6 de doble núcleo (o de un solo núcleo), operando a 160 o 240 MHz y rindiendo hasta 600 DMIPS. Co-procesador de ultra baja energía (ULP). Memoria: 540 KiB SRAM Conectividad inalámbrica por Wi-Fi y Bluetooth Periféricos: • 12 bit ADC de hasta 18 canales • 2 DACs de 8 bits • 4 SPI 30 Figura 23: Especificaciones del Pololu 3Pi+ [33]. • 2 I2C • 2 I2S • 3 UART • PWM • LED PWM • Cifrado flash Figura 24: ESP32 Pinout [35]. 31 CAPÍTULO 7 Algoritmo de sincronización y control de formaciones El algoritmo de sincronización y control de formaciones está conformado por varios subalgoritmos, que realizan tareas ya sea de forma individual o en conjunto para lograr su objetivo. Debido a esto, en el presente capítulo se explica la anatomía de sus partes, funcionamiento, parámetros y lógica, para poder entrar en contexto y familiarizarse con el mismo. Asimismo, se elabora en el proceso de restauración por el que tuvo que pasar el algoritmo y modificaciones que se tuvieron que hacer en el mismo para su funcionamiento en 2023. 7.1. Funcionamiento El algoritmo como tal se divide en dos programas distintos, uno que se coordina el control del enjambre y el segundo que es el programa de recepción de datos de cada agente para su control individual. A continuación se explica como funciona cada uno y su relación. 7.1.1. Algoritmo de sincronización y control centralizado (Supervisor) Por facilidad se le llamará también Supervisor, es la parte del algoritmo que realiza el trabajo de coordinación, procesamiento de datos y generación de valores para crear trayec- torias. Se puede subdividir en cuatro principales segmentos para explicar su funcionamiento. El primer segmento tiene como trabajo la adquisición de datos del entorno, esto incluye las coordenadas en X y Y de los obstáculos, los agentes y las posiciones de interés, como el objetivo. El segundo segmento es la forma en que se calculan las velocidades de los agentes hacia los demás agentes y/o posiciones de interés, según la etapa de condiciones en las que se encuentre. Este cálculo se realiza mediante la ecuación de consenso, con un factor de peso 32 aplicado a ω, cuyo valor es afectado por las funciones de tensión y evasión de obstáculos. El tercer segmento consiste en la evasión de obstáculos y colisiones, que toma en cuenta la posición actual de cada uno de los agentes y la compara con las posiciones de los agentes vecinos y obstáculos. Con esta información, calcula el peso ω a aplicar a la ecuación de consenso según que tan cerca está, por lo que la velocidad disminuye al acercarse a un objeto con posible colisión. El cuarto segmento se trata del movimiento por medio de un control proporcional, para movilizar a los agentes a un punto de interés. En la mayoría de escenarios, se utiliza para el movimiento del líder hacia un objetivo específico. El control proporcional en este caso es: vn+1 = v + u (13) Donde u es: u = K · (xobjetivo − xagente) (14) Donde K es la constante proporcional de ganancia que se multiplica con la diferencia de distancia entre el objetivo y el agente seleccionado. El parámetro principal que funciona como variable a controlar es la velocidad en x y y, con la señal de control siendo la respectiva posición actual del agente, con la cual se calcula la norma de velocidades de todos los agentes. Con base en esto se toman las deci- siones relevantes dentro del código para ejecutar acciones siguiendo los enfoques relevantes mencionados previamente. 7.1.2. Algoritmo de control de uniciclo para cada agente Este programa se encarga de procesar las instrucciones de velocidad calculadas en el algoritmo de sincronización, para realizar el cálculo de las velocidades lineales y angulares que se necesitan para encontrar la velocidad que cada rueda tiene que aplicar para poder seguir la trayectoria, según el modelo del uniciclo (Figura 17). Se encarga del control individual que tiene cada agente para seguir las instrucciones del programa de sincronización. 7.2. Lógica Como se mencionó previamente, el algoritmo tiene una parte de Supervisor y una parte de control individual del agente. El Supervisor calcula las velocidades en x y y necesarias para orientar al agente a una posición deseada, mientras que el control de agente individual es el mismo programa para cada robot diferencial, con el detalle de que cada agente solo “procesa” a su instrucción correspondiente según un argumento de identificación. A continuación se muestran los diagramas de flujo del funcionamiento base del algoritmo para cada programa. En secciones más adelante se introducirán variantes del mismo: Con respecto a la Figura 25, se puede destacar que NormV es la norma de velocidades entre todos los agentes involucrados, y resulta siendo una buena variable de control para 33 Figura 25: Diagrama de flujo para el Supervisor/Algoritmo de sincronización. realizar los cambios de formación y movimiento, debido a que entre más cerca estén esta norma disminuye. En este caso se muestra 0.3 como valor de ejemplo, para representar una norma de velocidad baja. También cabe resaltar que la distancia entre líder a objetivo de 0.05 m es arbitraria y se puede modificar según las especificaciones de la tarea a realizar. 34 Por último, se explica que al llegar al objetivo, se puede comenzar con otra tarea. Ejemplos de procesos a realizar podrían ser: Detener a todos los robots (enviar comando de velocidades = 0). Crear una nueva formación. Comenzar movimiento de líder hacia nuevo objetivo. Segmentar la formación en subgrupos. Otras aplicaciones. En el diagrama de flujo no se despliega la evasión de obstáculos ya que permanece activa durante todo el algoritmo. El algoritmo posee dos tipos de formación principales, según su grafo, como se muestra en la Figura 26. Cabe resaltar que el número de agente inicial en el trabajo previo de Peña [16], el índice comienza en 0, mientras que en el presente trabajo se trabajó con un índice inicial de 1 para la representación gráfica de los agentes, para que estos coincidieran con su número asignado con el robot diferencial físico. En todas las pruebas finales (Capítulo 11) se usó la formación triangular por facilidad de visualización, seleccionando a los agentes del 1 al 6. Figura 26: Formación triangular (izquierda) y hexagonal (derecha), con sus respectivas posiciones de agente. 35 Figura 27: Diagrama de flujo para procesamiento de velocidades en agente individual. En cuanto a la Figura 27, se muestra el programa de recepción de velocidades y proce- samiento de las mismas para el agente individual. En Webots cada agente tiene su propio número de ID, con el cual se puede hacer una comparación de la instrucción de velocidad y el agente correspondiente. Se trabajó con un mismo programa generalizado que todos los agentes robóticos pueden usar y según el número de ID de cada uno, procesar únicamente los datos de interés. Además, se tiene una etapa de truncamiento de velocidades, para no superar las velocidades máximas que puede soportar el robot, ya sea para la rueda izquierda o derecha. 7.3. Restauración y actualización del algoritmo La fase previa del algoritmo desarrollada por Andrea Maybell Peña [15], que llegó hasta pruebas en simulación en la versión de Webots 2019, trabajada cuatro años antes del desa- 36 rrollo de este trabajo. Por lo que tanto el código como el mundo y simulación de Webots, quedaron obsoletos para versiones más recientes de Webots, como es el caso de la versión de Webots más actual en 2023, la versión 2023b. Esto significó que para llevar a cabo la siguiente fase de pruebas físicas, sería necesario una modernización de la fase previa, una recreación del mundo de Webots para la versión 2023b, limpieza de funciones abandonadas, así como un reajuste de parámetros. Para la fase actual se optó por usar las versiones más recientes de software. Se eligió Python 3.10 para usar como lenguaje de programación destinado a los controladores de agentes robots y Supervisor de Webots, mientras que para Webots se seleccionó la versión 2023b. 7.3.1. Recreación del mundo de Webots Figura 28: Estado del mundo de Webots creado en 2019 al abrirlo con Webots 2023b. Como primer paso de la restauración, se buscó recrear el mundo previo del último mo- delo elaborado en 2019, correspondiente a PruebasObstaculos.wbt. Este mundo, debido a las diversas actualizaciones a lo largo de los años, presentaba los objetos en desorden, des- actualizados, con varias dependencias perdidas y con los ejes rotados, perdiendo su utilidad en 2023. En la Figura 28 se puede apreciar el estado en el que se encontraba dicho mundo al abrirlo con Webots 2023b. Como primera instancia, se intentó hacer la migración automática al enlazar los objetos con un script proporcionado en el repositorio de GitHub de Webots, mas la antigüedad del mundo no permitió que varios de los objetos se actualizaran correctamente. Por esto, se decidió empezar un nuevo mundo en 2023b desde cero, buscando replicar los obstáculos, objetivo, arena, agentes, supervisor y características del mundo previo. En la Figura 29 se muestra la recreación del mundo en Webots 2023b. 37 Figura 29: Recreación del mundo de Webots en versión 2023b. Los objetos presentes en la Figura 29 son: Obstáculos: Toroides morados. E-pucks (Robots diferenciales): Pequeños círculos de color aqua. Objetivo final: Esfera amarilla. Cabe resaltar que uno de los e-pucks se encuentra sobre uno de los obstáculos (obstáculo central). Este e-puck no es un agente, sino que representa al Supervisor, ya que Webots requiere de tener un robot que ejecute dicho programa. 7.3.2. Actualización del código de 2019 para su funcionamiento en 2023 Una vez recreado el mundo se prosiguió a probar los códigos de Supervisor creados en 2019, entre ellos Supervisor3.py, SupervisorObstaculos3.py, ErroresSupervisorObstacu- los3.py, Errores2SupervisorObstaculos3.py, con sus respectivos archivos de funciones: fun- Vel.py y funciones.py. También se realizaron pruebas con el archivo de controlador de agente individual: pruebaMatrizDifeomorfismo.py. Comunicación entre programas Al correr los programas, los robots permanecían inmóviles. Entre las primeras modifica- ciones que se tuvo que hacer, fue actualizar las rutas donde se escribían los archivos .pickle con las instrucciones binarias desde el Supervisor, para que el controlador del agente lograra 38 leer los datos, pues las rutas estaban dispuestas de forma no relativa, y eran inexistentes en computadoras distintas a la usada en el trabajo de 2019 [15]. Una vez restablecida la comunicación al actualizar las rutas, se encontró una forma más eficiente de comunicar las las velocidades entre programas. Esta diferencia resulta por el uso de archivos .pickle, que implica una escritura de parte del Supervisor y una lectura por parte del controlador del agente. Estas operaciones no están sincronizadas y provocan pérdidas de datos por corrupción de archivos, desembocando en una comunicación poco robusta. La corrupción de archivos por lo general ocurre cuando un programa intenta leer un archivo que está en medio de una operación de escritura. En la tesis de Peña se menciona entre las recomendaciones que se buscara una mejor comunicación entre programas, pues esta presentaba errores de sincronización. Teniendo esta información, se procedió a buscar un método alternativo para la comunicación de datos entre archivos, seleccionando un método más formal de comunicación interprocesos (IPC ). Al momento de elegir el método IPC más adecuado para la comunicación, la forma más adecuada según los requerimientos de la tarea resultó ser el método de memoria compartida. El método de memoria compartida consiste en crear un bloque de memoria con un ta- maño específico (en bytes), para usarlo como medio de comunicación, donde el Supervisor escribe y el controlador del agente hace la lectura. Python cuenta con una librería especiali- zada para estos procesos llamada multiprocessing con módulo shared_memory. La memoria compartida resulta conveniente para este proceso, debido a: No es necesario especificar ninguna ruta, lo que lo hace portátil de una computadora a otra con mayor facilidad. El espacio de memoria se puede acceder desde cualquier parte de la computadora, ya que se inicializa con un nombre único con el que se invoca a dicha área y sirve identificador universal desde cualquier programa de Python en la computadora. La rapidez de la comunicación es mayor al escribir a un buffer de espacio de memoria compartida, contrario a escribir y leer directamente al disco. Se evita el riesgo de corrupción de archivos. Los pasos de implementación fueron: Supervisor: 1. Creación del espacio de memoria, con n bytes necesario según la aplicación. 2. Serialización en formato binario de los datos usando la librería pickle. 3. Escribir los datos serializados al espacio de memoria compartido. Controlador de agente: 1. Acceso al espacio de memoria creado por el Supervisor. 2. Lectura de los datos serializados. 3. Deserialización de los datos usando la librería pickle. 39 Cabe resaltar que la creación del espacio de memoria debe ser creado por el Supervisor antes de que el controlador de agente intente acceder al mismo, ya que de lo contrario ocurre un error al intentar acceder a un espacio inexistente. Además, luego de terminar de usar el espacio de memoria compartida, este se debe cerrar apropiadamente con el método del objeto de memoria compartida “.close()”. Sincronización entre programas Una vez creada la comunicación usando los bloques de memoria compartida, se resolvió el problema de la corrupción de datos, pero el tema de sincronización de datos aún se tenía que solventar. Esto debido a que ambos lados de la comunicación tenían la posibilidad de acceder a los datos al mismo tiempo, existía la probabilidad de que el programa de control de agente hiciera la lectura mientras el Supervisor escribía. Esto daría como resultado un desfase de los datos y una inconsistencia en cuanto a los datos procesados para la formación, pues se podrían combinar las velocidades obtenidas en un ciclo presente con las del ciclo pasado. La solución para sincronizar los datos y evitar inconsistencias en los datos fue el uso de primitivos de sincronización, específicamente los locks. Estos funcionan de manera que aseguran que solo un programa acceda al bloque de memoria a la vez, por lo que si el Supervisor está escribiendo, el controlador del agente no puede leerlo y viceversa. La lógica de funcionamiento es: 1. Antes de escribir/leer los datos, se bloquea el espacio de memoria con Lock().acquire(). 2. Se escriben/leen los datos. 3. Se libera el espacio de memoria compartido con Lock().release(). Cambios principales entre versiones de Webots Para lograr una migración de versiones más eficaz, se compararon las entidades del mundo de Webots con las reconstruidas en la nueva versión, y se encontró que la diferencia principal radicaba en la disposición de los ejes. En 2019, XYZ correspondían a NUE (North, Up, East), mientras que en 2023, por defe