Projet PEIP 2A – Robot 5R

La PlotClock

Bonjour à tous !


L’objectif de ce projet est de réaliser une Plotclock où le robot a pour tâche d’écrire l’heure en temps réel. Ce robot fonctionne avec deux bras, composés tous les deux de deux avant-bras, reliés entre eux au niveau de la tête d’écriture. Les deux bras sont dirigés de manière à dessiner l’heure sur l’écran à l’aide de servomoteurs.

Notre robot est équipé, en tête d’écriture, d’une LED UV pour écrire l’heure sur l’écran phosphorescent. Après que le robot est affiché l’heure grâce à la LED UV, elle s’efface toute seule, avec le temps.


Voici quelques étapes de la conception de notre robot en passant par la CAO, la programmation, l’électronique et bien sûr quelques problèmes rencontrés.


Notre projet a débuté par une phase de recherche

Avant de nous lancer dans la conception de notre robot, nous avons cherché à comprendre comment un robot 5R fonctionne. Pour cela, nous avons fait de nombreuses recherches sur la cinématique inverse, les angles que les servomoteurs doivent réaliser afin que la tête d’impression aille aux coordonnées cartésiennes que nous souhaitons. Pour cela nous avons fait des simulations avec les servomoteurs sur TinkerCAD pour comprendre comment manipuler les servomoteurs et comment fixer les angles afin de pouvoir maîtriser les mouvements des bras.

Simulation des servomoteurs avec potentiomètres à l’aide du logiciel TinkerCAD

Après ces essais et de nombreux schémas, nous sommes parvenus à établir trois fonctions qui seront utiles pour déplacer les bras aux coordonnées souhaitées :

//consine formula function
double cosineRule(double a, double b, double c) {
    return acos((sq(a)+sq(c)-sq(b))/(2*a*c));
}

//distance computation macro 
#define dist(x,y) sqrt(sq(x)+sq(y))

//atan2 formula macro 
#define angle(x,y) atan2(y,x)


Conception de notre robot sur SolidWorks

La deuxième étape est de concevoir notre robot sur Solidworks. Nous avons modélisé les bras, les avant-bras, le socle et son couvercle. Le socle, le robot en lui-même, contient les servomoteurs ainsi que le ruban phosphorescent qui a été placé dessus. Lors de la modélisation des bras, nous avons fait face à un problème majeur. En effet, lors de la première impression, les bras et les avant-bras étaient de la même taille, en plus d’être trop long. En faisant des essais avec les servomoteurs, nous nous sommes rendus compte qu’à cause de leur taille, les bras allaient trop facilement dans leur position limite. C’est-à-dire comme le montre l’image suivante :

Voici quelques vues de nos bras, de notre socle et enfin de l’assembage de notre robot avant l’impression, après avoir rectifier le problème rencontré :

Modélisation du bras 1
Modélisation du bras 2

Ce bras ci-dessus (bras 2) est un peu plus épais que les autres afin qu’on puisse garder la tête d’écriture parfaitement parallèle par rapport à l’écran de ruban.

Modélisation du bras 4 (avec la tête d’écriture)
Vidéo de l’impression 3D des bras du robot
Modélisation du socle
Vidéo de l’impression 3D du socle de notre robot

Après avoir modélisé chaque pièce une par une, nous les avons assemblées afin de mieux visualiser notre robot final.

Modélisation de l’assemblage complet

Assemblage & programmation de notre robot

Ensuite, une fois l’impression terminée, les bras réimprimés plus petits, nous avons assemblé chaque composant entre eux, collé le ruban adhésif phosphorescent sur le robot, fixé les bras sur les servomoteurs. Après avoir reçu tous nos composants dont le module horloge afin d’écrire l’heure correctement, nous avons soudés et connectés les câbles sur la carte Arduino.

Voici une image de notre robot avec tous les câbles assemblés. Sur l’image de droite, vous pouvez voir un schéma de l’assemblage sur TinkerCad afin de mieux visualiser les branchements de chaque composant.

