Files
flywms/aggiornamento-2026-05-30-18-12.md
2026-06-03 15:28:27 +02:00

2.1 KiB

Aggiornamento 2026-05-30 18:12

Step 2 - Capture / Inference

Completati:

  • documento di progetto Step 2 in step2_capture_inference_design.md
  • introduzione del pacchetto CapturedFrame
  • introduzione del CaptureWorker
  • propagazione della posa congelata dal capture fino allo snapshot

Modifiche implementate

In flywms_navigation.py:

  • aggiunto CapturedFrame con:
    • frame_id
    • timestamp
    • video_time_sec
    • frame
    • pose
    • read_ms
  • aggiunto sample_demo_pose(...)
  • aggiunto CaptureWorker con coda maxsize=1
  • politica di coda: latest frame wins
  • cap.read() spostato fuori dal loop principale
  • NavigationController.process_track(...) ora consuma CapturedFrame
  • CandidateSnapshot e NavigationSnapshot ora portano anche capture_pose
  • metadata snapshot JSON aggiornati: drone_pose_simulated ora deriva dal frame catturato

Correzione importante sulle metriche

Con latest frame wins, il frame_id della sorgente puo' saltare. Per questo:

  • frame_id resta l'identificativo del frame sorgente;
  • processed_frames misura invece quanti frame il core ha davvero consumato.

Le metriche loop_fps e i log prestazionali ora usano processed_frames, non frame_id.

Verifiche eseguite

  1. Compilazione Python:
python -m py_compile flywms_navigation.py flywms_navigation_observer.py

Esito: ok.

  1. Smoke test core senza observer:
python flywms_navigation.py --video testhd2_edit.mp4 --max-frames 30

Esito: ok.

  1. Smoke test core con observer attivo:
python flywms_navigation.py --video testhd2_edit.mp4 --observer-enabled --max-frames 30

Esito: ok.

Nota operativa

Dopo lo Step 2, --max-frames resta un limite sui frame della sorgente video, non sui frame effettivamente processati.

Questo va bene per smoke test rapidi, ma non e' il modo corretto per giudicare la resa finale della pipeline realtime. Il benchmark successivo va fatto sulla durata completa del video, confrontando:

  • durata nominale video;
  • durata effettiva demo;
  • processed_frames;
  • yolo_fps reale.