Fondere misure imperfette da sensori diversi
Nessun sensore da solo vede tutto: la camera non misura la distanza, il GPS si perde in galleria, il giroscopio deriva. La sensor fusion combina misure rumorose e parziali in una stima dello stato più accurata di ogni singola sorgente, pesando ciascuna per quanto è affidabile. Al cuore c’è una sola idea — la media pesata per la precisione — che ricompare nel filtro di Kalman, nella stabilizzazione di un drone, e per analogia nel modo in cui un modello multimodale o un agente combinano fonti diverse.
Perché questo capitolo
Sezione intitolata “Perché questo capitolo”Tieni un telefono in mano e cammini per strada con la mappa aperta. Lo schermo mostra un puntino blu che ti segue, ruota quando giri, avanza quando cammini. Quel puntino non viene da un sensore: viene da almeno cinque.
Il GPS dice dove sei sulla Terra, ma con un errore di diversi metri e solo una volta al secondo. L’accelerometro sente i tuoi passi. Il giroscopio sente le rotazioni. Il magnetometro punta verso il nord. La rete cellulare e il Wi-Fi danno una posizione grossolana ma sempre disponibile, anche dove il GPS non arriva.
Nessuna di queste misure, da sola, basterebbe a disegnare un puntino stabile: il solo GPS salterebbe di metri a ogni aggiornamento, il solo giroscopio deriverebbe in pochi secondi. Insieme, fuse nel modo giusto, danno un puntino che si muove con continuità. Questo è il problema, ed è ovunque.
Questa è la sensor fusion: combinare misure da più sensori — eterogenei, con rumori e affidabilità diverse — per ottenere una stima dello stato migliore di quella di ogni singolo sensore.
La definizione canonica è secca: fondere riduce l’incertezza rispetto all’uso di ogni sorgente separatamente. Non “migliora in media”, non “di solito aiuta”: riduce l’incertezza, sotto le ipotesi giuste, come fatto matematico. Vedremo esattamente quali sono quelle ipotesi e cosa succede quando saltano.
Una precisazione che cambia tutto: non è “mettere insieme tanti dati”. È produrre una stima accompagnata dalla sua incertezza, dove ogni sensore conta in proporzione a quanto è affidabile.
Accumulare misure senza pesarle per affidabilità non è fusione, è solo un mucchio più grande di numeri. La fusione produce sempre due cose: una stima e quanto fidarsene. Quel secondo output — l’incertezza della stima — è ciò che distingue una fusione vera da una semplice somma, ed è anche ciò che permette di fondere ancora, a valle, con un’altra misura.
Per chi costruisce sistemi, la posta in gioco è doppia.
Da un lato è ingegneria classica: ogni robot, ogni drone, ogni auto a guida autonoma, ogni smartphone fonde sensori. Farlo bene è invisibile — il puntino blu si muove liscio e nessuno ci pensa. Farlo male è subito evidente: un puntino che salta, un drone che si capovolge, un’auto che “vede” un pedone dove non c’è.
Dall’altro lato c’è un ponte concettuale che si è fatto largo negli ultimi anni: i modelli multimodali che combinano testo, immagini e audio, e gli agenti che combinano risultati di tool diversi, affrontano una versione dello stesso problema — fondere fonti eterogenee e parzialmente inaffidabili in una stima coerente. Il ponte è un’analogia, non un’identità, e gran parte di questo capitolo serve a tenerli distinti senza buttarli via.
C’è un filo che lega tutto, e conviene anticiparlo. La fusione di due misure rumorose della stessa grandezza, quando ciascuna è gaussiana, è una media pesata per l’inverso della varianza: chi è più sicuro pesa di più, e il risultato è più sicuro di entrambi.
Quella formuletta, sotto travestimenti diversi, ricompare ovunque. È il filtro di Kalman quando le misure arrivano nel tempo. È il complementary filter di un drone quando i sensori sono complementari in frequenza. Ed è lo scheletro probabilistico contro cui misurare ogni altra forma di fusione, comprese quelle apprese dai modelli moderni. Una volta che la riconosci, la vedi ovunque.
Contesto
Sezione intitolata “Contesto”La fusione di misure nasce molto prima che esistano gli “agenti” o le auto autonome, e nasce da un problema pratico: stimare dove si trova qualcosa che non puoi vedere direttamente.
Durante e dopo la Seconda guerra mondiale, il radar pone esattamente questo problema. Un’eco rimbalza, arriva sporca di rumore, e bisogna decidere dove sta il bersaglio e dove sarà tra un secondo. La sequenza di misure va combinata con un modello di come il bersaglio si muove — non basta guardare l’ultima eco, serve fonderla con tutto ciò che si sa già della traiettoria.
Il passo decisivo arriva nel 1960. Rudolf E. Kalman (ingegnere e matematico ungherese-americano, 1930-2016) pubblica A New Approach to Linear Filtering and Prediction Problems (Transactions of the ASME — Journal of Basic Engineering, vol. 82, pp. 35-45, 1960), dove riformula il problema del filtraggio usando lo stato del sistema e ricava un’equazione per la covarianza dell’errore di stima.
Quello che oggi chiamiamo filtro di Kalman è, in sostanza, un fonditore di sensori: a ogni passo combina ciò che il modello prevede con ciò che la misura riporta, pesando i due in base alla loro incertezza.
Non era nato come “algoritmo di fusione” — quel vocabolario sarebbe arrivato dopo, con la disciplina della data fusion — ma è esattamente ciò che fa, e con una proprietà di ottimalità dimostrabile sotto le ipotesi giuste. È uno di quei casi in cui la soluzione precede di anni il nome del problema che risolve.
Il filtro arriva al momento giusto. Pochi anni dopo, alla NASA, serve un modo per stimare la traiettoria di una navicella combinando misure di bordo e dati di terra, con un computer dalla memoria minuscola.
Il filtro di Kalman è ricorsivo e leggero: a ogni passo gli basta la stima precedente, non tutta la storia delle misure. Questa proprietà — niente da archiviare, niente da rielaborare daccapo — lo rende adatto a un calcolatore di bordo del 1965, ed entra nel programma Apollo per la navigazione. È la prima grande dimostrazione pubblica che fondere misure rumorose con un modello dinamico funziona, e funziona dove sbagliare significa perdere una missione.
Negli anni ‘80 e ‘90, con la proliferazione di sensori militari e civili, il problema si formalizza come disciplina a sé. Il Dipartimento della Difesa statunitense, attraverso il gruppo JDL (Joint Directors of Laboratories, Data Fusion Subgroup), propone un modello a livelli che diventa il riferimento.
Il modello JDL distingue la fusione a livello di dato grezzo, di feature, di decisione, e sale fino alla valutazione della situazione e alla gestione attiva dei sensori (decidere quale sensore interrogare). È nato in ambito militare, per la sorveglianza e il tracking di minacce, ed è stato poi adottato ben oltre la difesa.
È anche un modello criticato, perché la sua scala a livelli suggerisce che la fusione proceda in un ordine fisso, dal basso verso l’alto, quando in pratica i livelli si intrecciano e si retroalimentano. Ma resta il vocabolario condiviso con cui ancora oggi si parla di livelli di fusione, e lo riprendiamo nella meccanica.
In parallelo, la robotica probabilistica raccoglie tutto sotto un tetto bayesiano. Il testo di riferimento è Probabilistic Robotics di Sebastian Thrun, Wolfram Burgard e Dieter Fox (MIT Press, 2005), che presenta la stima di stato — Kalman, EKF, UKF, particle filter — come un unico problema: mantenere una distribuzione di probabilità sullo stato del mondo e aggiornarla a ogni nuova misura.
Fondere sensori, in questa vista, è semplicemente applicare il teorema di Bayes a misure che arrivano da sorgenti diverse. Non c’è una “teoria della fusione” separata dalla stima bayesiana: la fusione è quello che succede quando la nuova evidenza, da qualunque sensore provenga, aggiorna la tua credenza sullo stato. È la lente che adottiamo in tutto il capitolo.
Nella mappa di questa Parte, il capitolo poggia su tutto ciò che viene prima. Il modello di una misura come segnale più rumore viene da Segnali continui, discreti, sistemi lineari. L’idea che mediare misure indipendenti riduca l’incertezza, e il rapporto segnale-rumore come misura di affidabilità, vengono da Rumore, signal-to-noise ratio, filtraggio.
Il complementary filter, una delle tecniche di fusione più usate, vive nel dominio della frequenza che viene da Fourier e usa i filtri.
E il predecessore diretto è il filtro di Kalman della Parte sulla control theory: questo capitolo ne è, in un certo senso, la generalizzazione vista dal lato dei sensori. Là il problema era stimare uno stato nascosto nel tempo; qui è combinare le tante misure, da sorgenti diverse, che alimentano quella stima. I due capitoli guardano lo stesso oggetto da due lati.
L’intuizione
Sezione intitolata “L’intuizione”Conviene afferrare la fusione da due angoli distinti prima di toccare le formule. Il primo angolo è funzionale: perché conviene fondere, cosa guadagni. Il secondo è probabilistico: come si fonde, cioè la media pesata per la fiducia. Il primo dice quando e perché, il secondo dice come.
Primo angolo: perché fondere conviene
Sezione intitolata “Primo angolo: perché fondere conviene”Ci sono tre ragioni distinte, e tenerle separate aiuta a capire quando la fusione serve davvero.
La prima è la complementarità: sensori diversi misurano cose diverse, o sono bravi in regimi diversi. Pensa a un’auto a guida autonoma. La camera vede colori, testo, classi di oggetti — riconosce un semaforo, legge un cartello — ma non misura la distanza direttamente ed è fragile al buio, al sole in faccia, alla nebbia.
Accanto alla camera, gli altri due sensori coprono proprio i suoi punti deboli. Il LiDAR (un sensore che spara impulsi laser e misura il tempo di ritorno, ottenendo una nuvola di punti 3D) misura distanze con precisione centimetrica, ma è costoso, non vede i colori, e degrada con pioggia e nebbia.
Il radar (che usa onde radio e l’effetto Doppler, lo spostamento di frequenza di un’eco che torna da un oggetto in movimento) misura direttamente la velocità degli oggetti e funziona attraverso nebbia, pioggia e buio, ma ha una risoluzione angolare grossolana — sa che qualcosa si muove, fatica a dire esattamente dove.
Nessuno dei tre è completo. Fusi, ognuno copre i punti ciechi degli altri: il radar regge la nebbia dove la camera è cieca, la camera dice cosa è l’oggetto dove il radar dice solo che c’è qualcosa e va a tot km/h, il LiDAR dice esattamente dove con una precisione che la camera non ha. La complementarità non è solo “vedere più cose”: è avere, per ogni condizione operativa, almeno un sensore di cui ci si può fidare.
La seconda è la ridondanza. Anche due sensori che misurano la stessa identica grandezza, allo stesso modo, sono utili insieme: due misure indipendenti riducono l’incertezza. È lo stesso principio dell’averaging visto in Rumore, signal-to-noise ratio: mediare misure indipendenti della stessa quantità riduce la deviazione standard del rumore di un fattore . Due termometri che dicono “20.1 gradi” e “19.9 gradi” producono insieme una stima più stretta di entrambi.
La differenza tra le prime due ragioni è sottile ma importante. La complementarità sfrutta sensori diversi che si coprono a vicenda; la ridondanza sfrutta sensori simili che si confermano a vicenda.
La prima allarga ciò che il sistema può percepire, la seconda restringe l’incertezza su ciò che già percepisce. Un buon progetto le usa entrambe: sensori diversi per vedere di più, e qualche ridondanza dove un guasto non è ammissibile.
La terza è la copertura dei guasti. Se un sensore si acceca — il sole entra nell’obiettivo della camera, il GPS si perde sotto un cavalcavia — gli altri reggono. La fusione è la base del comportamento fail-operational: degradare con grazia invece di fallire di colpo. Questa ragione collega la fusione alla robustezza e alla safety, ed è il motivo per cui un sistema critico non si fida mai di un solo sensore.
C’è anche un effetto sui falsi allarmi, oltre che sui buchi di copertura. Un’auto che frena solo perché la camera vede un ostacolo è un’auto che frena anche per un’ombra sull’asfalto; un’auto che frena quando camera e radar concordano sbaglia molto meno. La fusione non riduce solo l’incertezza sulle misure buone: filtra anche le allucinazioni del singolo sensore, chiedendo conferma a un altro.
Secondo angolo: fondere è una media pesata per la fiducia
Sezione intitolata “Secondo angolo: fondere è una media pesata per la fiducia”Passiamo al come. Per isolare il meccanismo, immagina la versione minimale del problema, senza tempo e senza vettori: vuoi conoscere una sola grandezza — la distanza da un ostacolo — e hai due sensori che te la misurano.
Il primo dice “12.0 m”, il secondo dice “12.6 m”. Quale credi? La domanda sembra banale, ma la risposta giusta contiene già tutto il resto del capitolo.
La risposta sbagliata è “faccio la media, 12.3 m”. È sbagliata perché tratta i due sensori come ugualmente affidabili, e quasi mai lo sono.
Se sai che il primo sensore è molto preciso e il secondo molto rumoroso, la stima giusta sta vicino a 12.0, non a metà strada. La media aritmetica butta via un’informazione che hai — quanto ti fidi di ciascuno — e tratta una misura traballante alla pari di una solida. È l’errore che la fusione probabilistica corregge.
L’intuizione corretta è: pesa ogni misura per quanto è affidabile, e il risultato sarà più affidabile di entrambe. “Affidabile” qui ha un significato preciso — l’inverso dell’incertezza. Un sensore con incertezza piccola (varianza piccola) ha un peso grande; uno rumoroso ha un peso piccolo. La stima fusa è la media pesata con questi pesi.
E qui c’è il punto profondo, quello che rende la fusione utile invece che pericolosa: la sua incertezza è più piccola di quella di ogni sensore di partenza. Aggiungere una misura, anche mediocre, non può peggiorare la stima — al peggio le dà peso quasi zero e la lascia com’era. Questo “non peggiora mai” è una garanzia forte, e più avanti vedremo a quali condizioni regge e quando invece salta.
C’è un’immagine geometrica che fa da ponte verso la matematica. Pensa a ogni misura non come un numero ma come una campana gaussiana: il centro è il valore misurato, la larghezza è l’incertezza. Il primo sensore è una campana stretta centrata su 12.0; il secondo una campana larga centrata su 12.6.
Fondere le due significa moltiplicarle. E il prodotto di due gaussiane è una gaussiana più stretta di entrambe, centrata più vicino a quella stretta. La fusione, geometricamente, è questo restringimento: due campane che si sovrappongono ne generano una terza, più alta e più magra, dove le due erano d’accordo. È un’immagine che vale la pena tenere in testa, perché la formula che segue non fa altro che descriverla.
La meccanica
Sezione intitolata “La meccanica”A che livello si fonde: dato, feature, decisione
Sezione intitolata “A che livello si fonde: dato, feature, decisione”Prima della matematica del “come”, c’è una scelta di architettura: a quale livello di astrazione si fondono le sorgenti. La stessa coppia di sensori si può fondere in modi molto diversi, e la scelta cambia il sistema più di quanto cambi la formula.
La letteratura — a partire dal modello JDL citato sopra — distingue tre livelli, e la scelta tra loro determina quanto il sistema è informato e quanto è robusto. È un asse ortogonale alla matematica della fusione: a ciascun livello puoi usare la media pesata, un voto, o una rete neurale.
Al livello del dato grezzo (chiamato anche early fusion, fusione precoce) si combinano le misure prima di estrarre qualunque feature. Si proietta la nuvola LiDAR sui pixel della camera e si dà tutto insieme a valle. È il livello che preserva la massima informazione: niente viene scartato prima di fondere.
Il prezzo è la fragilità. I dati grezzi sono eterogenei — come fondi un pixel con un punto 3D? — e serve un allineamento spaziale e temporale strettissimo, perché stai sovrapponendo misure al loro livello più crudo, dove ogni millimetro e ogni millisecondo di disallineamento conta.
È anche il livello più costoso da far funzionare, perché lega strettamente i sensori tra loro: cambiare una camera o spostare un LiDAR obbliga a ricalibrare tutto. Ne parleremo diffusamente nei limiti, dove l’allineamento si rivela il vero lavoro sporco della fusione.
Al livello delle feature (mid-level fusion) ogni sensore estrae prima delle caratteristiche — un bounding box, un keypoint, un bordo, un embedding — e si fondono quelle. Si rinuncia a un po’ di informazione grezza in cambio di rappresentazioni più piccole e già strutturate, più facili da allineare. È il compromesso che domina i perception stack automotive moderni.
Al livello della decisione (late fusion, fusione tardiva) ogni sensore, o ogni pipeline, arriva fino in fondo da solo e produce una decisione — “pedone”, “auto”, “strada libera” — e si fondono le decisioni, con voto a maggioranza, naive Bayes, o teoria di Dempster-Shafer (un formalismo per combinare gradi di credenza che non richiede probabilità precise).
È il livello più robusto e modulare: se un sensore si guasta, lo escludi senza toccare gli altri, come si stacca un modulo difettoso. Ma è anche quello che butta via più informazione, perché una volta che un sensore ha “deciso”, la sua incertezza fine è persa e non può più aiutare un altro sensore a livello di dettaglio.
Il trade-off è netto e non ha un vincitore assoluto. Early fusion vuol dire più informazione, più fragilità, più accoppiamento. Late fusion vuol dire più robustezza, più modularità, ma correlazioni fini perse. Mid-level sta in mezzo ed è spesso il punto dolce.
Quale scegliere dipende dal problema, dalla qualità della calibrazione, e da quanto ti puoi fidare dei singoli sensori. E le formule che seguono — la fusione di gaussiane, il Kalman — vivono soprattutto ai livelli del dato e della feature, dove c’è ancora un’incertezza numerica da pesare; al livello della decisione si entra nel territorio del voto e della logica, dove la media pesata per la precisione lascia il posto ad altri strumenti.
Fondere due gaussiane: la formula madre
Sezione intitolata “Fondere due gaussiane: la formula madre”Mettiamo numeri all’intuizione, partendo dal caso più semplice: due misure di una grandezza scalare. Hai due misure indipendenti della stessa grandezza:
- con incertezza gaussiana di varianza (la varianza misura quanto la misura si sparpaglia attorno al valore vero; la radice è la deviazione standard);
- con varianza .
La stima fusa e la sua varianza sono:
undefined