PRÉSENTATION
PMI
WaterCleanBot
Vendredi 8 novembre
2024
I- Explication du code
a) Structure générale :
- [Link]
- [Link]
- Tests :
- test_bot.py
- test_waste.py
- Plugins
I- Explication du code
c) Tests :
Ce sont des classes permettant d’effectuer des tests si la fonction a bien été réalisée.
i) test_bot.py :
Input : bot et waste
Tester si les déchets ont les bonnes coordonnées
Tester si il n’y a pas de voisins
3 règles pour tester certaines conditions :
- Trouver les voisins -> compteur à 0, compteur de déchet, initialisation avec 5 déchets
(collecté ?, compteur de disparition?)
ii) test_waste.py :
S’assure que les compteurs cpt_collected et cpt_disappear sont à zéro
Collecte un déchet et vérifie que waste_collected est True
Tester si le bot le plus proche d’un déchet est vraiment le plus proche
I- Explication du code
b) Plugins :
OBSTACLES
Input : self, shape, position, size
Affichage : plot des formes
Collision (dépend de la forme):
- Distance < radius²
- Distance obstacle < radius + taille
Obstacles aléatoires :
- Loi uniforme
- Ponton du port
Base generator, Animation
• La classe « Base » génère une position aléatoire sur la carte tout en
vérifiant qu'elle ne chevauche pas les obstacles. Elle continue à
chercher une position libre tant qu'elle tombe sur un obstacle.
• La classe « Animation » gère la simulation des robots, des obstacles et
des déchets. Elle met à jour les images une par une en suivant les règles
de mouvement et d'interaction, et termine la simulation dès que tous les
déchets sont ramassés.
Bot
Ce code se sépare en deux grosses parties. La première sur les propriétés du « Bot » et une autre
sur son comportement avec toutes les règles que il devra respecter.
1) Propriétés du bot:
- Une position aléatoire dans une zone défini
- Un vecteur déplacement
- Un rayon de détection
- Une capacité de chargement
Il y a aussi des fonctions pour tracer le bot, créer sa zone de vision et tracer les éléments
collectés.
Bot
2) Comportement du bot:
- Les fonctions « bot_rules » permettent au bot d’évier les collisions, de collecter des
déchets et de retourner à la base.
- Une fonction qui permet de détecter les autres « bots » à proximité et calcule leur
direction
- Une fonction qui permet de repérer les « wastes » les plus proches en calculant les
vecteurs directionnels
- Une dernière fonction permet au « bot » de déposer la charge du robot à la base
Waste
1) Cette classe permet de modéliser les déchets flottants dans un environnement avec
des obstacles et des courants d’eau. Parmi les fonctions on retrouve:
-Les déplacement en fonction des courants et collisions
-La collecte des déchets
-Une fonction pour éviter les obstacles
-La génération de tas de déchet.
Res_bot, Res_file_manager
• La classe « Res_bot » s’occupe de sauvegarder les données des robots (charge,
distance parcourue…) dans des fichier CSV
• La classe correspondante à « res_file_manager » s’occupe de la collecte,
l’enregistrement et la visualisation des données de performances du robot. A partir de
fichier CSV, elle va générer des graphiques à chaque frame.
Main
• Ce fichier lance une simulation à l’aide de toute les classe définit auparavant. Pour faire
cela on utilise des fichier YAML pour récupérer les données. Différentes étapes sont
ensuite effectuées par le code:
- Le chargement des paramètres
- La génération des éléments
- L’animation
Simulation
Questions
• Sur la simulation, les déchets se bloque sur le bord de la carte. Dans le cas d’une
situation réelle ne serait-il pas mieux de faire que ces déchets disparaissent et
apparaissent dans la carte ?
• Certaines collisions n’ont pas l’air de fonctionner :
- Le robot traverse les obstacles
- Le pont n’entraine pas de collisions ?