Update README.md
Browse files
README.md
CHANGED
|
@@ -140,4 +140,71 @@ Ce projet est une preuve de concept. Nous encourageons les développeurs à éte
|
|
| 140 |
1. **Actions Supplémentaires :** Ajouter des actions comme "Manger" ou "Dormir" pour que l'agent puisse activement réduire ses états de `Faim` et `Sommeil`.
|
| 141 |
2. **Simulation 2D/3D :** Intégrer un rendu visuel (avec Pygame ou Unity) à la méthode `render()` pour visualiser le chiot se déplaçant dans un espace physique.
|
| 142 |
|
| 143 |
-
N'hésitez pas à forker le dépôt sur Hugging Face pour proposer des améliorations \!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
1. **Actions Supplémentaires :** Ajouter des actions comme "Manger" ou "Dormir" pour que l'agent puisse activement réduire ses états de `Faim` et `Sommeil`.
|
| 141 |
2. **Simulation 2D/3D :** Intégrer un rendu visuel (avec Pygame ou Unity) à la méthode `render()` pour visualiser le chiot se déplaçant dans un espace physique.
|
| 142 |
|
| 143 |
+
N'hésitez pas à forker le dépôt sur Hugging Face pour proposer des améliorations \!
|
| 144 |
+
|
| 145 |
+
code exemple d'utilisation
|
| 146 |
+
|
| 147 |
+
```
|
| 148 |
+
import gymnasium as gym
|
| 149 |
+
from stable_baselines3 import PPO
|
| 150 |
+
from gymnasium import register
|
| 151 |
+
from huggingface_hub import hf_hub_download
|
| 152 |
+
import os
|
| 153 |
+
import sys # Import sys
|
| 154 |
+
|
| 155 |
+
# --- PARAMÈTRES DU DÉPÔT ---
|
| 156 |
+
REPO_ID = "Clemylia/MiRobot"
|
| 157 |
+
MODEL_FILE = "mirobot_final_model.zip"
|
| 158 |
+
ENV_SCRIPT_FILE = "MiRobotEnv.py"
|
| 159 |
+
ENV_ID = 'MiRobot-v0'
|
| 160 |
+
|
| 161 |
+
# 1. Téléchargement des Fichiers
|
| 162 |
+
env_path = hf_hub_download(repo_id=REPO_ID, filename=ENV_SCRIPT_FILE)
|
| 163 |
+
model_path = hf_hub_download(repo_id=REPO_ID, filename=MODEL_FILE)
|
| 164 |
+
|
| 165 |
+
# 2. Chargement de la Classe d'Environnement (MiRobotEnv)
|
| 166 |
+
# Extract the directory of the downloaded environment script
|
| 167 |
+
env_dir = os.path.dirname(env_path)
|
| 168 |
+
# Add this directory to sys.path so Python can find it as a module
|
| 169 |
+
if env_dir not in sys.path:
|
| 170 |
+
sys.path.insert(0, env_dir) # Add to the beginning of sys.path
|
| 171 |
+
|
| 172 |
+
try:
|
| 173 |
+
# No need for exec(f.read()) anymore, as gymnasium.make will handle the import
|
| 174 |
+
pass
|
| 175 |
+
except Exception as e:
|
| 176 |
+
print(f"Erreur lors du chargement de l'environnement: {e}")
|
| 177 |
+
exit()
|
| 178 |
+
|
| 179 |
+
# 3. Enregistrement de l'Environnement Custom
|
| 180 |
+
try:
|
| 181 |
+
register(
|
| 182 |
+
id=ENV_ID,
|
| 183 |
+
entry_point='MiRobotEnv:MiRobotEnv', # This will now try to import MiRobotEnv module
|
| 184 |
+
)
|
| 185 |
+
except gym.error.UnregisteredEnv:
|
| 186 |
+
pass # Déjà enregistré
|
| 187 |
+
|
| 188 |
+
# 4. Chargement du Modèle Entraîné (PPO)
|
| 189 |
+
model = PPO.load(model_path)
|
| 190 |
+
print("✅ Modèle MiRobot chargé et prêt pour l'inférence.")
|
| 191 |
+
|
| 192 |
+
# 5. Simulation (Inférence)
|
| 193 |
+
env = gym.make(ENV_ID)
|
| 194 |
+
obs, info = env.reset()
|
| 195 |
+
action_map = {0: "S'Arrêter", 1: "Avancer", 2: "Tourner G", 3: "Tourner D"}
|
| 196 |
+
|
| 197 |
+
print("\n--- Démarrage de la Simulation MiRobot ---")
|
| 198 |
+
for i in range(20):
|
| 199 |
+
action, _states = model.predict(obs, deterministic=True)
|
| 200 |
+
obs, reward, terminated, truncated, info = env.step(action)
|
| 201 |
+
|
| 202 |
+
print(f"[Pas {i+1}] Action Choisie: {action_map[action.item()]}") # Fixed: Use .item() to get scalar from numpy array
|
| 203 |
+
env.render() # Affiche l'état interne de MiRobot
|
| 204 |
+
|
| 205 |
+
if terminated or truncated:
|
| 206 |
+
obs, info = env.reset()
|
| 207 |
+
|
| 208 |
+
env.close()
|
| 209 |
+
print("\nSimulation terminée.")
|
| 210 |
+
```
|