Question:
Arduino est-il approprié pour être un contrôleur de robot humanoïde?
alvinsj
2010-08-26 18:52:43 UTC
view on stackexchange narkive permalink

Je ne suis pas un développeur Arduino ici. Cependant, je voudrais demander si un développeur ayant de l'expérience sur la capacité d'Arduino est-il adapté pour développer un robot humanoïde? Le robot humanoïde se compose d'une caméra visuelle, de capteurs et de servos, d'un émetteur-récepteur sans fil, d'une boussole, d'un accéléromètre et ainsi de suite.

Corrigez-moi si j'ai mal mentionné quelque chose.

Six réponses:
Leon Heller
2010-08-26 19:13:16 UTC
view on stackexchange narkive permalink

L'Arduino Duemilanove ne possède que 14 E / S numériques et six entrées analogiques, et 2k SRAM maximum. Il ne semble pas pouvoir gérer tous ces périphériques sans extension de port, et il n'a pas assez de mémoire pour le traitement d'image.

cependant, peut-être qu'un bouclier de traitement d'image existe, ou pourrait être développé, de sorte que l'Arduino ferait simplement le travail de lire des informations à partir de boucliers et de commander l'invocation de certaines actions à partir d'autres boucliers
ttt
2010-09-07 13:46:30 UTC
view on stackexchange narkive permalink

Un Arduino seul a trop peu d'E / S et trop peu de puissance CPU et de mémoire. Vous pouvez utiliser plusieurs Arduinos (comme suggéré par vicatu) ou utiliser quelque chose de plus puissant comme le mbed (comme suggéré par Joby Taffey). Je suggérerais un hybride des deux idées. Utilisez un processeur puissant pour fournir une IA et un contrôle global et utilisez des microcontrôleurs plus simples comme gestionnaires d'E / S. En fait, je suggérerais une hiérarchie complète avec autant de couches que nécessaire avec des processeurs plus puissants à mesure que vous montez dans la hiérarchie.

Par exemple, j'ai utilisé la Gameboy Advance comme le `` cerveau '' d'un robot tout en les E / S étaient gérées par des microcontrôleurs PIC16F84. Je pense qu'un arrangement idéal serait quelque chose d'aussi puissant qu'un PC (peut-être une mini-carte ITX) ou quelque chose comme une carte Beagle comme le cerveau, une couche intermédiaire avec plusieurs MBED ou Zilog Z8 en tant que gestionnaires de sous-système (contrôle de mouvement, gestion des capteurs , certains prétraitements de capteur, etc.). et beaucoup de microcontrôleurs petits / bon marché (Atmel / PIC / TI MSP430 etc.) pour gérer le travail des jambes. La couche supérieure peut utiliser Ethernet ou USB, les niveaux inférieurs peuvent utiliser RS232, I2C, etc.

Un avantage de toute cette approche est que vous pouvez modulariser votre développement (bon pour des groupes d'amis ou d'étudiants). Les modules individuels peuvent avoir des objectifs mieux définis (et plus faciles à atteindre) et être des projets complets en eux-mêmes. À des niveaux plus élevés, vous pouvez vous concentrer sur l'IA et le contrôle global du robot sans avoir à vous soucier des détails de bas niveau (par exemple, si vous pouvez émettre une commande pour faire tourner le robot de 45 degrés, vous avez effectivement divisé votre problème en deux. Le niveau supérieur peut se concentrer. sur les décisions sur la direction à prendre (prise de décision) alors qu'un contrôleur de niveau inférieur n'a qu'à satisfaire des commandes motrices simples et bien définies d'en haut. D'une certaine manière, cela modélise notre robot sur le fonctionnement de notre cerveau (pas au niveau neurologique). Lorsque nous décidons de tendre la main et de prendre une tasse, nous n'avons pas à penser consciemment aux mécanismes de ce que nous faisons. Nous pourrions voir cette action se dérouler à trois niveaux:

  1) Élevé niveau - la décision de ramasser la tasse 2) Niveau intermédiaire - coordonner les actions motrices et l'analyse de base des entrées sensorielles 3) Niveau bas - effectuer l'action du moteur, collecter les données du capteur.  

