Blog positron-libre

Chroniques électroniques et robotiques

VertiBot : projet de robot type pendule inversé

Publié le :

Note : cet article est une traduction de l'article VertiBOT de Miguel Angel de Frutos. C'est donc lui qui s'exprime dans les propos de cet article jusqu'a la ligne qui en indique la fin.

Le robot pendulaire inversé vertibot
Le pendule inversé Vertibot, crédit photo : Miguel Ángel de Frutos

Même si Vertibot n'est pas un robot à part entière, les pratiques décrites ici peuvent être utiles à certaines applications robotiques. Il s'agit ici de piloter des moteurs électriques en réaction à des signaux de positionnement acquis par le système.
VertiBOT est surtout un projet personnel éducatif réalisé dans le but d'avoir une expérience pratique dans l'utilisation et la manipulation des filtres de Kalman et des paramètres d'un régulateur PID.

Brève introduction et analyse du problème

Cette construction est un « pendule inversé » ; c'est à dire un pendule dont le centre de gravité est au-dessus de son axe de rotation ou de pivotement.
Ce genre de système est intrinsèquement instable et doit être constamment équilibré par une action externe pour rester dans une position d'équilibre.

Ce résultat est obtenu en appliquant un couple à son axe de pivotement (système à un seul degré de liberté) dans le cadre d'une rétroaction mesuré par le système lui même. Le couple appliqué sur l'axe du pendule est lui même à l'origine de la perturbation du système.
L'exemple classique pour comprendre l'aspect physique de ce problème est d'essayer de maintenir en équilibre un manche à balai renversé sur le bout de votre doigt.

Le pendule inversé est aussi l'un des problèmes classiques de la dynamique ; il y a de nombreuses références sur les principes du contrôle / commande qui donnent de multiples pistes pour le résoudre (automatismes, régulation et régulateurs PID).

L'équation du mouvement d'un pendule simple inversé est très similaire à celle d'un pendule classique dans les conditions suivantes :

Astuce : pour facliter l'écriture le « thêta tréma »  est remplacé par le Ö dans les textes qui suivent.

L'équation de ce pendule indique que : l'accélération angulaire Ö=(g/l)×sinus θ.

Ö = (g / l ) multiplié par sinus thêta

Ö est l'accélération angulaire du pendule, g est l'accélération de la pesanteur, l est la longueur du pendule et thêta est l'angle mesuré à partir de la position d'équilibre.

Il est facile de vérifier que le pendule accélère plus rapidement s'il est plus éloigné de sa position d'équilibre et que l'accélération est inversement proportionnelle à la longueur du pendule. On en déduit une importante spécification constructive : un pendule d'une grande hauteur (ce qui correspond à un "l" grand) tombe plus lentement que d'une faible.

Cette équation, bien que très utile dans une première approximation, ne nous donne pas assez d'informations pour tenter de modéliser la dynamique du contrôle de notre pendule.
Pour un développement plus complet du problème, il est nécessaire de passer à une modélisation de Lagrange. Le développement de ces équations peut être trouvé dans un livre ou une publication sur les systèmes modernes de contrôle, sous le titre « Advanced Control of Wheeled Inverted Pendulum Systems » [livre 1].

Photographie  en profil du vertibot en position d'équilibre vertical
Photographie du vertibot en position d'équilibre vertical

Les actionneurs du VertiBOT sont deux moteurs à courant continu pilotés par une commande électronique. Ces moteurs génèrent le couple nécessaire aux roues, pour maintenir la structure d'un déplacement angulaire proche de θ degré, ce qui est notre mot d'ordre ou signal de référence (θref = 90°).

Si vous souhaitez maintenir un équilibre précaire il est très important de connaître l'inclinaison réelle de la structure d'une manière rapide et avec une bonne précision (signal de retour).

L'erreur (ε) est la différence entre le signal de référence (consigne) et le signal de retour (mesure = signal de retour).
Elle sert à calculer la valeur de commande qui aura pour conséquence de corriger ou de s'opposer à la perturbation.

