Quelle est la puissance de calcul d'une carte Arduino Uno?

8

Que peut vraiment faire une carte Arduino telle que l'Uno? Bien sûr, des choses simples comme le contrôle de quelques servos sont très faciles pour cela. Cependant, je ne pense pas qu'une carte Uno serait capable de préformer le SLAM 3D en temps réel à partir de données de nuages ​​de points recueillies à partir d'un capteur Kinect sur un robot mobile, non? Si le robot avait une quelconque vitesse, l'Arduino ne pourrait pas suivre, n'est-ce pas? Pourrait-il faire SLAM 2D tout en se déplaçant et être capable de suivre? Que diriez-vous de prendre 1/10 des points du capteur Kinect et de ne traiter que ceux-ci?

Fondamentalement, quels sont quelques exemples des limitations de ressources d'une telle carte Arduino?

Golmschenk
la source

Réponses:

6

Cela dépend - du nombre de points de repère dans la carte des fonctionnalités, et du temps que vous êtes prêt à investir pour régler l'algorithme pour la vitesse, et d'un certain nombre d'autres paramètres que vous pouvez ou ne pouvez pas contrôler pour une application donnée.

Edit: En tant qu'expérience de pensée , je pense qu'il serait théoriquement assez puissant pour faire un SLAM extrêmement simple en temps quasi réel dans un environnement très artificiel, comme le centre d'un sol de gymnase avec quelques cônes disposés. Il pourrait prendre une seule ligne de numérisation du Kinect et mettre à jour une carte interne 2D basse résolution, mise à jour périodiquement (disons toutes les 10 secondes).

La RAM 2K de l'Uno serait probablement une rupture, mais le Mega pourrait en avoir assez (8K) et il y a un hack pour le mettre à 520K.

En pratique, faire des calculs matriciels à virgule flottante sur un processeur 8 bits n'est pas une bonne idée.

Paul Williams
la source
Ok, donc vous dites que même essayer SLAM 2D avec l'Arduino va être un peu difficile. Merci.
golmschenk
6

L'Arduino a toujours été horriblement sous-alimenté.

Vous pouvez obtenir une pile de découvertes stm ou d'autres cartes de développement basées sur ARM pour le prix d'un seul arduino, et chacune de ces cartes aura des ordres de grandeur plus puissants que l'arduino.

L'omniprésence de l'arduino a également entravé de nombreux projets qui auraient dû mieux connaître. La stabilisation du quadrotor et l'exécution du code g de style Reprap sont deux domaines majeurs où l'arduino a été forcé bien au-delà de ses capacités et cela se voit. (Le projet ardrupilot a besoin de trois arduinos.)

Espérons que les trucs ados / due / leaflabs aideront à rendre le développement d'ARM plus convivial. Beaucoup de projets plus récents / meilleurs tels que smoothie, openpilot, etc. ont également fait le saut.

user65
la source
1
D'accord, sans aucun doute! J'ai acheté un simple bras robotique dans un ancien magasin d'électronique, vintage 1980. Le contrôleur a 19 MHz, comparé au Arduino 16, et 3 fois la RAM! À partir de 1980! Le plus triste, c'est que les gens réagissent à l'attrait du minuscule tableau bleu. Arduino est beaucoup comme Java - cool pour ce qu'il est, mais sous-alimenté et surutilisé au-delà de toute raison.
Chris
@Chris, En toute honnêteté, je doute que le bras robotique ne coûte que 24 $ en 1980 (il est difficile même aujourd'hui d'en trouver un aussi bon marché qui ne soit pas complet). Je doute également qu'il disposait d'une énorme communauté d'utilisateurs et d'une énorme bibliothèque de logiciels gratuits. La valeur du matériel ne se limite pas à la vitesse d'horloge et à la mémoire. Beaucoup de produits ont échoué parce qu'ils étaient trop chers alors qu'ils étaient sous-utilisés, même s'ils étaient techniquement supérieurs.
Cerin
4

Les spécifications brutes des microcontrôleurs Arduino indiquent des vitesses d'horloge pouvant atteindre 16 ou 20 MHz, soit environ la vitesse d'un ordinateur Intel 386 du milieu des années 90.

