1 master et N slaves

En reprenant la scène réalisée avec 1 master et 2 slaves, voici les hypothèses que l’on peut émettre dans le cas d’une simulation avec 1 master et N slaves.

imagekilobot.png

On trouve trois types de kilobots (trois programmes différents)

  • Un master qui dirige la file
  • Les slaves qui suivent le master (et qui s’identifient avec un id par kilobot)
  • Le kilobot de fin de file

 

Ces hypothèses sont valables si :

  • Les kilobots sont en ligne droite
  • Les kibolots avancent tout droit et ne tournent pas
  • Les kilobots ne peuvent pas se doubler ou se rentrer les uns dans les autres
Publié dans Non classé | Laisser un commentaire

1 master 2 esclaves

Pour réaliser cette scène avec 2 kilobots et un master, nous avons imaginé un système de déplacement avec message.

  • Le Master avance s’il est trop près du Slave 1 ET si le Slave de niveau n (ici de niveau 2) est assez près du slave n-1 (ici de niveau 1)
  • Slave 1 communique qu’il est bien collé au Master et attente Slave 2
    Bouge si le slave 2 est assez près de lui et Master trop loin
  • Slave 2 bouge si Slave 1 est trop loin

Cette logique découle des recherches en amont réalisées par le groupe

A Noter, le Master va tout droit.

http://bit.ly/1W4I1UW

 

Publié dans Non classé | Laisser un commentaire

Scène d’exemple – V2

Nous avons amélioré le mouvement du master de la scène « scène d’exemple V2 », ce qui permet plus de facilité pour le suivre. L’esclave va alors pouvoir toujours le suivre.
Cependant, cette scène ne gère pas le système de message.
Nous pouvons améliorer encore le système.

http://bit.ly/1ZqqHyV

Publié dans Non classé | Laisser un commentaire

Sentinelle en 8

Un programme de sentinelle a été développé pour que l’esclave recherche son master en faisant un 8.

Nous savons qu’à une certaine vitesse (moteur à 200) un robot met environ 20 unités de temps (seconde) pour faire un cercle. Partant de se constat nous avons réalisé cette scène où le robot produit des 8.

http://bit.ly/1UMs6t6

Publié dans Non classé | Laisser un commentaire

Scène d’exemple – V1

Essai pour se suivre, version 1.
Sans communication.

(1er essai pour regrouper l’ensemble des algorithmes)

https://drive.google.com/file/d/0B4avZvB6gfMoYTlGWWF3U2NlMWM/view?usp=sharing

Inspiré de cette vidéo: https://www.youtube.com/watch?v=6Zry4FRl6Xk

 

Ce programme peut être améliorer, en effet le mouvement du master crée à la longue un défaut sur l’esclave

Publié dans Non classé | Laisser un commentaire

Algorithme de déplacement du maître

Pour que le maître prenne une trajectoire aléatoire, il lui suffit de changer d’orientation
avant de commencer son déplacement. Histoire de ne pas faire demi-tour, et ainsi ne pas risquer
d’entrer en collision avec un autre kilobot, le maître doit s’orienter avec un angle suffisament
petit. Nous avons décidé d’utiliser un angle entre 0 et 30 degré calculé pseudo-aléatoirement
vers la gauche ou la droite. Le maître alternera les rotation vers la gauche et vers la droite à
chaque fois qu’il devra se déplacer.
Ainsi, nous pouvons imaginer l’algorithme suivant:

variable sens : booléens;
angle : entier;
début
angle <- (angle + mesure_voltage()) modulo 30
si sens est VRAI alors
tourner angle horaire
sens <- FAUX
sinon
tourner angle anti-horaire
sens <-

 
fin

Publié dans Non classé | Laisser un commentaire

Distances minimale et maximale entre kilobots

