SwarmBots : Robotiques en essaim

= Objectif = Construire un essaim de "petits" robots autonome pour un faible prix de revient. Les robots devront répondre aux critères suivants :

Fonctionnalité

 * taille réduite (taille max 10 cm) : idéalement, les robots seraient des cubes de 5 cm de coté.
 * cout réduit : max 80 euros par unité, idéalement 30-40 euros.
 * communiquant : les robots auront deux modes de communication
 * proximté : communication localisée entre robots
 * global : communication longue portée entre robots et une station exterieur.
 * autonome : IA embarquée, les robots seront capable d'appréhender leur environnement via des capteurs US/IR, voire une Caméra embarquée faible résolution (risque de rentrer en conflit avec les points 1 et 2)

Évolutions
Des évolutions futurs pourront être réalisées, il sera possible par exemple de rajouter :
 * une station de rechargement et un système de docking sur chaque robot
 * une caméra extèrieur permettant de positionner les robots

Systèmes de positionnement et asservissement
L'intéret de tel système pour des robots de cette taille est sujet à discussion.

(&copy; Pierre De : Je préconiserai de ne pas s'y attarder dans les premières versions)

Odométrie

 * Classique (via roue folle ou encodeur) : très difficile d'avoir des mesures fiables, les robots sont légers, risquent de se cogner, etc. L'odométrie sera dans les choux très rapidement. Sans recalibration, ce n'est pas la peine.
 * souris optique : beaucoup plus fiable, mais plus compliqué à mettre en place. (piste à creuser)

Asservissement

 * En position : faisable avec les méthodes classiques. Un asservissement en position n'a pas réellement de sens avec des robots réactifs. L'utilité de ce type d'asservissement dépendra du type de contrôle choisi.
 * En vitesse : faisable avec les méthodes classiques. Ce type d'asservissement permet de garantir un certain déterminisme dans les réponses des robots.

= Version = Le projet se décompose en plusieurs versions incrémentales.

Version 1 : base roulante
Le robot peut se déplacer ! Deux solutions sont envisageables :
 * deux moteurs + deux roues : la solution la plus classique.
 * deux brosses + deux vibreurs : c'est quand même méga fun !

La classique : les roues

 * roues + servomoteur :
 * Solution la plus simple a mettre en place.
 * Les servos à rotation continue n'existent pas en beaucoup de modèles. La plupart sont volumineux (s'il en existe des petits, ça peut le faire).
 * Modifier des petits servos, c'est chiant et compliqué, surtout pour un grand nombre de robots
 * Économise un double pont en H.
 * Bonne précision de mouvement mais vitesse limitéé
 * les roues + moteur continue : solution standard, peu encombrant
 * double pont en H pour commander les moteurs

Le fun : les robots brosses
La base mobile se composerait de deux tètes de brosses à dents, chacune relié à un vibreur. L'oscillation des vibreurs plus l'orientation des poils des brosses à dents permettent au robot de se déplacer.


 * rendement de merde par rapport aux roues !
 * pas plus compliqué à piloter ou contrôler
 * double pont en H pour commander les moteurs

Le copier de la nature (et fun aussi !)
Lui donner des pattes ! Soit s'inspier des hexbugs :



Soit en faisant des pattes avec 3 servos 9g par pattes avec minimum 4 pattes.



Coût du servo SG90 : 25euros les 12.

Il est possible de prendre des servos encore plus petits afin de miniaturisé au maximum les marcheurs

L'inconvénient de cet architecture est que l'on se retrouve avec une morphologie complexe et difficile à contrôler. De plus les déplacements des robots seront très lentes.

Microcontroleur
Ce point mérite réflexion, car il conditionne les versions ultérieures.

Ou même combiner les 2 utiliser un avr qui pourras être programmé avec l'API arduino (avec une librairie faite pour les swarmbots)
 * arduino : ça peut rendre la plateforme accessible aux newbies.
 * pic/dspic/avr divers et variés, enfin tout les controleurs 8 bits usuels.

