← índice del proyecto

FICHAS PROFUNDAS de las piezas para S1N-ECO · vuelo, oído y planificación · 2026-10-30

FICHAS PROFUNDAS de las piezas para S1N-ECO · vuelo, oído y planificación · 2026-10-30

Pedido de J.L.L.O. (/goal 2026-10-30): «hacer la ingeniería inversa o benchmark de las piezas de los que tienen licencia… no la pieza completa, ver qué tiene cada una con profundidad y qué hay que tomar en cuenta».

Método:

Formato de cada ficha:


A. Vuelo

A1. Geocerca de PX4

A2. Protección si se pierde el enlace o el offboard

A3. Entrada del computador acompañante

A4. MAVSDK: goto, offboard e importar un .plan

A5. Mensaje propio S1N_CELL

A6. Sincronización de tiempo y pose

A7. QGroundControl sin modificar

Orden de vuelo: A3 → A6 → A2 → A1 → A4 (goto primero) → A7 → A5. DDS/ROS 2 sólo si hace falta un modo propio.


B. Oído

B1. ODAS: localización SRP-PHAT por niveles

B2. ODAS: filtros espaciales

B3. ODAS: seguimiento

B4. Entrada de audio del ReSpeaker y del UMA-16

B5. ReSpeaker: tuning.py y firmware de 6 canales

B6. Blanqueo del ruido propio (GEVD/GSVD-MUSIC), reimplementado desde los papers

B7. pyroomacoustics (sólo en el Mac)

B8. Detector de golpes repetidos (receta propia)

No hay una receta publicada para golpes humanos. La curtosis como detector de impulsos sí está establecida en el diagnóstico de máquinas.

Receta:

  1. Pasaaltos suave, sin cortar bajo ~50 Hz.
  2. Energía en tramas de 10 ms con un piso de ruido móvil.
  3. Inicio de golpe si la energía supera el piso en k dB y la curtosis de 20–50 ms es claramente mayor que 3.
  4. Al menos 3 golpes con intervalos de 0,5–3 s y poca variación.
  5. Coincidencia del geófono con los micrófonos.
  6. Rechazar lo tonal y estable (las hélices).
  7. Salida: verosimilitud por celda.

Costo O(N), despreciable. Esfuerzo: 1–2 días.

Orden de oído: B5 → B4 → B7 → B8 → B1 (SRP propio en campo cercano) → B2 → B6. B3 no se usa.


C. Planificación

Fuente de SAROPS: Kratzke, Stone y Frost, FUSION 2010; texto extraído en el scratchpad (sarops2.txt). Los repositorios se leyeron sin ejecutarlos.

C1. SAROPS: escenarios ponderados (§2, §2.1.1)

C2. SAROPS: actualizar después de buscar, y su extensión a S1N (§2.4)

C3. SAROPS: planificador (§3)

C4. SORAL: Charnes–Cooper y Washburn

C5. SAREnv: generador sintético (MIT)

C6. WiSAR TARR: costo anisotrópico (AGPL-3, reescribir sólo las ecuaciones)

C7. Pátrač: cola sin internet (reescribir)

C8. SearchWing: cámara → ancho → patrón → .plan (GPL-3, reescribir)

C9. MapScore: la vara para medir el mapa

Orden de planificación: C9 (la vara) → C5 (el banco, ya parchado) → C1 → C2 → C4 (comparador) → C6 → C3 → C8 → C7.


D. Las trampas más peligrosas de todo el conjunto

  1. Vuelo: si MAVSDK arranca como estación de tierra y además NAV_DLL_ACT=0, PX4 nunca detecta que se perdió la estación real.
  2. Vuelo: los puntos de offboard no se revisan antes contra la geocerca. Usar goto o validar en la Pi.
  3. Oído: el canal 0 del ReSpeaker (procesado: AGC, supresión de ruido) deforma los golpes; ODAS usa los canales crudos 1–4. Falta comprobar si el pasaaltos (HPFONOFF) actúa también sobre ellos: apagarlo por precaución. Además, tuning.py no funciona en Python ≥ 3.9.
  4. Oído: ODAS y pyroomacoustics suponen campo lejano, y la víctima está cerca.
  5. Oído: ningún simulador modela el paso del sonido por los escombros. Ganar en simulación no prueba nada en terreno.
  6. Plan: el 2πr de SAREnv empuja la mediana de la distancia 3 a 4 veces hacia afuera.
  7. Plan: MapScore lee la imagen transpuesta.
  8. Plan: las celdas sin dato quedan en probabilidad 0. Siempre poner un piso ε.
  9. Plan: la POS sale optimista por la muestra fija y por tratar las pasadas como independientes.
  10. Unidades y colas: SearchWing (píxeles² contra m/px), TARR (costo contra línea recta) y la cola de Pátrač, que oculta los fallos del envío directo y reenvía archivos sin fin.
  11. Mapa: la regla de ocupación debe usar P(aviso | ocupada) = 1−(1−α)(1−λ), y un aviso no puede contarse como independiente en todas las celdas.
  12. Vuelo: goto responde ACCEPTED aunque el navegador rechace el destino, y si se pierde la Pi en goto no hay failsafe por latido (el dron queda en Hold).

E. Auditoría independiente (2026-10-30) y correcciones aplicadas

F. Segunda auditoría (2026-10-30) y correcciones aplicadas

Revisor independiente, sin ver la primera auditoría: 27 afirmaciones contra los clones (commits declarados coinciden). Veredicto: CONFIRMA CON RESERVAS. Todos los errores atribuidos a otras piezas se sostienen (SAREnv ×3,96 y ×3,17 recalculados; MapScore transpuesto; cola de Pátrač; SORAL; campo lejano de ODAS y pyroomacoustics; tostring() de tuning.py). Claude comprobó a mano el README del firmware (l. 37), Commander.cpp:904/913, objectSizeSweepwidth.py:3 y la falta de licencia de MapScore.

Corregido arriba: