Quand faut-il utiliser les FPGA en robotique?

12

Le FPGA a de bons points, comme beaucoup de points d'E / S, mais encore une fois, vous devez penser les choses à un niveau très bas avec des bascules et pionnier dans des domaines où les choses ne sont pas encore matures - par exemple, voyez cette question ici sur les outils de développement sur FPGA - c'est ce que je comprends actuellement! Maintenant, FPGA a été utilisé pour créer une excellente dextérité dans les mains robotiques comme ici . Maintenant, certaines personnes commercialisent FPGA pour le prototypage rapide et les conceptions "tournées vers l'avenir" comme ici , je ne les comprends pas complètement: si vous n'avez pas besoin de beaucoup de points d'E / S pour des choses telles que des capteurs, pourquoi choisir FPGA pour un robot? Donc

Quand choisir FPGA pour un projet en robotique?

hhh
la source
Si vous avez besoin de parallélisme, il est judicieux d'utiliser FPGA comme vous pouvez le faire. En outre, vous pouvez personnaliser votre propre «conception de puce» et mettre à niveau «facilement» certaines fonctionnalités sans nouvelle puce matérielle. J'ai vu des exemples sur la détection d'objets multiples de la caméra en temps réel. C'est sûr qu'il s'agit de frais généraux pour les petits projets.
Gossamer

Réponses:

4

Je ne sais pas ce qui, dans la question liée sur les outils de développement, vous fait penser qu'ils ne sont pas matures. Il est vrai que la plupart d'entre eux sont propriétaires et non open source. Mais je pensais que les outils étaient assez mûrs même lorsque la question a été posée il y a trois ans. Aujourd'hui, Xilinx , Altera et Lattice ont tous des environnements de développement disponibles gratuitement qui s'exécutent sur Windows et Linux avec une prise en charge 32 et 64 bits. Si vous insistez sur l'open source, Icarus Verilog peut faire beaucoup. Mais je m'en tiendrai personnellement aux outils spécifiques au fournisseur.

Les FPGA sont bien plus qu'un tas de tongs configurables. Considérez l' Altera NIOS II . Un processeur soft-core 32 bits capable d'exécuter Linux. Mélangez et associez les communications et autres périphériques d' OpenCores ou de Xilinx , Altera ou Lattice et vous avez construit un microcontrôleur personnalisé avec tout ce dont vous avez besoin et rien que vous n'avez pas. Vous pouvez même écrire du code C pour le processeur NIOS II et avoir certaines fonctions implémentées directement dans le matériel FPGA si vous avez besoin de la vitesse. Ce niveau est-il suffisant pour vous?

Les FPGA ont un coût d'investissement initial élevé. Mais il est moins cher et plus facile d'ajouter des fonctionnalités plus tard dans le processus de conception. C'est ce que l'on entend par des conceptions "tournées vers l'avenir". Considérons un projet dans lequel vous souhaitez ajouter des moteurs supplémentaires à votre robot mais vous n'avez plus de générateurs PWM sur votre microcontrôleur. Que faire? Ajouter un autre microcontrôleur? Acheter des puces PWM distinctes et les connecter à une interface de communication? Et si toutes vos interfaces de communication sont utilisées? Avec un FPGA, cela se réduit presque entièrement à une opération de copier-coller. C'est beaucoup plus facile, moins cher et plus rapide de faire évoluer une conception pour inclure de nouvelles fonctionnalités sans acheter autant de matériel supplémentaire avec un FPGA.

Mais la plus grande raison d'utiliser un FPGA est probablement la vitesse. Je ne parle pas de la vitesse d'horloge pure. Mais lorsque vous avez besoin que beaucoup de choses se produisent simultanément. Comme Gossamer l'a mentionné, le parallélisme est ce à quoi les FPGA sont vraiment bons. Les conceptions de filtres bénéficient particulièrement de ce type d'architecture parallèle. Si vous devez filtrer et répondre à un capteur qui change rapidement, vous avez besoin d'un FPGA. Ils sont également assez bons pour le traitement vidéo car cela bénéficie également du traitement parallèle.

Prenez par exemple ce robot à main à grande vitesse . Il doit traiter la vidéo de la caméra de vision industrielle à haute vitesse (1000 images par seconde) ainsi que des capteurs tactiles et réagir en manipulant de nombreux actionneurs en seulement quelques millisecondes. Ce type de projet est lorsque vous devez choisir des FPGA.

traitement de vision massivement parallèle

