Wann sollten FPGAs in der Robotik eingesetzt werden?

12

FPGA hat gute Punkte wie viele E / A-Punkte, aber andererseits müssen Sie Dinge auf sehr niedrigem Niveau mit Flip-Flops und Pionieren in Bereichen denken, in denen die Dinge noch nicht ausgereift sind - siehe zum Beispiel diese Frage hier über Entwicklungstools auf FPGAs - das ist derzeit mein Verständnis! Jetzt wurde FPGA verwendet, um in Roboterhänden wie hier hervorragende Fingerfertigkeit zu erzielen . Jetzt vermarkten einige Leute FPGA für schnelles Prototyping und "zukunftsweisende" Designs wie hier . Ich verstehe sie nicht ganz: Wenn Sie nicht viele E / A-Punkte für Dinge wie Sensoren benötigen, warum sollten Sie FPGA für einen Roboter wählen? So

Wann sollte FPGA für ein Projekt in der Robotik ausgewählt werden?

hhh
quelle
Wenn Sie Parallelität benötigen, ist es sinnvoll, FPGA zu verwenden, um dies zu erreichen. Sie können auch Ihr eigenes "Chip-Design" anpassen und einige Funktionen "leicht" aktualisieren, ohne einen neuen Hardware-Chip zu benötigen. Ich habe Beispiele zur Erkennung mehrerer Objekte von einer Kamera in Echtzeit gesehen. Für kleinere Projekte ist dies mit Sicherheit ein Aufwand.
Gossamer

Antworten:

4

Ich bin nicht sicher, was Sie in der verknüpften Frage zu Entwicklungswerkzeugen dazu bringt, zu denken, dass sie nicht ausgereift sind. Es ist wahr, dass die meisten von ihnen proprietär und nicht Open Source sind. Aber ich dachte, dass die Werkzeuge schon ziemlich ausgereift waren, als diese Frage vor drei Jahren gestellt wurde. Heute verfügen Xilinx , Altera und Lattice über frei verfügbare Entwicklungsumgebungen, die unter Windows und Linux mit 32- und 64-Bit-Unterstützung ausgeführt werden. Wenn Sie auf Open Source Icarus Verilog bestehen einiges leisten. Aber ich würde mich persönlich an die herstellerspezifischen Tools halten.

FPGAs sind mehr als nur eine Reihe konfigurierbarer Flip-Flops. Betrachten Sie die Altera NIOS II . Ein 32-Bit-Softcore-Prozessor, auf dem Linux ausgeführt werden kann. Kombinieren Sie Kommunikation und andere Peripheriegeräte von OpenCores oder Xilinx , Altera oder Lattice und Sie haben einen benutzerdefinierten Mikrocontroller mit allem, was Sie brauchen, und nichts, was Sie nicht brauchen. Sie können sogar C-Code für den NIOS II-Prozessor schreiben und bestimmte Funktionen direkt in der FPGA-Hardware implementieren wenn Sie die Geschwindigkeit benötigen. Ist das hoch genug für Sie zu denken?

FPGAs haben hohe Anfangsinvestitionskosten. Es ist jedoch billiger und einfacher, Funktionen später im Entwurfsprozess hinzuzufügen. Das ist es, was mit "vorausschauenden" Designs gemeint ist. Stellen Sie sich ein Projekt vor, bei dem Sie Ihrem Roboter einige zusätzliche Motoren hinzufügen möchten, aber auf Ihrem Mikrocontroller keine PWM-Generatoren mehr vorhanden sind. Wie geht's? Einen weiteren Mikrocontroller hinzufügen? Kaufen Sie separate PWM-Chips und verbinden Sie diese mit einer Kommunikationsschnittstelle? Was ist, wenn alle Ihre Kommunikationsschnittstellen verwendet werden? Bei einem FPGA ist dies fast ausschließlich ein Kopier- und Einfügevorgang. Es ist viel einfacher, billiger und schneller, ein Design so zu skalieren, dass es neue Funktionen enthält, ohne dass Sie mit einem FPGA so viel zusätzliche Hardware kaufen müssen.

