Quando usare gli FPGA in Robotica?


12

FPGA ha buoni punti come molti punti I / O, ma ancora una volta devi pensare a cose a un livello molto basso con infradito e pioniere in aree in cui le cose non sono ancora mature - per esempio vedi questa domanda qui su strumenti di sviluppo su FPGA - questa è la mia comprensione al momento! Ora FPGA è stato utilizzato per creare un'eccellente destrezza nelle mani robotiche come qui . Ora alcune persone commercializzano FPGA per la prototipazione rapida e progetti "lungimiranti" come qui , non li capisco perfettamente: se non hai bisogno di molti punti I / O per cose come i sensori, perché scegliere FPGA per un robot? Così

Quando scegliere FPGA per un progetto di robotica?


Se hai bisogno di parallelismo, allora è logico utilizzare FPGA per ottenere ciò. Inoltre, puoi personalizzare il tuo "chip design" e aggiornare "facilmente" alcune funzionalità senza un nuovo chip hardware. Ho visto esempi sul rilevamento di più oggetti dalla fotocamera in tempo reale. Di sicuro è sovraccarico per i progetti più piccoli.
Gossamer,

Risposte:


4

Non sono sicuro di ciò che nella domanda collegata sugli strumenti di sviluppo ti faccia pensare che non siano maturi. È vero che molti di loro sono proprietari e non open source. Ma pensavo che gli strumenti fossero abbastanza maturi anche quando questa domanda fu posta tre anni fa. Oggi Xilinx , Altera e Lattice hanno tutti ambienti di sviluppo disponibili gratuitamente che funzionano su Windows e Linux con supporto a 32 e 64 bit. Se insisti sull'open source Icarus Verilog può fare parecchio. Ma rimarrei personalmente con gli strumenti specifici del fornitore.

Gli FPGA non sono solo un mucchio di infradito configurabili. Considera l' Altera NIOS II . Un processore soft-core a 32 bit in grado di eseguire Linux. Combina comunicazioni e altre periferiche da OpenCores o da Xilinx , Altera o Lattice e hai creato un microcontrollore personalizzato con tutto ciò di cui hai bisogno e niente che non lo fai. Puoi anche scrivere il codice C per il processore NIOS II e avere determinate funzioni implementate direttamente nell'hardware FPGA se hai bisogno della velocità. Quel livello alto ti sta pensando abbastanza?

Gli FPGA hanno un costo di investimento iniziale elevato. Ma è più economico e più semplice aggiungere funzionalità più avanti nel processo di progettazione. Questo è ciò che si intende per design "lungimirante". Prendi in considerazione un progetto in cui desideri aggiungere alcuni motori aggiuntivi al tuo robot ma hai esaurito i generatori PWM sul tuo microcontrollore. cosa fai? Aggiungi un altro microcontrollore? Acquistare chip PWM separati e collegarli a un'interfaccia di comunicazione? Cosa succede se tutte le interfacce di comunicazione sono in uso? Con un FPGA, questo si riduce quasi interamente a un'operazione di copia e incolla. È molto più semplice, economico e veloce scalare un progetto per includere nuove funzionalità senza acquistare tanto hardware aggiuntivo con un FPGA.

Ma probabilmente il motivo principale per utilizzare un FPGA è la velocità. Non sto parlando di pura velocità di clock. Ma quando hai bisogno che succedano molte cose contemporaneamente. Come menzionato da Gossamer, il parallelismo è ciò in cui FPGA è davvero bravo. I progetti di filtri traggono particolare vantaggio da questo tipo di architettura parallela. Se è necessario filtrare e rispondere a un sensore in rapida evoluzione, è necessario un FPGA. Sono anche abbastanza bravi nell'elaborazione video poiché anche questo beneficia dell'elaborazione parallela.

Prendi ad esempio questo robot manuale ad alta velocità . Deve elaborare il video dalla telecamera ad alta velocità (1000 fotogrammi al secondo) e dai sensori tattili e rispondere manipolando numerosi attuatori in pochi millisecondi. Questo tipo di progetto è quando si ha bisogno di scegliere FPGA.

elaborazione della visione massicciamente parallela


Potresti chiarire questo "Gli FPGA hanno un alto costo iniziale di investimento"? Correlati qui : i prezzi sembrano molto bassi. Intendi alti costi di formazione o qualche altra cifra?
hhh,

1
@hhh non stavo parlando del costo dei chip grezzi. Stavo parlando di costi di sviluppo. Prendi in considerazione un kit di sviluppo di microcontrollori come PandaBoard . Contiene un ARM Cortext A9 per $ 181. Una scheda di sviluppo FPGA che può contenere un A9 come il Cyclone V costa $ 1.099.
embedded.kyle

@hhh Esistono ovviamente kit di sviluppo FPGA più economici. Ma stavo cercando di trovare qualche metrica con cui confrontare due cose così diverse. Quindi un kit di sviluppo che ha (quasi) approssimativamente la stessa potenza di elaborazione è circa 10 volte maggiore.
embedded.kyle

@hhh Il ARM più economico su Mouser è $ 0,80 . Il FPGA più economico è $ 2,80 .
embedded.kyle

2
@hhh Quella mano è la ricerca all'avanguardia con probabilmente decine se non centinaia di migliaia di dollari di attrezzature personalizzate che la gestiscono. L'elaborazione video in generale tende ad essere di fascia alta. Vedi qui e qui . E nessuno dei due potrebbe probabilmente elaborare video 1kfps. Più come 30-60 fps. La scheda che hai elencato non ha ingressi video. Anche se sicuramente potrebbe controllare gli attuatori ed elaborare i sensori tattili. Con aria di sfida potrebbe emulare la mano che hai collegato.
embedded.kyle

2

Penso che potrebbe esserci un malinteso su cosa sia effettivamente un FPGA e quando viene utilizzato nei progetti. Vorrei quindi provare a spiegare prima quella parte.

FPGA e quando si potrebbe desiderare di averne uno ...

A rischio di semplificazione, un FPGA è poco più di un processore che risulta essere "riconfigurabile".

Perché qualcuno dovrebbe desiderare un microprocessore "riconfigurabile"? Bene, perché costa troppo per fabbricare un processore al silicio per permettersi di farlo per uno, due o anche duecento chip. Dovresti eseguire lotti di migliaia di chip per renderlo economicamente fattibile.

Dal momento che nessun progetto è mai privo di bug per la prima volta, seguire la strada del silicio impegna effettivamente un'azienda ad almeno due se non più prove, il tutto a costi di fabbricazione enormi.

Ciò significa essenzialmente che pochissime società commerciali saranno interessate a progettare e portare alla fabbricazione qualcosa di diverso dal chip con un appeal commerciale abbastanza ampio.

Quindi, se ti viene in mente un design brillante che giustifica un microprocessore personalizzato, potresti provare a dare vita alla tua idea con un budget ridotto implementandolo in un FPGA, in cui il chip effettivo è semplicemente una raccolta di porte e un 'programma' (in genere VHDL o Verilog) organizza queste porte in un vero microprocessore.

Ma questo è un bel po 'lungo una strada completamente diversa (design a microprocessore!) ...

Il che mi porta a suggerirlo

... Gli FPGA non sono essenziali per la robotica - almeno all'inizio

Ciò di cui hai bisogno per la robotica è un processore . Un FPGA è solo un tipo speciale di processore (riconfigurabile).

Ti chiedi se "dovresti"? Dipende dalle tue conoscenze e da dove risiedono i tuoi interessi reali: prima la progettazione a microprocessore o la robotica?

Se i microprocessori sono la tua passione, allora sicuramente! E la robotica è una grande area di applicazione per microprocessori personalizzati - forse una corteccia visiva con molti percorsi decisionali paralleli gestiti direttamente nell'hardware o una moltiplicazione dei tensori nell'hardware - fondamentalmente tutto ciò che i processori generici non sono in grado di gestire bene.

Ma se hai intenzione di progettare microprocessori in FPGA, beh, ovviamente dovrai avere tutte quelle conoscenze di basso livello che menzioni e altro ancora, perché fondamentalmente progetterai il tuo processore. Il che non ha nulla a che fare con la robotica, anche se l'applicazione di destinazione potrebbe essere la robotica.

La maggior parte dei designer può probabilmente trovare un processore esistente che farà la maggior parte di ciò di cui avrà mai bisogno.

Quindi penso che probabilmente non hai bisogno di un FPGA.

Una tabella di marcia iniziale: dalle capacità commerciali a (forse) un FPGA ...

Il primo obiettivo a mio avviso è quello di cercare di integrare tutti i tuoi concetti creativi in ​​un robot funzionante (una sfida piuttosto intensa in sé).