Les valeurs physiques nécessaires sont donc mesurées par un ensemble gyroscope et accéléromètre.

Le gyroscope fournit une mesure de la vitesse angulaire (thêta tréma). En intégrant cette mesure, nous pouvons obtenir la valeur de l'angle de pivotement. Toutefois, cette opération va intégrer le bruit du système lui-même, accumulant en quelques itérations, une grande dérive.

L'accéléromètre mesure les accélérations à la fois statique et dynamique.
Afin de séparer les deux composantes, nous sommes obligés d'utiliser un filtre passe-bas (ramène la composante statique : gravité) et un filtre passe-haut (accélération dynamique).

Une fois séparées, une opération trigonométrique simple, nous permet de calculer la pente. Cependant, le passage à travers les filtres de ce type (valeurs moyennes) engendre un retard important dans la réponse rendant le système instable.

Nous avons donc un gyroscope avec une dérive de plus en plus importante dans le temps et un accéléromètre lent et bruyant comme intrants dans notre système. La solution est de « fusionner « (filtre) les deux lectures. Cela ouvre aussi un champ intéressant d'étude et d'expérimentation sur les différentes stratégies choisies à cet effet : méthode unique de capteur, filtre de Kalman, filtre complémentaire…

Une fois que nous connaissons le signal d'erreur, nous devons concevoir un contrôleur qui agit sur les actionneurs de telle sorte que, après quelques itérations, l'erreur soit minimisée. Une consultation rapide de la théorie du contrôle nous aide à trouver une variété de contrôleurs hautement sophistiquées. Dans cette première approche, nous avons choisi le célèbre régulateur PID.

Un régulateur PID de base a une entrée et une sortie. L'entrée est notre signal d'erreur généré comme évoqué dans le paragraphe précédent ; la sortie donnera le nombre de rotation par minute du moteur pour compenser la perturbation. Le nouvelle état du système est donné par l'ensemble des capteurs.

La sortie du régulateur PID est composée par la somme de trois composantes : une réponse proportionnelle à l'erreur, l'action intégrale qui tend à annuler l'erreur statique et l'action dérivée qui anticipe la réaction de notre système.

Les constantes appropriées Kp, Ki et Kd, peuvent être déterminées par une méthode heuristique, dans laquelle une série d'approximations successives doit tendre à une solution stable pour le système. Cela a été une tâche difficile et fastidieuse avec laquelle je ne suis toujours pas entièrement satisfait.
Pour faciliter le travail, j'ai ajouté trois potentiomètres qui permettent de modifier rapidement les valeurs des constantes de fonctionnement.

Pendule vu côté masse
Le pendule avec sa masse constituée par la batterie et le circuit d'alimentation

Le matériel

VertiBOT est un printbot ; sa structure a été construite en utilisant une imprimante 3D. Comme toujours, vous pouvez trouver les fichiers des pièces sur le site Thingiverse.

Détail des circuits électroniques du pendule
Les circuits électroniques qui pilotent le vertibot

La structure est divisée en deux parties réunies par des vis. Ceci permet la configuration dans différentes hauteurs du pendule et d'observer les différentes réponses du système.
La batterie est située dans la partie supérieure du corps.
La partie inférieure contient les moteur-réducteur (MICROMETAL Pololu 50:1) et sert aussi de support pour l'électronique embarquée. Cette dernière doit être installée, avec les capteurs, aussi près que possible de l'axe de rotation du pendule.
L'électronique se compose du matériel listé en fin d'article.

Suivez ce lien pour voir une petite vidéo montrant la plateforme VertiBOT essayant de rester en équilibre.

Le schéma d'interconnexion

Schéma d'Interconnexion des modules électroniques du Vertibot
Schéma électronique du vertibot

Logiciel de visualisation

Afin d'avoir un affichage graphique des différents signaux et les réponses de cette plate-forme il a été prévue une interface graphique ; la communication sans fil, nous permet de visualiser en temps réel les valeurs actuelles des deux constantes du pilote, les lectures des capteurs, le signal de référence et la sortie du système.

