La fusione dei sensori nella visione integrata

Ci troviamo in un mondo che ha assistito a una rapida proliferazione di sensori, così comuni oggi che, senza accorgercene, ognuno di noi ne ha con sé più d’uno all’interno dei propri cellulari. Questi vanno dai sensori che consentono di rilevare semplici variazioni di pressione, temperatura, accelerazione e gravità, fino ai sensori più avanzati come i Gps, i Radar, i Lidar e i sensori di immagini. La “fusione di sensori” indica l’estrazione dei dati da più sensori diversi per generare informazioni che non possono essere fornite da un singolo sensore. Tali informazioni possono quindi essere ulteriormente elaborate e analizzate e, in relazione all’applicazione finale, essere usate per prendere decisioni se necessario. Quando si parla di fusione di sensori, si individuano due categorie: fusione di sensori in tempo reale, dove i dati dei sensori sono estratti e combinati, e la decisione in base all’informazione ottenuta viene presa in tempo reale; fusione di sensori offline, dove i dati dei sensori vengono estratti e combinati, e le decisioni sono prese in un secondo momento. Nel campo dei sistemi di visione integrati e delle applicazioni con fusione di sensori, gran parte delle applicazioni ricade all’interno della tipologia in tempo reale.

Applicazioni di visione integrata

Le applicazioni di visione integrata sono in rapida crescita con un’ampia gamma di applicazioni, dalla robotica, ai sistemi avanzati di guida assistita, alla realtà aumentata, e forniscono un contributo significativo al corretto funzionamento dell’applicazione finale. L’unione delle informazioni fornite dal sistema di visione integrata con le informazioni ottenute da diversi sensori o da più sensori consente di comprendere ulteriormente l’ambiente circostante, aumentando le prestazioni dell’applicazione prescelta. Molte applicazioni di visione integrata usano un singolo sensore di immagini per monitorare una direzione, per esempio davanti dal lato frontale di un’automobile. L’uso di un sensore di immagini offre la capacità di individuare, classificare e seguire gli oggetti. Tuttavia, l’uso di un unico sensore implica che non siamo in grado di misurare la distanza dagli oggetti all’interno dell’immagine. In altri termini, potremmo individuare e seguire visivamente un altro veicolo o un pedone, ma senza un altro sensore non saremmo in grado di determinare se possa esservi o meno rischio di collisione. In questo esempio, avremmo bisogno di un altro sensore come un Radar o un Lidar, che ha la capacità di fornire la distanza dall’oggetto evitato. Poiché questo approccio unisce le informazioni provenienti da diversi tipi di sensori, è definito come fusione di sensori eterogenea. Un approccio alternativo consiste nel fornire un secondo sensore di immagini, che consenta la visione stereoscopica: i due sensori sono orientati nella stessa direzione ma separati da una piccola distanza, analoga a quella degli occhi umani, per determinare la profondità degli oggetti sul campo sfruttando l’effetto di parallasse. Quando sono usati più sensori di immagini dello stesso tipo, si ha una fusione di sensori omogenea. Ovviamente, l’applicazione nello specifico determinerà i requisiti sull’architettura usata e sui tipi di sensore prescelti. Questi includono il raggio fino al quale è richiesta la percezione di profondità, l’accuratezza della misura, le condizioni operative meteorologiche e di luce ambientale, il costo di realizzazione e la complessità di implementazione. Le applicazioni di visione integrata possono essere utilizzate anche per far parte di un sistema di navigazione che usi i sistemi di visione integrata per le informazioni sulla segnaletica stradale. La fusione di diverse immagini, ad esempio i raggi X, Mri e CT per le applicazioni medicali, o delle immagini visibili e all’infrarosso per le applicazioni di sicurezza e di osservazione, costituiscono un paio di ulteriori esempi di applicazione. Mentre spesso consideriamo le applicazioni di visione integrata che utilizzano lo spettro elettromagnetico nel visibile, dobbiamo anche ricordare che molte applicazioni di visione integrata fondono i dati provenienti al di fuori dello spettro elettromagnetico nel visibile.

I requisiti di elaborazione

