Skip to content

Repository files navigation

🤖 Robot Laberinto IA - Sistema Autónomo y Centro de Mando

C++ Python ESP32 Flask

Un proyecto completo de IA y Robótica: Exploración autónoma, Pathfinding matemático y Telemetría Web.

Demo Robot

Este proyecto consiste en un sistema completo de robótica autónoma diseñado para resolver laberintos. Cuenta con un robot físico (basado en ESP32) que explora el laberinto, y un Centro de Mando vía Web (basado en Python/Flask) que procesa la telemetría en tiempo real, mapea la ruta y calcula la trayectoria óptima usando un algoritmo de eliminación de callejones ciegos.

✨ Características Principales

  • Navegación Autónoma: Algoritmo de seguimiento de pared (Regla de la mano izquierda) utilizando control PID.
  • Odometría Precisa: Uso del giroscopio MPU6050 para giros perfectos de 90° y 180°.
  • Telemetría en Tiempo Real: Comunicación constante vía sockets TCP con un servidor web.
  • Mapeo Dinámico (Canvas): Dibujado en vivo de la trayectoria del robot en el navegador web con auto-zoom y seguimiento.
  • Optimización de Ruta (IA): Algoritmo que elimina callejones sin salida (Dead-Ends) matemáticamente.
  • Sistema de Rondas:
    • Ronda 1 (Exploración): Descubre el laberinto hasta encontrar la salida.
    • Ronda 2 (Carrera): Recibe la ruta óptima del servidor y va directo a la meta sin detenerse a escanear.

🛠️ Hardware Requerido

  • 1x Microcontrolador ESP32
  • 1x Driver de motores L293D
  • 2x Motores DC con ruedas
  • 3x Sensores ultrasónicos HC-SR04 (Frontal, Izquierdo, Derecho)
  • 1x Acelerómetro/Giroscopio MPU6050
  • 1x Botón de inicio físico (Pulsador)
  • Chasis de 22 x 15 cm con rueda loca trasera

🚀 Instalación y Configuración

El proyecto se divide en dos partes: el código del Microcontrolador y el Servidor Web.

Paso 1: Configurar y subir el código al ESP32

  1. Abre el proyecto en tu entorno de desarrollo (PlatformIO o Arduino IDE).
  2. Abre el archivo src/main.cpp.
  3. Configura las credenciales de tu red y la IP de tu PC local:
    const char *WIFI_SSID = "TU_RED_WIFI";
    const char *WIFI_PASSWORD = "TU_CONTRASEÑA";
    const char *TCP_SERVER_IP = "192.168.1.X"; // IP de la PC donde correrá Python
    const int TCP_SERVER_PORT = 8888;
  4. Compila y sube el firmware al ESP32.

Paso 2: Preparar el Servidor Web en Python

Necesitas tener Python 3.x instalado en tu computadora.

  1. Abre una terminal en la carpeta raíz del proyecto.
  2. Instala las dependencias necesarias ejecutando:
    pip install flask flask-socketio
  3. Asegúrate de que el archivo index.html esté en la misma carpeta que servidor_web.py (o en su defecto, en una carpeta llamada templates si no declaraste template_folder='.' en Flask).

🏁 Cómo levantar el proyecto

  1. Inicia el servidor Python: Abre la terminal en tu PC y ejecuta:

    python servidor_web.py

    Verás en la consola que el servidor TCP se queda escuchando en el puerto 8888 y la web en el puerto 5000.

  2. Abre el Centro de Comando: Ve a tu navegador web y entra a: http://localhost:5000 Verás la interfaz del mapa y botones de control.

  3. Enciende el Robot ESP32: Asegúrate de que el ESP32 tenga energía. Se conectará automáticamente al Wi-Fi y luego al servidor TCP. En la web, el indicador cambiará a "🔌 Robot: Conectado".

  4. ¡Inicia la Ronda 1 (Exploración)! Coloca el robot en la entrada del laberinto. Puedes iniciarlo haciendo clic en el botón verde "Iniciar Exploración (Ronda 1)" desde la web, o presionando el botón físico en el chasis del robot. El robot comenzará a trazar el mapa en la web en tiempo real.

  5. Optimiza la Ruta: Cuando el robot encuentre la meta, se detendrá y reportará "Salida Encontrada". En la web se habilitará el botón azul "Calcular y Enviar Ruta Óptima". Haz clic para procesar la ruta más rápida y enviársela de regreso al ESP32.

  6. ¡Carrera Veloz (Ronda 2)! Coloca al robot nuevamente en el punto de inicio. Haz clic en el botón rojo "Iniciar Carrera (Ronda 2)" o presiona el botón físico. El robot resolverá el laberinto ignorando caminos muertos.


📁 Estructura del Proyecto

Robot_IA/
│
├── src/
│   └── main.cpp           # Código fuente C++ para el ESP32 (Lógica y Control)
│
├── servidor_web.py        # Backend en Python (Sockets TCP e IA Pathfinding)
├── index.html             # Frontend interactivo del Dashboard Web
└── README.md              # Este archivo de documentación

Proyecto de Inteligencia Artificial y Robótica.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages