3.5 KiB
FlyWMS handoff - GUI navigazione
Data: 2026-05-15
Stato repository
- Branch:
master - Remote:
originsu 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:
python -m pip install dearpygui
Verifiche eseguite
Compilazione:
python -m py_compile flywms_navigation_gui.py flywms_navigation.py
Test motore GUI senza finestra persistente:
state1 1 (720, 1280, 3)
state2 2 (720, 1280, 3)
Test aggiornamento UI/texture:
ui step ok
960 540
Avvio manuale usato:
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
-
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.
- timeline eventi
-
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.
-
Non modificare la logica di
flywms_navigation.pyfinche' la GUI non ha stabilizzato i requisiti dimostrativi.