Der wahrscheinlich größte Grund für die Verwendung eines FPGA ist jedoch die Geschwindigkeit. Ich spreche nicht von reiner Taktrate. Aber wenn viele Dinge gleichzeitig passieren müssen. Wie Gossamer bereits erwähnt hat, können FPGAs wirklich gut mit Parallelität umgehen. Filterdesigns profitieren besonders von dieser Art von paralleler Architektur. Wenn Sie einen sich schnell ändernden Sensor filtern und darauf reagieren müssen, benötigen Sie ein FPGA. Sie sind auch ziemlich gut in der Videoverarbeitung, da auch diese von der Parallelverarbeitung profitiert.

Nehmen Sie zum Beispiel diesen Hochgeschwindigkeits-Handroboter . Es muss das Video von der Hochgeschwindigkeits-Bildverarbeitungskamera (1000 Bilder pro Sekunde) sowie den Tastsensoren verarbeiten und durch die Manipulation zahlreicher Aktoren in nur wenigen Millisekunden reagieren. Diese Art von Projekt ist , wenn Sie benötigen FPGAs zu wählen.

massiv parallele Bildverarbeitung

embedded.kyle
quelle
Könnten Sie klarstellen, dass FPGAs hohe anfängliche Investitionskosten verursachen? Verwandt hier : Die Preise sehen sehr niedrig aus. Meinen Sie hohe Trainingskosten oder eine andere Zahl?
Hhh
1
@hhh Ich habe nicht über Rohchipkosten gesprochen. Ich habe über Entwicklungskosten gesprochen. Betrachten Sie ein Mikrocontroller-Entwicklungskit wie das PandaBoard . Enthält einen ARM Cortext A9 für 181 US-Dollar. Ein FPGA-Entwicklungsboard, das einen A9 wie den Cyclone V aufnehmen kann, kostet 1.099 US-Dollar.
embedded.kyle
@hhh Es gibt natürlich günstigere FPGA-Entwicklungskits. Aber ich habe versucht, eine Metrik zu finden, anhand derer ich zwei Dinge vergleichen kann, die so unterschiedlich sind. Ein Entwicklungskit, das (sehr) ungefähr die gleiche Rechenleistung hat, ist also ungefähr 10x mehr.
embedded.kyle
@hhh Der billigste ARM für Mouser ist $ 0,80 . Das billigste FPGA kostet 2,80 US-Dollar .
embedded.kyle
2
@hhh Diese Hand ist Spitzenforschung mit wahrscheinlich zehn, wenn nicht hunderttausenden von Dollar an kundenspezifischer Ausrüstung, die sie laufen lässt. Die Videoverarbeitung ist im Allgemeinen eher am oberen Ende. Sehen Sie hier und hier . Und keiner könnte wahrscheinlich 1kfps Video verarbeiten. Eher wie 30-60fps. Die von Ihnen aufgeführte Karte hat keine Videoeingänge. Es könnte jedoch mit Sicherheit die Aktuatoren steuern und die taktilen Sensoren verarbeiten. Könnte auf jeden Fall die Hand emulieren, die du verknüpft hast.
embedded.kyle
2

Ich denke, es könnte ein Missverständnis darüber geben, was ein FPGA tatsächlich ist und wann es in Designs verwendet wird. Lassen Sie mich zuerst versuchen, diesen Teil zu erklären.

FPGAs und wann man eines haben möchte ...

Bei einem FPGA besteht die Gefahr der Vereinfachung, dass es sich nur um einen Prozessor handelt, der „rekonfigurierbar“ ist.

Warum sollte jemand einen "rekonfigurierbaren" Mikroprozessor wollen? Nun, weil es viel zu teuer ist, einen Siliziumprozessor herzustellen, um es sich für ein, zwei oder sogar zweihundert Chips leisten zu können. Sie müssten Tausende von Chips produzieren, um dies wirtschaftlich umzusetzen.

Da kein Design auf Anhieb fehlerfrei ist, muss ein Unternehmen auf der Siliziumroute mindestens zwei, wenn nicht sogar mehr Testläufe durchführen, und das alles zu enormen Herstellungskosten.

Dies bedeutet im Wesentlichen, dass nur sehr wenige kommerzielle Unternehmen daran interessiert sein werden, etwas anderes als Chips mit einer ausreichenden kommerziellen Anziehungskraft zu entwerfen und herzustellen.