Se scopri di avere colli di bottiglia specifici e significativi nella progettazione, il prossimo obiettivo è ottimizzare la selezione / progettazione dei tuoi processori, chip ancora disponibili in commercio. Forse più grande, più veloce (compromesso con assorbimento di potenza, dissipazione del calore). Forse chip più piccoli e dedicati che gestiscono compiti specifici e si interfacciano con il cervello principale (compromesso con algoritmi / complicazioni logiche).

Solo se ci sono funzionalità che semplicemente non sarai in grado di gestire i chip commerciali, allora potresti prendere in considerazione l'implementazione di un processore specializzato all'interno di un FPGA perché a quel punto ci saranno chiari vantaggi che speri di ottenere 'lanciando il tuo "e puoi concentrarti solo sull'implementazione di queste funzionalità, con le giuste interfacce per il resto del tuo design.

Altrimenti, verrai probabilmente messo da parte dal tuo obiettivo principale (che presumo sia davvero costruire un robot!)

In conclusione: gli FPGA sono una distrazione dall'avvio della robotica, fino a quando non si è abbastanza in fondo alla strada della robotica, e hanno acquisito alcune brecce nella progettazione di elettronica digitale / microprocessore da qualche parte lungo la strada.


Posso pensare a molti esempi in settori come l'elaborazione video in cui l'elaborazione parallela con FPGA è essenziale per la velocità e risultati più accurati. Si sono verificati errori in cui le persone tentano di implementare il rilevamento dell'iride rumorosa in tempo reale con una CPU singola. No. FPGA ha le sue aree specifiche in cui oscilla come mani robotiche di elevata destrezza o elaborazione video precisa / veloce. Non riesco a comprendere la giustapposizione di FPGA e microprocessore in questo modo. Sono animali molto diversi con i loro lati positivi / negativi. Mistaken? Qualche idea se questo tipo di aree valide per FPGA sia elencato da qualche parte?
hhh,

Hai certamente ragione sul fatto che ci sono molte aree in cui gli FPGA sono un vantaggio - non ho escluso quelli nella mia risposta. Il problema è dove ti trovi sulla curva dell'esperienza e quanto sei chiaro sui vantaggi specifici che vuoi ottenere dall'utilizzo di un FPGA. Se non conosci la risposta, probabilmente non ne avrai bisogno! (Questo fa eco alla risposta di Jakob qui sotto.)
Assad Ebrahim

1

Avendo lavorato sia con FPGA che con microcontrollori in progetti di robotica, direi proprio ora: qualunque cosa la persona che implementa l'attività abbia più esperienza. Se conosci entrambi allo stesso modo, non ti faresti la domanda. Se non lo sai bene, questi sarebbero i punti da seguire:

  • Sono richiesti tempi complessi sulle porte I / O? Il controllo del motore trifase può avere tali requisiti. Gli FPGA hanno un leggero vantaggio qui.
  • Riesci a parallelizzare il tuo algoritmo a bassissima latenza? Qui l'FPGA non compete realmente con i microcontrollori, ma più con i PC incorporati. La maggior parte delle cose andrei per il PC incorporato, ma potresti avere un vantaggio con un FPGA per alcune applicazioni specifiche. L'elaborazione stereo densa, ad esempio, viene spesso eseguita negli FPGA. Molte telecamere utilizzano FPGA per l'elaborazione del flusso di dati.

Inoltre, vengono spesso utilizzate soluzioni ibride. O con due chip, quindi un microcontrollore per il codice del programma e un FPGA per IO o qualche altra attività. Esistono anche numerosi FPGA che dispongono effettivamente di un microcontrollore incorporato.

Non sarei così duro con gli FPGA come alcuni altri post, ma anche in generale direi che, a meno che tu non conosca bene il tuo VHDL, starai meglio usando il microcontrollore o anche meglio i PC ancora incorporati.


Puoi mostrare alcuni progetti di esempio che potrebbero aiutare a capire che tipo di cose sono buone da fare con gli FPGA e quali con i microcontrollori? Supponiamo ad esempio un robot che segue la linea: funziona abbastanza bene con un singolo microcontrollore su una superficie piana e pulita fino a linee più sfocate che richiedono nitidezza dell'immagine / convoluzioni / ecc. Se una linea nella foresta (o altra superficie rumorosa), sarebbe una sfida molto più difficile (dubito che sia possibile farlo anche con l'FPGA). Hai fatto qualche progetto robotico nel mondo reale in cui avevi usato fpga per esempio per l'elaborazione di immagini / video in tempo reale? +1 per VHDL.
hhh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.