Outils pour utilisateurs

Outils du site


petit_pendule_de_furuta_software

Ceci est une ancienne révision du document !


Petit Pendule de Furuta: Electronique Branchements Software

Mode d'emploi

Phallocratie n°2 - le pendule de Furuta est presque plug and play, pour l'allumer, il faut mettre le bouton d'alimentation situé à l'arrière de la boite sur “1”

Ensuite, une fois l'ordi démarré, on accède à des écrans interactifs :

Il existe 2 modes de fonctionnement : le mode Training qui rejoue l’entraînement du pendule et le mode Testing où le modèle déjà entrainé est utilisé pour maintenir la tige à la verticale

Via ce menu, il est aussi possible d'éteindre la Pi proprement

Pour ce mode, on peut démarrer ou arrêter l'entrainement

Pour ce mode, on peut démarrer ou arrêter le test du modèle

Cartel

Phallocratie même n°2 est un pendule de Furuta réalisé par Serge Pierre dans le cadre des activités de la Labomedia.

Le pendule de Furuta, ou pendule rotationnel inversé, se compose d'un bras entraîné qui tourne dans le plan horizontal et d'un pendule attaché à ce bras qui est libre de tourner dans le plan vertical. Il a été inventé en 1992 au Tokyo Institute of Technology par Katsuhisa Furuta et ses collègues.

Ce robot illustre particulièrement bien ce que l'on appelle “l'apprentissage par renforcement” dans le domaine de l'intelligence artificielle. En intelligence artificielle donc, plus précisément en apprentissage automatique, l'apprentissage par renforcement consiste, pour un agent autonome (robot, etc.), à apprendre à partir d'expériences, de façon à optimiser une récompense quantitative au cours du temps, positive ou négative. En répétant les expériences, le robot progresse.

Ce mode d'apprentissage provient de La boîte de Skinner (« Skinner box ») qui est un dispositif expérimental inventé par B. F. Skinner au début des années 1930 dans le but de simplifier l'étude des mécanismes de conditionnement. Il inventa cet appareil pour tester les capacités des rongeurs et des pigeons à subir un conditionnement opérant, c’est-à-dire faisant intervenir le comportement de l'animal et le renforcement de celui-ci par des stimuli renforçateurs (obtenir de la nourriture lorsque l'on fait la bonne action par exemple).

Phallocratie même n°2, pour maintenir sa tige à la verticale, a ainsi appris pendant plusieurs jours, plusieurs sessions d'entrainement ont été réalisées avant de garder la version “102” présentée ici.

Ce dispositif permet soit de démontrer le fonctionnement du pendule avec l''entraînement réalisé (Mode Testing), soit de rejouer l’entraînement en se déplaçant éventuellement dans les phases de cet entraînement (mode Training).

Réalisation : Serge Pierre avec l'aide d'adhérent-es de la Labomedia Documentation : https://ressources.labomedia.org/Accueil?do=search&id=accueil&q=furuta

Les sources du projet

GPIO d'un Pi3 B+ ou d'un Pi4

Ressources

General Purpose Input/Output sur fr.wikipedia.org Les ports GPIO (anglais : General Purpose Input/Output, littéralement Entrée-sortie à usage général) sont des ports d'entrées-sorties très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l'électronique embarquée, qui ont fait leur apparition au début des années 1980. Elles sont placées sur un circuit électronique afin de communiquer avec des composants électroniques et circuits externes. Il peut s'agir de détecteurs ou senseurs pour capter des données, ou encore de contrôler des commandes.

Liste des GPIO

Quelle API python choisir ?

compare python gpio api pointe vers elinux.org par l'auteur de pigpio. RPi.GPIO n'est plus maintenu, à la réputation de raccourcir la vie des moteurs. pigpio est plus rapide, voir https://atman-iot.com/blog/raspberry-pi-benchmark/.

Lancement du deamon

sudo pigpiod

et n'oublier pas de rajouter votre user au groupe gpio

Run deamon at startup

mkdir ~/.config/autostart
sudo nano ~/.config/autostart/pigpiod

coller

  [Desktop Entry]
  Type=Application
  Exec=sudo pigpiod

Câblage sur la Pi

Tension d'entrée des GPIO sur la PI

Les PINS GPIO sont à 1 si la tension d'entrée est comprise entre 1.8V et 3.3V, et à zéro si inférieure à 1.8V
Les entrées A B et Index de chaque codeurs sont baissées à 3V avec une puce Convertisseur de 4 niveaux logiques.

PWM

Matériels

Câblage

La puissance envoyée au moteur est contrôlée sur le PWM. PWM est toujours positif, il ne défini pas le sens de rotation: le sens est défini par IN1 et IN2. Voir wiki.dfrobot.com pour le détail du fonctionnement. Il est conseillé de faire une pause entre 2 changements de sens, un certain temps en fonction du moteur et des valeurs PWM avant après. En pratique, le moteur est utilisé au tiers de sa puissance, il a supporté des dizaines de millions de steps, ne chauffe pas du tout.
La fréquence des impulsions a été testée entre 14 Hz et 28 Hz. La durée de l'impulsion est de 0.02 à 0.03 seconde.
Voir le script de commande du moteur TODO rajouter le lien

US DIGITAL S1 Optical Shaft Encoder

Branchement direct sur la Pi

Latence des callbacks

Une Raspberry Pi peut gérer des callbacks jusqu'à 20kHz, sans erreur et sans latence.
Un codeur de 1000 points au tour appelle 2000 callbacks sur le canal A (montée et descente des tops), et autant sur le canal B. Soir des callbaks à 4000 Hz à un tour par seconde.
Un codeur de 4000 points appelle des callbacks à 16 000 Hz à un tour par seconde.

Soit 20 kHz pour les 2 codeurs à un tour par seconde. Mais certain transitoires vont plus vite que 1 tour par seconde. Les callbacks sont empilé sur une pile qui a été estimée à 2 mn après quelques heures d'apprentissage. Les actions moteur sont alors du n'importe quoi.

Solution

Le codeur de 4000 points du balancier a été remplacé par un codeur 1000 points.
La fréquence a 1 tour par seconde devient 8 kHz: ce qui fait une grosse marge par rapport à 20 kHz.

La précision est tout à fait suffisante: le point zéro est défini à -/+ 1 ou 2 ou 3 points, c'est très sensible.

Recherche sur ESP32

Branchement sur ESP32 et Com en SPI avec Raspi

Ressources

petit_pendule_de_furuta_software.1684764585.txt.gz · Dernière modification : 2023/05/22 14:09 de Benjamin Labomedia