Elaborare le immagini senza effettuarne la fusione necessita di una quantità considerevole di potenza di calcolo, poiché il sistema richiede l’esecuzione di numerose funzioni di pre-elaborazione. Ad esempio, quando si usano sensori di immagini a colori, questi includono l’Interpolazione del filtro di colori, la conversione/ricampionamento dello spazio di colori e la correzione delle immagini. In cima a questi requisiti, dobbiamo quindi applicare quelli dell’algoritmo stesso di fusione di sensori; nell’esempio di rilevazione di oggetti usato in precedenza, dovremmo effettuare una sottrazione dello sfondo, e individuare le soglie e i contorni per localizzare gli oggetti usando l’approccio più semplice, o magari potrebbe essere necessario un approccio di classificazione più intensivo, basato su istogrammi di gradienti orientati o su macchine a vettori di supporto. Con l’aumento della velocità dei fotogrammi e delle dimensioni delle immagini, aumenta anche la potenza di elaborazione richiesta per pre-elaborare le immagini ed estrarre le informazioni desiderate. Tuttavia, questa è solo la metà della storia poiché, mentre le informazioni richieste sono state estratte dall’immagine, abbiamo bisogno di configurare, veicolare, ricevere ed estrarre le informazioni dal secondo sensore nel caso si ricorra alla fusione eterogenea. Se abbiamo scelto un sistema omogeneo, dobbiamo eseguire ancora la stessa sequenza di elaborazione delle immagini per il secondo sensore come abbiamo fatto per il primo. Questa operazione fornisce due insiemi di dati, che devono essere elaborati per determinare la distanza effettiva dall’oggetto: si tratta della fusione vera e propria.

I vantaggi di un SoC Fpga interamente programmabile

All’interno dei sistemi di visione integrata è comune usare gli Fpga interamente programmabili o i SoC interamente programmabili per eseguire la sequenza di elaborazione delle immagini. In particolare, i SoC si distinguono nettamente nelle applicazioni di fusione nel campo della visione integrata. Indipendentemente dalla scelta fra Fpga e SoC, è comune per un’applicazione di visione integrata usare un processore per le operazioni di supervisione, controllo e comunicazione. Se decidessimo di usare un SoC interamente programmabile, questo sarebbe costituito da un’unità hardware con molte periferiche di supporto e standard di interfaccia. Mentre se usiamo un Fpga interamente programmabile, si tratterà un’unità logica come il MicroBlaze di Xilinx, con un supporto più personalizzato di periferiche e di interfacce. Esaminando un’applicazione di visione integrata basata sulla fusione di sensori, possiamo usare il processore anche per fornire una semplice interfaccia a molti sensori usati. Ad esempio, gli accelerometri, i magnetometri, i giroscopi e persino i sensori Gps sono disponibili con le interfacce periferiche seriali e le interfacce I2C, supportate sia dai dispositivi interamente programmabili Zynq-7000, sia dalle unità di elaborazione logiche MicroBlaze. Questo consente al software di ottenere in modo semplice e rapido le informazioni richieste da numerosi tipi di sensore diversi e di mantenere l’architettura scalabile. Mentre la sequenza di elaborazione delle immagini richiesta per estrarre le informazioni dal sensore di immagini può essere implementata agevolmente all’interno della matrice logica programmabile, quest’ultima può anche essere usata per eseguire la sequenza di elaborazione in presenza di altri sensori eterogenei come i Radar e i Lidar, o con istanze multiple nel caso di un sistema omogeneo. L’architettura strettamente accoppiata fra la memoria del processore e la logica programmabile che si ha con l’uso di un dispositivo Interamente Programmabile Zynq-7000 o un MPSoC UltraScale+ interamente programmabile, consente al software applicativo di accedere agli insiemi di dati ottenuti per effettuare ulteriori elaborazioni e per prendere ulteriori decisioni. Poiché le catene separate di sensori sono implementate su logica, esse operano in parallelo, e ciò diventa molto vantaggioso quando è richiesta la sincronizzazione, come nel caso della visione stereoscopica. Per accelerare la consegna dell’applicazione basata sulla fusione di sensori realizzata su logica programmabile, possiamo ricorrere alla sintesi ad alto livello per sviluppare direttamente gli algoritmi da implementare all’interno della matrice logica programmabile.

Esempi di architetture

