Skip to content

tpII/2024-A4-QLEARNING-ESP32

Repository files navigation

Proyecto A4 - CrawlerBot

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
  1. Aprendizaje automático
  2. 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.

  3. Access Point <- Servidor Web
  4. 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.

  5. Desarrollo Modular
  6. El programa está diseñado de manera modular, con componentes separados por funcionalidad, facilitando el mantenimiento y la extensión del proyecto.

  7. Replicabilidad
  8. El proyecto está documentado lo suficiente como para permitir replicar el control de un robot similar utilizando el hardware indicado.

  9. Extensibilidad
  10. Es posible ampliar el sistema para añadir mejoras de rendimiento o nuevas funcionalidades.

  • Base educativa
  • 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
    1. 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.
    2. 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.
    3. PlatformIO
      • Entorno de desarrollo utilizado en Visual Studio Code para programar y gestionar el firmware del ESP32.

    📖 Tabla de contenidos

    Tabla de contenidos
    1. ➤ Prerequisitos-Software
    2. ➤ Instalación y Configuración del ESP32
    3. ➤ Instalación y Configuración del Servidor Django
    4. ➤ Pasos para la Ejecución del Proyecto
    5. ➤ Video demostrativo
    6. ➤ Bitácora
    7. ➤ Autores
    8. ➤ Coordinador

    🛠️ Prerequisitos-Software

    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

    Instalación y Configuración del ESP32
    1. Abre Visual Studio Code y navega a la carpeta del proyecto: 2024-A4-QLEARNING-ESP32.
    2. Posiciónate en la carpeta CRAWLER-Q-LEARNING (donde se encuentra el código en C).
    3. Conecta el ESP32 a un puerto USB de la computadora.
    4. 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

    Instalación y Configuración del Servidor Django
    1. Posiciónate en la carpeta ServidorDjango dentro del proyecto.
    2. Abre una nueva terminal en Visual Studio Code.
    3. Ejecuta el siguiente comando para iniciar el servidor web:
    4. python manage.py runserver 0.0.0.0:8000
    5. Accede al servidor desde tu navegador en: http://localhost:8000.
    6. Asegúrate de visualizar la interfaz web del servidor correctamente.

    El servidor estará ahora listo para interactuar con el ESP32.


    🚀 Pasos para la Ejecución del Proyecto

    Pasos para la Ejecución del Proyecto
    1. 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.
    2. Iniciar el servidor web siguiendo las instrucciones de la sección Instalación y Configuración del Servidor Django.
    3. Desde la computadora con el servidor iniciado, conéctate a la red Wi-Fi generada por el ESP32.
    4. Accede a http://localhost:8000 en tu navegador.
    5. Presiona el botón Start en la interfaz web para iniciar el aprendizaje del robot.
    6. Presiona el botón Stop para detener el aprendizaje en cualquier momento.
    7. Presiona nuevamente Start para ejecutar los movimientos aprendidos.
    8. Presiona Stop para detener el robot al finalizar la ejecución.

    🎥 Video Demostrativo

    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

    📖Bitácora

    Se realizó un registro de todos los avances del proyecto en la Bitacora.

    ✒️ Autores

    • Ezequiel Benito Skliar Repo

    • Sebastián Sauer Rosas Repo

    • Luciano Nicolás Loyola Repo

    📌 Coordinador

    • Alan Fabián Castelli Profesor - Ayudante Repo

    📄 Licencia

    Licencia

    Este proyecto está bajo la Licencia GPL-3.0 license.

    Mira el archivo LICENSE para más detalles.

    About

    Q-Learning con esp32

    Resources

    License

    Stars

    0 stars

    Watchers

    3 watching

    Forks

    Releases

    No releases published

    Packages

     
     
     

    Contributors

    Generated from tpII/templates-grupos