Visión Háptica: Sistema de Asistencia Sensorial Basado en IA Este es un sistema de asistencia para personas con discapacidad visual que traduce el entorno visual en estímulos táctiles en tiempo real. Mediante el uso de Inteligencia Artificial (Gemini API) y una arquitectura distribuida, el usuario puede percibir el espacio, detectar obstáculos y notar desniveles a través de un traje háptico de 8 zonas independientes.

Idea General El sistema funciona de la siguiente manera:

Captura: Una cámara procesada por una Raspberry Pi captura la escena.

Análisis: Un sensor ToF (Time of Flight) gestionado por un ESP32 analiza la profundidad.

Interpretación: La IA de Gemini interpreta objetos y riesgos.

Acción: Se envían comandos de vibración específicos a diferentes partes del cuerpo del usuario.

Arquitectura del Sistema El proyecto emplea una arquitectura de nodos distribuidos comunicados vía UDP para garantizar una latencia mínima (0.5s - 1s).

Fragmento de código graph TD A[Cámara - Raspberry Pi] --> B{IA - Gemini API} B -->|Análisis Visual| C[Core Logic - Raspberry Pi] D[Sensor ToF - ESP32] -->|SCAN/CLEAR| C C -->|JSON vía UDP| E[Controlador Motores - ESP32] E --> F[Traje Háptico - 8 Zonas] C --> G[Dashboard de Monitoreo] Componentes Principales

  1. Nodo de Procesamiento (Raspberry Pi + Python)

Es el centro de control del sistema y actúa como servidor inteligente:

IA: Utiliza gemini-2.0-flash para procesamiento espacial y categorización de objetos.

Lógica de Resiliencia: En caso de fallo de red o API, el sistema mantiene el último estado válido para evitar una interrupción brusca.

Memoria Háptica (Efecto de Paso): Si el sensor detecta un objeto frontal que luego desaparece, genera automáticamente un pulso en la espalda, simulando que el objeto ha quedado atrás.

  1. Nodo de Actuación y Percepción (ESP32 + C++)

Gestiona el hardware crítico mediante FreeRTOS con tres tareas paralelas:

Task Sensor: Lectura constante del VL53L0X con filtro de rebote (5 muestras para confirmar detección).

Task Comunicación: Escucha paquetes JSON vía UDP y mantiene la integridad de datos mediante Mutex.

Task Motores: Control de 8 canales PWM independientes a una frecuencia de 5kHz.

Distribución y Mapeo Háptico El traje traduce los datos en intensidades de vibración (rango 0-255) según la zona corporal:

Zona Pin ESP32 Significado / Condición armL1 / armL2 13, 12 Obstáculos al flanco izquierdo armR1 / armR2 14, 27 Obstáculos al flanco derecho footL / footR 26, 25 Escalones, desniveles o suelo irregular chest 33 Obstáculo frontal directo back 32 Retroalimentación de liberación (Objeto superado) alert N/A Nivel de riesgo general / proximidad crítica Protocolo de Comunicación De ESP32 a Raspberry Pi

SCAN: Envía la distancia en mm e inicia la captura de imagen y análisis de IA.

CLEAR: Detiene todas las vibraciones cuando el camino está libre.

De Raspberry Pi a ESP32 (Estructura JSON)

JSON { "armL1": 255, "armL2": 0, "armR1": 0,
"armR2": 0, "footL": 0,
"footR": 0, "chest": 100, "back": 0, "alert": 2 } Características de Robustez Multitarea: Aprovechamiento de los dos núcleos del ESP32 (xTaskCreatePinnedToCore).

Seguridad: Implementación de un estado vacío automático si se pierde la conexión.

Filtrado de Datos: Limpieza automática de etiquetas Markdown en la respuesta de la IA para un parseo JSON correcto.

Gestión de Latencia: Flujo optimizado para mantener la respuesta entre 500ms y 1000ms.

Posibles Mejoras Sustitución de la IA en la nube por un modelo local (YOLO) para funcionamiento offline.

Fusión de datos avanzada entre el sensor ToF y la segmentación de imagen.

Mapeo dinámico de intensidad basado en la velocidad de desplazamiento del usuario.

Implementación de una red neuronal para reconocimiento de patrones hápticos personalizados.

Built With

Share this project:

Updates