# Aggiornamento 2026-05-16 13:01 ## Salvataggio discussione prima del riavvio PC Questo file riassume lo stato della discussione e del lavoro fatto finora, per evitare perdita di contesto in caso di crash o riavvio. ## Stato generale Il progetto FlyWMS sta evolvendo da una demo locale di navigazione YOLO/OpenCV verso una pipeline distribuita: - `flywms_navigation.py`: simulatore drone/navigazione; - `flywms_wms_server.py`: server WMS demo; - comunicazione reale HTTP multipart tra client navigazione e server WMS; - crop etichetta come payload principale per OCR/WMS; - gaylord come ancora semantica per associare etichetta e posizione. ## Decisioni importanti prese - Il gaylord resta l'oggetto di riferimento: serve a sapere a quale UDC/posizione appartiene l'etichetta. - L'OCR deve lavorare sul crop dell'etichetta, non sul crop del gaylord intero. - L'etichetta valida deve avere bbox contenuto nel bbox del gaylord centrato. - Detection etichetta fuori dal gaylord vengono ignorate. - Se il gaylord e' centrato ma non viene trovata un'etichetta contenuta, si segnala `ETICHETTA_NON_TROVATA` e si attende un frame successivo. - Il movimento drone verso etichetta e ritorno al centro gaylord e' simulato con vettore pixel `dx/dy`. - La freccia nera bidirezionale rappresenta il movimento dal centro gaylord al centro etichetta. - La finestra comandi mostra anche grandi delta: - `DX ORIZZONTALE`; - `DY VERTICALE`. - Le finestre OpenCV client sono configurabili da INI. - Il server WMS non era inizialmente dotato di finestre; poi e' stato deciso di aggiungere finestre server demo. - Il server WMS deve salvare immagini e payload ricevuti. - L'esito `ACK/NACK` per ora resta configurabile e simulato. - Il codice OCR deve essere reale quando possibile; se OCR non determina il codice, non bisogna inventare un valore. - Per il primo gaylord, avendo etichetta tagliata, il codice deve essere: ```text udc non determinato ``` ## File principali modificati o aggiunti - `flywms_navigation.py` - tracking gaylord; - associazione etichetta contenuta nel bbox gaylord; - crop etichetta; - freccia movimento; - finestre OpenCV; - client WMS asincrono; - invio HTTP multipart; - gestione ACK/NACK/ERROR/TIMEOUT. - `flywms_navigation.ini` - parametri navigazione; - parametri FPS preview/YOLO; - parametri etichetta; - parametri finestre OpenCV; - parametri client/server WMS; - parametri OCR/fallback. - `flywms_wms_server.py` - server FastAPI; - endpoint `/api/v1/navigation-snapshot`; - endpoint `/health`; - salvataggio immagini e metadati; - OCR EasyOCR con fallback; - payload WMS finale; - finestre OpenCV server; - opzioni `--no-ui` e `--no-ocr`. - `.gitignore` - aggiunto `wms_received*/`. ## Milestone create nella sessione - `aggiornamento-2026-05-16-09-03.md` - `aggiornamento-2026-05-16-10-14.md` - `aggiornamento-2026-05-16-10-37.md` - `aggiornamento-2026-05-16-10-47.md` - `aggiornamento-2026-05-16-10-49.md` - `aggiornamento-2026-05-16-11-04.md` - `aggiornamento-2026-05-16-11-12.md` - `aggiornamento-2026-05-16-11-29.md` - `aggiornamento-2026-05-16-12-04.md` - `aggiornamento-2026-05-16-12-08.md` - `aggiornamento-2026-05-16-12-10.md` ## Test eseguiti Compilazione piu' volte: ```powershell python -m py_compile flywms_navigation.py flywms_navigation_gui.py flywms_wms_server.py ``` Test client-server WMS locale: ```text [WMS] job accodato request_id=... [WMS] risposta request_id=... status=ACK message=codice valido su WMS: ... [CMD] RIPARTI_DESTRA ``` Server ha salvato: ```text metadata.json wms_payload.json snapshot_..._frame.jpg snapshot_..._label_payload.jpg ``` OCR su primo crop etichetta: ```text OcrServerResult(text='udc non determinato', raw_text='', confidence=0.0, backend='easyocr-fallback', fallback_used=True) ``` ## Problema attuale prima del riavvio Eseguendo: ```powershell python flywms_navigation.py --wms-enabled ``` il programma sembra non partire. Dopo `CTRL+C`, lo stack trace mostra che era fermo durante l'import di Ultralytics/PyTorch: ```text detector = UltralyticsDetector(args.weights, args.ultralytics_device) from ultralytics import YOLO import torch KeyboardInterrupt ``` Questo indica che il blocco avviene prima dell'avvio della logica WMS e prima dell'apertura del video: il processo sta impiegando molto tempo a importare `torch`/`ultralytics` o e' rallentato da stato del PC/disco/ambiente Python. Non sembra causato direttamente dal codice WMS, perche' lo stack trace si ferma in import PyTorch. ## Diagnosi da fare dopo riavvio 1. Verificare tempo import PyTorch/Ultralytics: ```powershell python -c "import time; t=time.time(); import torch; print('torch', time.time()-t); t=time.time(); from ultralytics import YOLO; print('ultralytics', time.time()-t)" ``` 2. Verificare avvio senza WMS: ```powershell python flywms_navigation.py --no-display --max-frames 1 ``` 3. Verificare avvio con WMS ma senza finestre: ```powershell python flywms_navigation.py --no-display --max-frames 1 --wms-enabled ``` 4. Avviare server WMS: ```powershell python flywms_wms_server.py --host 0.0.0.0 --port 8088 ``` 5. Avviare navigazione: ```powershell python flywms_navigation.py --wms-enabled ``` ## Stato git noto Ultimo commit locale fatto: ```text 1186c3b configura fps preview e yolo ``` Il branch risultava avanti di 1 commit rispetto a `origin/master` prima delle modifiche successive. Molte modifiche successive risultano non ancora committate. Prima di proseguire dopo il riavvio conviene fare: ```powershell git status --short --branch python -m py_compile flywms_navigation.py flywms_navigation_gui.py flywms_wms_server.py ``` e poi valutare commit/push.