← índice del proyecto

SOFTWARE de S1N-ECO · benchmark del código abierto y de SAROPS · qué se reusa y qué agrega S1N · 2026-10-29

SOFTWARE de S1N-ECO · benchmark del código abierto y de SAROPS · qué se reusa y qué agrega S1N · 2026-10-29

Pedidos de J.L.L.O.:

Cómo se revisó:

1. La pila elegida y qué tiene cada pieza

Pieza Programa Licencia Qué tiene por dentro Qué le falta para rescate
Vuelo PX4 BSD-3 (producto cerrado OK) Geocerca (GF_ACTION), retorno y protección si se corta el control externo (COM_OF_LOSS_T 1 s); acepta un computador acompañante por TELEM2 o ROS 2 No tiene modo de búsqueda
Mando desde la Raspberry MAVSDK BSD-3 Misiones, offboard.set_position_global, importa .plan y manda mensajes propios desde XML (su ejemplo GAS_SENSOR id 44000 ya mide CO₂ y CH₄) La lógica de «ir a la celda más probable»
Estación de tierra QGroundControl Apache 2.0 (con Qt comercial de pago) o GPLv3 Ganchos customMapItems() para pintar un mapa de calor, mavlinkMessage() para recibir celdas, ítems de misión propios, mapas sin internet No trae patrones SAR ni capa de probabilidad
Oído ODAS MIT SRP-PHAT jerárquico y seguimiento Kalman/partículas en C; hecho para Raspberry; configuración del ReSpeaker incluida No detecta golpes, no quita el ruido propio de las hélices (ego-noise; HARK lo trae aparte), da puntajes y no probabilidades, no habla con un mapa. Sus filtros espaciales sólo limitan dónde busca fuentes
Oído (laboratorio) pyroomacoustics MIT MUSIC, NormMUSIC, MVDR, separación ciega, simulador de salas Lo mismo
Sacar canales crudos ReSpeaker tuning.py + firmware de 6 canales Apache-2.0 Canales 1–4 crudos; apagar AGC y supresión de ruido —
Escenarios sintéticos de persona perdida SAREnv (dataset y banco de pruebas; no es un paquete de tablas de Koester, que se obtienen aparte del libro) MIT Log-normal ajustada a percentiles; tiene un error: no divide por 2πr (generation.py:779) No tiene POD real ni lecturas positivas
Plan de vuelo IAMSAR SearchWing GPL-3.0 Cámara → ancho de barrido → .plan Sin probabilidad (son ~60 líneas que se reescriben)
Trabajo sin internet Pátrač GPL-2.0+ Cola SQLite y GPX por sector; error en sectors.py:1301 (layer_probability nunca se asigna) Sólo percentiles de anillo
Reparto óptimo SORAL MIT Charnes–Cooper y Washburn (JOTA) en C++/Python Es de 2017, sin mantenimiento

Licencias: PX4, MAVSDK, ODAS, pyroomacoustics, SAREnv y SORAL son MIT o BSD: se pueden usar en un producto cerrado. De los GPL (Pátrač, SearchWing, DREGON, OpenDrift) se copia el método, no el código. QGroundControl se deja sin tocar y el mapa de calor va en una pantalla propia (web local), o se paga Qt comercial.

2. Qué hace SAROPS por dentro (y qué copiamos)

  1. Escenarios con peso. Cada escenario es un relato («último punto conocido», «estaba en esta zona») con un peso que pone el usuario. Cada uno lleva 2.500–10.000 partículas. → En S1N, lo que cuenta la gente es un escenario con su peso.
  2. Cada partícula es una trayectoria posible. En el mar se mueven con corriente y viento (Leeway); en escombros no se mueven, pero pierden peso con el tiempo de supervivencia S(t).
  3. Actualización tras buscar sin hallar. p_fail(p) = ∏ (1 − λ(d)), con λ(d) = probabilidad de detección según la distancia. El peso nuevo es w·p_fail. Teoría clásica: ancho de barrido W, cobertura C = W·L/A, POD = 1 − e^(−C), POS = POA·POD.
  4. Reparto del esfuerzo. Rectángulos que crecen y se encogen desde la celda más probable, más búsqueda local con 12 movidas y saltos. Llega a un máximo local, sin recocido ni cota. Usa una muestra fija de 1.500 partículas que, según el propio paper, sesga la POS hacia arriba.

Lo que SAROPS no hace:

3. Lo que agrega S1N (el corazón propio)

Mapa de ocupación bayesiano por celda. Cada celda lleva su log-odds ℓ_j; sirve para varias víctimas.

4. Arquitectura

5. Qué programamos nosotros

  1. El mapa de ocupación con POD y PFA por sentido, las respuestas SÍ / NO SÉ / NO y la elección de la siguiente celda.
  2. Los detectores de golpe y voz encima de ODAS, la matriz de ruido de las hélices (blanqueo tipo GEVD, reimplementado desde los papers; HARK tiene licencia propia y su uso comercial se consulta por escrito) y la calibración del puntaje a probabilidad.
  3. El dialecto MAVLink S1N_CELL y el registro de sensores sincronizado con la posición.
  4. La pantalla del mapa y el generador IAMSAR (reescrito, sin código GPL).
  5. El supervisor de seguridad en la Raspberry: altura, geocerca, batería y aprobación del operador.

Primer paso propuesto: ticket de laboratorio para el mapa de ocupación v0, sobre la simulación de TK-1285, con protocolo commiteado antes de correr.

Correcciones del 2026-10-30 (revisión de otra sesión, comprobada): SAREnv no es un paquete de tablas de Koester; los filtros espaciales de ODAS no limpian ruido; la Hadron 640R+ es compatible con Prism ISP/AI, que se licencia aparte; la licencia de HARK es propia. Detalle en PIEZAS_SOFTWARE_RESCATE_2026-10-30.md.