Wenn Sie sich also ein brillantes Design einfallen lassen, das einen benutzerdefinierten Mikroprozessor rechtfertigt, ist dies möglicherweise der Fall versuchen , Ihre Idee zum Leben mit schmalem Budget zu bringen , indem sie in einem FPGA - Implementierung, wo der eigentliche Chip ist einfach eine Sammlung von Toren, und eine 'program' (normalerweise VHDL oder Verilog) ordnet diese Gatter in einem tatsächlichen Mikroprozessor an.

Aber das ist schon ein ganz anderer Weg (Mikroprozessor-Design!) ...

Was mich dazu bringt, das vorzuschlagen

... FPGAs sind für die Robotik nicht unbedingt erforderlich - zumindest von Anfang an

Was Sie für die Robotik benötigen, ist ein Prozessor . Ein FPGA ist nur eine spezielle Art von Prozessor (umkonfigurierbar).

Sie fragen, ob Sie "sollten"? Nun, das hängt von Ihrem Wissen und Ihren tatsächlichen Interessen ab - zuerst das Mikroprozessordesign oder zuerst die Robotik?

Wenn Mikroprozessoren Ihre Leidenschaft sind, dann auf jeden Fall! Und Robotik ist ein großartiger Anwendungsbereich für kundenspezifische Mikroprozessoren - vielleicht ein Vision-Cortex mit vielen parallelen Entscheidungswegen, die direkt in der Hardware behandelt werden, oder eine spezielle Tensormultiplikation in der Hardware - im Grunde alles, was generische Prozessoren von der Stange nicht gut handhaben können.

Aber wenn Sie Mikroprozessorkonstruktionen in FPGAs verwenden möchten, dann müssen Sie natürlich über all das geringe Wissen verfügen, das Sie erwähnen, und vieles mehr - denn im Grunde werden Sie Ihren eigenen Prozessor entwerfen. Was eigentlich nichts mit Robotik zu tun hat, obwohl Ihre Zielanwendung möglicherweise Robotik ist.

Die meisten Designer können wahrscheinlich einen vorhandenen Prozessor finden, der das meiste leistet, was sie jemals brauchen werden.

Ich denke, Sie brauchen wahrscheinlich kein FPGA.

Eine Einstiegs-Roadmap: von kommerziellen Fähigkeiten zu (vielleicht) einem FPGA ...

Meiner Meinung nach besteht das erste Ziel darin, all Ihre kreativen Konzepte in einen funktionierenden Roboter zu integrieren (eine ziemlich intensive Herausforderung an sich).

Wenn Sie feststellen, dass Ihr Design spezifische und erhebliche Verarbeitungsengpässe aufweist, besteht das nächste Ziel in der Optimierung der Auswahl / des Designs Ihrer Prozessoren, die noch im Handel erhältlich sind. Vielleicht größer, schneller (Kompromiss mit Stromverbrauch, Wärmeabgabe). Möglicherweise kleinere, dedizierte Chips, die bestimmte Aufgaben erledigen und mit dem Haupthirn kommunizieren (Kompromiss zwischen Algorithmus und Logik).

Nur wenn es Funktionen gibt, mit denen Sie keine kommerziellen Chips fertigbringen können, können Sie einen speziellen Prozessor in einem FPGA implementieren, da es an diesem Punkt ganz klare Vorteile gibt, die Sie sich erhoffen, wenn Sie Ihren eigenen rollen Sie können sich darauf konzentrieren, diese Funktionen mit den richtigen Schnittstellen für den Rest Ihres Designs zu implementieren.

Andernfalls werden Sie wahrscheinlich von Ihrem Hauptziel abkommen (ich gehe davon aus, dass es tatsächlich ein Ziel ist, einen Roboter zu bauen!)

Fazit: FPGAs sind eine Ablenkung vom Einstieg in die Robotik - bis Sie ein gutes Stück auf dem Weg in die Robotik sind - und haben auf dem Weg in die digitale Elektronik / Mikroprozessor-Entwicklung einige starke Einbußen hinzugewonnen.

