WiFi-Mat transforma el sistema WiFi DensePose en una herramienta de búsqueda y rescate (SAR) capaz de detectar supervivientes atrapados bajo escombros, clasificar su estado médico según el protocolo START y estimar su posición 3D en tiempo real.
¿Qué lo hace especial?
A diferencia de cámaras térmicas, sensores acústicos o perros de rescate, las señales WiFi de 5 GHz penetran materiales no metálicos como:
- Hormigón y ladrillo
- Madera y yeso
- Escombros de edificios colapsados
- Hasta 5 metros de profundidad en condiciones óptimas
Esto permite a los equipos de rescate obtener información crítica en segundos, sin necesidad de acceso visual o físico a la zona.
Cómo Funciona el Módulo WiFi-Mat
1. Detección de Signos Vitales a Través de Escombros
El sistema analiza dos señales biológicas fundamentales:
| Señal | Rango de Detección | Método |
|---|---|---|
| Respiración | 4-60 respiraciones/min | Filtro paso banda 0.07-1.0 Hz + modelo de zona de Fresnel que detecta desplazamientos del pecho de 5-10mm |
| Latido cardíaco | 40-120 lpm | Extracción de micro-desplazamientos Doppler a partir de variaciones finas de fase en la CSI |
La clave está en que el sistema puede distinguir entre:
- Superviviente consciente: Movimiento activo + respiración regular
- Inconsciente pero vivo: Solo respiración detectable
- Sin signos vitales: Ninguna señal tras escaneo continuo
2. Localización 3D Preciso
Para determinar dónde exactamente está una persona atrapada, WiFi-Mat combina tres técnicas:
text
Trilateración multi-AP + Huella CSI + Estimación de profundidad
- Múltiples puntos de acceso (ESP32 o routers) triangulan la posición
- La huella única que cada ubicación genera en la señal CSI sirve como referencia
- El sistema estima la profundidad de los escombros analizando la atenuación y los rebotes de la señal
3. Clasificación START (Triage) Automática
El sistema clasifica automáticamente a cada víctima según el protocolo estándar de emergencias:
| Estado | Color | Criterio de Detección | Prioridad |
|---|---|---|---|
| Inmediato | 🔴 Rojo | Respiración detectable, sin movimiento | P1 (crítico) |
| Diferido | 🟡 Amarillo | Movimiento + respiración, signos estables | P2 (urgente) |
| Leve | 🟢 Verde | Movimiento fuerte, patrones de respuesta activa | P3 (ambulatorio) |
| Fallecido | ⚫ Negro | Sin signos vitales tras >30 min de escaneo continuo | P4 |
4. Modos de Despliegue
WiFi-Mat se adapta a diferentes escenarios de emergencia:
| Modo | Descripción | Equipamiento |
|---|---|---|
| Portátil | Un equipo de rescate con un transmisor y receptor portátiles | 2-3 ESP32-S3 en mochilas |
| Distribuido | Red de sensores desplegados alrededor del perímetro del colapso | 5-10 nodos ESP32 en trípodes |
| Montado en Dron | Escaneo aéreo de zonas inaccesibles | Dron con ESP32 + batería externa |
| Vehículo móvil | Puesto de mando con capacidad de escaneo continuo | Múltiples antenas en furgoneta |
Implementación Práctica desde Python
Configuración Básica del Módulo de Desastre
python
from wifi_densepose_mat import DisasterResponse, DisasterConfig, DisasterType, ScanZone
# Configurar el escenario de desastre
config = DisasterConfig.builder()
.disaster_type(DisasterType.Earthquake) # Tipo: terremoto, derrumbe, etc.
.sensitivity(0.85) # Sensibilidad de detección (0-1)
.max_depth(5.0) # Profundidad máxima en metros
.build()
# Inicializar la respuesta
response = DisasterResponse.new(config)
response.initialize_event(
location={"lat": 40.4168, "lon": -3.7038},
description="Edificio residencial colapsado"
)
# Definir zonas de búsqueda
response.add_zone(ScanZone(
name="Ala Norte",
bounds=ZoneBounds.rectangle(0.0, 0.0, 30.0, 20.0) # Coordenadas en metros
))
# Iniciar escaneo
response.start_scanning().await
Obteniendo Resultados en Tiempo Real
python
import asyncio
import websockets
import json
async def monitor_rescue_operation():
uri = "ws://localhost:3001/ws/disaster"
async with websockets.connect(uri) as ws:
async for message in ws:
data = json.loads(message)
# Por cada víctima detectada
for victim in data.get('victims', []):
print(f"🎯 Víctima ID: {victim['id']}")
print(f" 📍 Posición: {victim['position']}") # Coordenadas 3D
print(f" ❤️ Respiración: {victim['breathing_rate']} BPM")
print(f" 💓 Pulso: {victim['heart_rate']} BPM")
print(f" 🚨 Estado START: {victim['triage_status']}") # RED/YELLOW/GREEN/BLACK
print(f" 📊 Confianza: {victim['confidence']*100:.1f}%")
print("-" * 40)
API REST Específica para Desastres
bash
# Obtener mapa de calor de probabilidad de supervivientes
curl http://localhost:3000/api/v1/disaster/heatmap
# Listar todas las víctimas detectadas
curl http://localhost:3000/api/v1/disaster/victims
# Estadísticas de la operación
curl http://localhost:3000/api/v1/disaster/stats
# Respuesta: {"total_victims": 5, "by_status": {"RED": 2, "YELLOW": 2, "BLACK": 1}}
Validación y Pruebas
El módulo WiFi-Mat cuenta con 139 pruebas automatizadas que verifican:
- Detección de respiración bajo diferentes tipos de escombros (simulados)
- Clasificación START con datos sintéticos de pacientes
- Localización 3D con múltiples configuraciones de antenas
- Tolerancia a fallos si algunos nodos dejan de funcionar
Garantías de Seguridad
Para aplicaciones de vida o muerte, el sistema implementa salvaguardas críticas:
- Defaults fail-safe: Ante cualquier señal ambigua, se asume que hay vida presente (minimizar falsos negativos)
- Votación multi-algoritmo: Varios algoritmos independientes deben coincidir para emitir una alerta
- Auditoría completa: Cada decisión queda registrada con la evidencia CSI que la sustentó
- Funcionamiento offline: No requiere conexión a internet, vital en zonas de desastre
Ejemplo de Despliegue Real
Imagina un edificio de 5 plantas que ha colapsado. En 10 minutos puedes:
- Desplegar 6 nodos ESP32-S3 alrededor del perímetro
- Iniciar el servidor con el perfil «field» (específico para desastres)
- Obtener un mapa mostrando:
- 3 víctimas en sótano (2 con respiración, 1 sin signos)
- 2 víctimas en 2ª planta (ambas con movimiento)
- Coordenadas precisas para guiar a los equipos de rescate
Puesta en Marcha Rápida
bash
# Instalar perfil específico para desastres ./install.sh --profile field # Iniciar con configuración de rescate docker run -p 3000:3000 -p 5005:5005/udp \ -e DISASTER_MODE=true \ -e MAX_DEPTH=5.0 \ ruvnet/wifi-densepose:field # Ver interfaz de operaciones de rescate # Abre http://localhost:3000/disaster-dashboard
Limitaciones y Consideraciones
- Materiales metálicos: El acero estructural o el metal denso pueden bloquear la señal
- Agua: Grandes cantidades de agua absorben las microondas (supervivientes mojados pueden ser más difíciles de detectar)
- Múltiples capas: Cada pared/losa de hormigón reduce la sensibilidad (~30% por capa)
- Formación necesaria: El personal debe interpretar correctamente los datos (no es «magia», es una herramienta más)
Deja un comentario