0% ont trouvé ce document utile (0 vote)
3 vues12 pages

Code de simulation pour WaterCleanBot

Transféré par

Assimi Dembélé
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues12 pages

Code de simulation pour WaterCleanBot

Transféré par

Assimi Dembélé
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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 ?

Vous aimerez peut-être aussi