Copie d'écran de l'affichage graphique des données du PID
Fenêtre d'affichage graphique du PID par logiciel

Cette application est basée sur un travail de Brett Beauregard.

Conclusions et perspectives d'avenir

Les moteurs décrits ici n'ont pas une réponse assez rapide pour rendre la plate-forme stable après une perturbation trop importante. Elle semble être en mesure de rester proche de son point d'équilibre pour les petites oscillations.

Il a été utilisé deux ensembles de valeurs du correcteur PID : un lorsque nous sommes près du point de référence et un plus agressifs quand nous sommes loin du point d'équilibre. Quand vous maintenez le robot en position horizontale, la régulation est inefficace sur les moteurs. Cette position est aussi utilisée lors des essais et de la mise au point.

Pour le moment nous travaillons sur une version incorporant des moteurs plus rapides avec des codeurs sur les roues. De cette façon, nous complétons le signal de retour donné par les capteurs pour gagner en précisions.

Note de l'auteur : cette rubrique ne prétend pas être un tutoriel : elle est seulement un résumé d'activité de projet de construction. Vous pouvez réaliser ce montage avec d'autres éléments. N'hésitez pas à essayer de nouveaux composants, des différents codes ou algorithmes.

Une possible liste du matériel

Composants et modules électroniques

Éléments mécaniques

- Fin de l'article publié par madebyfrutos -

Source : Le Vertibot de madebyfrutos - Miguel Angel de Frutos 2013, https://madebyfrutos.wordpress.com/2013/05/02/vertibot/.

Discussions

La description des étapes du projet donne le cheminement utilisé par Miguel Angel pour aller vers une mise au point électronique, logiciel et mécanique de son Vertibot.
Il est intéressant maintenant de reprendre tous ces points et d'y apporter des précisions et suggestions.
je vous donne donc dans les lignes suivantes, des ressources techniques pour votre propre construction de ce robot équilibriste.

Un bref historique

Le Vertibot se situe donc dans la mouvance des projets de robots pendulaires. Nous pouvons maintenant regarder de plus près la réalisation de Miguel Angel de Frutos.

A propos des modules électroniques

La source principale d'énergie est une batterie [ LIPO 2S 0,8 A ]. Elle est fixée au sommet du pendule avec une carte de régulation UBEC qui convertit le 7,4 V de la batterie vers du 5 V ou 6 V (sélectionnable). Cet ensemble constitue la masse du pendule.

Régulation 3,3 volts

Comme l'alimentation générale est en 5 volts, un régulateur de tension intégré permet d'obtenir les 3,3 volts nécessaires pour alimenter le circuit de l'IMU.

Composants de la régulation 3,3 Volts
Régulation 3,3 V

Remarque : la carte IMU consomme un peu plus que 6,5 mA. Elle pourrait être alimentée par une régulation câblée en cms (composant de surface) au plus près de l'arduino.

Circuit de l'IMU
Circuit de l'IMU à six axes de liberté avec composants ITG3200 et ADXL345

L'IMU est un module qui embarque un gyroscope et un accéléromètre à la fois. Avec cette carte, vous obtenez six degrés de liberté. Les capteurs communiquent par un Bus I2C et une broche de sortie INT (Interruption) est disponible sur chaque capteur. Elle permettent de selectionner le capteur dont nous désirons connaître la dernière grandeur physique mesurée.
L'alimentation se fait en 3,3 volts, d'ou la nécessité d'avoir un convertisseur de niveau logique pour pouvoir attaquer les entrées logiques 5 V de l'arduino.

Une autre remarque concernant l'IMU. Cette carte est une association de deux capteurs. Nous obtenons les valeurs physiques les une après les autres.
Une autre méthode pour obtenir une centrale inertielle rapide, serais d'avoir également la partie traitement embarquée sur le module (filtre de Kalman). Ainsi, l'arduino disposerait des valeurs physiques prêtes à l'emploi pour la commande du PID et gagnerait en temps de réponse du système en général.

