Difference between revisions of "SwarmBots : Robotiques en essaim"

From Electrolab
Jump to: navigation, search
(Version 2 : Detection et évitement d'obstacle)
 
(34 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Objectif ==
+
= Objectif =
 
   
 
   
Construire un essaim de "petit" robot autonome pour une faible prix de revient.
+
Construire un essaim de "petits" robots autonome pour un faible prix de revient.
 
Les robots devront répondre aux critères suivants :
 
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é.
 
* taille réduite (taille max 10 cm) : idéalement, les robots seraient des cubes de 5 cm de coté.
* cout réduit : max 100 euros par unité, idéalement 50-60 euros.
+
* cout réduit : max 80 euros par unité, idéalement 30-40 euros.
 
* communiquant : les robots auront deux modes de communication  
 
* communiquant : les robots auront deux modes de communication  
 
** proximté : communication localisée entre robots
 
** proximté : communication localisée entre robots
 
** global : communication longue portée entre robots et une station exterieur.  
 
** global : communication longue portée entre robots et une station exterieur.  
* autonome : IA embarqué, les robots seront capable d'appréhender leur environnement via des capteurs US/IR, voire une Cam (risque de rentrer en conflit avec les points 1 et 2)
+
* 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)
  
Des évolutions futurs pourront être menés lorsque le premier lot sera atteint, on pourra par exemple rajouter  :
+
== Évolutions ==
* une stations de rechargement et un système de docking
+
* une caméra extèrieur pour positionner les robots
+
  
 +
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
  
== Version ==
+
== Systèmes de positionnement et asservissement ==
 +
 
 +
L'intéret de tel système pour des robots de cette taille est sujet à discussion.
 +
 
 +
(''© 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 version incrémentale.  
+
Le projet se décompose en plusieurs versions incrémentales.  
 +
 
 +
== Version 1 : base roulante ==
  
=== Version 1 : base roulante ===
 
dans lesquels le robot se compléxifeiera .
 
 
Le robot peut se déplacer !
 
Le robot peut se déplacer !
* deux moteurs
+
Deux solutions sont envisageables :
                - moteur continue/servo a rotation continue avec des roues
+
* deux moteurs + deux roues : la solution la plus classique.
                - vibreur + pattes (voire lien JM)
+
* deux brosses + deux vibreurs : c'est quand même méga fun !
  
 +
=== La classique : les roues ===
  
        -> les roues + servo : le plus simple a mettre en place, les servos sont gros ! Si on en trouve des petits, ça peut être bien , économise un pont double en H. Bo
+
* roues + servomoteur :  
nne précision de mouvement mais vitesse limitéé
+
** Solution la plus simple a mettre en place.
        -> les roues + moteur continue : solution standard, peu encombrant
+
** 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).
        -> les pattes + vibro : vraiment fun ! mais rendement de merde, pas plus compliqué a piloter
+
** 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
  
        => doubles pont en H pour aller avec les moteurs continues ou les pattes. sinon pas utile.
+
=== Le fun : les robots brosses ===
  
        => un micro-controlleur
+
La base mobile se composerait de deux tètes de brosses à dents, chacune relié à un vibreur.
                -> arduino ? ça peut rendre la plateforme accessible au newbie.
+
L'oscillation des vibreurs plus l'orientation des poils des brosses à dents permettent au robot de se déplacer.
                -> pic/atmega ... divers et varié , enfin tout les controleurs 8 bits usuels.
+
  
== Version 2 : Detection et évitement d'obstacle ==
+
* rendement de merde par rapport aux roues !
 +
* pas plus compliqué à piloter ou contrôler
 +
* double pont en H pour commander les moteurs
  
Le robot est capable de se déplacer de manière autonome en évitant les obstacles.
+
=== Le copier de la nature (et fun aussi !) ===
  
        => quelques capteurs de proximité
+
Lui donner des pattes ! Soit s'inspier des hexbugs :
                -> le must : IR Sharp , mais cher et volumineux. nécessite de l'ADC           
+
                -> US : cher et volumineux, simple  driver 
+
                -> d'autres capteurs IR ? généralement peu fiable , sensibLa difficulté du projet sele a luminosité
+
  
 +
[[File:Hexbug.jpg|300px]]
  
        => un peu de code, des fcts sympas pour acceder au Capteur/moteur et on a une V1 sympa .
+
Soit en faisant des pattes avec 3 servos 9g par pattes avec minimum 4 pattes.  
  
 +
[[File:TPSG90.jpg|300px]]
 +
 +
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.
 +
 +
*arduino : ça peut rendre la plateforme accessible aux newbies.
 +
*pic/dspic/avr divers et variés, enfin tout les controleurs 8 bits usuels.
 +
Ou même combiner les 2 utiliser un avr qui pourras être programmé avec l'API arduino (avec une librairie faite pour les swarmbots)
 +
 +
=== 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é ==
 
== Version 3 : Communication de proximité ==
 
   
 
   
robot mobile communiquant
+
*Version connecté :
 +
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.
  
        => communication de proximité
+
*Version communication lumineuse (IR ou visible)
                -> led IR /Com s�rie
+
** La version IR est intéressante, il est possible de réutiliser les capteurs IR maisons pour la transmission !
  
todo
+
*Version communication sonore.
 +
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 4 : Communication longue portée ==  
 
== Version 4 : Communication longue portée ==  
  
todo
+
 
 +
=== 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!
 +
*[[File:Nrf24L01_photo.JPG|300px]]
 +
*[[File:Schematic_PCB_nrf24L01.jpg|300px]]
 +
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)
 +
 
 +
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.
 +
 
 +
[http://pierredufour.fr/electrolab/nRF24L01_Product_Specification_v2_0.pdf 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 ==
 
== Version 5 : Station de rechargement ==
Line 72: Line 169:
  
 
todo
 
todo
 +
 +
= Quelques liens =
 +
 +
kilobot : http://www.eecs.harvard.edu/ssr/projects/progSA/kilobot.html
 +
 +
Formica : http://warrantyvoidifremoved.com/formica

Latest revision as of 21:55, 19 January 2012

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.

(© 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 :

Hexbug.jpg

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

TPSG90.jpg

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.

  • arduino : ça peut rendre la plateforme accessible aux newbies.
  • pic/dspic/avr divers et variés, enfin tout les controleurs 8 bits usuels.

Ou même combiner les 2 utiliser un avr qui pourras être programmé avec l'API arduino (avec une librairie faite pour les swarmbots)

Un peu de matos

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é :

Version 3 : Communication de proximité

  • Version connecté :

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 communication lumineuse (IR ou visible)
    • La version IR est intéressante, il est possible de réutiliser les capteurs IR maisons pour la transmission !
  • Version communication sonore.

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 4 : Communication longue portée

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!

  • Nrf24L01 photo.JPG
  • Schematic PCB nrf24L01.jpg

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)

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