1. Présentation
Bienvenue dans la documentation fonctionnelle de l’application de pilotage des tondeuses automatiques MowItNow.
On y retrouvera :
-
La description d’une programmation
-
Les contrôles de validation opérés
-
La description de l’exécution d’une programmation
Le logiciel de l’application est disponible depuis son dépôt en accès libre.
Cette documentation est également consultable en ligne.
2. Summary
| Scenarios | Steps | Features: 5 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
3. Programmation
Pour programmer la tondeuse, on lui fournit un fichier d’entrée construit comme suit :
-
La premiére ligne correspond aux coordonnées du coin supérieur droit de la pelouse, celles du coin inférieur gauche sont supposées être (0, 0).
-
La suite du fichier permet de piloter toutes les tondeuses qui ont été déployées.
Chaque tondeuse a deux lignes la concernant :
-
La premiére ligne donne la position initiale de la tondeuse, ainsi que son orientation.
-
La seconde ligne est une série d’instructions ordonnant à la tondeuse d’explorer la pelouse.
3.1. Une configuration renseignée décrit la pelouse et les tondeuses déployées
- Etant donné
-
le contenu de programmation (003ms)
5 5
1 2 N
GAGAGAGAA
3 3 E
AADAADADDA
- Lorsque
-
l’application crée la programmation (015ms)
- Alors
-
la pelouse doit être de taille 6x6 (032ms)
- Et
-
les tondeuses doivent être (010ms)
| Position | Instructions |
|---|---|
1, 2, N |
GAGAGAGAA |
3, 3, E |
AADAADADDA |
4. Validation
Un ensemble de règles relatives au format et à la consistance de la programmation sont mises en place.
Dans le cas où une programmation serait mal définie, un message d’erreur doit être émis à l’utilisateur.
4.1. Une programmation doit au minimum définir une taille de pelouse
- Etant donné
-
le contenu de programmation (000ms)
- Lorsque
-
l’application crée la programmation (000ms)
- Alors
-
l’application doit émettre le message d’erreur (001ms)
Ligne 0 - Pas de contenu.
4.2. Une tondeuse doit être décrite par deux lignes, sa position et ses instructions.
- Etant donné
-
le contenu de programmation (000ms)
5 5
0 0 N
- Lorsque
-
l’application crée la programmation (000ms)
- Alors
-
l’application doit émettre le message d’erreur (000ms)
Ligne 2 - Tondeuse incomplète.
4.3. Les coordonnées se composent de deux nombres positifs séparés par un espace.
L’expression régulière valide est d+ d+.
- Etant donné
-
le contenu de programmation (000ms)
(2, 3)
- Lorsque
-
l’application crée la programmation (000ms)
- Alors
-
l’application doit émettre le message d’erreur (000ms)
Ligne 1 - Coordonnées invalides: '(2, 3)'.
4.4. La position de la tondeuse est représentée par une combinaison de coordonnées (x, y) et d’une lettre indiquant l’orientation selon la notation cardinale anglaise (N, E, W, S).
L’écriture des valeurs de la position se fait sans ponctuation, séparées par un espace.
L’expression régulière valide est d+ d+ [NEWS].
- Etant donné
-
le contenu de programmation (000ms)
5 5
0, 0, N
GAGAGAGAA
- Lorsque
-
l’application crée la programmation (000ms)
- Alors
-
l’application doit émettre le message d’erreur (000ms)
Ligne 2 - Position invalide: '0, 0, N'.
4.5. Les instructions sont une séquence simple de lettres.
Les lettres possibles sont « D », « G » et « A ».
L’expression régulière valide est [DGA]+.
- Etant donné
-
le contenu de programmation (000ms)
5 5
1 2 N
POKER
- Lorsque
-
l’application crée la programmation (000ms)
- Alors
-
l’application doit émettre le message d’erreur (000ms)
Ligne 3 - Instructions invalides: 'POKER'.
4.6. Une tondeuse déployée au-delà de la pelouse déclenche un message d’erreur
- Etant donné
-
le contenu de programmation (000ms)
5 5
6 6 E
AADAADADDA
- Lorsque
-
l’application crée la programmation (000ms)
- Alors
-
l’application doit émettre le message d’erreur (000ms)
Ligne 2 - Tondeuse en dehors de la pelouse.
5. Exécution
Chaque tondeuse se déplace de façon séquentielle, ce qui signifie que la seconde tondeuse ne bouge que lorsque la première a exécuté intégralement sa série d’instructions.
5.1. A l’issue de l’exécution d’une série d’instructions par la tondeuse, chaque tondeuse communique sa position et son orientation.
- Etant donné
-
le contenu de programmation (000ms)
5 5
1 2 N
GAGAGAGAA
3 3 E
AADAADADDA
- Lorsque
-
l’application crée la programmation (000ms)
- Et que
-
l’application exécute la programmation (002ms)
- Alors
-
les positions des tondeuses doivent être (001ms)
| Position |
|---|
1, 3, N |
5, 1, E |
5.2. Si la position aprés mouvement est en dehors de la pelouse, la tondeuse ne bouge pas, conserve son orientation et traite la commande suivante.
- Etant donné
-
le contenu de programmation (000ms)
5 5
0 3 N
AAA
- Lorsque
-
l’application crée la programmation (000ms)
- Et que
-
l’application exécute la programmation (000ms)
- Alors
-
les positions des tondeuses doivent être (000ms)
| Position |
|---|
0, 5, N |
Lexique
Vous retrouverez ici les concepts utilisés dans cette documentation, ainsi que leur équivalent en anglais.
- Coordonnées (anglais: Coordinates)
-
Système de localisation utilisé par l’application pour une pelouse.
Par exemple, la position de la tondeuse pourrait être « 0, 0, N », ce qui signifie qu’elle se situe dans le coin
inférieur gauche de la pelouse, et orientée vers le nord. - Instructions (anglais: Instructions)
-
Séquence de lettres simples qui décrit les commandes à envoyer à une tondeuse.
Les commandes possibles sont au nombre de trois :
| Commande | Signal | Action |
|---|---|---|
Droite |
D |
Pivote la tondeuse de 90° à droite, sans la déplacer. |
Gauche |
G |
Pivote la tondeuse de 90° à gauche, sans la déplacer. |
Avance |
A |
Avance la tondeuse d’une case dans la direction à laquelle elle fait face, et sans modifier son orientation. |
- Orientation (anglais: Direction)
-
L’orientation cardinale des tondeuses.
Elle s’exprime d’une lettre indiquant l’orientation selon la notation cardinale anglaise (N, E, W, S).
| Orientation | Sens | Notation |
|---|---|---|
Au nord |
Haut |
N |
À l’est |
Droite |
E |
À l’ouest |
Gauche |
W |
Au sud |
Bas |
S |
- Pelouse (anglais: Lawn)
-
L’espace vert sur lequel opère les tondeuses.
Les pelouses sont considérées comme des surfaces rectangulaires planes.
Au besoin d’une rotation, on considèrera la pelouse comme alignée aux axes.
La pelouse est divisée en grille pour simplifier la navigation. - Position (anglais: Position)
-
Décrit l’état d’une tondeuse sur la pelouse.
Cette position se compose de deux données :-
Les coordonnées de la tondeuse
-
Son orientation
-
- Tondeuse (anglais: Mower)
-
Tondeuse à gazon, automatisée, proposée par la société MowItNow.
Elle est capable de tondre une pelouse de façon autonome en suivant un jeu d’instructions.
L’application peut piloter une ou plusieurs tondeuses déployées sur une pelouse selon la configuration.
Références
-
[github-repo] Dépot du projet, GitHub Repository
-
[github-doc] Documentation du projet, GitHub Pages