intelligence_du_pendule_de_furuta
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| intelligence_du_pendule_de_furuta [2022/02/06 10:36] – serge | intelligence_du_pendule_de_furuta [2024/12/10 16:05] (Version actuelle) – Benjamin Labomedia | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| <WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
| - | **[[intelligence_artificille|Intelligence Artificielle]]** | + | **[[intelligence_artificielle|Intelligence Artificielle]]** |
| </ | </ | ||
| Ligne 9: | Ligne 9: | ||
| </ | </ | ||
| - | =====C' | + | {{ : |
| - | Une Intelligence Artificielle n'est jamais intelligente. C'est un programme informatique qui comprend à un moment donné un Apprentissage | + | =====C' |
| + | Une Intelligence Artificielle n'est jamais intelligente.\\ | ||
| + | **C'est un programme informatique qui comprend à un moment donné un Apprentissage | ||
| =====Ressources===== | =====Ressources===== | ||
| + | {{ : | ||
| * **[[https:// | * **[[https:// | ||
| * **[[https:// | * **[[https:// | ||
| - | + | * **[[https:// | |
| + | * **[[https:// | ||
| =====Principes===== | =====Principes===== | ||
| - | * Un PC serveur avec l'IA, avec un GUI ou des BP et un petit écran. | ||
| - | * Un PC client sur le pendule. | ||
| - | * Ils communiquent en OSC par un wifi adhoc/ | ||
| - | |||
| L' | L' | ||
| Un step est: | Un step est: | ||
| * Le pendule envoie 4 items: (position, vitesse) du chariot, (position, vitesse) du pendule. | * Le pendule envoie 4 items: (position, vitesse) du chariot, (position, vitesse) du pendule. | ||
| - | * Le serveur répond par une impulsion sur le moteur dans un sens ou dans l' | + | * Le serveur répond par une impulsion sur le moteur dans un sens ou dans l' |
| + | Un cycle se termine au bout de 2000 steps. | ||
| - | Le nombre de steps est limité, pour recommencer souvent, ce qui va faire converger l' | + | =====Installation |
| - | Un apprentissage comprend un nombre total de steps entre 100 000 et 1 000 000. | + | Nous utilisons Gym de OpenAI et Stable-Baselines3.\\ |
| - | + | Le code de Stable-baselines est le code de Baselines nettoyé, amélioré, documenté. Stable-baselines3 est la dernière version, il utilise Torch. [[https:// | |
| - | ====Reset pour un nouveau cycle==== | + | Les modules python à installer: stable-baselines3 et pyglet. Pyglet ne sert qu'a tester l' |
| - | * Le serveur demande un reset au pendule | + | |
| - | * Le pendule se place dans une position angulaire entre -180 et 180 degrés, avec une petite vitesse angulaire | + | |
| - | * Le chariot est proche | + | |
| - | * Le client envoie ses '/ | + | |
| - | * Un nouveau cycle commence | + | |
| - | + | ||
| - | ====Calcul de la vitesse et de la position==== | + | |
| - | + | ||
| - | * Le pendule envoie à une fréquence élevée | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ====Matériels==== | + | |
| - | ===Choix du PC pour l'IA=== | + | |
| - | Le fichier de poids fait ~46 ko. Un Raspi 4 doit suffire. | + | |
| - | + | ||
| - | ===Choix du PC pour le pendule=== | + | |
| - | Un Raspi 3 et du Arduino ? | + | |
| - | + | ||
| - | + | ||
| - | =====Installation===== | + | |
| - | Nous utilisons Gym de OpenAI et Stable-Baselines3. | + | |
| - | + | ||
| - | ===Stable-baselines3=== | + | |
| - | Le code de Stable-baselines est le code de Baselines nettoyé, amélioré, documenté. | + | |
| - | Stable-baselines3 est la dernière version, il utilise | + | |
| - | * **[[https:// | + | |
| - | + | ||
| - | **Installation: | + | |
| - | Les modules python à installer: stable-baselines3[extra] | + | |
| <code bash> | <code bash> | ||
| Ligne 71: | Ligne 41: | ||
| </ | </ | ||
| - | Télécharger les sources de **[[https:// | ||
| Dans votre dossier " | Dans votre dossier " | ||
| <code bash> | <code bash> | ||
| git clone https:// | git clone https:// | ||
| # Allez dans le dossier des sources | # Allez dans le dossier des sources | ||
| - | cd / | + | cd ./furuta |
| python3 -m venv mon_env | python3 -m venv mon_env | ||
| source mon_env/ | source mon_env/ | ||
| python3 -m pip install -r requirements.txt | python3 -m pip install -r requirements.txt | ||
| </ | </ | ||
| - | =====Création d'un Environment particulier dans Gym de OpenAI===== | + | |
| - | ====Ressources==== | + | =====Petit Pendule |
| - | **[[https://stable-baselines3.readthedocs.io/en/master/guide/ | + | ====Version tout en python==== |
| + | Au bout de très longs apprentissages, | ||
| + | Le codeur du balancier de 4 000 points crée 16 000 callbacks. En estimant la vitesse de rotation du balancier à 1 tour par seconde, la fréquence d' | ||
| + | Le moteur a un codeur de 1 000 points: le même calcul ajoute 4 000 Hz.\\ | ||
| + | |||
| + | Les gpio d'une Pi ne peuvent pas tourner à plus de 20 000 Hz: [[https://atman-iot.com/blog/raspberry-pi-benchmark/|Can the Raspberry pi acquire high frequency signals?]] | ||
| + | |||
| + | Les vitesses de rotation sont plus rapides que 1 tour/ | ||
| + | |||
| + | Le codeur de 4 000 points a été remplacé par un codeur de 1 000 points, qui est grandement suffisant: les frottements ne permettent pas d' | ||
| + | |||
| + | ===Training avec " | ||
| + | La méthode training_best de train_test.py est étrange: la doc n'est pas claire, ça ne finit jamais, il y a un message d' | ||
| + | <code python> | ||
| + | eval_callback = EvalCallback(self.env, | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====Suivi de l' | ||
| + | ====Installation, | ||
| + | tensorboard est dans les requirements.\\ | ||
| + | Dans le dossier du projet, qui contient le venv=mon_env, | ||
| + | ./ | ||
| + | |||
| + | Dans un navigateur: | ||
| + | http:// | ||
| + | |||
| + | |||
| + | |||
| + | ====Exemples==== | ||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | ====Moyenne des récompenses==== | ||
| + | {{: | ||
| + | avec rollout/ | ||
| - | {{tag> | + | {{tag> bestiaire_ia |
intelligence_du_pendule_de_furuta.1644143796.txt.gz · Dernière modification : de serge
