Files
flywms/aggiornamento-2026-05-16-13-01.md
2026-05-19 08:52:44 +02:00

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_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:
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:

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

  1. 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)"
  1. Verificare avvio senza WMS:
python flywms_navigation.py --no-display --max-frames 1
  1. Verificare avvio con WMS ma senza finestre:
python flywms_navigation.py --no-display --max-frames 1 --wms-enabled
  1. Avviare server WMS:
python flywms_wms_server.py --host 0.0.0.0 --port 8088
  1. 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.