# FlyWMS handoff - GUI navigazione Data: 2026-05-15 ## Stato repository - Branch: `master` - Remote: `origin` su Gitea - Ultimo lavoro: aggiunta shell DearPyGUI separata per la simulazione dimostrativa di `flywms_navigation.py`. ## Contesto recuperato L'obiettivo discusso era trasformare `flywms_navigation.py` in una simulazione piu' ordinata e dimostrativa, senza contaminare la logica esistente. Il programma originale contiene gia': - detector YOLO/Ultralytics; - tracking geometrico leggero dei `gaylord`; - decisione di snapshot quando una track e' centrata; - salvataggio frame debug, payload OCR e `snapshots.jsonl`; - simulazione comandi `STOP`, `SCATTA_FOTO`, `ASSOCIA_POSIZIONE`, `INVIA_ROI_REMOTA`, `ATTENDI_ACK`, `RIPARTI_*`; - UI debug OpenCV integrata nel `main()`. ## Decisione architetturale La GUI DearPyGUI e' stata tenuta in un file separato, `flywms_navigation_gui.py`. Motivo: non toccare il ciclo originale e non rischiare regressioni nella logica di navigazione. La GUI importa `flywms_navigation.py` e riusa: - `UltralyticsDetector`; - `LightweightTracker`; - `NavigationController`; - `draw_navigation_debug`; - configurazione da `flywms_navigation.ini`. In pratica `flywms_navigation.py` resta il simulatore CLI/OpenCV funzionante; `flywms_navigation_gui.py` e' una shell dimostrativa sopra la stessa logica. ## Implementato File nuovo: - `flywms_navigation_gui.py` Funzioni principali: - `NavigationDemoEngine`: esegue un singolo step del ciclo video/YOLO/tracking/navigazione e restituisce uno stato frame-by-frame. - `NavigationDemoGui`: gestisce finestra DearPyGUI, comandi Avvia/Pausa, Step, Reset, preview, metriche, comandi, payload OCR e track. - conversione frame OpenCV BGR in texture RGBA DearPyGUI. - gestione texture corretta con tag univoci quando cambia la dimensione immagine. - resize visuale della preview principale a 960x540. DearPyGUI e' stato installato nell'ambiente Python corrente con: ```powershell python -m pip install dearpygui ``` ## Verifiche eseguite Compilazione: ```powershell python -m py_compile flywms_navigation_gui.py flywms_navigation.py ``` Test motore GUI senza finestra persistente: ```text state1 1 (720, 1280, 3) state2 2 (720, 1280, 3) ``` Test aggiornamento UI/texture: ```text ui step ok 960 540 ``` Avvio manuale usato: ```powershell python flywms_navigation_gui.py ``` ## Osservazioni performance Con CPU, la GUI scende circa da 6 fps a 3.8 fps. Il dato e' credibile perche' la shell GUI aggiunge: - disegno overlay OpenCV; - conversione BGR -> RGBA; - normalizzazione/copia texture `float32`; - aggiornamento pannelli DearPyGUI nello stesso thread di YOLO. Il carico CPU alto su tutti gli 8 core e' credibile: PyTorch/OpenCV/NumPy usano thread nativi anche se il loop Python e' singolo. Quando sara' disponibile una GPU corretta, conviene rimisurare separando: - fps YOLO/tracking; - fps GUI; - tempo medio YOLO; - tempo medio conversione texture. ## Prossimi passi consigliati 1. Migliorare la GUI come demo: - timeline eventi `STOP`, `SCATTA_FOTO`, `ACK/NACK`, `RIPARTI`; - pannello soglie principali; - evidenza piu' leggibile dello stato `entering/candidate/centered/snapshotted`; - contatori snapshot e posizioni simulate. 2. Ottimizzare solo se serve: - aggiornare texture a frequenza limitata; - convertire per GUI un frame gia' ridotto; - separare inferenza e GUI con stato latest-frame; - aggiornare testo solo quando cambia. 3. Non modificare la logica di `flywms_navigation.py` finche' la GUI non ha stabilizzato i requisiti dimostrativi.