Skip to content
Snippets Groups Projects
Commit f45e6167 authored by Kylian Fontaine's avatar Kylian Fontaine
Browse files

env + typo

parent 8094637d
No related branches found
No related tags found
1 merge request!1Module
# DSL pour Robotique en Essaim # DSL pour Robotique en Essaim
### Environnement
Ocaml 4.13
Dune 3.15
Coq 8.15
### Valeurs possibles pour chaque éléments de la description de l'environnement : ### Valeurs possibles pour chaque éléments de la description de l'environnement :
- Sync := Permet de définir le type de synchronisation. - Sync := Permet de définir le type de synchronisation.
...@@ -14,68 +21,83 @@ Sync := ASYNC ...@@ -14,68 +21,83 @@ Sync := ASYNC
- Space := Permet de définir l'espace dans le quel vont évoluer les robots. - Space := Permet de définir l'espace dans le quel vont évoluer les robots.
- R -> une seul dimension - R -> une seul dimension
- Rm -> millefeuille d'une dimension, correspondant par exemple a x routes paralelles - mR X -> mille-feuille d'une dimension, correspondant par exemple a X routes parallèles, X peut ne pas être renseigné.
- R2 -> plan - R2 -> plan
- R2m -> millefeuille de plan, correspondant a des plan sur plusieurs etages - mR2 X -> mille-feuille de plan, correspondant a des plan sur X étages, X peut ne pas être renseigné.
- Ring n -> correspond a un anneau Z/nZ - Ring n -> correspond a un anneau Z/nZ, n peut ne pas être renseigné.
exemple : exemple :
``` ```
Space := Ring 5 Space := Ring 5
``` ```
- Byzantine := Permet de déclarer le nombre de Byzantins ou directement les robots qui le sont via leur id. - 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 - x -> un entier correspondant à la proportion de Byzantins tel que n/x avec n le nombre de robot
- [id1;id2;id3] -> liste d'entier correspondant aux id des Byzantins - [id1;id2;id3] -> liste d'entier correspondant aux id des Byzantins
``` ```
exemple : Byzantine := [1;2;7;8] exemple : Byzantine := 5
``` ```
- Rigidity: Défini si le robot peut etre interrompu lors de son déplacement
- Rigidity: Défini si le robot peut être interrompu lors de son déplacement
- Rigide -> Le robot finit sont déplacement avant de recommencer un cycle LCM - 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 - Flexible f -> f est une variable est correspond a la distance minimal que le robot va parcourir avant de pouvoir être interrompu et commencer un nouveau cycle LCM
``` ```
Rigidity := Flexible delta Rigidity := Flexible delta
``` ```
Couleur : Red; Blue; Yellow; Green; Purple; Orange - Robot := Permet de définir des champs privés et publiques pour le robot, il est nécessaire de lister les éléments privés puis les éléments publiques
- 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; ...
- Private : Champ 1; Champ 2; ... - Public : Champ 3; Champ 4; ...
- Public : Champ 3; Champ 4; ...
Pour la lumière :
- Internal Light
- External Light
- Full Light
Les champs, ainsi que les couleurs des lumière sont au choix de l'utilisateur.
Les champs sont définis par l'utilisateur, et peuvent prendre des valeurs ou non.
exemple : exemple :
``` ```
Robot := Private : Temperature; Coordonnee [5;1.8] Robot := Private : Temperature; Internal Light [Rouge;Noir]
Public : Id; Batterie Public : Id; Batterie
```
```
- Sensors := Permet de définir les capteurs des robots, et les fonction de degradations sur informations reçues - Sensors := Permet de définir les capteurs des robots, et les fonction de degradations sur informations reçues
Default : Default :
- **Range** : Correspond à la distance de vue des robots - **Range** : Correspond à la distance de vue des robots
- F Byzantinull -> Le robot à une range ilimité - Full -> Le robot à une range illimité
- Limited d -> range limité à un delta - 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_Rand d k -> range limité à un delta + capable de voir k robots au delà 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 - K_enemy d k -> range limité à un delta + capable de voir k robots au delà de delta choisie par un ennemie
- **Opacity**: Correspond à l'opacité des robots - **Opacity**: Correspond à l'opacité des robots
- Opaque -> les robots derrières un autre robot ne sont pas visibles - Opaque -> les robots derrières un autre robot ne sont pas visibles
- Transparent -> les robots derrières un autre robot sont visibles - Transparent -> les robots derrières un autre robot sont visibles
- **Multiplicity** : Correspond à la détection de la multiplicité et la ditance de detection - **Multiplicity** : Correspond à la détection de la multiplicité et la distance de detection
- No -> les robots ne detectent pas la multiplicité - No -> les robots ne détectent pas la multiplicité
- Weak -> les robots detectent si il y a 1 ou plusieurs robots - Weak -> les robots détectent si il y a 1 ou plusieurs robots
- Strong -> les robots detectent le nombre exacte de robots - Strong -> les robots détectent le nombre exacte de robots
- Local -> detection a leur position - Local -> detection a leur position
- Global -> detection sur toutes les positions observés - Global -> detection sur toutes les positions observés
On peut aussi utiliser les capacités/champs renseignés en **PUBLIC** dans Robot On peut aussi utiliser les capacités/champs renseignés en **PUBLIC** dans Robot
exemple: exemple:
``` ```
Sensors := Range : Limited 5; Multi : Weak Local; Sensors := Range : Limited r;
Multi : Weak Local;
Opacity : Opaque; Opacity : Opaque;
Batterie : (fun x -> if x > 50 then 100 else 50); 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 := Permet de définir les champs de robots qui vont pouvoir être modifié par le robogram, Location est par défaut, mais doit être indiqué si il y a plus d'un champs mis à jour
``` ```
ActivelyUpdate := Light ActivelyUpdate := Location;Light
``` ```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment