Files
flywms/handoff.md
administrator 16458d98e9 aggiunta gui
2026-05-15 20:39:06 +02:00

3.5 KiB

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:

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

  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.