Cela semble prometteur, jusqu'à ce que vous considériez le fait qu'il ne prend pas en charge nativement les mathématiques à virgule flottante - la mesure " FLOPS " par laquelle la plupart des CPU sont comparés. J'ai vu des démos Arduino qui calculent la vitesse de l'Arduino à environ 60 kFLOPS, tandis que l'Intel 386 à 20 MHz fait quelque chose comme 170 kFLOPS (selon cette page ).

En outre, il convient de noter que l'Arduino fait des mathématiques sur 8 bits et que le 386 fait des mathématiques sur 16 et 32 ​​bits. Une carte DSP pourrait être plus adaptée à ce type d'acquisition de données, mais je ne suis pas en mesure de le conseiller.

Faire fonctionner ce code dans un environnement aussi contraint que l'Arduino pourrait être possible, mais cela nécessitera beaucoup d'optimisation. Vous seriez mieux servi en utilisant un processeur plus puissant pour implémenter ces algorithmes; assurez-vous qu'ils fonctionnent sur le processeur puissant, puis essayez d'optimiser pour le processeur faible.

Ian
la source
Mais vous devez vous rappeler que l'Apple II avait une 6502 (8 bits, 1 MHz) et 16 Ko de RAM. AppleSoft BASIC était à virgule flottante et son «application de tueur» était un lien VisiCalc . Vous pouvez faire beaucoup avec du matériel limité, quand c'est tout ce que vous avez. (et toute l'industrie est derrière)
Paul Williams
1
Vous comparez un microcontrôleur avec un microprocesseur. 386 n'a pas de générateur matériel PWM à six canaux, un ADC, un comparateur analogique, ses deux appareils destinés à deux œuvres différentes. De plus, si quelqu'un a besoin d'un débit élevé en virgule flottante, il utilisera probablement une unité avec FPU, mais j'ai fait de nombreux projets qui n'avaient pas besoin de virgule flottante, et dans certains cas, c'est une question d'optimisation. L'ATMega passe à près de 20MIPS à 20Mhz tandis que le 386 passe à 9,9 MIPS à 33 MHz.
Diego C Nascimento
1
Cette question concerne SLAM, donc FLOPS est la seule mesure pertinente à utiliser pour comparer ces 2 unités de traitement.
Ian
2

Pour le prix d'un Arduino Uno, ou moins, une alternative récente est le TI Stellaris Launchpad à 12,99 $ (y compris FedEx dans le monde entier): Arm Cortex M4 avec un excellent ensemble de bibliothèque intégré appelé StellarisWare qui réside sur ROM - donc votre Flash et la RAM restent libres pour l'utilisation des applications.

Puissance de calcul massivement plus élevée que l'Arduino Uno, mais jusqu'à présent sans la participation de la communauté omniprésente qu'Arduino a recueillie.

Anindo Ghosh
la source
1

Il est vrai que l'Arduino commence à paraître sous-alimenté maintenant que les gens sont de Raspberry Pis, mais je pense que cela dépend davantage de l'application. J'aime l'arduino parce que le code est vraiment facile à écrire, il est vraiment facile de flasher du nouveau code, et vraiment facile de brancher de nouveaux capteurs. Je ne l'utiliserais pas pour une application de vision comme des trucs kinect ou webcam, mais cela peut faire beaucoup plus que de parler à des servos. Un bon exemple serait une application de type segway; l'arduino est idéal pour parler aux capteurs de l'accéléromètre, faire des calculs spatiaux 3D, puis parler aux servos pour garder les choses équilibrées.

LoveMeSomeCode
la source
Je pense qu'il est important ici de comparer les pommes aux pommes ici et de comparer la puce ATMega d'Uno à d'autres microcontrôleurs. L'ARM à 700 MHz du Raspberry Pi est orange. Cela étant dit, les puces ARM Cortex-M3 de l'Arduino Due / LeafLabs Maple et les puces PIC32 des cartes Digilent chipKIT, etc. soufflent complètement l'Uno hors de l'eau par ordinateur avec le même environnement de programmation.
Joe Baker