À partir de ce moment-là, nous devions essayer le programme que nous avions développé en même temps que la modélisation et l’impression. Lors du lancement de notre programme, le robot affichait l’heure mais à l’envers c’est-à-dire en mode miroir (comme vous pouvez le voir sur la vidéo ci-contre). Nous avions donc un problème avec notre repère des coordonnées. En effet, en faisant de multiples tests, nous avons compris que le sens de l’axe des x était inversé.

Après avoir identifié le problème, nous devions le corriger dans notre programme, inverser le sens des chiffres, mais aussi inverser le sens de l’écriture. Nous avons donc modifié les coordonnées de chaque chiffre et nous avons repensé leur position sur l’écran d’écriture. Dû au fait d’une calibration non parfaite, des petits réglages ont été effectués pour que les chiffres soient droits. Prenons l’exemple du chiffre 2 :

Avant l’ajustement :

 case 2: 
            digitStart(0,3/4);
            digitArc(1/2,3/4, 1/2,1/4, 1/2, -1/8);
            digitArc(1,0, 1,1/2, 3/8, 1/2);
            digitMove(1,0);
            break;

Après l’ajustement

case 2: 
            digitStart(1,3/4);
            digitArc(1/2,3/4, -1/2,1/4, 1/2, -1/8);
            digitArc(0,0, -1, 1/2, 3/8, 1/2);
            digitMove(0,1/4);
            break; 

Pour finir, pour que notre robot soit autonome, nous avons ajouté une batterie. De plus, nous voulions mettre un interrupteur afin qu’on puisse éteindre l’alimentation de notre carte Arduino pour que la batterie dure plus longtemps. Nous nous sommes vites rendus compte que notre module horloge devait être alimenté en continue pour qu’il écrive l’heure en temps réel. Notre projet de mettre un interrupteur n’était donc pas possible avec ce module horloge. Il existe d’autres modules horloge qui possèdent une pile intégrée afin qu’ils restent constamment alimenter pour qu’ils ne perdent pas l’heure. Nous avons donc décidé de mettre des piles rechargeables 6V de 1600mA pour éviter qu’elles ne se déchargent trop vite.


Bilan & Critiques

Ce projet a été très enrichissant et intéressant. Nous avons pu mettre à profit de nombreuses compétences notamment en conception mais aussi en électronique, en électricité et en programmation. La partie la plus dure a été la programmation avec un langage qui était nouveau pour nous.

De plus, nous avons appris à être autonome et prendre des décisions dans un projet de A à Z. Savoir se débrouiller face à différents problèmes et ne pas abandonner sont aussi deux points importants dans un projet. De plus, le travail d’équipe est une compétence essentielle pour le bon déroulement d’un projet. Nous avons donc dû savoir s’écouter entre coéquipier, exprimer chacun ses idées. Nous n’étions pas forcément toujours d’accord sur certaines choses mais en discutant ensemble, nous trouvions toujours un compromis.

Notre robot n’est qu’un prototype, il y a donc certaines choses à améliorer comme l’alimentation de la carte Arduino ou bien le module horloge. De plus, nous pourrions développer davantage notre programme pour qu’il est différente fonctionnalité comme écrire la date ou dessiner quelque chose demandée par l’utilisateur. Pour aller plus loin, développer une application pour le diriger depuis son portable pourrait être intéressant afin d’avoir de multiples fonctionnalités.

Nous tenons à remercier notre référent, M. LAGRANGE, pour nous avoir aider et guider tout au long de ce projet.

Merci pour votre lecture !!!

Mohamad DEIRI / Méline TARLEVE

Projet voiture RC roues 180°

Introduction :

Bonjour à tous, nous sommes Tony Barbier, Jean Nobel et Errol Sistach, tous trois étudiants en deuxième année à Polytech Angers.
Dans le cadre de notre formation, nous sommes amenés à réaliser un projet. Le notre était la conception d’une voiture radiocommandée dont la particularité est la rotation de ses roues sur 180°.

