El Robot Crawler se trata de un robot de estilo autito, de ruedas no motorizadas que se desplaza en su entorno, utilizando entonces su brazo de 2 grados de libertad (hombro y codo, se mueven hacia abajo y hacia arriba).
Lo interesante es la ejecución del algoritmo de machine learning Q-Learning, mediante el cual el robot adquiere inteligencia para aprender cuales son los movimientos óptimos del brazo que generan el desplazamiento deseado (hacia adelante o hacia atrás).
Este proyecto tuvo como objetivo el desarrollo de uno de estos, utilizando un ESP32, servomotores SG90 y encoders HC-020K, y desarrollando también una interfaz web de control y visualización de la ejecución del algoritmo, asegurando que se cumplan los requerimientos para que todo funcione en tiempo real.
🌠Características del proyecto
- Aprendizaje automático
- Access Point <- Servidor Web
- Desarrollo Modular
- Replicabilidad
- Extensibilidad
Se puede decir que es la base del proyecto. Se implementa el algoritmo Q-Learning para que el robot aprenda y ajuste sus movimientos, basándose en la recompensa calculada a partir del desplazamiento medido por los encoders.
El ESP32 actúa como punto de acceso (AP) para la conexión y control remoto del robot, a través de un servidor que debemos levantar estando conectados a la Wi-Fi que este genera.
El programa está diseñado de manera modular, con componentes separados por funcionalidad, facilitando el mantenimiento y la extensión del proyecto.
El proyecto está documentado lo suficiente como para permitir replicar el control de un robot similar utilizando el hardware indicado.
Es posible ampliar el sistema para añadir mejoras de rendimiento o nuevas funcionalidades.
El proyecto es ideal para aprender acerca de programación de microcontroladores, conexiones hardware y conceptos avanzados de aprendizaje por refuerzo y control de robots.
💻Tecnologías utilizadas
- Aplicación web
- Django: framework de desarrollo web en Python para la construcción del servidor web.
- HTML, CSS y JS: fundamentales para la interfaz de usuario, ofreciendo un control intuitivo y atractivo.
- ESP32
- Programación en C: se utilizó para implementar el control de los servos, encoders y el algoritmo de Q-learning, utilizando Visual Studio Code con la extensión PlatformIO para la gestión del firmware.
- Servos: el control de los servos se realizó mediante el driver `ledc` para PWM, garantizando movimientos precisos y suaves.
- Encoders: los encoders miden el desplazamiento del robot, retroalimentando el algoritmo de Q-learning para ajustar sus decisiones y optimizar el movimiento.
- Q-Learning: algoritmo implementado en C para que el robot aprenda y optimice su desplazamiento en función de las recompensas calculadas a partir de los datos de los encoders.
- WiFi: el ESP32 actúa como punto de acceso (AP) para la conexión y control remoto del robot, utilizando la biblioteca `esp_wifi` para configurar la red inalámbrica y manejar las solicitudes de la aplicación web.
- PlatformIO
- Entorno de desarrollo utilizado en Visual Studio Code para programar y gestionar el firmware del ESP32.
Tabla de contenidos
Prerequisitos-Software
El proyecto requiere la instalación de los siguientes componentes de software:
- Python 3.13: Lenguaje de programación para ejecutar el servidor web basado en Django. Descarga desde https://www.python.org/.
- Django: Framework de desarrollo web utilizado para la implementación del servidor.
- Visual Studio Code: Editor de código necesario para manejar tanto el código en C como el servidor web.
- PlatformIO: Extensión de Visual Studio Code utilizada para compilar y cargar el firmware en el ESP32.
Instalación y Configuración del ESP32
- Abre Visual Studio Code y navega a la carpeta del proyecto:
2024-A4-QLEARNING-ESP32. - Posiciónate en la carpeta
CRAWLER-Q-LEARNING(donde se encuentra el código en C). - Conecta el ESP32 a un puerto USB de la computadora.
- Desde el menú inferior de PlatformIO, presiona el botón de subida de programa para compilar y cargar el firmware al ESP32.
Tras estos pasos, el ESP32 estará configurado y listo para ejecutar las instrucciones del proyecto.
Instalación y Configuración del Servidor Django
- Posiciónate en la carpeta
ServidorDjangodentro del proyecto. - Abre una nueva terminal en Visual Studio Code.
- Ejecuta el siguiente comando para iniciar el servidor web:
- Accede al servidor desde tu navegador en: http://localhost:8000.
- Asegúrate de visualizar la interfaz web del servidor correctamente.
python manage.py runserver 0.0.0.0:8000El servidor estará ahora listo para interactuar con el ESP32.
Pasos para la Ejecución del Proyecto
- Conectar el ESP32 a la computadora y cargar el firmware según los pasos en la sección Instalación y Configuración del ESP32.
- Iniciar el servidor web siguiendo las instrucciones de la sección Instalación y Configuración del Servidor Django.
- Desde la computadora con el servidor iniciado, conéctate a la red Wi-Fi generada por el ESP32.
- Accede a http://localhost:8000 en tu navegador.
- Presiona el botón Start en la interfaz web para iniciar el aprendizaje del robot.
- Presiona el botón Stop para detener el aprendizaje en cualquier momento.
- Presiona nuevamente Start para ejecutar los movimientos aprendidos.
- Presiona Stop para detener el robot al finalizar la ejecución.
A continuación, se deja a disposición un enlace a un video muy bueno acerca de la utilización del robot y su muestra funcionamiento: Video
Se realizó un registro de todos los avances del proyecto en la Bitacora.
Licencia
Este proyecto está bajo la Licencia GPL-3.0 license.
Mira el archivo LICENSE para más detalles.
