5.6 KiB
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_TROVATAe 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/NACKper 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:
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-uie--no-ocr.
-
.gitignore- aggiunto
wms_received*/.
- aggiunto
Milestone create nella sessione
aggiornamento-2026-05-16-09-03.mdaggiornamento-2026-05-16-10-14.mdaggiornamento-2026-05-16-10-37.mdaggiornamento-2026-05-16-10-47.mdaggiornamento-2026-05-16-10-49.mdaggiornamento-2026-05-16-11-04.mdaggiornamento-2026-05-16-11-12.mdaggiornamento-2026-05-16-11-29.mdaggiornamento-2026-05-16-12-04.mdaggiornamento-2026-05-16-12-08.mdaggiornamento-2026-05-16-12-10.md
Test eseguiti
Compilazione piu' volte:
python -m py_compile flywms_navigation.py flywms_navigation_gui.py flywms_wms_server.py
Test client-server WMS locale:
[WMS] job accodato request_id=...
[WMS] risposta request_id=... status=ACK message=codice valido su WMS: ...
[CMD] RIPARTI_DESTRA
Server ha salvato:
metadata.json
wms_payload.json
snapshot_..._frame.jpg
snapshot_..._label_payload.jpg
OCR su primo crop etichetta:
OcrServerResult(text='udc non determinato', raw_text='', confidence=0.0, backend='easyocr-fallback', fallback_used=True)
Problema attuale prima del riavvio
Eseguendo:
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:
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
- Verificare tempo import PyTorch/Ultralytics:
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)"
- Verificare avvio senza WMS:
python flywms_navigation.py --no-display --max-frames 1
- Verificare avvio con WMS ma senza finestre:
python flywms_navigation.py --no-display --max-frames 1 --wms-enabled
- Avviare server WMS:
python flywms_wms_server.py --host 0.0.0.0 --port 8088
- Avviare navigazione:
python flywms_navigation.py --wms-enabled
Stato git noto
Ultimo commit locale fatto:
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:
git status --short --branch
python -m py_compile flywms_navigation.py flywms_navigation_gui.py flywms_wms_server.py
e poi valutare commit/push.