Le telecamere intelligenti, la visione artificiale, la visione meccanica... non importa come la si chiami, le applicazioni di visione stanno trovando spazio in sempre più prodotti. L'applicazione classica con cui la maggior parte dei progettisti di PCB è familiare è quella manifatturiera, e più di recente con il riconoscimento facciale sullo smartphone. I progettisti che lavorano regolarmente con progetti e sistemi di visione meccanica stanno osservando molte applicazioni uniche in medicina, automotive, robotica, aerospaziale, sicurezza e certamente in altri settori.
Una cosa interessante che accade nell'industria elettronica è la facilità con cui la nuova tecnologia può essere integrata in nuovi sistemi man mano che continua a diffondersi. La visione meccanica ha certamente superato la soglia fino al punto in cui la standardizzazione, il supporto agli sviluppatori e una ricchezza di componenti sono disponibili per i progettisti che vogliono innovare in questo settore. Oggi, ci sono diverse piattaforme hardware popolari che rappresentano un'opzione di livello base per i progettisti più nuovi. Se sei oltre la prototipazione e stai preparando hardware di grado produttivo, i processori più recenti stanno abilitando sistemi più altamente integrati che sfruttano tecnologie avanzate come l'apprendimento automatico.
In questa guida, esploreremo alcuni dei componenti necessari per costruire sistemi di visione meccanica e le risorse disponibili per gli sviluppatori embedded. I sistemi di visione meccanica hanno un importante elemento di ingegneria hardware e meccanica poiché stiamo trattando con telecamere e ottiche. Lo sviluppo di questi sistemi è molto ricco, con compiti che spaziano tra più discipline. Fortunatamente, i produttori di componenti e gli sviluppatori open-source hanno accesso a molte risorse per aiutare ad accelerare la progettazione hardware e lo sviluppo dei sistemi, e si incoraggiano gli sviluppatori interessati a guardare alcuni degli esempi che mostreremo qui per iniziare.
Per quanto riguarda l'elettronica, i sistemi di visione meccanica hanno un'architettura alquanto generica rispetto ad altri sistemi. Il diagramma a blocchi mostrato di seguito illustra un'architettura generica di alto livello che viene implementata nei sistemi di visione meccanica. Questi sistemi possono avere livelli variabili di integrazione e fattori di forma, con alcuni dei blocchi mostrati di seguito possibilmente integrati in un processore più potente.
Architettura di sistema di visione meccanica di alto livello
Non esiste un sistema di visione meccanica quintessenziale che possa essere usato come riferimento per altri progetti poiché la visione meccanica è una capacità, non un prodotto o un tipo specifico di progetto. I sistemi di visione meccanica hanno caratteristiche comuni come mostrato nel diagramma a blocchi sopra, ma sono implementati con diversi set di componenti. Piuttosto che elencare liste di componenti per supportare i sistemi di visione meccanica, dobbiamo partire dal livello del processore per vedere come gli algoritmi di elaborazione delle immagini possono essere implementati in modo efficiente.
Gli MCU o gli SoC basati su MCU sono sempre stati popolari, anche per sistemi che implementano capacità di visione artificiale. Gli MCU con interfacce digitali standard possono interfacciarsi con ASIC più specializzati per l'elaborazione visiva, mentre gli FPGA possono essere abbastanza grandi da implementare l'acquisizione di immagini in linea, funzioni DSP e altri processi a livello di sistema. I GPU possono fornire un processore visivo esterno dedicato che restituisce i dati al controller host.
In termini di livello di avanzamento, le architetture MPU + FPGA o MPU + GPU sono preferibili per la visione artificiale quasi in tempo reale. Sono anche preferibili per l'elaborazione di immagini ad alta risoluzione poiché l'FPGA/GPU può implementare la parallelizzazione, che riduce il tempo di elaborazione quando è richiesta l'elaborazione ad alta risoluzione/profondità di colore. Questo è il principale vantaggio dell'FPGA poiché la logica è flessibile, tuttavia la gestione e gli algoritmi per l'elaborazione avanzata sono più difficili da sviluppare senza esperienza pregressa.
Tutto questo non significa che gli MCU e gli MPU non possano essere utilizzati come controller host nelle applicazioni di visione artificiale. Ad esempio, il tuo telefono e il computer non utilizzano questi e possono eseguire alcuni compiti di elaborazione di immagini più semplici da video a basso frame rate e immagini statiche. Per essere giusti, la CPU/SoC in quei dispositivi tende ad avere molto più calcolo di un MPU di fascia alta. Un MCU potrebbe essere utilizzato per l'elaborazione di immagini a bassa risoluzione, basso frame rate, bassa profondità di colore o monocromatica, e man mano che aggiungi più calcolo puoi gestire immagini più dettagliate. Gli MPU sono un'opzione migliore in produzione poiché potresti aver bisogno di accedere alla memoria esterna ad alta velocità, il che significa che avrai bisogno di un'interfaccia DDR RAM e possibilmente PCIe per alcuni periferici, qualcosa che tipicamente non troverai su un MCU più lento.
Se vuoi implementare algoritmi di riconoscimento e segmentazione di immagini più avanzati nel tuo sistema, allora potresti optare per un SOM, COM o computer su scheda singola come controller principale per la tua applicazione di visione artificiale. Se un processore ha abbastanza memoria on-chip e RAM esterna, può tipicamente implementare la maggior parte dei compiti di acquisizione ed elaborazione, gestendo anche un'applicazione per controllare il resto del tuo sistema. Queste architetture sono spesso utilizzate per compiti di segmentazione di immagini basati su soglia e rilevamento di oggetti in applicazioni molto specifiche da dati video a basso a moderato frame rate.
Come molti altri progetti che operano essenzialmente con segnali analogici di basso livello, i sistemi e i progetti di visione artificiale hanno il proprio insieme di sfide elettriche che devono essere considerate. Alcune delle soluzioni si trovano al livello di elaborazione delle immagini, altre sono a livello di sistema e riguardano la selezione dei componenti. Ecco alcune delle principali sfide che i progettisti devono considerare nella progettazione della visione artificiale:
Gestione del calore: Le telecamere ad alta risoluzione montate su schede in sistemi più compatti possono ricevere molto calore durante il funzionamento, il che potrebbe richiedere un dissipatore di calore o un flusso d'aria attraverso l'involucro per rimanere freschi. I sistemi con processori più piccoli e schede più grandi possono di solito rimanere freschi da soli, ma le schede più piccole con processori più veloci potrebbero richiedere un materiale di interfaccia legato all'involucro per rimuovere il calore.
EMI/EMC: Poiché i sistemi di visione artificiale sono generalmente sistemi a segnale misto, richiedono un layout adeguato per prevenire interferenze tra componenti digitali e l'uscita da un sensore CMOS o CCD. CMOS potrebbe essere un'opzione migliore poiché la conversione dei dati viene eseguita a livello di chip. Per garantire un recupero accurato dell'immagine in sistemi compatti con elaborazione veloce, assicurati di implementare alcune delle migliori pratiche per la soppressione EMI.
Integrità dell'alimentazione: I sistemi di visione e i sistemi HMI possono riscontrare problemi di integrità dell'alimentazione se il layout non è costruito correttamente, anche nel caso in cui il design non funzioni con componenti o protocolli ad alta velocità. Questo potrebbe sembrare un problema che può essere filtrato via, ma non è così. Invece, la soluzione può essere semplice come garantire che un piano di massa sia posizionato per instradare tutti i segnali digitali che arrivano sulla scheda principale.
Montaggio dell'ottica: I sistemi di visione richiedono ottiche per definire piani oggetto e immagine, e per formare immagini chiare sul sensore di imaging in modo che possa avvenire l'acquisizione dei dati. I moderni sistemi di visione artificiale necessitano di un montaggio stabile con bassa isteresi e possibilmente una messa a fuoco automatica con controllo motore integrato. Questa è una sfida di design meccanico così come di design elettrico, dove quest'ultimo coinvolge il consumo di energia in un circuito di controllo motore e di temporizzazione.
Ovviamente, non possiamo mostrare ogni possibile componente in questo articolo poiché sarebbe semplicemente troppo lungo. Quello che possiamo fare è darti un buon elenco di componenti che puoi usare per iniziare a costruire diverse parti del tuo sistema. Nell'elenco qui sotto, ho incluso alcuni componenti di esempio da ogni parte di un nuovo sistema che puoi usare per iniziare:
MCU come STM32 e MSP430 sono un'ottima opzione per gestire un sistema di visione artificiale leggero e implementare alcuni compiti di inferenza AI più semplici.
Per qualcosa con molta più capacità di calcolo, la piattaforma FPGA Zynq è un'ottima opzione per i sistemi di visione artificiale. Xilinx offre anche molto supporto agli sviluppatori per i sistemi di visione artificiale basati su Zynq.
Sensori di immagine CMOS e sensori CCD possono essere sia monocromatici che a colori, e sono disponibili in una gamma di risoluzioni. Qualcosa come il MT9P031I12STC-DR1 di ON Semiconductor è un buon esempio di sensore CMOS a colori per applicazioni di visione artificiale ad alta risoluzione.
Per sviluppare un'applicazione di alto livello, OpenCV è un eccellente insieme di librerie open source che include molte delle funzioni standard di elaborazione delle immagini utilizzate nei sistemi di visione artificiale. Ci sono altre librerie open source online che possono essere utilizzate per lo sviluppo di applicazioni più specializzate.
Raccomanderei una GPU o FPGA per compiti più generalizzati come il riconoscimento di immagini, la segmentazione e l'identificazione di oggetti con tracciamento nei dati video senza applicare pre-elaborazioni specifiche per l'applicazione (ad es., da immagini grezze). Menziono questo qui perché dobbiamo considerare come interfacciarsi con il sensore di immagine, e il sensore deve essere abbinato al processore. In un FPGA, la logica di acquisizione e l'elaborazione successiva possono essere implementate in parallelo insieme al resto della logica per l'applicazione.
Una piattaforma hardware open popolare che può essere utilizzata per lo sviluppo del sistema è OpenMV. Questi moduli camera incorporano logica per l'acquisizione di immagini, hardware per il montaggio di elementi ottici e un PCB per garantire EMI/EMC e SI/PI. Sono anche compatibili con MCU STM32 e altre piattaforme. Questo è un buon sistema per gli sviluppatori di applicazioni che vogliono utilizzare un processore esterno come controller host per un'applicazione più ampia nel sistema, ma senza impantanarsi nello sviluppo e nel debug hardware.
Modulo camera M7 (a sinistra) e Modulo adattatore FLIR Lepton (a destra).
La visione artificiale è estremamente utile in tutte le sue forme, e non dovremmo sorprenderci che soluzioni avanzate basate su MCU, MPU o FPGA debbano essere integrate con il cloud. A seconda di come viene sfruttato il calcolo nel cloud, potrebbe essere più vantaggioso delegare l'elaborazione al data center piuttosto che eseguirla in loco, quindi potrebbe essere utilizzato un MCU o un MPU leggero. Quando è richiesta un'elaborazione rapida sul campo, i compiti di elaborazione dovrebbero essere eseguiti sul campo con un controller host più potente (FPGA, MPU + FPGA o MPU + GPU). Ancora una volta, la scelta dipende dalla quantità di pre-elaborazione che si esegue sul dispositivo per pulire e comprimere le immagini prima di inviarle al cloud per l'elaborazione.
Per le applicazioni AI/ML che coinvolgono la visione artificiale, alcune aziende forniscono SoC e ASIC come complemento a processori più lenti o come moduli aggiuntivi per SBC. Google Coral è una di queste opzioni, agendo come un processore dedicato per l'esecuzione di modelli TensorFlow Lite che coinvolgono l'inferenza dai dati delle immagini. Altre opzioni stanno arrivando sul mercato da startup che puntano all'inferenza AI per più flussi video, sostituendo idealmente le GPU con pacchetti più piccoli.
I sistemi di visione artificiale devono fare molto più che semplicemente catturare ed elaborare immagini. I sistemi di oggi sono connessi, si interfacciano con più sensori, Alcuni altri componenti che potresti aver bisogno per il tuo sistema di visione artificiale includono:
La progettazione di sistemi di visione artificiale richiede competenze in molteplici aree e la collaborazione con un team, ma la selezione dei componenti per questi sistemi non dovrebbe essere difficile. Quando hai bisogno di trovare componenti per la tua applicazione di visione artificiale, utilizza le funzionalità avanzate di ricerca e filtraggio in Octopart. Quando utilizzi il motore di ricerca elettronica di Octopart, avrai accesso ai dati aggiornati sui prezzi dei distributori, all'inventario dei pezzi e alle specifiche dei pezzi, ed è tutto liberamente accessibile in un'interfaccia user-friendly. Dai un'occhiata alla nostra pagina sui circuiti integrati per trovare i componenti di cui hai bisogno.
Rimani aggiornato con i nostri ultimi articoli iscrivendoti alla nostra newsletter.