Un peu de matos

 * très petit moteur continue : http://www.solarbotics.com/products/rpm2/ (prix : 4 dollars)
 * des très petit servos : http://www.solarbotics.com/products/22085/ (prix : 10 dollars)
 * remarque : il existe des servos plus petits et moins cher mais cela donne une idée de ce que l'on peut trouver)
 * servo à rotation continue : http://www.solarbotics.com/products/22140/ (12 dollars) et un peu gros !

Version 2 : Detection et évitement d'obstacle
Le robot est capable de se déplacer de manière autonome en évitant les obstacles. Quelques capteurs de proximité :
 * le must : IR Sharp, mais cher (10-15 euros environs) et volumineux.
 * US : cher (environ 20 euros) et volumineux, simple à piloter
 * Des US à seulement 6.99 euros :
 * http://cgi.ebay.fr/capteur-de-distance-a-ultrasons-module-de-mesure-ultrasonic-sensor-module-/180732232564?pt=FR_YO_MaisonJardin_Bricolage_ElectroniqueComposants&hash=item2a147b0374#rpdId
 * Fabriquer nos propres sharp ! (environ 2 dollars ... )
 * recepteur IR : http://www.solarbotics.com/products/pna4602/
 * diode IR : http://www.solarbotics.com/products/ir-led/
 * tutorial pour faire une détection infrarouge à pas cher : http://www.pic_examples.byethost3.com/IR_Obj_detect.html
 * Prix imbattables ! Pour peu que l'on y mette un peu d'huile de coude ...
 * d'autres capteurs IR ?
 * généralement peu fiable
 * sensible au variation de luminosité.
 * mode "tout ou rien" et très petite portée
 * Cepedant cela peut être suffisant compte tenu des caractéristiques des robots.
 * caméra base résolution : cher, volumineux, nécéssite un microcontroleur dédié, détection plus fine

Version 3 : Communication de proximité
Les robots peuvent se plugger aux autres robots avec une perche et un aimant pour maintenir la connection. Ensuite une communication série peux intervenir entre les 2.
 * Version connecté :


 * Version communication lumineuse (IR ou visible)
 * La version IR est intéressante, il est possible de réutiliser les capteurs IR maisons pour la transmission !

Un peu à la R2D2 mais chaque robot aura sa fréquence porteuse et avec un filtre numérique audio on peux en écouter qu'un seul.
 * Version communication sonore.

Communication RF
Une solution de communication RF pas chère : Les modules basé sur la puce nRFL01 Une petite recherche sur ebay "nRFL01" on peux trouver ces modules pour 5euros les 2! Description technique : On-board 2.4GHz Antenna 100m Range at 250kbps 250kbps to 2Mbit Data Rate Auto Acknowledge Auto Re-Transmit Multiceiver - 6 Data Pipes 32 Byte separate TX and RX FIFOs 5V tolerant input pins Software selectable channel from 2400MHz to 2525MHz (125 Selectable channels)
 * Nrf24L01_photo.JPG
 * Schematic_PCB_nrf24L01.jpg

Donc il faut une liaison SPI pour causer avec il y à un système complet de transmission retransmission acknoledge. Avec chaque paquet on peux transmettre 1 à 32 octets

Multiceiver : Une puce peux recevoir la communication de 6 autres puces sur le même channel utilise pour que le superviseur puisse avec 1 seule puce recevoir plusieurs swarmbots.

Liens pour pdf de la puce

Bootloader RF
Pour charger un nouveau programme à tout les robots il faudra créer un bootloader qui fonctionne avec cette puce RF.

Le superviseur pourra charger le même programme à tout les swarmbots en même temps.

Version 5 : Station de rechargement
todo

Version 6 : Positionnement par caméra extèrieur
todo

= Quelques liens =

kilobot : http://www.eecs.harvard.edu/ssr/projects/progSA/kilobot.html

Formica : http://warrantyvoidifremoved.com/formica