189 lines
5.6 KiB
Markdown
189 lines
5.6 KiB
Markdown
# 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.
|