← índice del proyecto

PLAN · arquitectura y diseño de implementación de S1N-ECO, pieza por pieza · 2026-10-30

PLAN · arquitectura y diseño de implementación de S1N-ECO, pieza por pieza · 2026-10-30

Pedido de J.L.L.O. (/goal 2026-10-30): «prepara un plan de arquitectura y diseño de implementación, pero no como lo deseas tú, la pieza completa; hay que ver qué tiene cada una con profundidad y qué hay que tomar en cuenta… y así termina el trabajo auditado y afinado».

Base del plan:

Estado: propuesta auditada dos veces por revisores independientes (CONFIRMA CON RESERVAS; correcciones aplicadas, ver §7 y §8) y enriquecida con lo propio de ÁNFORA, QUERENCIA, SPANDA y S1N en cada módulo (§1 y §3). Nada de esto está construido. Cada etapa es un ticket con el protocolo commiteado antes de correr (TK-804), vara de 0,70 y pruebas de ≤ 15 min (regla de los exámenes cortos).

1. Principio: piezas, no paquetes

Cada pieza externa entra de una de cuatro maneras, y nunca entra el paquete completo:

Manera Cuándo Piezas
Se usa tal cual, configurada Licencia libre y la pieza ya hace bien lo que se necesita Geocerca y protecciones de PX4 (A1, A2), MAVLink Onboard (A3), goto de MAVSDK (A4), mavlink_direct (A5), QGC sin modificar (A7), tuning.py del ReSpeaker (B5, con el arreglo tobytes), firmware de 6 canales (B4)
Se toma el método y se reescribe en S1N La licencia lo exige (GPL, AGPL, HARK) o la pieza trae errores Escenarios ponderados y actualización de SAROPS (C1, C2), planificador (C3), Charnes–Cooper (C4), costo de Tobler (C6), cola sin internet (C7), fórmulas IAMSAR (C8), MapScore (C9), SRP-PHAT de campo lejano proyectado sobre las celdas (B1, idea de ODAS), blanqueo GEVD (B6, idea de HARK)
Se usa sólo en el laboratorio Sirve para medir, no va en el producto SAREnv parchado (C5), pyroomacoustics (B7), SORAL en C++ corregido como comparador (C4), DroneAudioSet (MIT; también podría ir al producto), DREGON (sin licencia: sólo para medir). Por revisar: hark-rescue (MIT)
No se usa No sirve a S1N o arrastra riesgo El seguimiento combinatorio de ODAS (B3), uXRCE-DDS/ROS 2 por ahora, código de HARK, GPL de Pátrač, SearchWing y WiSAR

Herramientas de S1N que ya existen y se reusan (están conectadas; ver SCRIPTS/PRODUCTO en s1n_cli.py):

Lo propio de ÁNFORA, QUERENCIA, SPANDA y S1N, módulo por módulo (pedido de J.L.L.O., 2026-10-30: «debe enriquecer cada herramienta con temas de ÁNFORA, de QUERENCIA, de SPANDA, de S1N, de todo lo que tenemos propio, en todas»). Cada módulo de §3 tiene su apartado «Lo propio que entra», con la ruta, el estado (CONECTADA / PROMETE / sólo idea) y lo que lo mataría. Rutas comprobadas el 2026-10-30. Regla: nada propio entra al producto sin pasar por el protocolo rápido (TK-804) con datos del módulo; un aporte probado en otro ámbito (física, MALDI, histogramas) cuenta como idea en este. QUERENCIA se usa con la definición vigente de Juan (2026-10-24): la tendencia a salir del equilibrio buscando otro, medida con el testigo de fuga de TK-1174; los operadores de junio (versor, ⟨cosθ⟩) quedan como herramientas, no como «la querencia». Lo que no calza con ningún módulo y no se fuerza: umbral, refuta, certifica, cota, corte, toro, qubo y S1N-REPARTO.

Módulo Lo propio que entra
eco.tiempo tiempo + caja (sello firmado), S1N-RELOJ (flota)
eco.vuelo terreno de propaga, interferencia, persistencia de QUERENCIA
eco.oido alarma, picos --escucha, testigo de fuga (ritmo), falsador F2
eco.nariz / eco.radar / eco.calor testigo de fuga P4 (propia o empujada), fuga que se queda, discordia; idea: irreversibilidad de SPANDA
eco.gente casi nada: lectores sólo en tierra
eco.mapa árbitro de e-values, compuerta térmica, rubrica, calibración ECE/Brier
eco.plan termo programa, guarda dimensional, QUÓRUM; idea: QUERENCIA de la persona perdida
eco.cola enlace, caja, cripto14, difusion
eco.vara TOST, control vacío, bench_lib v2, pruebas

