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édenteProchaine révisionLes deux révisions suivantes | ||
intelligence_du_pendule_de_furuta [2022/02/09 09:24] – serge | intelligence_du_pendule_de_furuta [2022/06/30 11:51] – [Petit Pendule de Furuta] serge | ||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
{{ : | {{ : | ||
=====C' | =====C' | ||
- | Une Intelligence Artificielle n'est jamais intelligente. C'est un programme informatique qui comprend à un moment donné un Apprentissage | + | Une Intelligence Artificielle n'est jamais intelligente.\\ |
+ | **C'est un programme informatique qui comprend à un moment donné un Apprentissage | ||
=====Ressources===== | =====Ressources===== | ||
Ligne 18: | Ligne 18: | ||
* **[[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' | + | |
- | Un apprentissage comprend un nombre total de steps entre 100 000 et 1 000 000. | + | |
- | + | ||
- | ====Reset pour un nouveau cycle==== | + | |
- | * 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 de zéro avec une petite vitesse linéaire | + | |
- | * Le client envoie ses '/ | + | |
- | * Un nouveau cycle commence | + | |
- | + | ||
- | ====Calcul de la vitesse et de la position==== | + | |
- | Il est nécessaire de connaître vitesse et position du chariot et du pendule.\\ | + | |
- | La fréquence des impulsions moteur pourrait être de 50 Hz, soit une période de 0.02 s\\ | + | |
- | Pour un codeur de 4000 points sur un tour de chariot, sur un rayon de 200 mm, le déplacement du pendule est de 2*3.14*200/ | + | |
- | Si le chariot parcours 100mm en 1 seconde, soit 100/ | + | |
- | + | ||
- | Calcul de la vitesse: ????????????????????????????? | + | |
- | + | ||
- | ====Matériels pour le Dalek==== | + | |
- | **[[pendule_de_furuta_grand_modele|dalek]]**\\ | + | |
- | 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 de l' | =====Installation de l' | ||
- | Nous utilisons Gym de OpenAI et Stable-Baselines3. | + | 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:// | |
- | ===Stable-baselines3=== | + | Les modules python à installer: stable-baselines3 et pyglet. Pyglet ne sert qu'a tester l' |
- | 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 83: | Ligne 51: | ||
</ | </ | ||
- | ====Notre environement==== | + | =====Petit Pendule de Furuta===== |
- | Ressources: **[[https://stable-baselines3.readthedocs.io/en/master/guide/custom_env.html|Création | + | ====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/seconde: la Pi prend alors du retard. | ||
+ | |||
+ | 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'apprécier la position du points zéro à mieux que +- 1 ou 2 points. | ||
+ | |||
+ | ====Version avec ESP32==== | ||
+ | |||
+ | =====Suivi | ||
+ | ====Installation, | ||
+ | tensorboard est dans les requirements.\\ | ||
+ | Voir **[[https:// | ||
+ | Dans le dossier du projet, qui contient le venv=mon_env, | ||
+ | ./ | ||
+ | |||
+ | Dans un navigateur: | ||
+ | http:// | ||
+ | |||
+ | |||
+ | |||
+ | ====Exemples==== | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | ====Moyenne des récompenses==== | ||
+ | {{: | ||
+ | avec rollout/ | ||
- | Notre environnement: | ||
- | {{tag> | + | {{tag> bestiaire_ia |
intelligence_du_pendule_de_furuta.txt · Dernière modification : 2022/10/07 10:11 de serge