Update README.md
Browse files
README.md
CHANGED
|
@@ -7,4 +7,137 @@ tags:
|
|
| 7 |
- Chiot robot
|
| 8 |
- Simulation de décisions
|
| 9 |
- cerveau d'animaux de compagnie (IA)
|
| 10 |
-
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
- Chiot robot
|
| 8 |
- Simulation de décisions
|
| 9 |
- cerveau d'animaux de compagnie (IA)
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
## 📄 Documentation du Modèle MiRobot
|
| 13 |
+
|
| 14 |
+

|
| 15 |
+
|
| 16 |
+
### 🤖 Présentation du Modèle MiRobot : Simulation de Chiot Robot
|
| 17 |
+
|
| 18 |
+
**MiRobot** est un modèle de robotique basé sur l'**Apprentissage par Renforcement (RL)**, conçu pour simuler le comportement primaire et les interactions d'un chiot robot. Développé par Clemylia, ce modèle vise à démontrer comment un agent d'Intelligence Artificielle peut apprendre à répondre à des commandes externes tout en gérant ses besoins internes.
|
| 19 |
+
|
| 20 |
+
Ce modèle est idéal pour l'étude et l'expérimentation dans les domaines de la robotique simulée et des systèmes d'agents autonomes.
|
| 21 |
+
|
| 22 |
+
-----
|
| 23 |
+
|
| 24 |
+
### 🚀 Démarrage Rapide
|
| 25 |
+
|
| 26 |
+
Pour utiliser MiRobot, vous devez disposer d'un environnement Python avec les bibliothèques **Gymnasium** et **Stable Baselines3** installées.
|
| 27 |
+
|
| 28 |
+
#### 1\. Installation des Dépendances
|
| 29 |
+
|
| 30 |
+
```bash
|
| 31 |
+
pip install gymnasium stable-baselines3 huggingface_hub
|
| 32 |
+
```
|
| 33 |
+
|
| 34 |
+
#### 2\. Chargement et Exécution du Modèle
|
| 35 |
+
|
| 36 |
+
Le script suivant télécharge automatiquement l'environnement personnalisé et le modèle entraîné depuis Hugging Face, puis exécute une courte simulation.
|
| 37 |
+
|
| 38 |
+
```python
|
| 39 |
+
import gymnasium as gym
|
| 40 |
+
from stable_baselines3 import PPO
|
| 41 |
+
from gymnasium import register
|
| 42 |
+
from huggingface_hub import hf_hub_download
|
| 43 |
+
import os
|
| 44 |
+
|
| 45 |
+
# --- PARAMÈTRES DU DÉPÔT ---
|
| 46 |
+
REPO_ID = "Clemylia/MiRobot"
|
| 47 |
+
MODEL_FILE = "mirobot_final_model.zip"
|
| 48 |
+
ENV_SCRIPT_FILE = "MiRobotEnv.py"
|
| 49 |
+
ENV_ID = 'MiRobot-v0'
|
| 50 |
+
|
| 51 |
+
# 1. Téléchargement des Fichiers
|
| 52 |
+
env_path = hf_hub_download(repo_id=REPO_ID, filename=ENV_SCRIPT_FILE)
|
| 53 |
+
model_path = hf_hub_download(repo_id=REPO_ID, filename=MODEL_FILE)
|
| 54 |
+
|
| 55 |
+
# 2. Chargement de la Classe d'Environnement (MiRobotEnv)
|
| 56 |
+
try:
|
| 57 |
+
with open(env_path, 'r') as f:
|
| 58 |
+
exec(f.read())
|
| 59 |
+
except Exception as e:
|
| 60 |
+
print(f"Erreur lors du chargement de l'environnement: {e}")
|
| 61 |
+
exit()
|
| 62 |
+
|
| 63 |
+
# 3. Enregistrement de l'Environnement Custom
|
| 64 |
+
try:
|
| 65 |
+
register(
|
| 66 |
+
id=ENV_ID,
|
| 67 |
+
entry_point='MiRobotEnv:MiRobotEnv',
|
| 68 |
+
)
|
| 69 |
+
except gym.error.UnregisteredEnv:
|
| 70 |
+
pass # Déjà enregistré
|
| 71 |
+
|
| 72 |
+
# 4. Chargement du Modèle Entraîné (PPO)
|
| 73 |
+
model = PPO.load(model_path)
|
| 74 |
+
print("✅ Modèle MiRobot chargé et prêt pour l'inférence.")
|
| 75 |
+
|
| 76 |
+
# 5. Simulation (Inférence)
|
| 77 |
+
env = gym.make(ENV_ID)
|
| 78 |
+
obs, info = env.reset()
|
| 79 |
+
action_map = {0: "S'Arrêter", 1: "Avancer", 2: "Tourner G", 3: "Tourner D"}
|
| 80 |
+
|
| 81 |
+
print("\n--- Démarrage de la Simulation MiRobot ---")
|
| 82 |
+
for i in range(20):
|
| 83 |
+
action, _states = model.predict(obs, deterministic=True)
|
| 84 |
+
obs, reward, terminated, truncated, info = env.step(action)
|
| 85 |
+
|
| 86 |
+
print(f"[Pas {i+1}] Action Choisie: {action_map[action]}")
|
| 87 |
+
env.render() # Affiche l'état interne de MiRobot
|
| 88 |
+
|
| 89 |
+
if terminated or truncated:
|
| 90 |
+
obs, info = env.reset()
|
| 91 |
+
|
| 92 |
+
env.close()
|
| 93 |
+
print("\nSimulation terminée.")
|
| 94 |
+
```
|
| 95 |
+
|
| 96 |
+
-----
|
| 97 |
+
|
| 98 |
+
### 🧠 Détails du Modèle et de l'Environnement
|
| 99 |
+
|
| 100 |
+
Le modèle **MiRobot** prend ses décisions en interprétant un vecteur d'état (Observation) et choisit une action parmi quatre options (Action).
|
| 101 |
+
|
| 102 |
+
#### A. Espace d'Observation (L'état du Chiot)
|
| 103 |
+
|
| 104 |
+
L'observation est un vecteur de 5 nombres décimaux (`float`) que l'agent d'IA utilise pour prendre une décision.
|
| 105 |
+
|
| 106 |
+
| Index | Nom de la Variable | Plage de Valeurs | Rôle |
|
| 107 |
+
| :---: | :--------------- | :-------------- | :--- |
|
| 108 |
+
| **0** | `Commande_Avancer` | $0.0$ ou $1.0$ | Commande binaire du maître (1 si demande d'avancer). |
|
| 109 |
+
| **1** | `Commande_Tourner` | $0.0$ ou $1.0$ | Commande binaire du maître (1 si demande de tourner). |
|
| 110 |
+
| **2** | `Faim` | $0.0$ (Pleine) à $1.0$ (Affamée) | Niveau de faim interne (augmente avec le temps). |
|
| 111 |
+
| **3** | `Sommeil` | $0.0$ (Éveillé) à $1.0$ (Fatigué) | Niveau de fatigue interne (augmente avec le temps). |
|
| 112 |
+
| **4** | `Humeur` | $-1.0$ (Mauvaise) à $1.0$ (Joyeuse) | État émotionnel du chiot (influencé par la faim/sommeil). |
|
| 113 |
+
|
| 114 |
+
#### B. Espace d'Action (Ce que MiRobot peut faire)
|
| 115 |
+
|
| 116 |
+
Le modèle sélectionne une action discrète à chaque pas de temps.
|
| 117 |
+
|
| 118 |
+
| ID d'Action | Action du Robot |
|
| 119 |
+
| :---------: | :------------- |
|
| 120 |
+
| **0** | **S'arrêter** (ou ne rien faire) |
|
| 121 |
+
| **1** | **Avancer** |
|
| 122 |
+
| **2** | **Tourner à gauche** |
|
| 123 |
+
| **3** | **Tourner à droite** |
|
| 124 |
+
|
| 125 |
+
-----
|
| 126 |
+
|
| 127 |
+
### 🏅 Fonction de Récompense (Ce que MiRobot apprend)
|
| 128 |
+
|
| 129 |
+
Le modèle PPO a été entraîné pour maximiser la récompense cumulée, ce qui signifie qu'il a appris à :
|
| 130 |
+
|
| 131 |
+
* **Obéir (Récompense Positive 🏆) :** Choisir l'action demandée par le maître (`Commande_Avancer` ou `Commande_Tourner`).
|
| 132 |
+
* **Maintenir le bien-être (Récompense/Pénalité) :** L'agent est pénalisé proportionnellement à ses niveaux de **Faim** et de **Sommeil**, encourageant implicitement l'intégration future d'actions de bien-être (dormir, manger) si le modèle est étendu.
|
| 133 |
+
|
| 134 |
+
-----
|
| 135 |
+
|
| 136 |
+
### 🛠️ Contribution et Extension
|
| 137 |
+
|
| 138 |
+
Ce projet est une preuve de concept. Nous encourageons les développeurs à étendre **MiRobot** en ajoutant :
|
| 139 |
+
|
| 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 \!
|