Les cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies. En savoir plus

Robot Gyropode - Self balancing robot

Sauvegarder: 3 J'aime

Partager:

Difficulté:

J’ai toujours été fasciné par ces robots capables de se déplacer en équilibre sur deux roues. On trouve sur le net énormément d’infos, de tutos et autres explications sur les robots gyropode mais j’ai eu du mal à trouver toutes les explications dont j’avais besoin sur un seul site. Je vais donc décrire brièvement les différentes étapes de la construction de mon robot gyropode et partager le code. N’hésitez pas à laisser un commentaire si vous avez besoin de plus d’infos ou pour me donner des conseils d’améliorations.


Pour la petite histoire, j’ai nommé mon robot Lu6L3 en l’honneur de ma fille qui a fait ses premiers pas au même moment où je suis parvenu à faire tenir en équilibre mon robot :)

Matériel :

Budget : 25€

Etape 1 : Le robot en action

Voici mon robot Lu6l3 en fonctionnement :)

Etape 2 : Explications générales et schéma

Le fonctionnement repose sur des principes assez simples. Un capteur mesure l’angle d’inclinaison par rapport à la position d’équilibre et corrige la position en actionnant les moteurs dans la direction de la chute. 

Un Arduino nano est le coeur du montage. On y relie le capteur MPU6050, j’ai choisi de le placer sous le robot pour être au plus près de l’axe de rotation. Un L293D sert de contrôleur pour les 2 motoréducteurs. Une seule alimentation de 9V pour le montage est nécessaire. Coté mécanique, mon robot est réparti sur trois étage. Sur le premier sont fixés les motoréducteurs et le MPU6050. Sur le deuxième étage, se trouve la carte de contrôle constituée d’un Arduino nano et d’un L293d. L’alimentation 9V se trouve au troisième étage où j’ai également ajouté un interrupteur. Ces trois étages sont assemblés au moyen de tiges filetées et de tubes en aluminium.

Les explications plus en détail suivent.

Etape 3 : Le code

Fichiers :

Etape 4 : Le capteur MPU6050

Le MPU6050 est une petite carte électronique équipée d’un gyroscope et d’un accéléromètre. 

  • Le gyroscope mesure ce qu’on appelle la vitesse angulaire qui correspond à la vitesse de changement de l’angle. Selon la documentation du MPU 6050, en divisant les valeurs brutes par 131, on obtient une valeur en degré / seconde. En mesurant à interval régulier, il est facile de calculer l’angle d’inclinaison. Cette mesure n’est pas parfaite et la mesure par interval conduit à des déviations. Sur une courte durée, cette valeur est fiable mais sur des durées plus longues, la déviation devient trop importante.

  • L’accéléromètre mesure la force de la gravité, avec cette valeur et quelques formules de trigonométrie, on peut calculer l’angle d’inclinaison. L’accéléromètre ne calcule pas sur un interval mais à l’instant donné. Il n’y a donc pas de déviation sur la durée. Par contre, d’autres forces sont mesurées ce qui conduit à une erreur de mesure.


La combinaison des deux angles d’inclinaisons obtenus, l’un par le gyroscope et l’autre par l’accéléromètre est donc nécessaires pour réduire au maximum les erreurs de mesures.


J’ai utilisé le code expliqué sur le site https://playground.arduino.cc/Main/MPU-6050 pour obtenir les différentes valeurs du gyroscope et de l’accéléromètre.

Etape 5 : Le filtre complémentaire

Pour combiner de manière optimale les mesures du gyroscope et de l’accéléromètre, il y a plusieurs possibilité mathématiques. J’ai choisi la plus facile, le filtre complémentaire. La formule est la suivante:

Angle filtré = α × (Gyroscope Angle) + (1 − α) × (Accelerometer Angle)     

où α est le facteur de correction qui dépend de l’interval de mesure, ce paramètre est généralement proche 0.98

Etape 6 : Le PID

Maintenant que l’angle d’inclinaison est connu, il faut envoyer un signal au moteur pour corriger l’inclinaison. Ce signal sera d’intensité différente en fonction de l’inclinaison par rapport à la position d’équilibre. Plus l’écart est important, plus la vitesse de rotation des moteurs sera élevée et inversement. Pour ce faire un modèle mathématique est utilisé: le PID pour proportionnelle, Intégrale et Dérivée. Une très bonne explication du régulateur PID se trouve ici: http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/

Les trois constante que sont Kp, Ki et Kd doivent être ajustée pour optimiser l’équilibre. Le bon réglages de ces constantes peut faire la différences entre un échec et une réussite du projet.

Etape 7 : Améliorations

Les différentes pistes d’améliorations que j’envisage sont:

  • Descendre le centre de gravité en plaçant la pile un étage plus bas. Ceci devrait réduire la force à appliquer pour contrer les oscillations.

  • La vitesse de rotation des moteurs me semble être un paramètre critique, le robot peut être optimisé en choisissant les bon moteurs.

  • La prochaine étape est de faire se déplacer le robot et d’y ajouter une télécommande.

Etape 8 :

Sources :

http://www.ferdinandpiette.com/blog/2011/08/implementer-un-pid-sans-faire-de-calculs/

https://playground.arduino.cc/Main/MPU-6050

https://courses.ece.cornell.edu/ece5990/ECE5990_Fall15_FinalProjects/Yuzhuo_Sun/ECE5990_project_demo/design.html


Sauvegarder: 3 J'aime

Partager:

Recevez une fois par mois les meilleurs tutoriels Déco dans votre boîte mail


Ces tutoriels devraient vous plaire

Construire son Bartop Arcade de A à Z
Comment fabriquer son filament pour imprimante 3D
fabrication de circuits imprimés facile