Un proyecto completo de IA y Robótica: Exploración autónoma, Pathfinding matemático y Telemetría Web.
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.
- 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.
- 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
El proyecto se divide en dos partes: el código del Microcontrolador y el Servidor Web.
- Abre el proyecto en tu entorno de desarrollo (PlatformIO o Arduino IDE).
- Abre el archivo
src/main.cpp. - 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;
- Compila y sube el firmware al ESP32.
Necesitas tener Python 3.x instalado en tu computadora.
- Abre una terminal en la carpeta raíz del proyecto.
- Instala las dependencias necesarias ejecutando:
pip install flask flask-socketio
- Asegúrate de que el archivo
index.htmlesté en la misma carpeta queservidor_web.py(o en su defecto, en una carpeta llamadatemplatessi no declarastetemplate_folder='.'en Flask).
-
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.
-
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.
-
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".
-
¡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.
-
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.
-
¡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.
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.