Assad Ebrahim
quelle
Ich kann mir viele Beispiele in Bereichen wie der Videoverarbeitung vorstellen, in denen die Parallelverarbeitung mit FPGA für die Geschwindigkeit und genauere Ergebnisse von entscheidender Bedeutung ist. Es wurden Fehler festgestellt, bei denen versucht wurde, die Erkennung von verrauschten Blenden in Echtzeit mit einer einzelnen CPU zu implementieren. Nein. FPGA hat seine eigenen spezifischen Bereiche, in denen es rockt, z. B. Roboterhände mit hoher Geschicklichkeit oder präzise / schnelle Videoverarbeitung. Ich kann das Nebeneinander von FPGA und Mikroprozessor nicht so verstehen. Sie sind sehr unterschiedliche Tiere mit ihren eigenen guten / schlechten Seiten. Irrtum? Irgendeine Idee, ob diese Art von guten Bereichen für FPGA irgendwo aufgelistet ist?
hhh
Sie haben sicherlich Recht, dass es viele Bereiche gibt, in denen FPGAs von Vorteil sind - ich habe diese in meiner Antwort nicht ausgeschlossen. Das Problem ist, wo Sie sich auf der Erfahrungskurve befinden und wie deutlich Sie die spezifischen Vorteile erkennen, die Sie durch die Verwendung eines FPGAs erzielen möchten. Wenn Sie die Antwort darauf nicht kennen, brauchen Sie wahrscheinlich keine! (Dies stimmt mit Jakobs Antwort unten überein.)
Assad Ebrahim,
1

Nachdem ich in Robotikprojekten sowohl mit FPGAs als auch mit Mikrocontrollern gearbeitet habe, würde ich jetzt tatsächlich sagen: Mit was auch immer die Person, die die Aufgabe ausführt, die meisten Erfahrungen hat. Wenn Sie beide gleich gut kennen, würden Sie sich die Frage nicht stellen. Wenn Sie es auch nicht genau wissen, sollten Sie folgende Punkte beachten:

  • Ist ein komplexes Timing für die E / A-Ports erforderlich? Die dreiphasige Motorsteuerung kann solche Anforderungen haben. FPGAs haben hier einen kleinen Vorteil.
  • Können Sie Ihren Super-Low-Latency-Algorithmus parallelisieren? Hier konkurriert das FPGA nicht wirklich mit Mikrocontrollern, sondern eher mit Embedded-PCs. Die meisten Dinge würde ich für den Embedded-PC tun, aber Sie haben möglicherweise einen Vorteil mit einem FPGA für einige bestimmte Anwendungen. Eine dichte Stereoverarbeitung wird beispielsweise häufig in FPGAs durchgeführt. Viele Kameras verwenden FPGAs zur Verarbeitung des Datenstroms.

Was auch oft verwendet wird, sind Hybridlösungen. Entweder mit zwei Chips, also einem Mikrocontroller für den Programmcode, und einem FPGA für IO oder einer anderen Aufgabe. Es gibt auch eine Reihe von FPGAs, in die tatsächlich ein Mikrocontroller integriert ist.

Ich wäre nicht so hart im Umgang mit FPGAs wie bei einigen anderen Posts, würde aber auch allgemein argumentieren, dass Sie besser mit einem Mikrocontroller oder besser noch mit eingebetteten PCs zurechtkommen, wenn Sie Ihre VHDL nicht genau kennen.

Jakob
quelle
Können Sie einige Beispielprojekte zeigen, die Ihnen helfen zu verstehen, was mit FPGAs und was mit Mikrocontrollern gut ist? Nehmen wir zum Beispiel einen zeilenverfolgenden Roboter an: Er funktioniert ziemlich gut mit einem einzelnen Mikrocontroller auf einer ebenen, sauberen Oberfläche, bis mehr verschwommene Linien entstehen, die Bildschärfung / Faltungen / usw. erfordern. Wenn eine Linie im Wald (oder einer anderen lauten Oberfläche) wäre, wäre es weitaus schwieriger herauszufordern (ich bezweifle, ob das überhaupt mit fpga möglich ist). Haben Sie ein reales Roboterprojekt gemacht, bei dem Sie fpga zum Beispiel für die Bild- / Videoverarbeitung in Echtzeit verwendet haben? +1 für VHDL.
Hhh