embedded.kyle
la source
Pourriez-vous préciser ceci "Les FPGA ont un coût d'investissement initial élevé."? Liés ici : les prix semblent très bas. Voulez-vous dire un coût de formation élevé ou un autre chiffre?
hhh
1
@hhh je ne parlais pas du coût des puces brutes. Je parlais du coût de développement. Considérez un kit de développement de microcontrôleur tel que le PandaBoard . Contient un ARM Cortext A9 pour 181 $. Une carte de développement FPGA pouvant contenir un A9 tel que le Cyclone V coûte 1099 $.
embedded.kyle
@hhh Il existe bien sûr des kits de développement FPGA moins chers. Mais j'essayais de trouver une métrique permettant de comparer deux choses si différentes. Ainsi, un kit de développement qui a (très) à peu près la même puissance de traitement est environ 10 fois plus.
embedded.kyle
@hhh L'ARM le moins cher sur Mouser est de 0,80 $ . Le FPGA le moins cher coûte 2,80 $ .
embedded.kyle
2
@hhh Cette main est une recherche de pointe avec probablement des dizaines sinon des centaines de milliers de dollars d'équipements personnalisés qui la dirigent. Le traitement vidéo en général a tendance à être à l'extrémité supérieure. Voir ici et ici . Et ni l'un ni l'autre ne pourrait probablement traiter la vidéo 1kfps. Plus comme 30-60fps. La carte que vous avez répertoriée ne possède aucune entrée vidéo. Bien qu'il puisse très certainement contrôler les actionneurs et traiter les capteurs tactiles. Défiant pourrait émuler la main que vous avez liée.
embedded.kyle
2

Je pense qu'il pourrait y avoir une idée fausse sur ce qu'est réellement un FPGA et quand il est utilisé dans les conceptions. Permettez-moi donc d'essayer d'expliquer cette partie en premier.

FPGA et quand on peut vouloir en avoir un ...

Au risque de simplification, un FPGA n'est guère plus qu'un processeur qui se trouve être «reconfigurable».

Pourquoi voudrait-on un microprocesseur «reconfigurable»? Eh bien, car il coûte beaucoup trop cher de fabriquer un processeur au silicium pour se permettre de le faire pour une, deux ou même deux cents puces. Vous devez exécuter des lots de milliers de puces pour le rendre économiquement réalisable.

Puisqu'aucune conception n'est jamais exempte de bogues la première fois, suivre la voie du silicium engage effectivement une entreprise à au moins deux, sinon plus, à des essais, le tout à des coûts de fabrication énormes.

Ce qui signifie essentiellement que très peu d'entreprises commerciales seront intéressées par la conception et la fabrication de produits autres que des puces ayant un attrait commercial suffisamment large.

Donc, si vous venez avec une conception brillante qui justifie un microprocesseur personnalisé, vous pouvez essayer de donner vie à votre idée avec un budget restreint en l'implémentant dans un FPGA, où la puce réelle est simplement une collection de portes et un «programme» (généralement VHDL ou Verilog) organise ces portes dans un microprocesseur réel.

Mais c'est tout à fait un chemin complètement différent (conception de microprocesseur!) ...

Ce qui m'amène à suggérer que

... les FPGA ne sont pas essentiels à la robotique - du moins au départ

Ce dont vous avez besoin pour la robotique, c'est d'un processeur . Un FPGA est juste un type spécial de processeur (reconfigurable).

Vous demandez si vous «devriez»? Eh bien, cela dépend de vos connaissances ainsi que de votre véritable intérêt - la conception du microprocesseur d'abord ou la robotique d'abord?

Si les microprocesseurs sont votre passion, alors certainement! Et la robotique est un excellent domaine d'application pour les microprocesseurs personnalisés - peut-être un cortex de vision avec de nombreuses voies de décision parallèles gérées directement dans le matériel, ou une multiplication spéciale des tenseurs dans le matériel - essentiellement tout ce que les processeurs génériques ne peuvent pas gérer correctement.

Mais si vous envisagez de concevoir des microprocesseurs dans des FPGA, vous devrez bien sûr disposer de toutes les connaissances de bas niveau que vous mentionnez, et plus encore, car fondamentalement, vous allez concevoir votre propre processeur. Ce qui n'a rien à voir avec la robotique, même si votre application cible peut être la robotique.

La plupart des concepteurs peuvent probablement trouver un processeur existant qui fera la plupart de ce dont ils auront besoin.

Je pense donc que vous n'avez probablement pas besoin d'un FPGA.

Une feuille de route de démarrage: des capacités commerciales à (peut-être) un FPGA ...

Le premier objectif à mon avis est d'essayer de faire en sorte que tous vos concepts créatifs soient intégrés dans un robot fonctionnel (un défi assez intense en soi).

