DSL pour Robotique en Essaim
Valeurs possibles pour chaque éléments de la description de l'environnement :
- Sync := Permet de définir le type de synchronisation.
- FSYNC -> Full synchrone
- SSYNC -> Semi synchrone
- ASYNC -> Asynchrone
exemple :
Sync := ASYNC
- Space := Permet de définir l'espace dans le quel vont évoluer les robots.
- R -> une seul dimension
- Rm -> millefeuille d'une dimension, correspondant par exemple a x routes paralelles
- R2 -> plan
- R2m -> millefeuille de plan, correspondant a des plan sur plusieurs etages
- Ring n -> correspond a un anneau Z/nZ
exemple :
Space := Ring 5
- Byzantine := Permet de déclarer le nombre de Byzantins ou directement les robots qui le sont via leur id.
- x -> un entier correspondant à la proportion de Byzantins
- [id1;id2;id3] -> liste d'entier correspondant aux id des Byzantins
exemple : Byzantine := [1;2;7;8]
- Rigidity: Défini si le robot peut etre interrompu lors de son déplacement - Rigide -> Le robot finit sont déplacement avant de recommencer un cycle LCM - Flexible f -> f est une variable est correspond a la distance minimal que le robot va parcourir avant de pouvoir etre interrompu et commencer un nouveau cycle LCM
Rigidity := Flexible delta
Couleur : Red; Blue; Yellow; Green; Purple; Orange
- Robot := Permet de definir des champs privés et publiques pour le robot, il est necessaire de lister les éléments privés puis les éléments publiques
- Private : Champ 1; Champ 2; ...
- Public : Champ 3; Champ 4; ...
Les champs sont définis par l'utilisateur, et peuvent prendre des valeurs ou non. exemple :
Robot := Private : Temperature; Coordonnee [5;1.8]
Public : Id; Batterie
- Sensors := Permet de définir les capteurs des robots, et les fonction de degradations sur informations reçues
Default :
-
Range : Correspond à la distance de vue des robots
- F Byzantinull -> Le robot à une range ilimité
- Limited d -> range limité à un delta
- K_Rand d k -> range limité à un delta + capable de voir k robots au dela de delta choisie rand
- K_enemy d k -> range limité à un delta + capable de voir k robots au dela de delta choisie par un ennemie
-
Opacity: Correspond à l'opacité des robots
- Opaque -> les robots derrières un autre robot ne sont pas visibles
- Transparent -> les robots derrières un autre robot sont visibles
-
Multiplicity : Correspond à la détection de la multiplicité et la ditance de detection
- No -> les robots ne detectent pas la multiplicité
- Weak -> les robots detectent si il y a 1 ou plusieurs robots
- Strong -> les robots detectent le nombre exacte de robots
- Local -> detection a leur position
- Global -> detection sur toutes les positions observés
-
Range : Correspond à la distance de vue des robots
On peut aussi utiliser les capacités/champs renseignés en PUBLIC dans Robot
exemple:
Sensors := Range : Limited 5; Multi : Weak Local;
Opacity : Opaque;
Batterie : (fun x -> if x > 50 then 100 else 50);
- ActivelyUpdate := Permet de définir les champs de robots qui vont pouvoir etre modifié par le robogram, Location est par defaut.
ActivelyUpdate := Light