2.1 KiB
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
- aggiunto
CapturedFramecon:frame_idtimestampvideo_time_secframeposeread_ms
- aggiunto
sample_demo_pose(...) - aggiunto
CaptureWorkercon codamaxsize=1 - politica di coda:
latest frame wins cap.read()spostato fuori dal loop principaleNavigationController.process_track(...)ora consumaCapturedFrameCandidateSnapshoteNavigationSnapshotora portano anchecapture_pose- metadata snapshot JSON aggiornati:
drone_pose_simulatedora deriva dal frame catturato
Correzione importante sulle metriche
Con latest frame wins, il frame_id della sorgente puo' saltare. Per questo:
frame_idresta l'identificativo del frame sorgente;processed_framesmisura 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
- Compilazione Python:
python -m py_compile flywms_navigation.py flywms_navigation_observer.py
Esito: ok.
- Smoke test core senza observer:
python flywms_navigation.py --video testhd2_edit.mp4 --max-frames 30
Esito: ok.
- 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_fpsreale.