Clemylia commited on
Commit
f16ce6c
·
verified ·
1 Parent(s): a23022a

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +134 -1
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
+ ![MiRobot](http://www.image-heberg.fr/files/17604561812362382903.jpg)
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 \!