Files
flywms/flywms_navigation.ini
2026-05-19 08:52:44 +02:00

398 lines
13 KiB
INI

[navigation]
; OBBLIGATORIO: no.
; Ruolo: sorgente video usata per simulare la camera del drone.
; Se vuoto o "none", usa webcam 0.
; Default se non indicato: testhd.mp4
video = testhd2_edit.mp4
; OBBLIGATORIO: si.
; Ruolo: modello Ultralytics/YOLO moderno usato per rilevare gaylord ed etichette.
; Default se non indicato: C:\devel\flywms\runs\flywms_yolo11n_quick20\weights\best.pt
weights = C:\devel\flywms\runs\flywms_yolo11n_quick20\weights\best.pt
; OBBLIGATORIO: no.
; Ruolo: device usato da Ultralytics. Usa "cpu" per forzare CPU; con GPU compatibile usare "0".
; Default se non indicato: cpu
ultralytics_device = 0
; OBBLIGATORIO: no.
; Ruolo: dimensione input YOLO. 640 e' il valore usato nel training rapido.
; Default se non indicato: 640
input_size = 640
; OBBLIGATORIO: no.
; Ruolo: confidenza minima delle detection accettate dal detector.
; Default se non indicato: 0.25
min_confidence = 0.25
; OBBLIGATORIO: no.
; Ruolo: classe tracciata dalla navigazione. Le altre detection non entrano nel tracker.
; Default se non indicato: gaylord
target_class = gaylord
; OBBLIGATORIO: no.
; Ruolo: classe etichetta associata al gaylord centrato.
; Il bbox etichetta viene accettato solo se e' contenuto nel bbox del gaylord.
; Default se non indicato: etichetta
label_class = etichetta
; OBBLIGATORIO: no.
; Ruolo: numero massimo di frame in cui una track puo' non essere vista prima di essere rimossa.
; Default se non indicato: 8
max_track_missed = 8
; OBBLIGATORIO: no.
; Ruolo: soglia minima dello score che associa una detection a una track esistente.
; Default se non indicato: 0.25
min_match_score = 0.25
; OBBLIGATORIO: no.
; Ruolo: distanza massima ammessa tra centri bbox, espressa come frazione della larghezza frame.
; Default se non indicato: 0.18
max_center_distance_ratio = 0.18
; OBBLIGATORIO: no.
; Ruolo: mezza ampiezza della fascia azzurra di avvicinamento al centro.
; Non fa scattare la foto: indica solo che la track e' candidata.
; Default se non indicato: 0.18
center_tolerance_ratio = 0.18
; OBBLIGATORIO: no.
; Ruolo: tolleranza stretta dalla linea verticale centrale per scattare la foto.
; La foto parte quando il centro bbox e' entro questa soglia.
; Default se non indicato: 0.035
snapshot_line_tolerance_ratio = 0.035
; OBBLIGATORIO: no.
; Ruolo: limite verticale superiore della fascia utile della scaffalatura.
; Default se non indicato: 0.15
usable_y_min_ratio = 0.15
; OBBLIGATORIO: no.
; Ruolo: limite verticale inferiore della fascia utile della scaffalatura.
; Default se non indicato: 0.85
usable_y_max_ratio = 0.85
; OBBLIGATORIO: no.
; Ruolo: numero minimo di detection confermate prima di considerare affidabile una track.
; Default se non indicato: 3
min_track_hits = 3
; OBBLIGATORIO: no.
; Ruolo: area minima del bbox gaylord rispetto all'intero frame.
; Serve a ignorare oggetti troppo lontani/piccoli.
; Default se non indicato: 0.02
min_gaylord_area_ratio = 0.02
; OBBLIGATORIO: no.
; Ruolo: margine da bordo immagine per considerare un bbox tagliato.
; 0 disabilita questo filtro, utile con il video manuale di test.
; Default se non indicato: 0.0
edge_margin_ratio = 0.0
; OBBLIGATORIO: no.
; Ruolo: padding aggiunto al bbox centrale prima di salvare il crop inviato all'OCR remoto.
; Default se non indicato: 0.03
ocr_payload_pad_ratio = 0.03
; OBBLIGATORIO: no.
; Ruolo: padding aggiunto al bbox etichetta prima di salvare il crop inviato all'OCR remoto.
; Default se non indicato: 0.20
label_payload_pad_ratio = 0.20
; OBBLIGATORIO: no.
; Ruolo: trend minimo dell'area bbox negli ultimi frame. Valori negativi tollerano leggera uscita.
; Default se non indicato: -0.35
min_area_trend = -0.35
; OBBLIGATORIO: no.
; Ruolo: numero di candidati da valutare prima dello snapshot.
; 1 significa: scatta subito quando il centro tocca la linea.
; Default se non indicato: 1
snapshot_window_frames = 1
; OBBLIGATORIO: no.
; Ruolo: directory dove salvare frame debug, crop OCR e snapshots.jsonl.
; Default se non indicato: navigate_snapshots
snapshot_output_dir = navigate_snapshots
; OBBLIGATORIO: no.
; Ruolo: tempo massimo con cui il drone attende OCR remoto + verifica WMS.
; Con PaddleOCR il primo avvio del worker puo' richiedere alcuni secondi.
; Default se non indicato: 2.0
remote_ack_timeout_sec = 10.0
; OBBLIGATORIO: no.
; Ruolo: risposta remota simulata. Valori: always-ack, always-nack, alternate.
; Default se non indicato: always-ack
remote_ack_mode = always-ack
; OBBLIGATORIO: no.
; Ruolo: se true, invia realmente il payload etichetta al server WMS demo via HTTP.
; Se false, mantiene la risposta remota simulata locale.
; Default se non indicato: false
wms_enabled = false
; OBBLIGATORIO: no.
; Ruolo: endpoint HTTP del server WMS demo, anche su altro PC.
; Esempio rete: http://192.168.1.50:8088/api/v1/navigation-snapshot
; Default se non indicato: http://127.0.0.1:8088/api/v1/navigation-snapshot
wms_server_url = http://127.0.0.1:8088/api/v1/navigation-snapshot
; OBBLIGATORIO: no.
; Ruolo: identificativo del client/drone demo mandato nei metadati.
; Default se non indicato: flywms-demo-01
wms_client_id = flywms-demo-01
; OBBLIGATORIO: no.
; Ruolo: timeout HTTP del worker WMS, in secondi.
; Deve essere maggiore del tempo OCR server; con PaddleOCR fast caldo circa 3s, primo avvio circa 8-10s.
; Default se non indicato: 2.0
wms_timeout_sec = 12.0
; OBBLIGATORIO: no.
; Ruolo: numero massimo di snapshot in coda verso il WMS.
; Default se non indicato: 8
wms_queue_max_size = 8
; OBBLIGATORIO: no.
; Ruolo: se true, oltre al crop etichetta invia anche il frame/debug gaylord.
; Default se non indicato: true
wms_send_gaylord_debug = true
; OBBLIGATORIO: no.
; Ruolo: host su cui il server WMS demo FastAPI resta in ascolto.
; 0.0.0.0 consente connessioni da altri PC della rete.
; Default se non indicato: 0.0.0.0
wms_server_host = 0.0.0.0
; OBBLIGATORIO: no.
; Ruolo: porta del server WMS demo FastAPI.
; Default se non indicato: 8088
wms_server_port = 8088
; OBBLIGATORIO: no.
; Ruolo: directory in cui il server salva immagini e metadati ricevuti.
; Default se non indicato: wms_received
wms_received_dir = wms_received
; OBBLIGATORIO: no.
; Ruolo: risposta simulata server. Valori: always-ack, always-nack, alternate, random.
; Default se non indicato: always-ack
wms_fake_ack_mode = always-ack
; OBBLIGATORIO: no.
; Ruolo: ritardo finto del server per simulare OCR/WMS.
; Default se non indicato: 0.5
wms_fake_processing_sec = 0.5
; OBBLIGATORIO: no.
; Ruolo: se true, il server WMS demo apre le finestre OpenCV immagine/payload.
; Default se non indicato: true
wms_ui_enabled = true
; OBBLIGATORIO: no.
; Ruolo: se true, il server prova OCR reale sul crop etichetta.
; Default se non indicato: true
wms_ocr_enabled = true
; OBBLIGATORIO: no.
; Ruolo: motore OCR server. Valori: paddleocr, easyocr, tesseract, fake.
; Default se non indicato: paddleocr
wms_ocr_mode = paddleocr
; OBBLIGATORIO: no.
; Ruolo: Python del virtualenv isolato usato dal worker PaddleOCR.
; Default se non indicato: C:\devel\yolo-ocr\.venv-paddle-cpu\Scripts\python.exe
wms_paddle_python = C:\devel\yolo-ocr\.venv-paddle-cpu\Scripts\python.exe
; OBBLIGATORIO: no.
; Ruolo: script worker PaddleOCR persistente.
; Default se non indicato: flywms_paddleocr_worker.py nella cartella flywms.
wms_paddle_worker_script = C:\devel\flywms\flywms_paddleocr_worker.py
; OBBLIGATORIO: no.
; Ruolo: altezze a cui ridimensionare il crop etichetta prima dell'OCR.
; Per demo 96 e' la configurazione leggera. Per debug: 64,96,128.
; Default se non indicato: 96
wms_paddle_target_heights = 96
; OBBLIGATORIO: no.
; Ruolo: quante varianti preprocessing usare nel worker PaddleOCR.
; Valori: fast, balanced, full.
; fast usa originale, CLAHE, CLAHE+sharpen ed e' il default per il server demo.
; Default se non indicato: fast
wms_paddle_variant_set = fast
; OBBLIGATORIO: no.
; Ruolo: numero di cifre atteso nel codice UDC.
; Default se non indicato: 6
wms_paddle_expected_digits = 6
; OBBLIGATORIO: no.
; Ruolo: numero minimo di varianti OCR che devono concordare sul codice.
; Default se non indicato: 2
wms_paddle_min_votes = 2
; OBBLIGATORIO: no.
; Ruolo: confidenza minima del candidato PaddleOCR scelto.
; Default se non indicato: 0.70
wms_paddle_min_confidence = 0.70
; OBBLIGATORIO: no.
; Ruolo: prefisso del codice fallback se OCR reale non legge nulla.
; Default se non indicato: UDC
wms_fake_ocr_prefix = UDC
; OBBLIGATORIO: no.
; Ruolo: testo restituito quando OCR non determina il codice reale.
; Default se non indicato: udc non determinato
wms_undetermined_code_text = udc non determinato
; OBBLIGATORIO: no.
; Ruolo: ritardo finto OCR/fallback in secondi.
; Default se non indicato: 0.2
wms_fake_ocr_delay_sec = 0.2
; OBBLIGATORIO: no.
; Ruolo: operatore/drone simulato registrato nel payload WMS.
; Default se non indicato: udrone
wms_operator = udrone
; OBBLIGATORIO: no.
; Ruolo: sito/magazzino simulato registrato nel payload WMS.
; Default se non indicato: demo-magazzino
wms_site = demo-magazzino
; OBBLIGATORIO: no.
; Ruolo: durata simulata del movimento drone dal centro gaylord al centro etichetta.
; Default se non indicato: 3.0
label_move_sec = 3.0
; OBBLIGATORIO: no.
; Ruolo: attesa simulata per stabilizzare la foto ravvicinata dell'etichetta.
; Default se non indicato: 2.0
label_stabilization_sec = 2.0
; OBBLIGATORIO: no.
; Ruolo: durata simulata del ritorno dal centro etichetta al centro gaylord.
; Default se non indicato: 3.0
label_return_sec = 3.0
; OBBLIGATORIO: no.
; Ruolo: direzione simulata di ripartenza dopo ACK. Valori: destra, sinistra.
; Default se non indicato: destra
scan_direction = destra
; OBBLIGATORIO: no.
; Ruolo: larghezza massima delle finestre video di debug.
; Default se non indicato: 1280
preview_width = 1280
; OBBLIGATORIO: no.
; Ruolo: profilo benchmark senza finestre OpenCV.
; Se true forza no_display e usa benchmark_preview_fps come target di cattura/preview.
; Default se non indicato: false
benchmark_mode = false
; OBBLIGATORIO: no.
; Ruolo: FPS target di cattura/preview per il profilo benchmark.
; Default se non indicato: 30.0
benchmark_preview_fps = 30.0
; OBBLIGATORIO: no.
; Ruolo: se true, il video di test viene riprodotto rispettando il framerate originale.
; Default se non indicato: true
realtime_playback = true
; OBBLIGATORIO: no.
; Ruolo: FPS massimo per lettura/preview realtime. 0 usa il framerate della sorgente.
; Con video registrati puo' essere usato per simulare una preview piu' lenta, es. 24 fps.
; Con webcam/camere viene anche richiesto al driver, ma non tutti i driver rispettano il valore.
; Default se non indicato: 24.0
preview_fps = 24.0
; OBBLIGATORIO: no.
; Ruolo: se true, usa FP16/half precision per YOLO quando gira su GPU.
; Su CPU viene ignorato automaticamente.
; Default se non indicato: true
yolo_half = true
; OBBLIGATORIO: no.
; Ruolo: FPS massimo per inferenza YOLO. 0 esegue YOLO su ogni frame di preview.
; Nei frame intermedi la preview continua usando l'ultimo stato di tracking disponibile.
; Default se non indicato: 15.0
yolo_fps = 15.0
; OBBLIGATORIO: no.
; Ruolo: massimo numero di frame da processare. 0 significa tutto il video.
; Default se non indicato: 0
max_frames = 0
; OBBLIGATORIO: no.
; Ruolo: ogni quanti secondi stampare statistiche nel terminale.
; Default se non indicato: 2.0
stats_interval = 2.0
; OBBLIGATORIO: no.
; Ruolo: file di log delle tempistiche dettagliate per frame.
; Default se non indicato: tempistiche.txt
perf_log_path = tempistiche.txt
; OBBLIGATORIO: no.
; Ruolo: intervallo massimo tra due flush del file di tempistiche.
; Default se non indicato: 2.0
perf_log_flush_interval_sec = 2.0
; OBBLIGATORIO: no.
; Ruolo: numero di righe bufferizzate prima del flush del file di tempistiche.
; Default se non indicato: 120
perf_log_flush_lines = 120
; OBBLIGATORIO: no.
; Ruolo: ogni quanti frame aggiornare il moto apparente stimato dalle track.
; Default se non indicato: 5
motion_report_interval = 5
; OBBLIGATORIO: no.
; Ruolo: movimento medio minimo in pixel per dichiarare destra/sinistra/su/giu.
; Default se non indicato: 1.5
motion_min_pixels = 1.5
; OBBLIGATORIO: no.
; Ruolo: se true, logga nel terminale lo stato delle track e i motivi di non scatto.
; Default se non indicato: true
debug_tracks = true
; OBBLIGATORIO: no.
; Ruolo: intensita' del flash visuale simulato al momento dello scatto, da 0 a 1.
; Default se non indicato: 0.70
flash_alpha = 0.70
; OBBLIGATORIO: no.
; Ruolo: se true, disabilita tutte le finestre video. Usarlo solo per test headless.
; Default se non indicato: false
no_display = false
; OBBLIGATORIO: no.
; Ruolo: se true, posiziona e ridimensiona le finestre OpenCV usando i valori sotto.
; Formato finestre: x,y,width,height
; Default se non indicato: true
window_layout_enabled = true
; OBBLIGATORIO: no.
; Ruolo: posizione finestra principale con tracking gaylord/etichetta.
navigate_window = 20,40,1100,620
; OBBLIGATORIO: no.
; Ruolo: posizione finestra comandi e indicatori movimento.
commands_window = 1140,40,760,520
; OBBLIGATORIO: no.
; Ruolo: posizione finestra snapshot gaylord.
snapshot_window = 1140,590,520,360
; OBBLIGATORIO: no.
; Ruolo: posizione finestra crop etichetta.
label_window = 1140,980,520,260