Nous avons choisi ce projet car il est complet, il nous a permis de toucher à plusieurs domaines différents : la CAO, la mécanique, la programmation et l’électronique.
Les différentes étapes de notre projet ont été la modélisation, la programmation et finalement l’usinage de notre voiture.

Travail réalisé :

Présentation de la modélisation :

Châssis
Tout d’abord le châssis. Sur les parties gauches et droites, l’enlèvement de matière sur l’axe horizontal est fait pour laisser passer les servomoteurs. Les deux renfoncements moins profonds sont prévus pour les boulons de serrage lorsque les roues seront soit à 90° à droite soit 90° à gauche.
Les trous sur les parties haute et basse sont faits pour laisser passer les roues quand elles seront complètement tournées.

Essieu avant
Voici l’essieu avant. Les deux essieux sont sensiblement identiques, la seule différence est qu’il n’y a pas de motoréducteurs (en jaune) à l’arrière.
Chaque essieu est composé d’une barre et de deux équerres. Pour pouvoir tourner, le palonnier (l’hélice) du servomoteur est relié à la barre, les essieux seront alors dirigés à gauche ou à droite selon la direction où l’on veut aller.

essieu vue dessus 1essieu vu dessus 2

Pour finir cette partie, les roues arrières seront maintenues grâce à des carrés de fixation. Pour les roues avant, les motoréducteurs servent aussi d’arbres. carré de fixationfixation motoréducteurs

Réception et test des composants :

Arduinomotoréducteurservomoteur

Après avoir réceptionné ces composants, nous avons branché les servomoteurs et les motoréducteurs à la carte Arduino, et nous avons tout alimenté avec une batterie pour vérifier leur bon état de fonctionnement.

Programmation :

Grâce aux bibliothèques AFMotor, Servo et SoftwareSerial il a été très facile de créer un programme pour piloter les moteurs. Il suffisait d’indiquer les pins sur lesquels les moteurs étaient fixés puis d’utiliser les fonctions incluses dans les bibliothèques pour les mettre en mouvement.

téléphone
Grâce au site Mit App Inventor nous avons créé une application Bluetooth Android qui communique avec le module Bluetooth HC-06 et donc pilote la voiture. L’application est constituée d’une interface utilisateur pour se connecter au module Bluetooth puis faire avancer/reculer et tourner la voiture. La partie programmation est intuitive et se fait à l’aide de blocs. Lorsque l’utilisateur appuie sur un bouton, l’application envoie un ordre (par exemple « l » en ASCII pour « left ») et le module Bluetooth récupère cet ordre pour le transmettre à la voiture.

Mais la façon la plus simple de piloter la voiture reste celle sur ordinateur en utilisant le port USB de l’Arduino. Nous avons donc utilisé l’IDE Processing pour développer un programme permettant à l’utilisateur de communiquer avec la carte par l’intermédiaire d’un port USB.

Usinage :

Notre voiture est faite à partir d’une plaque en bois de 5mm d’épaisseur. Nous avons utilisé la fraiseuse du Fablab de Polytech Angers pour usiner chacune des pièces nécessaires à la réalisation de la voiture.

Nous avons ensuite montés les pièces entres elles : usinage 1

Puis nous avons soudé des fils électriques entre les motoréducteurs et la carte Arduino. Et pour finir, nous avons relié le palonnier de chaque servomoteur aux essieux respectifs.

Conclusion :

Ce projet nous aura été très formateur. C’était vraiment intéressant de se tourner vers quelque chose de plus concret.
C’est toujours une bonne expérience de travailler en équipe, d’autant plus lorsque c’est un projet comme cela.
Malheureusement, notre voiture était loin d’être parfaite mais nous sommes quand même fier du travail fourni et du résultat.

Merci à M. Verron pour toute son aide.

Tony Barbier, Jean Nobel, Errol Sistach.

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.

IMG_3467

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.

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.

Interface de MIT app inventor avec notre code en block

Interface de MIT app inventor


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é.

Interface final  de la cinematique du bras, sur matlab

Interface finale de la cinématique du bras, sur Matlab

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!