Bonjour à toutes et à tous
Nous sommes heureux de vous présenter notre projet, le robot DiWheel. Notre robot se base sur une structure de LEGO, mais beaucoup de travail technique a été nécessaire pour mener ce passionnant projet à bien.
Si cela vous intéresse, n’hésitez pas, et cliquez sur ce lien pour en savoir plus !
-> Lire l’article complet <-
Archives par mot-clé : Matlab
Conception et optimisation d’un Robot DiWheel
Bienvenue chers visiteurs !
Étudiant à Polytech Angers nous avons eu, Adrien Soubrane et Corentin Amoruso, la chance de travailler sur l’un des projets proposés au cours de notre dernier semestre. Notre choix s’est porté sur l’étude du robot DiWheel !
Un DiWheel est un véhicule avec deux grandes roues latérales. Il a été inventé en 1880 mais n’a pas conquis le grand public, ce qui l’a fait disparaitre.
En effet, les balancements sont le principal défaut de ce moyen de transport.
L’objectif a été de concevoir un prototype de A à Z à l’aide du kit LEGO Mindstorm EV3 mais aussi d’étudier la stabilité de ce dernier.
Ce travail est une partie très importante car il permet de modéliser le robot, à la manière d’une maquette, avant de pouvoir le répliquer à échelle humaine.
C’est donc un projet sur la durée, et nous espérons sincèrement qu’un grand modèle verra le jour à Polytech Agers, grâce (en partie) à nos travaux.
Le contrôle du robot doit se faire en Bluetooth, dans notre cas avec une application smartphone.
Ce projet est très complet : nous avons dû, d’ans l’ordre, concevoir le robot, le contrôler, illustrer son comportement via des capteurs, modéliser mathématiquement le système, et mettre en place une loi de commande, pour réguler les oscillations.
- Pour commencer, la conception :
La première phase du travail, probablement la plus créative, est celle de la construction du robot ! Nous utilisons Studio 2.0 pour visualiser notre système.
Avant toute chose, nous avons cherché un logiciel nous permettant de modéliser les pièces LEGO. Après quelques recherches, nous nous sommes tournés vers Studio 2.0. - Après, le contrôle du robot :
L’étape suivante du projet a été de trouver une nouvelle manière de contrôler le DiWheel. En effet, ce dernier ne dispose que d’un seul moyen pour cela : appuyer directement sur les boutons de la brique EV3. C’est pourquoi nous voulions trouver un moyen plus amusant et pratique pour faire avancer notre robot. C’est de cette réflexion qu’ont découlées les idées de contrôler le DiWheel à l’aide d’une manette et d’une application.
- Robot instable (en ligne droite)
- Robot instable (rotations)
- Robot instable (perte de contrôle)
- Robot stable (ligne droite + demi tour)
- Ensuite, la modélisation du système :
Elle se déroule en trois parties : l’étude du système, la représentation d’état et l’expérimentation.
L’étude du système consiste à déterminer l’ensemble des constantes, des forces et des vitesses appliquées au robot afin de déterminer un modèle théorique. Il servira pour déterminer une représentation d’état contenant les variables que nous voulons changer. C’est pourquoi il ne faut pas perdre de vue notre but : réduire les balancements.
Notre choix s’est donc porté sur le modèle Lagrangien nous permettant d’obtenir les formules de l’accélération angulaire des roues et du corps. En effet, en atténuant les variations d’accélération, le robot deviendra plus stable.
Après simplification nous avons obtenus les formules respectives de l’accélération du corps et celle des roues : - Une fois la commandabilité du système étant assurée par le critère de Kalman, il ne suffisait plus qu’à trouver comment influencer le système.
Nous avons donc décidé d’utiliser une commande par retour d’état pour asservir le système. Cette méthode se base sur l’utilisation d’un gain correcteur afin de modifier en temps réel la sortie.
Le but est ainsi d’obtenir, par le capteur gyroscopique, non plus une courbe sinusoïdale mais une courbe de système de premier ordre. Elle est reconnaissable via deux phases : une transition (la valeur de la sortie varie) et une stabilisation (la sortie atteint une valeur limite).
Après simulation sur Scilab ou Matlab et si les résultats sont concluants, on peut implémenter cette loi de commande sur l’EV3. Certes le robot ira moins vite, mais il est devenu beaucoup plus stable. - corentin.amoruso@gmail.com
- adsoub@gmail.com
Nous devons réduire au maximum les oscillations, et nous devons y penser dès la création de la structure.
Nous avons donc choisi de placer la brique EV3 non pas au niveau de l’axe des roues mais en dessous. Cela permet d’abaisser le centre de gravité, en le plaçant sous l’axe des roues.
Pour la conception des roues, le choix de l’imprimante 3D était intéressant, mais trop contraignant, surtout avec le confinement. Nous avons donc décidé d’utiliser des quarts de roues LEGO. Nous n’avions plus qu’à trouver un moyen de les fixer à l’EV3.
Pour que le Diwheel avance sans soucis, il fallait trouver la meilleure configuration possible avec les différents engrenages et pièces LEGO à notre disposition. L’important était avant tout de réussir à transmettre le plus d’énergie possible des moteurs vers les roues. Pour cela, nous devions réfléchir à comment réduire au maximum les frottements pour permettre aux roues et aux engrenages de tourner le plus librement possible. Moins les frottements sont importants, meilleur sera le rendement.
A la manière d’un Mario Kart, nous voulions pouvoir maîtriser notre robot à l’aide d’une Wiimote et du gyroscope intégré.
Pour cela, nous voulions nous servir de la communication Bluetooth commune à l’EV3 et à la manette. Il fallait donc trouver un moyen de programmer la Wiimote afin de communiquer avec la brique EV3. La solution la plus simple est d’utiliser GlovePIE. C’est un logiciel dédié pour la Wiimote permettant de l’utiliser avec n’importe quel périphérique.
Malheureusement, compte tenu des conditions de travail (confinement, matériel, problème de Bluetooth…) nous n’avons pas pu connecter les deux périphériques ensembles. Néanmoins la solution reste viable si BlueSoleil ou un autre pilote fonctionne sur l’ordinateur utilisé pour la manipulation.
Une autre solution existe : modifier le système d’exploitation de la brique pour utiliser un programme disponible sur internet. Mais cette dernière nous semblait trop risquée, nous ne voulions pas endommager l’EV3.
Cependant, grâce à RemotEV3, une application android, nous pouvons commander le robot via bluetooth.
Le robot peut ainsi être dirigé dans toutes les directions et tous les sens.
La connexion étant plus simple avec un smartphone, nous n’avons eu aucun souci de fonctionnement.
Voici quelques démonstrations en vidéo :
Une fois que nous avons obtenu nos formules, on s’est intéressé à la représentation d’état. Grâce à cette loi de commande on peut comprendre de manière théorique comment évoluent nos variables.
Une représentation d’état est composée d’une entrée X, d’une sortie Y et de différentes matrices (A, B, C et D) montrant l’évolution du système.
A l’aide de Scilab, nous avons confirmé théoriquement l’instabilité du système. En effet, après avoir reproduit virtuellement le système à l’aide de la représentation d’état, nous avons simulé et obtenu la courbe correspondant à l’angle du corps par rapport à l’axe y. Cette dernière forme une sinusoïde caractéristique d’une instabilité (ici des balancements). Certes les valeurs et le comportement obtenu sont cohérents, néanmoins pour pouvoir les utiliser il faut vérifier expérimentalement si cela concorde avec la réalité.
Avec le logiciel (Windows) LEGO Mindstorm EV3 et grâce aux capteurs gyroscopiques et l’accéléromètre fournis dans le kit, nous avons pu prendre quelques mesures. En comparant les valeurs obtenues avec les capteurs et celles de la simulation, nous avons pu confirmer que notre modèle est utilisable pour la commande du système.
Enfin, commander le système :
Bilan :
Ce projet a été pour nous une occasion de nous amuser et de travailler plus en profondeur sur des notions complexes. Il nous a permis de développer nos compétences dans différents domaines (Physique, mathématique, automatisme, conception…).
Nous avons aussi appris à travailler en équipe, en autonomie et à surmonter les difficultés à l’aide de nos connaissances, et grâce à nos recherches.
Même si le projet n’a pas abouti au niveau de la commande par retour d’état, nous sommes fiers d’avoir obtenu un DiWheel fonctionnel et commandable via smartphone.
Ressources :
Le projet touchant à sa fin, il nous tenait à cœur de pouvoir vous donner la possibilité de continuer ce dernier. En effet, si vous disposez vous aussi du kit LEGO Mindstorm EV3 et que vous souhaitez reproduire et améliorer notre robot, nous mettons à votre disposition l’ensemble des étapes de construction :
Compte rendu et instructions de montage
Ce drive contient également notre compte rendu de projet, que nous vous incitons vivement à consulter si vous souhaitez reproduire un robot du même style.
Pour plus de question, n’hésitez pas à nous contacter via nos adresses mail respectives :
Merci pour votre lecture ! A très vite !
Corentin & Adrien
Bras Robot
Salut les Polypotes !
Actuellement en deuxième année de cycle préparatoire ingénieur, nous avons choisi de nous intéresser à la robotique dans le cadre de notre projet de conception. Notre groupe se compose de Victor, Emma et Stanislas. Nous sommes trois étudiants souhaitant rejoindre la filière SAGI, la robotique nous intéresse donc tout particulièrement. Le projet du bras robot nous a permis d’avoir une première approche de ce domaine, de découvrir le fonctionnement des actionneurs et du microcontrôleur (carte Arduino Uno). De plus, nous avons eu l’occasion de nous essayer à la cinématique afin de modéliser notre bras sur Matlab ou Python. Notre professeur référent, M.Chatti nous a guidé étape par étape tout du long de notre projet.
Au commencement de notre projet, nous avons reçu le bras tel qu’il est sur la photo ci – dessus. Il venait d’être fabriqué à l’aide de l’imprimante 3D à Polytech Angers et était composés de 6 servomoteurs qui effectuent des rotations lui permettant de se déplacer dans toutes les direction de l’espace. A première vue, nous avons décelé quelques défauts, par exemple, certains servomoteurs n’avaient pas un assez grand couple pour soulever le bras et porter un objet, de plus d’autres ne fonctionnaient même pas.
Pour commencer nous avons décidé de nous intéresser aux actionneurs; les servomoteurs. Il fallait les tester afin d’être sûr de leur bon fonctionnement. Pour ce faire nous avons utilisé des potentiomètres ainsi qu’une carte Arduino. Les potentiomètres avaient pour objectif de donner une consigne au microcontrôleur qui avait lui même pour but d’envoyer un signal aux actionneurs, les servomoteurs. Nous avons simulé notre programme et nos branchements sur le logiciel TinKerCad.
Après avoir testé et changé les servomoteurs qui ne fonctionnaient pas bien nous nous sommes occupés de connecter la carte Arduino au smartphone. Pour ceci on a utilisé un module Bluetooth à brancher sur la carte, et une application Android que nous avons créé à l’aide d’une application développée par Google et le MIT; MIT app inventor, qui permet de créer des applications installables sur tous les smartphones Android.
Nous avons configuré l’interface de l’application pour y installer six curseurs (un pour chaque moteur) et ainsi contrôler toutes les articulations du bras.
L’application, une fois connectée au module Bluetooth de la carte, envoie un signal Bluetooth à chaque déplacement d’un curseur, qui indique le moteur concerné ainsi que la position désirée par l’utilisateur. La carte reçoit ce signal et pilote les servomoteurs en fonction de la position donnée.
Sur l’image ci-dessus on peut voir deux boutons clap numérotés 1 et 2. Ce sont les boutons scénario. Sur Arduino, nous avons programmé un enchaînement de positions pour chaque servomoteur qui va créer un mouvement en répétition, ce qui permet de répéter une action comme on peut voir dans la vidéo ci-dessous, où le bras vide une boîte de chewing-gum puis la replace à un autre endroit.
Nous avons aussi ajouté à notre programme un moyen d’enregistrer les positions de servomoteurs envoyées depuis l’application pour ensuite répéter automatiquement la série mouvement demandé précédemment par l’utilisateur, pour que chacun puisse créer son propre scénario directement depuis l’application.
Cinématique directe/inverse:
Par la suite, nous nous sommes renseignés sur:
– La cinématique directe(calculer la position finale de la pince à partir des positions de toutes les articulations.)
– La cinématique inverse(calculer les positions nécessaires aux articulations pour obtenir une position finale du bras, à partir de la position de la pince.)
Cependant, par manque de temps, nous n’avons pas pu approfondir la cinématique inverse. Avec une étude de cinématique inverse nous pourrions donner une position en X,Y,Z d’un objet et le bras ferait les mouvements nécessaires pour que la pince atteigne cette position le plus rapidement possible.
Pour la cinématique directe, il est possible de calculer la position finale de la pince avec plusieurs approches différentes, par exemple à l’aide des relations trigonométriques existantes dans un triangle rectangle ou à l’aide d’équations de cercles. Nous avons donc fait des programmes sur Python et Matlab pour effectuer ces calculs, ce qui nous à permis de modéliser le bras en fonction des positions qu’on lui à donné.
Problèmes:
Quelques problèmes sont apparus, liés aux branchements et à la puissance des servomoteurs, nous avons donc eu besoin de changer deux des 6 servomoteurs car il avaient besoin d’un plus grand couple. Nous avons donc acheté deux servomoteurs d’un couple supérieur à 20kg.cm pour soulever le bras. Nos anciens servomoteurs ne dépassaient pas 13kg.cm. Les nouveaux moteurs n’étant pas de la même taille, nous avons imprimé une nouvelle pièce adaptée aux nouvelles dimensions(en blanc ci-dessous).
Malgré l’acquisition de moteurs plus puissants, nous avions toujours des problèmes pour contrôler le bras. Ces problèmes étaient en fait dû au manque d’alimentation, la carte Arduino avait du mal à alimenter les 6 servomoteurs. Nous avons donc branché la moitié des moteurs sur un générateur pour leurs fournir 6V et ainsi leur donner une plus grande puissance, ce qui a fonctionné, puisque nous avons fini par faire fonctionner parfaitement le bras avec une charge dans la pince.
Pour finir, nous avons trouvé ce projet très intéressant car il nous à permis d’approfondir nos connaissances en robotique et de découvrir de nouvelles choses telles que la cinématique qui nous sera probablement très utiles pour la suite de nos études.
Merci de nous avoir lu jusqu’au bout!