J'espère que cela vous sera utile.

Votre logiciel doit avoir une conception modulaire, séparant l'IA de haut niveau de la commande de mouvement de bas niveau, que ces composants logiciels fonctionnent sur des micros séparés ou sur un seul micro. Je suppose que l'utilisation de micros séparés forcerait ce bon principe de conception aux faibles d'esprit. ;)
Dans le contexte de la question, la séparation est valable. Il ne sert à rien d'essayer d'écrire du code AI de haut niveau sur de simples contrôleurs 8 bits, mais ils sont parfaits en tant qu'interfaces de capteurs et agrégateurs de données de capteurs. Si votre robot fonctionne sur un seul processeur (et j'en ai construit quelques-uns basés sur ARM7 / 9), il est de toute façon logique d'avoir une conception modulaire, mais je n'essaye pas de `` forcer '' les gens à concevoir des choses dans un d'une manière particulière.
Toby Jaffey
2010-08-26 20:28:37 UTC
view on stackexchange narkive permalink

Vous pourriez être mieux avec quelque chose de plus costaud que l'Arduino. Peut-être un mbed (basé sur ARM Cortex-M3).

Même s'il n'a pas assez de lignes pour contrôler tous ces périphériques.

littlecharva
2011-01-12 17:39:18 UTC
view on stackexchange narkive permalink

Comme Tim Ring l'a suggéré, combiner un Arduino avec un appareil plus puissant serait votre meilleur pari. Utiliser un Netbook bon marché comme cerveau vous donnerait cette puissance supplémentaire, vous pourriez même utiliser la webcam intégrée comme caméra et faire tout votre traitement d'image sur le Netbook.

L'Arduino se brancherait sur un Port USB sur le netbook et pourrait facilement envoyer et recevoir des commandes sur un port série - de cette façon, vous pouvez programmer tout votre code IO dans l'Arduino et écrire votre code "cerveau" de niveau supérieur à exécuter sur le netbook. Par exemple, le Netbook pourrait alors émettre des commandes telles que "Drive Forward For 2 Seconds" à l'Arduino et l'Arduino pourrait contrôler les moteurs pour effectuer la tâche. Vous pouvez lui demander la lecture de la boussole ou du GPS et l'Arduino pourrait renvoyer la valeur.

Vous pouvez également faire en sorte que votre code «cerveau» surveille le port série pour toutes les données que l'Arduino voulait envoyer, par exemple, s'il avançait et qu'un capteur de pare-chocs détectait une collision, il pourrait envoyer une commande «Collision» au cerveau et le cerveau pourrait décider quoi faire à ce sujet.

L'énorme avantage de l'utilisation un netbook serait la capacité d'afficher des informations de diagnostic et de débogage sur son écran LCD. Venant d'un arrière-plan de programmation PC, je trouve que le débogage d'un Arduino sans retour visuel est vraiment très délicat.

L'Arduino serait également alimenté par le Netbook, ce qui signifie que vous n'avez besoin que de fournir une source d'alimentation séparée pour les moteurs / servos.

vicatcu
2010-08-26 22:22:01 UTC
view on stackexchange narkive permalink

Peut-être un Arduino plus tout un tas de Shields, ou plusieurs Arduinos et plusieurs Shields communiquant entre eux (sans fil ou autrement ...). Tout est possible :)

finnw
2011-01-13 08:29:34 UTC
view on stackexchange narkive permalink

Envisagez un module ESMini en conjonction avec un Arduino. À 95x55 mm, vous ne devriez avoir aucun problème à l'installer dans le torse ou peut-être même dans la tête d'un petit robot humanoïde, et il a la puissance de traitement d'un netbook bas de gamme.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 2.0 sous laquelle il est distribué.
Loading...