Si vous trouvez que vous avez des goulots d'étranglement de traitement spécifiques et importants dans votre conception, alors le prochain objectif est d'optimiser la sélection / conception de vos processeurs, toujours des puces disponibles dans le commerce. Peut-être plus grand, plus rapide (compromis avec consommation d'énergie, dissipation thermique). Peut-être des puces plus petites et dédiées gérant des tâches spécifiques et s'interfaçant avec le cerveau principal (compromis avec des complications d'algorithme / logique).

Ce n'est que s'il existe des capacités que vous ne pourrez tout simplement pas gérer que des puces commerciales, alors vous pourriez envisager d'implémenter un processeur spécialisé à l'intérieur d'un FPGA, car à ce stade, il y aura des avantages très clairs que vous espérez gagner en «roulant le vôtre». ', et vous pouvez vous concentrer uniquement sur la mise en œuvre de ces capacités, avec les bonnes interfaces pour le reste de votre conception.

Sinon, vous risquez de vous écarter de votre objectif principal (ce que je vais supposer est de construire un robot!)

En résumé: les FPGA sont une distraction pour se lancer dans la robotique - jusqu'à ce que vous soyez assez loin sur la voie de la robotique - et ont gagné de solides atouts en conception d'électronique numérique / microprocesseur quelque part en cours de route.

Assad Ebrahim
la source
Je peux penser à de nombreux exemples dans des domaines tels que le traitement vidéo où le traitement parallèle avec FPGA est essentiel pour la vitesse et des résultats plus précis. Vu des échecs où les gens essaient d'implémenter la détection de l'iris bruyant en temps réel avec un seul processeur. Non. FPGA a ses propres domaines spécifiques où il bascule comme les mains robotiques de haute dextérité ou le traitement vidéo précis / rapide. Je ne peux pas entreprendre de juxtaposer FPGA et microprocesseur comme ça. Ce sont des bêtes très différentes avec leurs propres bons / mauvais côtés. Vous vous trompez? Une idée si ce genre de bons domaines pour FPGA est répertorié quelque part?
hhh
Vous avez certainement raison de dire qu'il existe de nombreux domaines dans lesquels les FPGA sont un avantage - je n'ai pas exclu ceux-ci dans ma réponse. La question est de savoir où vous en êtes sur la courbe d'expérience et à quel point vous êtes clair sur les avantages spécifiques que vous souhaitez tirer de l'utilisation d'un FPGA. Si vous ne connaissez pas la réponse, vous n'en avez probablement pas besoin! (Cela fait écho à la réponse de Jakob ci-dessous.)
Assad Ebrahim
1

Ayant travaillé avec des FPGA et des microcontrôleurs dans des projets de robotique, je dirais en fait maintenant: quelle que soit la personne qui met en œuvre la tâche a le plus d'expérience. Si vous les connaissez aussi bien, vous ne vous poseriez pas la question. Si vous ne connaissez pas bien non plus, ce sont les points à retenir:

  • Y a-t-il un timing complexe sur les ports d'E / S requis? La commande de moteur triphasé peut avoir de telles exigences. Les FPGA ont ici un léger avantage.
  • Pouvez-vous paralléliser votre algorithme de latence super faible? Ici, le FPGA ne rivalise pas vraiment avec les microcontrôleurs, mais plus avec les PC intégrés. La plupart des choses que j'irais pour le PC intégré, mais vous pourriez avoir un avantage avec un FPGA pour certaines applications spécifiques. Le traitement stéréo dense, par exemple, est souvent effectué dans les FPGA. De nombreuses caméras utilisent des FPGA pour traiter le flux de données.

Ce qui est également souvent utilisé, ce sont les solutions hybrides. Soit avec deux puces, donc un microcontrôleur pour le code du programme, et un FPGA pour IO ou une autre tâche. Il existe également un certain nombre de FPGA dotés d'un microcontrôleur intégré.

Je ne serais pas si sévère avec les FPGA comme certains autres articles, mais je dirais également que, à moins que vous ne connaissiez bien votre VHDL, vous feriez mieux d'utiliser un microcontrôleur, ou encore mieux des PC intégrés.

Jakob
la source
Pouvez-vous montrer quelques exemples de projets qui aideraient à comprendre quel genre de choses sont bonnes à faire avec les FPGA et lesquelles avec les microcontrôleurs? Supposons par exemple un robot suiveur de ligne: il fonctionne assez bien avec un seul microcontrôleur sur une surface plane et propre jusqu'à des lignes plus floues qui nécessitent une netteté d'image / des convolutions / etc. Si une ligne en forêt (ou autre surface bruyante), ce serait un défi beaucoup plus difficile (je doute que ce soit même possible avec fpga). Avez-vous réalisé un projet robotique réel où vous aviez utilisé fpga par exemple pour le traitement d'images / vidéo en temps réel? +1 pour VHDL.
hhh