2. Arquitectura (los módulos y por dónde pasa el dato)

                    Raspberry Pi 5 (un solo reloj monotónico)
  ┌──────────────┐   eventos JSONL   ┌────────────────┐  celdas  ┌──────────────┐
  │ eco.oido     │──────────────────▶│                │─────────▶│ eco.plan     │
  │ eco.nariz    │  {t, sentido,     │   eco.mapa     │          │ siguiente    │
  │ eco.radar    │   pose, lectura,  │ (grilla de     │◀─────────│ celda, IAMSAR│
  │ eco.calor    │   calidad}        │  ocupación)    │  POS     └──────┬───────┘
  │ eco.radio(v0.1)                  │                │                 │ goto (con visto
  │ eco.gente    │──── escenarios ──▶│ SÍ/NO SÉ/BAJA  │                 │ bueno del operador)
  └──────▲───────┘                   └───────┬────────┘          ┌──────▼───────┐
         │ pose interpolada                  │ S1N_CELL +        │ eco.vuelo    │──MAVLink TELEM2──▶ Pixhawk (PX4)
  ┌──────┴───────┐                           │ NAMED_VALUE_FLOAT └──────────────┘   geocerca, Hold/Return
  │ eco.tiempo   │◀── TIMESYNC, GLOBAL_POSITION_INT, ATTITUDE ───────────────────────────────┘
  └──────────────┘                           ▼
                         ./s1n caja (registro sellado) · eco.cola (sin internet) ──▶ tierra: pantalla propia + QGC sin tocar + GPX por sector

3. Diseño de cada módulo (piezas que entran y lo que hay que cuidar)

3.1 eco.tiempo (A6)

3.2 eco.vuelo (A1–A5, A7)

3.3 eco.oido (B1, B2, B4–B8)

  1. Captura (B4, B5):
  2. Detector de golpes (B8, receta propia):
  3. Dirección: SRP-PHAT de campo lejano (rumbo), proyectado sobre las celdas del mapa como un cono con su varianza medida (B1; segunda auditoría). Con 64 mm de apertura la zona de campo cercano termina a 2D²/λ ≈ 2,4 cm a 1 kHz y ≈ 9,5 cm a 4 kHz: toda víctima está en campo lejano y el arreglo no da distancia. Se reusan la idea de ODAS de ir de grueso a fino y su tabla de retardos; ya no hace falta un SRP propio de campo cercano.
  4. Máscara de hélices (B2): conos de exclusión. No quita ruido, sólo elige hacia dónde mirar.
  5. Blanqueo GEVD (B6):
  6. Salida: verosimilitud por celda, no un puntaje suelto.

3.4 eco.nariz, eco.radar, eco.calor

3.5 eco.gente: lo que cuenta la gente

3.6 eco.mapa: el corazón propio (C2, corregido por la auditoría)

3.7 eco.plan (C3, C4, C6, C8)

3.8 eco.cola (C7)

3.9 eco.vara (C9, C5)

4. Etapas de implementación (cada una con su ticket, protocolo y puerta)