Nello sviluppo dell’algoritmo di rilevazione degli oggetti e delle distanze precedentemente illustrato, si può adottare con successo un approccio eterogeneo basato su un SoC interamente programmabile. Mentre i tipi di sensore saranno diversi per entrambe le applicazioni, l’obiettivo finale di entrambe le architetture è di inserire due serie di dati all’interno della memoria Ddr del sistema di elaborazione, massimizzando al contempo le prestazioni fornite dalla matrice logica programmabile. L’implementazione di un sistema omogeneo di rilevazione degli oggetti richiede l’uso dello stesso tipo di sensori, in questo caso di un sensore di immagini Cmos. Quest’ultimo ha il vantaggio di permettere lo sviluppo di un’unica catena di elaborazione delle immagini, e può essere istanziato due volte all’interno della matrice logica programmabile per entrambi i sensori di immagini. Uno dei criteri determinanti di un sistema di visione stereoscopica implementato in architettura omogenea è la necessità di sincronizzare entrambi i sensori di immagine. La realizzazione di entrambe le catene di elaborazione delle immagini all’interno della matrice logica programmabile in parallelo e con lo stesso clock, con opportuni vincoli, può contribuire a soddisfare questo requisito stringente. Mentre il calcolo del parallasse richiede un’elaborazione intensa, la possibilità di eseguire la stessa catena di elaborazione delle immagini due volte fornisce un risparmio significativo dei costi di sviluppo. L’architettura dell’approccio omogeneo mostra le due catene di elaborazione delle immagini che sono basate prevalentemente sui blocchi IP disponibili. I dati di immagine sono catturati usando un modulo IP su misura come interfaccia sensori e sono convertiti dal formato parallelo a flussi di tipo Axi. Questo permette di ottenere una catena di elaborazione facilmente espandibile; al contempo possiamo trasferire i risultati dalla catena di elaborazione delle immagini all’interno della memoria Ddr del sistema di elaborazione, usando le interconnessioni Axi ad alte prestazioni combinate con il Dma video. Per quanto riguarda l’esempio eterogeneo che fa uso di tipi di sensori differenti, potremmo combinare l’architettura di rilevazione degli oggetti con sensori di immagine, come illustrato in precedenza, con la rilevazione della distanza tramite radar. Per l’implementazione del radar abbiamo due opzioni: un approccio impulsato (Doppler) o un’onda continua. La decisione su quale scegliere dipenderà dai requisiti dell’applicazione finale, tuttavia entrambe seguiranno un approccio simile. L’architettura dell’approccio basato sull’uso del radar può essere divisa in due parti: la generazione del segnale e la ricezione del segnale. La prima genererà il segnale a onda continua o l’impulso da trasmettere, ed entrambi gli approcci richiederanno l’interfacciamento con un convertitore digitale-analogico ad alta velocità da parte del modulo IP generatore di segnali. La ricezione dei segnali a sua volta richiede l’uso di un convertitore analogico-digitale ad alta velocità per catturare l’onda continua o il segnale impulsato ricevuto. Per l’elaborazione dei segnali, entrambi gli approcci utilizzeranno un approccio di analisi basato sulla Fft realizzato usando la matrice logica programmabile; ancora una volta possiamo trasferire gli insiemi di dati risultanti alla memoria Ddr del sistema di elaborazione usando il Dma. Indipendentemente da quale architettura di implementazione abbiamo scelto, l’algoritmo di fusione di entrambi gli insiemi di dati è eseguito via software dal sistema di elaborazione. Questi algoritmi di fusione possono anche essere ad alta intensità di banda di elaborazione, e un’opzione disponibile per ottenere prestazioni superiori consiste nello sfruttare le potenzialità del toolset disponibile, in particolare dell’ambiente di progettazione SDSoC. SDSoC fornisce la capacità di trasferire perfettamente le funzioni software fra il processore e la logica programmabile di un SoC usando Vivado HLS e un’infrastruttura per la connettività, entrambi sono trasparenti allo sviluppatore software. Ricorreremo naturalmente alla sintesi ad alto livello per sviluppare le funzionalità delle catene di elaborazione delle implementazioni di tipo sia omogeneo, sia eterogeneo. Possiamo tuttavia estendere ciò ad un passo successivo e creare una piattaforma SDSoC su misura per l’implementazione da noi scelta, e quindi sfruttare le potenzialità dell’SDSoC usando le risorse logiche non allocate per accelerare ulteriormente le prestazioni del sistema complessivo di visione integrata.

Pubblica i tuoi commenti