Convertisseur de niveau logique

Le convertisseur (LLC) est un module dont seul les canaux tx sont utilisés. Nous pouvons aussi les câbler nous même pour gagner de la place et du poids en s'inspirant du schéma ci-dessous.

Circuit du convertisseur de niveau logique
Schéma du convertisseur de niveaux logiques

Pour les puristes, nous pouvons utiliser un convertisseur de niveau de bus I2C du type TCA9517A ; il est moins encombrant et spécialisé pour l'I2C.

Modem Bluetooth

Le modem Bluetooth est un cicuit électronique disposant de quatre broches ; il est optionnel pour le fonctionnement et sert pour la supervision des données du PID en temps réel pendant la phase de calibrage.
La réception des données se fait sur votre ordinateur avec une clée USB bluetooth.
Voir pour informations chez Sparkfun qui ne distribue plus les modules mais les garde en catalogue pour archives.

Module driver et controleur de moteur

La carte de commande qui gère les moteurs est déjà très compacte ; il sera donc difficile de faire mieux sauf en trouvant un modèle plus petit pour les mêmes courants. Le modèle présenté est une Pololu (avec contrôleur).

Circuit de commande des moteurs avec modules driver et contrôleur
Module driver et contrôleur de moteurs

Sparkfun propose aussi une version avec le même driver (TB6612FNG de Toshiba) ; la carte est de dimensions inférieures mais il faut faire plus de programmation au niveau des données échangées avec l'Arduino. Quelque soit la carte employée, elle à besoin de deux alimentions. Une dite de puissance (de 4,5 à 13,5 V max), pour alimenter l'étage de puissance intégré qui véhicule le courant des sorties moteurs, et une alimentation pour la logique. Cette dernière peut être comprise entre 2,7 et 5 V.

Les pièces mécaniques

Les moteurs-réducteurs sont des modèles miniatures qui mesurent 24 mm de longueur et 12 mm de côté maximum, avec un axe de sortie de 9 mm (en plus de la longueur) ; ils consomment 360 mA en charge à une tension d'alimentation de 6 Volts (260 tours/min et 0.07 Nm de couple). Plusieurs marques distribuent ce genre d'actionneur.

Les roues utilisées par Miguel sont des Pololu en diamètre 90 mm. Une fois encore, chacun est libre d'adapter le modèle de son choix. Il vaut mieux choisir un modèle léger ; une roue évidée (à gros rayons) sera plus légère qu'une massive. Pour les bricoleurs, un palonnier de servo-moteur fixé sur un gros bouchon de bidon ou de bouteille en plastique feront des roues peu couteuses pour votre prototype.

Comme indiqué dans l'article, le corps du robot est une réalisation exécutée à partir d'une imprimante 3D. Une découpe dans un matériaux rigide et léger conviendra tout aussi bien. La fixation sur les moteurs-réducteurs se fera à l'aide de colliers rilsan, d'un collier de plomberie ou d'une attache du même genre.

Resources techniques

Tous les codes Arduino et les fichiers de fabrication sont disponibles à partir de https://github.com/astromaf/VertiBOT
et les fichiers stl dans Thingiverse : http://www.thingiverse.com/thing:83091/#files

Equation de Lagrange et filtre de Kalman

Le livre Advanced Control of Wheeled Inverted Pendulum Systems de Ling Zhijun, Yuhang Yang et Liping Fan (auteurs) aborde tous les aspects historiques, pratiques et théoriques du controle commande des dispositifs de type pendule-inversé montés sur roues.

Les PID et autres logiciels

Pour tout savoir sur les PID et le logiciel de visualisation (Front End) avec le travail de Brett Beauregard : brettbeauregard.com/blog/.
Librairie PID Arduino : https://playground.arduino.cc/Code/PIDLibrary.

Le logiciel de visualisation

Il faudra équipé le robot d'un module bluetooth. Le logiciel de visualisation du PID est accssible à cette adresse : http://processing.org/download/.