Grâce aux informations concernant le kilobot se trouvant dans la documentation
de celui-ci, nous sommes en mesure de calculer les distances minimales et maximales entre
2 kilobots :
– D’après la documentation, la portée d’une communication entre kilobot est de
70 mm.
– La distance à laquelle se trouve le kilobot émetteur d’une communication est
connue par le récepteur, avec une marge d’erreur de 2mm.
– Le diamètre d’un kilobot est de 33mm, son rayons est donc de 16,5mm.
Nous pouvons donc décider des distances minimales préconisées grâce à ces valeurs :
– En ce qui concerne la distance minimale entre 2 kilobots, nous préconisons de
prendre 2 fois la valeur du rayons d’un kilobot (16.5mm) et de lui ajouter la marge
d’erreur de 2mm. Ainsi, nous proposons une distance minimale dmin = 35mm après
arrondissement au plus grand.
– En ce qui concerne la distance maximale entre 2 kilobots, nous préconisons de
prendre la valeur de la portée maximale d’un kilobot moins le rayons d’un kilobot
(53,5mm) à laquelle on retire la marge d’erreur de 2mm. Ainsi, nous proposons une
distance maximale dmax = 51mm après arrondissement au plus petit.

Ainsi, un kilobot, après avoir trouvé la bonne trajectoire pour se diriger vers une autre
kilobot d’id supérieur, n’a à se soucier que de ces distances:

Si distance_id_superieur <= 16,5 OU distance_id_inferieur >= 51 alors
début
stop();
envoi(jeton);
sinon
avancer();
fin si

Publié dans Non classé | Laisser un commentaire

Idée de travailler avec des états

Après toutes les recherches que nous avons fait jusqu’à maintenant, nous avons déterminé trois algorithmes, c.-à-d. trois différentes actions que les robots font :

  • Le kilobot ne se déplace pas et il attend un message avec son ID pour commencer à se déplacer (ce n’est pas son tour). Appelons cet état de kilobot ATTENTE ;
  • Le kilobot cherche la direction dans laquelle il faut se déplacer. Un esclave cherche à se deplacer dans la direction qui l’amène vers le leader, et le leader cherche une direction aléatoire. Appelons cet état de kilobot POSITIONNEMENT ;
  • Le kilobot est bien positionné et il se déplace. Appelons cet état de kilobot DEPLACEMENT ;

Nous avons trois sous-algorithmes différents et dans le code source pour chaque kilobot il y a un emplacement pour mettre le programme utilisateur unique. Nous devons donc trouver une solution pour faire le kilobot exécuter un sous-algorithme différent dans des différentes parties de l’exécution. Rappelons que quand on programme les kilobots on ne donne pas une exécution complète, mais on précise qu’est-ce que le kilobot fait tous les « je ne sais pas exactement combiens » millisecondes.

Voici une solution pour pouvoir faire le kilobot exécuter un sous-algorithme différent dans des différentes parties de l’exécution :

Nous allons avoir une variable globale où nous allons stocker l’état du kilobot. Variable entier ETAT.

ETAT=1 – correspond à l’état ATTENTE

ETAT=2 – correspond à l’état POSITIONNEMENT

ETAT=3 – correspond à l’état DEPLACEMENT

Le programme principal va alors vérifier à quel état est le kilobot pour décider quel sous-algorithme il faut exécuter.

Nous envisageons à rajouter l’état NUMEROTATION, mais nous laissons l’écriture de cet algorithme pour la fin parce que nous avons une autre solution pour la numérotation.

Les trois algorithmes :

ATTENTE
POSITIONNEMENT
DEPLACEMENT

Publié dans Non classé | Laisser un commentaire

Idée et algorithmes sur le déplacement des kilobots

Voici nos idées:

Idée déplacement

Et voici les algorithmes que nous avons écrits:

POSITIONNEMENT
DEPLACEMENT

Publié dans Non classé | Laisser un commentaire

Algo fonctions basiques

Voici les fonctions basiques concernant le déplacement et la communication entre kilobots.

Algo fonctions basiques

Publié dans Non classé | Laisser un commentaire