Faire un petit robot en utilisant un cerveau distant

8

Je voudrais construire un robot aussi petit que possible et avec aussi peu de pièces "délicates" que possible (les robots se dénigreront).

Je me demandais s'il était possible d'utiliser une petite puce qui pourrait recevoir des commandes bluetooth / IR / wifi pour déplacer les moteurs, et à son tour, renvoyer des commentaires basés sur des capteurs tels qu'un accéléromètre (pour détecter l'impact).

Je peux probablement réaliser quelque chose comme ça avec le PiCy

piquante

Cependant, c'est légèrement plus grand que je ne le souhaiterais (en raison de la taille du Pi) et je ne sais pas combien de temps le Pi durerait en continu.

Je voudrais donc essayer de décaler le cerveau (le Pi) sur le côté de l'arène et d'utiliser simplement une petite puce pour recevoir les commandes de déplacement et renvoyer les données de l'accéléromètre.

Avez-vous des recommandations pour une telle puce? Le Wi-Fi serait mon choix mais si cela a un impact sur la taille, je pourrais essayer BT

Edit: Après de nouvelles recherches, il semble qu'un Arduino nano avec un bouclier WiFi RedBack pourrait faire le travail avec quelque chose comme ça pour les moteurs: http://www.gravitech.us/2mwfecoadfor.html

Titan
la source

Réponses:

2

Vous constaterez peut-être que les cartes rPI sont plus durables que prévu. Il n'y a pas beaucoup de masse, donc une petite quantité de rembourrage en caoutchouc ou en mousse (pour réduire les vibrations) devrait être suffisante pour les protéger - à condition que vos robots ne frappent pas ensemble avec suffisamment de force pour casser le boîtier en plastique autour leur.

Décharger le traitement sur un système distant (et probablement plus puissant) vous donnera quelques avantages, comme ceux que vous avez notés - moins de poids, moins de casse, moins de batterie requise pour déplacer la chose.

Les inconvénients seront les limitations de la bande passante et la latence. Une fois que vous introduisez le retard des transmissions sans fil, vous passez d'une boucle basée sur le matériel qui peut gérer en quelques milliers d'itérations par seconde à une boucle basée sur le réseau qui ne peut gérer que des dizaines d'itérations par seconde.

Pour de meilleurs résultats, votre conception doit effectuer autant de traitements de contrôle que possible sur le matériel local et utiliser la connexion à distance pour des décisions de planification de niveau supérieur qui ne doivent être reçues que quelques fois par seconde.

Ian
la source
Votre contrôle se ferait via une webcam sur Internet, donc un léger retard sera de toute façon attendu.
Titan
0

Il existe deux approches pour construire les robots que vous décrivez.

Le premier, comme vous le suggérez, consiste à découpler la puissance de traitement du reste du robot qui contient les capteurs et actionneurs. Pour ce faire, vous avez besoin d'une certaine communication entre l'unité de traitement (PC / RPi / autre microcontrôleur) et votre robot. Une solution à faible coût pour cela consiste à utiliser des modules Bluetooth bon marché (recherchez ebay pour `` Module Bluetooth série '', ils ne devraient pas coûter plus de 5 $). Côté robot, vous aurez également besoin d'un microcontrôleur, car vous devez recevoir les données du Bluetooth, les traiter et les convertir pour contrôler les signaux des moteurs. De plus, le même microcontrôleur sera chargé de lire les capteurs et de retransmettre les données à l'unité de traitement à distance.

La deuxième approche consiste à avoir une seule unité de traitement qui se trouve sur le robot. Le même contrôleur lira les capteurs, fournira l'intelligence et contrôlera les moteurs. Parce que le robot que vous décrivez est simple, ce contrôleur pourrait être implémenté sur un simple microcontrôleur. Vous pouvez créer votre propre contrôleur (en utilisant PIC / AVR / ARM) ou vous pouvez utiliser une solution prête comme un Arduino, BasicStamp etc. En option, vous pouvez avoir une connexion Bluetooth avec un PC pour la télémétrie (en observant les valeurs des capteurs et / ou en contrôlant manuellement le robot).

Pour votre projet, la seconde approche semble plus séduisante. Cela coûtera beaucoup moins cher et les robots réagiront plus rapidement puisque le traitement se fait directement sur le robot. De plus, comme la première approche nécessite également une unité de traitement sur le robot, il semble exagéré d'utiliser une deuxième unité pour le traitement. D'autre part, la première approche vous permet de développer votre contrôleur de robot dans un système de niveau supérieur (PC / RPi) qui, selon votre expérience, peut être un environnement plus confortable.

Demetris
la source
Votre principale raison de ne pas mettre un gros contrôleur sur le robot était d'éviter les dommages après les chocs. Si je optais pour l'approche de la télécommande, je n'aurais besoin que d'un seul contrôleur principal pour plusieurs robots (identifier les commandes / commentaires avec un ID unique pour chacun). Je pourrai peut-être obtenir la solution "brain on the bot" avec un Adriuno nano qui semble assez petit avec un bouclier Wifi (pour envoyer et recevoir des communications socketio pour le contrôle et le retour avec un serveur distant).
Titan
Que proposez-vous exactement? Pour avoir un arduino nano avec WiFi sur le robot et une unité de traitement à distance supplémentaire? Quelle unité fera les calculs de contrôle?
Demetris
Eh bien, je ne suis toujours pas sûr haha. Le nano pourrait tout faire je suppose!
Titan
Oui, dans le cadre de votre projet, l'unité de traitement intégrée unique semble être le meilleur choix! Comme je l'ai mentionné dans la réponse, si vous avez besoin d'avoir une communication avec le robot, vous pouvez le faire via des modules Bluetooth bon marché. Alternativement, vous pouvez utiliser (encore moins cher!) Les modules nrf24l01 + si vous avez besoin d'établir un réseau, car vous avez plusieurs robots.
Demetris
0

Je pense que j'ai peut-être trouvé le contrôleur parfait pour ce projet:

http://www.robotshop.com/en/dagu-micro-magician-robot-controller.html

Le Micro Magicien me permettra de contrôler 2 moteurs CC simples, de détecter les impacts et les collisions avec l'accéléromètre ET de recevoir les commandes de déplacement du récepteur IR! Assez génial pour la taille.

La seule pièce restante dans le puzzle est de renvoyer les données à la télécommande (données de l'accéléromètre). Je ne sais pas si je pourrais connecter un émetteur IR ou peut-être BT / Wifi?

Edit: on dirait que cela pourrait faire le travail! http://www.dawnrobotics.co.uk/dagu-arduino-bluetooth-module/

Maintenant pour trouver de petits moteurs ...

Titan
la source
1
Les Synapse RF266PC1 sont des appareils intéressants. Ils sont petits, faciles à programmer et basés sur python. Les ADC ne sont pas si bons, mais en combinaison avec un ATmega328 (puce utilisée dans Arduino UNO), vous pouvez obtenir suffisamment de puissance de traitement pour envoyer des données dans les deux sens. J'ai également utilisé Wixels, mais leur distance rx / tx laisse beaucoup à désirer. Ces RF266PC1 peuvent faire du réseautage maillé hors de la boîte, Wixels ne peut pas du tout le faire.
Daniel F