Etapa Qué se arma Piezas Puerta (por escrito antes de correr) Duración
E0 · La vara eco.vara C9, C5 parchado MapScore: R ≥ 0,99 con pico en la víctima, |R| ≤ 0,01 si es uniforme, R ≤ −0,99 si está invertido. SAREnv parchado: mediana de r en e^μ ± 10 % ≤ 5 min
E1 · Mapa v0 en simulación eco.mapa + eco.gente C1, C2 A = mapa actual (TK-1285) contra B = grilla corregida, misma entrada y mismo presupuesto de esfuerzo, más un control C = barrido al azar. Ninguna estrategia ve la verdad: TK-1285 fijaba la previa con el número real de víctimas (sim_sentidos_tk1285.py:45); A y B usan N̂. Puerta: víctimas halladas de B ≥ 0,70; B − A ≥ un margen dicho antes y mayor que la diferencia entre A y A2 (A con otras semillas); falsas marcas de B ≤ las de A; B > C. El umbral SÍ del examen se commitea antes (no es umbral de vida). Contra la circularidad: el generador trae lo que B no modela —falsas alarmas persistentes (tomas correlacionadas), atenuación por clase de material oculta, N real ≠ N̂—; no se usa SAREnv (es de montaña); la POD/PFA de B sale de semillas de calibración separadas; n de semillas dicho antes ≤ 15 min
E2 · Reparto eco.plan C4, C3 (a) Donde CC es óptimo: |ΔPOS| ≤ 10⁻³ contra CC reescrito (validado contra el C++ corregido), con la misma discretización del esfuerzo en los dos y TOST con ≥ 2 semillas. (b) Con varios drones y traslado, en el modelo de ocupación que decide: víctimas esperadas halladas, B contra A voraz, evaluadas con partículas o semillas independientes de las que se usaron para planificar (si no, gana quien optimiza sobre la muestra); PROMETE si B − A ≥ un margen dicho antes ≤ 15 min
E3 · Oído en la mesa eco.oido B5, B4, B8, B1, B2 Golpes grabados en la mesa (DroneAudioSet no trae golpes humanos), mezclados con ruido de hélice de DroneAudioSet. Detector: acierto ≥ 0,70 con una PFA máxima por minuto escrita antes de correr (cota de Clopper-Pearson con el control vacío). Los golpes del examen son otros que los usados para calibrar los umbrales; la SNR de mezcla se fija antes con la geometría real. La mezcla digital no reproduce la saturación del micrófono: el resultado es una cota superior hasta E7. Rumbo: error medido con huincha y comparado con la meta de ±15° de la simulación (medición, sin puerta hasta tener datos) ≤ 15 min por prueba
E4 · Nariz, radar y calor POD/PFA por sentido — Medición, no puerta: curvas λ_s(d, clase) y α_s con n escrito antes de medir; matriz conjunta CO₂–radar ≤ 15 min por prueba
E5 · Fusión en la mesa todo — Medición: mapa con todos los sentidos contra cada sentido solo, frente a la verdad con huincha; MapScore R por ensayo ≤ 15 min
E6 · Vuelo en simulador eco.tiempo, eco.vuelo A3 → A6 → A2 → A1 → A4 → A7 → A5 Las pruebas de SITL de §3.2, todas aprobadas (incluidas Pi caída en goto, reinicio sin reenvío y pérdida de GPS); desfase ≤ 20 ms en SITL y medido por UART; antes de E6, prueba de CPU, RAM y latencia en la propia Pi (E3 y E5 corren en el Mac) ≤ 15 min
E7 · Ruido real de hélices GEVD B6 Medición: SEVD contra GEVD en error angular, con K grabada por banda de RPM; ecuaciones verificadas contra los PDF antes ≤ 15 min

Orden y dependencias:

5. Decisiones (con el porqué)

  1. MAVLink Onboard y no DDS/ROS 2: menos memoria, no ata el sistema operativo, y la interfaz de modos de ROS 2 es experimental.
  2. Sólo goto, no offboard, en v1: goto pasa por la geocerca; los puntos de offboard no.
  3. QGC sin modificar y pantalla propia: evita la GPL y la licencia de Qt.
  4. SRP-PHAT de campo lejano proyectado sobre las celdas, sin ODAS completo: con 64 mm el campo lejano es lo correcto (corrige la versión anterior, que pedía campo cercano). No se usa ODAS entero porque su seguimiento es combinatorio y su salida TCP se cae si nadie escucha.
  5. Reescribir los métodos de SAROPS, Charnes–Cooper, Tobler, IAMSAR, la cola y MapScore: por licencias (GPL, AGPL, sin licencia) y porque seis de las nueve piezas de planificación traían errores:
  6. La pieza propia es eco.mapa: nadie fusiona sentidos no visuales con su confianza por celda (benchmark del 2026-10-29).

6. Riesgos abiertos

7. Auditoría independiente (2026-10-30) y lo que cambió

8. Segunda auditoría (2026-10-30, pedido de J.L.L.O.: «audita con una skill de auditoría, afina y mejora esto») y lo que cambió

Dos revisores independientes que no vieron la primera auditoría: uno leyó las fichas contra el código clonado (27 afirmaciones) y el otro revisó la matemática, las pruebas y la seguridad del plan. Claude comprobó a mano las cuentas y las citas que cambian decisiones.