Untitled
Untitled
MÉMOIRE PRÉSENTÉ
COMME EXIGENCE PARTIELLE DE LA
PAR
HAMDI FRIKHA
JUIN 2021
Université du Québec à Trois-Rivières
Service de la bibliothèque
Avertissement
Direction de recherche:
Jury d'évaluation
Résumé
Ce projet de Maitrise concerne, tout d'abord, l'éhlde des méthodes de la commande des bras
robotisés pour améliorer la finesse et la précision des mouvements et la réalisation d'un bras
robot manipulateur à trois degrés de liberté. Puis, nous avons effectué une exploration
générale du domaine de la robotique dans laquelle nous avons abordé le vif du sujet en
étudiant les différents organes constihlant le robot manipulateur. Par la suite, nous nous
Afin de réaliser ce travail , plusieurs techniques ont été utilisées pour contrôler les
grandeurs physiques, de telle sorte que celles-ci gardent constamment leurs valeurs ou restent
près des valeurs désirées, quelles que soient les perhlrbations qui peuvent subvenir. La
régulation d'un système physique est basée sur trois opérations fondamentales , à savoir,
Mesure, Décision et Action. Quant à la quatrième partie de ce travail, elle a pour but
d'appliquer les commandes PID et Logique Floue sur le robot manipulateur, c'est ce que
nous avons, d' ailleurs, testé directement sur le bras robot. Nous avons, donc, réalisé une étude
comparative sur l'efficacité de chaque commande ayant un lien avec l'objectif d'améliorer
Ainsi , cette étude a pern1is de mettre en évidence, par voie expérimentale, les avantages
de la commande par Logique Floue pour l' amélioration de la finesse des mouvements dans
Remerciement
Je tiens d'abord à remercier mon directeur de recherche M. Alben Cardenas, qui a joué
un rôle important dans la réalisation de ce travail, pour la qualité dans l' enseignement, le
suivi, les conseils judicieux, sa dispo nibi lité permanente et surtout ses qualités pro-
Mes remerciements s'adressent également à Mme. Nathalie Tourigny, pour ses conseils
toujours très utiles, son soutien, ainsi que son aide et disponibilité en ce qui concerne les
(GEGI) .
Je tiens à remercier mon père Mohamed Frikha et ma mère Nedra Frikha pour leur soutien
bienveillant et financier, je souhaiterais remercier également mes deux frères Imed Frikha,
Skander Frikha et ma sœur Randa Frikha pour leur soutien inconditionnel tout au long de la
réalisation de ce mémoire.
v
Remerciement ...................................................................................................................... iv
1.1 Contexte général .. ... ............ .. ...... ...... ........ ..... ........ ......... .............. ... ........... .... .... ... .. 1
1.2 Problématique ............................ .... ... ...... .. ............ ....... ...... ....... ...... ..... ... .... ....... ...... 1
2.1 Introduction ........ ........ .. ................ .................. ... .. ...... ..... ... ......... ...... .......... ....... ...... 6
2.2.1 Définition d'un robot .. ....... ... .... ...... ................... ..................... .. ........ ......... 6
2.2.2 Définition de la robotique ..... .. .......... .... ..... .... ..... ..... ................. .... ....... .... .. 6
2.3 Histoire de la robotique ...... .................. ................. ... .. ...... ............. ............... ... .... .... 7
VI
2.4 Types de robots .. ... ..... ... .. ................... ... .... ..... ....... ........................ ..... ... .... ..... ....... . Il
2.4.1 Robots mobiles ...... .. ...... .... ...... .. .... ..... .... ...... ........ ... .. .............................. . Il
2.5.4 Organe terminal ................. ........ .... ................ ........ .......... ....... .. ............. .. 15
2.5.5 Les capteurs ... ............... ................ ... ............. ............. .. .... ....... .................. 15
2.6 Classification des robots ....................................... ............. .... ..... ................. ... ..... .. 16
2.6.1 Point de vue fonctionnel ........ ......... ..................... .............. .. ... ..... ..... ...... . 17
2.6.2 Classification géométriq ue ......................................... .... .... .... .......... .... ... 19
2.8 Conclusion .. ....... .. ..... ........ ... ..... .. ................... ....... ........ .... ..... ..... .. ............... ... ....... 24
3. 1 Introduction .... .. ............ .................... .......... ..... .... ....... .... ..................... .......... .... .... 25
3.2.1 La base ............. ... ... ........ .. ...... ... ... .... .... ........ .. ............ .............. ........ ......... 25
VII
3.2.2 L'épaule ........................................... ....... ... .... ........................ ... ....... ......... 26
3.2.3 Le coude ..... ............... ... .. ..... ..................................... ......... .... ... .. .. ...... ....... 26
3.2.4 La pince ... ....... .. .. .. ... .... .... ............ .............................. ........... .. ... .......... .. .... 27
3.4 Description des parties constitutives du bras manipulateur ..... .............. ...... ......... 28
3.4.1 Les actionneurs du bras manipulateur ... ... .... ..... .. ...... ........................... 28
3.5 Modélisation ... ................ .. ......... ..... .. ..... ... .. ..... ....... ....... ... .......... ........................... 31
3.5.1 Repères et référentiels ............................................ .. ...... .. ........ .... ... ... ..... 31
3.5.2 Modèle Géométrique Direct (MGD) ........... ............ .. ............ ... ............ .. 35
3.5.3 Le modèle géométrique inverse (MGI) ......... .................. .... .......... ......... 41
3.5.4 Modélisation cinématique directe (MCD) .. ....... ........ ........... .... ............ . 44
3.6 Conclusion .... ...... .... ... .... .... ...... .... ... .. .. ... ......... ........................ .. .............. .. ........... .. 48
4.2 Matériel utilisé ........................ ... ....... ..... ................ ................. ........................... .... 48
4.2.1 Raspberry Pi 4 B ...... ............. ....... .. .. .... .... .... ............ ................................ 48
VIII
4.3 Logiciels utilisés: L ' environnement de programmation en Python .. ...... ........ ..... 52
4.4 Commande du bras manipu lateur.. .... ......... .......... .... ... ..... ........................... ........ .. 53
avec PID ..... .. .... .......... ......... ................ .............. ..... ............................. .. .... 61
servomoteur .. ... ........... ....... .. ............ .. ...... ......... ....................... ........ .. ....... 67
4 .5 Conclusion ........... ................. ........ .... ........................... .... .......................... ...... ...... 69
5.1 Introduction ................................................. ... .......... ........ ..... ..... ..... .. .. ................. . 70
5.1.1 Commande de position ..... ........... ...... ....... ................. .......... .......... .......... 70
6.2 Présentation du logiciel Labview .... .... ...... ...... ... .... ..... ..... ...... ..... ... ............. .......... 75
ix
6.3 Types de commande du bras manipulateur .............. ....... ... ....... ...... .. .... ............... . 76
Tableau 3-1 Paramètres techniques des servomoteurs utilisés ... ............. ................... .... ..... 29
Tableau 3-2 Caractéristiques techniques du notre bras manipulateur. ....... ........... .. .... ...... ... 39
Tableau 4-3 les règles de base pour la position et la vitesse du mouvement dans
le servomoteur ............. ..... .................... ......... ....... .. .......... ............................ 68
Xl
Figure 2-1 Les robots de fiction ........ .......... ...... .. .... ...... .............. .. ................................ ......... 7
Figure 2-2 UNIMATE [13], premier robot industriel. .... .. ............ .. ............................ ..... ...... 8
Figure 2-3 Le premier robot mobile (rover) sur la planète Mars [14] ................................... 9
Figure 2-4 Une table d'opération surmontée des bras d'un Da Vinci [15]. .......... .................. 9
Figure 2-7 Robot mobile OMRON [18] ..... .. ..... .. ...................... .... ......................... ..... ...... .. Il
Figure 2-8 Bras Manipulateur [19] ..................... ......................... ...... ........ .... ....... ............... 12
Figure 2-9 Éléments d' un robot manipulateur ............ .. ............. ..... ......... .. ... ...... ... .. .. .. ....... . 12
Figure 2-10 Schématisation d'un système mécanique articulé [21]. ...... ....... .... .... ......... .. .... 14
Figure 2-11 Représentation d' une articulation rotoïde [20]. ......................... ... ... .............. ... 14
Figure 2-12 Représentation d' une articulation prismatique [20]. ... .. .... ..... ....... ...... ............ . 15
Figure 2-13 Système de télé chirurgie [15] ....... ........ ..... ...... ..... ...... ...... .... .... ... .......... ....... ... 17
Figure 2-14 Manipulateur à cycle préréglé [23]. ......... .. ............... ................ ....................... 18
Figure 2-16 Robot intelligent [44]. ..... .. ....................... .. ... .. ... .. ..................... ........... ............ 19
Figure 2-17 Structure PPP [45]. .......... ..................... ........ ...... .............................................. 20
Figure 2-18 Structure RPP [45]. .......... .. .......................................... .. .... ....... .............. .... ...... 21
Figure 2-19 Structure RRP [45]. ......... ... .. ......... ........ .. .... .. .... .. ...... .... ................... ... .... ..... ... . 21
Figure 2-20 Structure SCARA [45] .... .. .................... .. ... ............... ..... ............ .... ..... .. ........... 22
Figure 2-21 Structure RRR [45] .... ........ ... .. .............. .. ... ..... ... ........... .......... .................... ...... 22
xii
Figure 3-1 Base du robot [21]. .................. ...... .................... .. ........ ... ...... ............................. . 25
Figure 3-2 Épaule du robot [21]. ..... ........ .. .... ... .......... .... .......... .. ..................... ... ..... .. ........... 26
Figure 3-3 Le coude du robot [21]. ........... .... .. ... .... .................... .... .. ........ ............................ 26
Figure 3-4 La pince du robot [21]. .... .......................... ... ................. ..... ....... .... ............ ....... .. 27
Figure 3-6 Servomoteur intelligent Lynxmotion (LSS) [21] ..................... ......... ................. 28
Figure 3-7 Schéma d'un engrenage du servomoteur Lynxmotion [21]. .... .. ......... .... ......... .. 30
Figure 3-8 Capteur absolu magnétique [21]. .... .. ..... ... ..... ...... .......................... .... .... ......... .... 30
Figure 3-9 Le système de coordonnées cartésiennes [32]. ..... ... ... .......................... .............. 32
Figure 3-10 Le système de coordonnées cylindriques [32]. .... .......................... ... ............... . 33
Figure 3-11 Le système de coordonnées sphériques [3 3]. .... ...... .... ......... ..... .... ... ................ 34
Figure 3-1 2 Position d'un solide dans l'espace et son repère associé [34]. ......................... 35
Figure 3-13 Schématisation du lien entre le corps i-l et i [28]. ............ ........ ................ ..... .. 37
Figure 3-15 Placement des repères selon le modèle DR ... ................... ....... .. .... .. .. .... .. .. .. ..... 39
Figure 3-16 Placement des angles de rotation des joints du bras de Robot selon
le modèle Denavit-Rartenberg .................................................. ......... ... ....... 41
Figure 3-18 la loi des cosinus et sinus ..... ............................... ...... .. .... .... ... .. ........... .. ........ ... 42
Figure 3-19 Calculer 82, 83.......... .... .... ..... ...... ... .... .. .. ............ .................. ................ .. ........... 43
Figure 4-1 Carte Raspberry Pi 4 B .......... ......... .................. ....................... .. ................... ...... 49
Figure 4-2 LSS - Carte adaptateur Lynxmotion Smart Servo ............. .... ............ .............. ... 51
Figure 4-3 Environnement de développement en Python ... .... ......................... ... ............... .. 52
Figure 4-4 Schéma du régulateur PID [39]. ........ .............. .... ... ......... ... ........ ..... ... ........ ........ 54
xiii
Figure 4-5 Schéma-bloc de l'implantation du PID en régulation de position ....... ... ............ 54
Figure 4-9 Gain ajusté P Kp=0.9 en position 600 = 60 .. ............... .......... .... .. ...... .... .. ...... ... .. 59
Figure 4-10 Gains ajustés PI Kp=0.9, Ki=1O-5en position 600 = 60 ................................ .... 59
Figure 4-11 Gains ajustés pour PID : Kp=0.9, Ki= 1O-5, Kd=0.3, en position 600
= 60° ................................. .. ............................................ .. ... ... .............. ... ... .. 59
Figure 4-12 Schéma-bloc de l'implantation du PID en régulation de v itesse ..... ... ............. . 60
Figure 4-13 Gains ajustés pour PID : Kp=2 , Ki= 1, Kd= 1, trois vitesses
différentes ........ ...... ........... ...... ........ ........... .................... ........ .................... ... 60
Figure 4-14 Modèle trapézoïdale de la vitesse .......... .......... _....... .... .. _......... ......................... 61
Figure 4-15 Schéma-bloc de la double implémentation de PID tenant compte ............ ....... 62
Figure 4-18 Variables linguistiques (8, f1.(8)) pour décrire la position ................................. 64
Figure 4-20 Variables linguistiques (n , f1.(n)) pour décrire la Vitesse ...... ...... .... .. ............. 66
Figure 4-21 Réponse de la commande de vitesse utilisant la Logique Floue ....... ... ..... ....... 67
Figure 5-1 Logique Floue sur la position, passage de 0° à 60° ................................. ........... 70
Figure 5-3 Résultats avec correcteur PID pour trois différentes consignes de
vitesse angulaire 20 0 /s, 40 0 /s, 60 0 /s ............ ............... ....... ... ......................... 72
Figure 5-4 Résultats avec la Logique Floue pour trois différentes consignes de
vitesse angulaire 20 0 /s, 40 0 /s, 60 0 /s ..... .... ................................................ ..... 72
Figure 5-5 Résultats pour le double asservissement position-vitesse avec PID . ..... ......... ... 73
Figure 6-4 Diagramme bloc de l'interface LabVIEW avec Python .................. ................... 78
xv
C Cosinus
S Sinus
w Vitesse angulaire
q Vecteur de position
DH Denavit -Hartenberg
Ec Erreur
Kp Gain Proportionnel.
Ki Gain Intégral.
Kd Gain Dérivé.
nous. Historiquement, nous pourrions nous référer aux premiers concepts et automates de
Même le mot 'robot' a sa propre histoire. Séparer la science-fiction n ' est pas une chose
aisée, notamment qu ' en robotique, nous cherchons parfois à faire réaliser la fiction, un
exemple de l'influence des fictions nous est donné par les lois de la robotique [1].
monde technologique. L ' avènement des robots dans l' industrie a permis de soulager
l'homme des travaux répétitifs et difficiles tels que : le déplacement d ' objets lourds, les
1.2 Problématique
Depuis leur introduction dans l' industrie, les robots manipulateurs ont beaucoup
évolué, et aujourd ' hui deviennent de plus en plus complexes, intelligents et utilisés dans
plusieurs domaines . Il existe plusieurs types de robots conçus pour des tâches bien
spécifiques. Ces dernières sont associées généralement à des travaux qui peuvent être
pénibles, fatigants, dangereux ou irréalisables par l'homme. Citons à titre d' exemple, ceux
devant être exécutés dans les environnements hostiles dont l'air est irrespirable, à savoir, dans
2
les centrales nucléaires, dans l'espace, dans les océans, ou certains travaux répétitifs faisant
intervenir les capacités intellectuelles de l'être humain. Diverses raisons ont, également,
vitesse, température, position, angle ... , il est souvent nécessaire d' avoir recours à un
asservissement, c' est à dire un système capable d' atteindre et de maintenir une consigne en
utilisant une mesure. Les nouvelles applications des robots offrent des performances très
élevées notamment en termes de précision. Toutefois, elles demandent des coûts de plusieurs
sont souvent une limite dans les robots à faible coût en raison de la qualité des
d' action du robot. Ceci limite leur déploiement à des prix accessibles au grand public.
plusieurs types de contrôleurs PID non linéaires (NPID) ont été présentés et utilisés
efficacement. Bohn et Atherton [3] ont développé un contrôleur NPID avec un schéma anti-
Han [4] a proposé un nouveau contrôleur NPID avec une structure simple, dans lequel trois
perturbations du contrôle PD linéaire lorsqu'il était dans un système d' ordre deux typique.
Xu et al. [5] ont proposé un contrôleur PD non linéaire (NPD) et l'ont appliqué au contrôle
de force des robots. Armstrong et al. [6] ont étendu le contrôleur proposé par Xu et al. à un
3
système à trois ordres qui a prouvé la stabilité asymptotique du système en boucle fermée par
stratégies de contrôle intelligentes telles que le contrôle flou et le système expert sont
Le contrôle par Logique floue est l'un des résultats les plus importants de la recherche
a été introduit efficacement dans une vaste gamme d' applications, de la reconnaissance
La logique floue est une technique pour incarner la pensée humaine dans un système de
travers des performances linguistiques floues , car il donne les meilleures performances
Lorsque le contrôleur PID est utilisé dans le contrôle de position pour contrôler le
que le coût et la fiabilité . Les non-linéarités et le fait de ne pas connaitre certains paramètres
sont de facteurs qui motivent nombreux chercheurs à utiliser la théorie et les teclmiques de
contrôle non conventionnelles. Ces paramètres peuvent ne pas être estimés avec précision en
à logique floue est utilisé dans le système de contrôle lorsque le modèle mathématique du
4
commande à logique floue est que le contrôleur développé peut gérer un système de plus en
appropriées.
1.3 Objectifs
tout en nous intéressant aux commandes; afin d'obtenir de meilleures performances et plus
de robustesse pour générer un mouvement doux dans les bras robotisés à faible coût.
La précision (p.ex. manipulation des objets de petite taille), la rapidité (p.ex. dans une
dangereux) des actions et des mouvements ont été alors l' objet d'analyse dans ce mémoire
de maîtrise sur l' asservissement de la position et la vitesse des bras robotisés. Ayant dans
l'esprit l' utilisation finale des robots à faible coût, nous analyserons dans ce mémoire la
commande PID (classique) et la commande par Logique Floue (moderne) et présenterons des
5
résultats de simulation et expérimentaux des tests réalisés avec chaque méthode. Cette
analyse est faite dans le contexte d'un robot manipulateur à faible coût que nous avons
constmit au laboratoire.
1.4 Méthodologie
Dans tout projet de recherche, la mise en position de la problématique et des objectifs fait
recherche à partir des résultats antérieurs , nous pouvons ainsi ouvrir de nouvelles pistes de
la recherche. En même temps, c 'est un moyen d'analyse critique des travaux de recherches
précédents qui rapportent les diverses méthodes de modélisation et les multiples techniques,
Puis, et dans le but de compléter l'étude théorique par une étude expérimentale de
différentes stratégies de contrôle, nous disposons d'un manipulateur constitué d'un moteur à
courant continu, un bras flexible, un encodeur qui mesure l'angle. La description du montage
suivie d'une étude détaillée sur les différentes méthodes de modélisation développées est
Les diverses techniques de commande peuvent être regroupées en deux catégories : les
méthodes classiques et les méthodes modernes. Les techniques de contrôle classiques comme
le contrôle par Logique Floue. Dans ce chapitre sont aussi présentés : les résultats de
commande. Nous clôturons, ce chapitre par une comparaison entre les résultats obtenus par
6
les méthodes classiques et ceux obtenus par les techniques modernes . Après cette
Finalement, ce travail se termine par une conclusion générale qui résume les résultats
obtenus et une brève description du travail funIT pouvant avoir lieu dans ce domaine de
2.1 Introduction
l'activité humaine afin, par exemple, d'augmenter la productivité dans les entreprises des
domaines médical, spatial , industriel, militaire et dans le domaine de l' agriculture. Celle-ci
permet de manipuler, avec beaucoup de précision et par conséquent, de manière plus sùre,
2.2 Définitions
humanisés, ils nous fascinent mais également nous inquiètent comment sont-ils nés et quel
est leur futur. La Figure 2-1 montre quelques exemples de robots de fiction.
Robot Tas [8] Robot maria dans le film Le Robot Robby [10]
Fritz Lang métropolies [9]
Les robots de fiction: C' est en 1920 qu' apparait pour la première fois le mot robot dans
une pièce de théâtre de science-fiction écrite par l'écrivain tchèque Karel Capek [8]. Le terme
robot dérive de mot slave « robot tas» qui signifie travail corvée utilisé pour nommer un des
Maria dans le film de Fritz Lang Metropolis [9]. Avant de devenir des acteurs du monde réel,
les robots sont en premier lieu des stars de la littérature des arts graphiques et du cinéma
souvent pleins d' humanité comme Robby [10], le robot WALL-E [6] ou R2D2 [11] ; ils sont
aussi parfois les destructeurs et des ennemis, parfois amis, du genre humain comme les robots
Aux années 1950, les mathématiciens et les ingénieurs se sont intéressés avec les
robots de manipulation au sujet tel l' américain Joseph Engelberger [13]. C'est ainsi qu'une
nouvelle science a vu le jour: la robotique; le robot est désormais une machine qui bouge,
commandée par un ordinateur. Elle se distingue des autres machines par une capacité propre
à décider de son mouvement. Au fil des décennies, le robot a trouvé sa place dans nombreux
En 1969, le premier robot du monde réel s'appelle UNIMATE (Figure 2-2), il s'agit d'un
robot industriel crée par Victor Scheinman de l'Université de Stanford qui inventa un bras
articulé sur 6 axes. Sheinman venda son concept à UNIMATE plus tard [13].
En 1996, le robot part dans l'espace, Sojourner (Figure 2-3) explore la planète Mars,
Figure 2-3 Le premier robot mobile (Rover) sur la planète Mars [14].
En 2000, le Da VinCi (Figure 2-4) est un robot assistant du chirurgien qui apparaît dans
les blocs opératoires [15].
Figure 2-4 Une table d'opération surmontée des bras d'un Da Vinci [15].
10
Par la suite, aujourd ' hui , des robots mobiles sont conçus pour intervenir dans des milieux
hostiles comme Big Dog (Figure 2-5) un quadrupède porteur de charges lourdes testé par
l'armée américaine en Afghanistan [16] .
Tel que montré par la Figure 2-6, les expéditions annuelles de robots industriels ont vu
une croissance assez importante au cours des dernières années. Plus particulièrement, en
Figure 2-6 Graphique représentant l' estimation des expéditions annuelles mondiales de
Il existe deux grandes catégories de robots : les robots mobiles et les robots
Les robots mobiles ont la capacité de se déplacer dans leur environnement et ne sont pas
fixés à un seul emplacement physique. Les robots mobiles peuvent être « autonomes », ce
qui signifie qu'ils sont capables de naviguer dans un environnement incontrôlé sans avoir
Un bras manipulateur est le bras d'un robot généralement programmable, avec des
fonctions simi laires à un bras humain. Les liens de ce manipulateur sont reliés par des axes
Dans le cas d'une imitation complète d'un bras humain, un bras manipulateur a donc 3
Il peut être autonome ou contrôlé manuellement et peut être utilisé pour effectuer une
variété de tâches avec une grande précision selon la qualité des servomécanismes et des
méthodes de contrôle employées [19]. Un exemple est illustré par la Figure 2-8 .
Tel que montré par la Figure 2-9, nous distinguons classiquement 4 parties principales
dans un robot manipulateur [20] : les actionneurs, le système mécanique articulé et organe
Système mècanique
Actionneurs articulé (S.M.A) + Capteur
organe terminal
r--------,~
~ \
Environnement
Système de commande
et de traitement de
l'information ( Informations extéroceptives
Les composants permettant de mettre en mouvement les organes des machines sont
appelés actionneurs. Ce sont essentiellement des moteurs et des vérins. Ils produisent de
presque toujours contrôlés par des signaux de commande électriques. Avec l'évolution
ainsi que les composantes semi-conductrices, etc. ; les actionneurs électriques sont de plus
Le système mécanique articulé (SMA) est un mécanisme ayant une structure plus ou
moins proche de celle du bras humain, il peut être représenté par une architecture composée
de plusieurs chaînes de corps rigides assemblés par des liaisons appelées articulations,
généralement les uns à la suite des autres où chaque solide est mobile par rapport au
précédent. Cette mobilité s' exprime en termes de degrés de liberté (d.d.l) qui est par
définition le nombre de mouvements indépendants possibles d'un solide Sn-l par rapport au
solide qui lui est directement relié Sn (Fig. 2-10). Le rôle du SMA est d'amener l'organe
terminal dans une situation (position et orientation) donnée, selon des caractéristiques de
vitesse et d'accélération données. Sa motorisation est réalisée par des actionneurs électriques,
pneumatiques ou hydrauliques qui transmettent leurs mouvements aux articulations par des
Articulation
Une articulation lie deux corps successifs en limitant le nombre de degrés de liberté de
l'un par rapport à l'autre, peut se ramener à une combinaison d'articulations prismatiques ou
rotoïdes.
Il s'agit d'une articulation de type pivot, notée R, réduisant le mouvement entre deux
corps à une rotation autour d'un axe qui leur est commun. La situation relative entre les deux
--a=J-t-. El------+--.
entre deux corps à une translation le long d'un axe commun. La situation relative entre les
deux corps est mesurée par la distance le long de cet axe (Fig.2.12).
Nous regroupons tous les dispositifs destinés à manipuler des objets (dispositifs de
soudage, pistolet de peinture, ... ). En d'autres termes, il s'agit d'une interface permettant au
robot d'interagir avec son environnement. Un organe terminal peut être multifonctionnel , au
sens où il peut être équipé de plusieurs dispositifs ayant des fonctionnalités différentes . Il
peut aussi être monofonctionnel, mais interchangeable. Un robot, enfin, peut-être multi-bras :
chacun des bras portant un organe terminal différent. On utilise, indifféremment, le terme
organe terminal, préhenseur, outil ou effecteur pour nommer le dispositif d'interaction fixé à
Les informations extéroceptives ou plus simplement les perceptions permettent de gérer les
relations entre le robot et son environnement. Les organes de perception sont des capteurs
16
dits proprioceptifs lorsqu ' ils mesurent l'état interne du robot (positions et vitesses des
• Les sondeurs (ou télémètres) à ultrason ou Laser. Ces derniers sont à la base des
environnement en 3D.
• Les caméras sont les yeux des robots. Il en faut au moins deux pour permettre la
vision en trois dimensions. Le traitement automatique des images pour y détecter les
formes, les objets, voire les visages, demande en général un traitement matériel car
• Les roues codeuses permettent au robot se déplaçant sur roues, des mesures de
[22] .
2.5.6 La commande
La classification des systèmes robotiques est difficile, car il existe de nombreux critères
pour leurs descriptions. Toutefois, nous allons les classer selon deux structures qui sont les
suivantes :
Le nombre de classes et les distinctions entre celles-ci varient de pays à pays (6 classes
Le réglage se fait mécaniquement par cames, butées. La commande peut se faire par
automate programmable (Figure 2-14) ; Nous pouvons ainsi faire la distinction entre
l'
Les mouvements d'un robot industriel sont programmés à travers deux grandes
méthodes :
créer les trajectoires en faisant mémoriser au robot des points correspondant à des
programmation hors-ligne en important un modèle CAO grâce auquel il pourra générer les
mouvements . Tel que montré dans la Figure 2-15 , il pourra par la suite visualiser le résultat
Figure 2-15 Programmation des mouvements d'un bras robotique sur un ordinateur [24].
Nous trouvons actuellement des robots de seconde génération qui sont capables d'acquérir et
proximité, capteurs d'efforts, ... ). Nous étudions des robots de troisième génération, capables
cylindrique (RPP ou PRP), la structure sphérique ou polaire (RRP), la structure dite SCARA
Les caractéristiques d'une structure cartésienne (PPP) sont : trois axes, deux à deux en
série avec trois degrés de liberté, une très bonne précision et une grande lenteur. Le volume
de travail est un parallélépipède dont les dimensions sont les translations permises par les
trois liaisons prismatiques [26]. Un schéma simplifié d'une structure cartésienne (PPP) est
Les caractéristiques d 'wle structure cylindrique (RPP ou PRP) sont : trois axes non
perpendiculaires en série avec trois degrés de liberté et une grande rapidité. Le volume de
travail est un cylindre plein ou creux, autrement dit un tore à section rectangulaire, dont la
hauteur L est la translation permise par une liaison prismatique [27]. Un schéma simplifié
d'une structure cylindrique (RPP ou PRP) est présenté dans la Figure 2-18.
21
Le volume de travail est une sphère creuse, dont les rayons intérieur et extérieur sont
fixés soit par la disposition de la liaison prismatique et la translation qu 'elle permet, soit par
les longueurs des deux parties du bras [28]. Un diagramme simplifié d 'une structure polaire
Les caractéristiques d' une structure SCARA (Selective Compliance Articulated Robot
for Assemblage) sont : 3 axes en série cylindrique (RRP) ayant trois degrés de liberté. Les
22
particularités de cette structure sont qu' elles sont précises et très rapides [28] . Un exemple
Cette structure à une architecture plus généraliste reproduisant le bras humain. Son
commande PID qui est aujourd'hui l'un des asservissements les plus utilisés et ce pour
plusieurs raisons. Tout d' abord, il est très simple à mettre en place et s'avère efficace pour la
plupart des systèmes réels. Ensuite, le calcul des coefficients laisse le choix entre plusieurs
méthodes de difficulté croissante. De plus, c'est une méthode expérimentale très facile à
mettre en place, permet d'obtenir rapidement des coefficients corrects pour des systèmes ne
nécessitant pas de très grandes précisions dans l'asservissement. Cependant, il est important
de noter que ce type d'asservissement est limité par un certain nombre de contraintes. En
effet, il peut s'avérer inefficace pour certains systèmes qui contiennent du bruit (coefficient
Dérivé) ou qui ne sont pas linéaires (l'asservissement PID étant linéaire, la non-linéarité d'un
- La cohérence des inférences n' est pas garantie à priori ; il est possible l'apparition
la Logique Floue dans l'objectif d'assurer une réponse acceptable pour des signaux de
2.8 Conclusion
Dans ce chapitre, nous avons donné un aperçu général sur la robotique. Nous avons
présenté, également, une description sur le domaine de la robotique en mettant l'accent sur
les domaines applicatifs des robots industriels, l 'historique des robots, l'architecture
mécanique générale des bras manipulateurs, leurs stmctures, leurs utilisations, leurs
différents types, leurs classifications ainsi que leurs domaines d'application ce qui va nous
servir pour la constmction de notre bras. Nous avons fini le chapitre par l'étude des avantages
et des inconvénients des deux méthodes de commande utilisées selon littérature. Nous allons
3.1 Introduction
L' une des premières étapes dans la réalisation d' un robot consiste à définir le mode de
locomotion à mettre en œuvre ainsi que les différents éléments qui le composent, ceci se
matérialise par l' étude des actionneurs des chaînes cinématiques associées et aussi par l' étude
manipulateur et nous donnerons également des notions théoriques qui nous aideront à
3.2.1 La base
La base est le socle fixe du bras. Elle possède un servomoteur qui permet au bras de
3.2.2 L'épaule
Elle est liée à la base à travers la deuxième articulation (servomoteur), qui permet la
rotation de 0° à 180° .
.......... ,.......
........... .....
3.2.3 Le coude
Il est lié à l'épaule par la troisième articulation, qui permet la rotation de 0° à 180°.
3.2.4 La pince
La pince est l'organe terminal de notre robot manipulateur, un servomoteur qui permet
...
Figure 3-4 La pince du robot [21].
Après avoir vu les différentes pièces constituant le bras manipulateur, nous sommes passé
à leur assemblage. La figure ci-dessous montre le bras manipulateur après l'assemblage.
Pour que le bras manipulateur puisse exécuter une tâche, il a besoin des actionneurs et
des transmetteurs, ces derniers servent à transmettre de l'énergie des actionneurs des
articulations rotoïdes. De plus, pour asservir ces actionneurs, nous avons besoin également
de capteurs.
Il s' agit d'organes qui permettent au robot d' exécuter une tâche. Leur but est de produire
assez de force pour provoquer le mouvement du robot. Nous avons choisi d'utiliser comme
actionneurs quatre servomoteurs qui sont des moteurs à courant continu (MCC), asservis en
position à l'aide d'un capteur de position et d'un circuit électronique interne au moteur. Les
Ils sont pilotés par un fil de commande et alimentés par deux autres fils, le premier est
(GND) [31].
Les paramètres des servomoteurs utilisés dans le bras robot sont présentés au Tableau 3-
l [21].
~
Spécifications
ST1 HT1
0
Vitesse Maximal 360 0
/ s 360 / s
milliers de tours par minute et produit un couple très faible. Afm de diminuer cette vitesse de
rotation tout en augmentant significativement le couple disponible, nous plaçons entre l'axe
du moteur et l'axe articulaire un réducteur par les transmissions des engrenages qui sont des
organes mécaniques situés à l'intérieur de la partie supérieure du boîtier. Tel que montré dans
la Figure 3-7. Le train d'engrenages est composé d'une variété d'engrenages droits en métal
[21 ].
30
position. Notre capteur est un capteur absolu magnétique couplé sur la partie avant du moteur
(voir Figure 3-8). Le rôle des capteurs est de gérer les relations entre le robot et son
environnement, ils permettent ainsi de contrôler plus facilement les tâches que nous leur
ordonnerons.
3.5 Modélisation
prévision (ou anticipation) des mouvements, l' adaptation des actiotmeurs, la planification des
taches, l'établissement des lois de commande, l'incorporation du robot dans des simulations
informatiques, etc.
Dans le langage courant, la modélisation précède la simulation sans que nous puissions
faire une séparation nette entre ces deux activités. Il est souvent acceptable de se contenter
d' une modélisation simplifiée dans laquelle nous ne tenons pas compte des aspects qui sont,
ou paraissent, secondaires tels que : les vibrations, les défom1ations élastiques, les jeux
Comme il est illustré dans la Fig.3.9, pour repérer un point M dans l' espace, il faut 3
coordonnées pour le définir parce que l'espace contient 3 dimensions, ce dernier est
représenté par les valeurs algébriques des projections sur une base orthonoffi1ée [32].
Soit un point fixe 0 (appelé origine), constitué de trois axes rattachés, à ce repère, nous
associons tille base orthonormée directe (Ux, Uy, Uz). Les vecteursUx, Uy, Uz sont alors les
vecteurs unitaires des axes OX, OY et OZ respectivement. Les coordonnées cartésiennes sont
32
les référentiels les plus utilisées en robotique, car elles sont les plus simples pour la mesure
des distances.
z
zH,
,
-_ M
y y
m
x
La position du point M est définie dans un repère (0, Up, Ue.Uz). Nous introduisons
la base (U p, Ue. Uz) orthonormée directe, associée aux coordonnées cylindriques (p, 8, z). Les
relations entre les coordonnées cylindriques et cartésiennes sont les suivantes [32].
x = p cos(9)
{ y =p sin(8)
z=z
33
~---+=---f---Y
x
Figure 3-10 Le système de coordonnées cylindriques [32].
Prenons comme exemple un point M repéré à la surface de la Terre (0, Ûp, Ûs, Û<p).
La méthode la plus facile pour repérer ce point est de repérer M par 3 coordonnées qui sont:
• La distance depuis O.
Les relations entre les coordonnées sphériques et cartésiennes sont les suivantes [33] :
y=p sin(S)sin(<p)
z = p cos(S)
34
~
i
i Z
.. _.. _.. _. ..
1Ix;
-------~ ._--~-----
i
---
i
i
i
i
,/
Nous pouvons facilement paramétrer la position d'un point dans un repère avec 3 trois
dimensions quel que soit le système de coordonnées utilisé par contre le repérage de la
position d'un solide nécessite plus de dimensions . Il faut trois coordonnées pour positionner
le centre d' inertie des solides et trois autres coordonnées pour son orientation dans l'espace.
Six coordonnées sont donc nécessaires pour placer un objet dans l'espace [33].
35
Figure 3-12 Position d' un solide dans l'espace et son repère associé [34].
X= f(q) [35]
Dans le cas d'une chaine cinématique simple ouverte, il peut être représenté par la matrice
La matrice TO,n représente la position et l'orientation, elle est exprimée dans le repère de
Les paramètres DH sont utilisés pour systématiser la modélisation de n'importe quel type
de robot série. Elle fut introduite par Jacques DENAVIT et Richard HARTENBERG [35] .
DH) sont les quatre paramètres associés à une convention particulière pour attacher des
Afin d' établir les paramètres de DH, chacun des repères est établi en se basant sur trois
règles :
• L' axe Zi-l est selon l' axe de mouvement de l' art-l.
• L' axe Xi-l est aligné entre les articulations i et (i+ 1). Si ai est nul, alors Xi-l est
Pour passer de Ri-l a Ri, nous pouvons SUlvre les quatre paramètres géométriques les
suivants :
l ·
1
Art i {li
, i
Zi_
- 1
1
1
--
COrpS i-I , i
"-
./
1-1
~
j
8;
rl- 1 = RoI (x, ai) x Trans (x, di) X RoI (z, 8i) X Trans (z, ri) (3. 1)
C8i - S8i 0 di
0 0 0 1
manipulateur, nous utilisons les paramètres de Denavit Hartenberg (DH) par la relation entre
le modèle géométrique direct et le modèle géométrique inverse afin de suivre une trajectoire
précise lors du déplacement d 'un objet à un endroit désigné par les coordonnées X, Y, et Z.
38
91 r1O
) )
r2l
9_
93 )
l
Modèle géométrique direct r 32
)
1 v.
1
p .. )
1 OSluon
Joint \'ariablel
1
1 Modèle géométrique inverse l Effectrice
e· 1
1
)
TOn(x, y, z)
)
rnO
Figure 3-14 La relation entre le modèle géométrique direct et le modèle géométrique inverse
Notre bras manipulateur réalise des mouvements avec 3 degrés de liberté et il est
- Un organe tenninal : c' est un servomoteur qui contrôle l' ouverture et la fermenlre de
la pince.
terminal dans une sinlation défLl1ie par une position et orientation donnée.
39
Nous affectons des repères fictifs à chaque articulation représentée dans la figure ci-
dessous :
-' -'
-' -'
-' -'
-' -'
-' -'
-' -'
-' 1...2 -' 1..3
/~~--------""":Y'1,~:------=-------?:
)/-'
f7\;
6:z / A ~-'
( // ///
/
-' Y2 -' Y3 -'
.- -'
-'
.-.-
-'
~~+.I'----------:;-!-'---+ X3
-~Xo
réalisation.
Segment Oi di ai ai
1 el dl 0 90°
2 e2 0 L2 0
3 e3 0 L3 0
Nous avons constaté que le MGD d'un robot permettait de calculer les coordonnées
articulaires.
r ~".•.••.•.
= ..Jx~+yl Y.
!/O
'.
"
" ,
...... .. : ....
............. ................. ...... ...... .. - .....~.":~ ..
Figure 3-16 Placement des angles de rotation des joints du bras de Robot selon le modèle
Denavit -Hartenberg.
42
La figure suivante présente comment calculer el par la projection sur les deux axes (x, y) :
r x~ +yl
,
»'-
'~--------------. ' .
Calculer el
r = .Jx 2 + y2 (3 .7)
el = Atan2(x, y) (3 .9)
La figure suivante présente les formules utilisées pour faciliter l'obtention des équations des
Loi de cosinus :
La figure suivante présente comment calculer 82, 83par la projection sur les deux axes
83 = arccos ((x2 + z2 -La2 - Lb 2) /2 La Lb (3.14) Figure 3-19 Calcul des 82, 83.
(3.15)
Z
a = arctan (-) (3.16)
x
. Sin (03 )
8 = arcsm (Lb x rxz+zï ) (3.20)
x +z
(3.21 )
. (b Sin (9 3)
82=arctan (-Z) - arcsm L X rxz+zï ) (3.22)
x X +z
Donc les coordonnées articulaires correspondant à une situation donnée de l'organe terminal
8 - t
2 - an
-1 (~) _
x
. -1
sm
(a3xSin93)
../X 2 +Z 2 (3 .24)
44
- -1 x 2+z 2a 22a 3 2)
83 - COS ( (3 .25)
2 a 2 a3
Le MCD d'un robot manipulateur décrit les vitesses des coordonnées opérationnelles en
Nous pouvons obtenir la matrice Jacobienne par une méthode de calcul direct, fondée
sur la relation entre les vecteurs des vitesses de translation et de rotation Vil et COn du repère
[~~]=Jll(l (3.26)
(3.27)
w 1 =wo + () Z =
° ° ° °° [0]°.
1 ()
(3 .28)
(3.29)
45
(3.30)
(3 .31 )
(3 .32)
(3 .33)
(3.35)
° ° ° °° [0]°.
w l = WO + () Z =
1 ()
(3 .36)
(3.37)
(3.38)
46
(3 .39)
C2 S2
2 - R1 V2 -
V2 - 2 1 - -S2 2C (3.40)
[
o 0
(3 Al)
(3.42)
C1 C23 -C1S23
VJ= RJ V;= [ S3 C23 -Sl S 23 (3.43)
S23 C23
0 L 2s 3 0
0 L3 + L 2 C3 L3
[~tl =
-L 3 C23 0 0
(3.45)
S23
c23
0
0
0
0
[::1
0 1 1
47
[~tl =
0
0
L2 (S3 S 2 r C3 C23)- L3 C23
Sl
L3 C23
Sl [::] (3.46)
0 -Cl -Cl
1 0 0
L'objectif du MCl est de calculer, à partir d'une configuration q donnée, les vitesses
direct en résolvant un système d'équations linéaires. La mise en œuvre peut être faite de façon
façon remarquable par rapport aux solutions numériques. Mais, il faut traiter les cas singuliers
distinctement. Les solutions numériques sont plus générales et traitent tous les cas de la même
manière [35].
en se servant de la matrice J O(3x3) réduite, que nous obtenions du MCD en supprimant les
lignes 3, 4 et 6 ;
Son MCl est obtenu en calculant JO-1(3x3) réduite avec le nouveau vecteur Xr = [vx vy wy]T:
• -1 .
8 = Jo (3x3)Xr (3.48)
(3.50)
2
L 2 c1 (S3 C23 - C3 S 23 )
L 3 s 1 Cl C23
3.6 Conclusion
Dans ce chapitre, nous avons commencé par décrire les différents organes constituant le
bras manipulateur étudié. Par la suite, nous avons donné une représentation aussi simpliste
Nous débuterons dans ce qui suit, la partie concernant la commande du robot. Nous
4.1 Introduction
Ce chapitre a pour objet l' application des différentes commandes citées précédemment
sur le robot manipulateur. Nous introduisons la modélisation d'un servomoteur du bras sous
Python dans un asservissement dans un premier temps avec la commande PID, et dans un
deuxième temps, avec la commande par Logique Floue avec la présentation des résultats de
4.2.1 Raspberry Pi 4 B
Il fonctionne depuis une carte micro-SD et utilise un système d'exploitation basé sur
°
Linux ou Windows 1 loT. Il est fourni sans boîtier, alimentation, clavier, écran et souris
Cette nouvelle version de la carte Raspberry Pi 4 B est basée sur [37] un Processeur ARM
Cortex-A 72 64 bits q~latre cœurs à 1,5 GHz, 1 GB de mémoire RAM (il existe également en
version 2 et 4 GB de RAM), interfaces Wi-Fi, Bluetooth, et ports USB 2.0, USB 3.0, Ethernet
Les interfaces Ethernet et Bluetooth ont été améliorées par rapport aux verSIOns
précédentes et supportent maintenant l'Ethernet Gigabit ainsi que le Bluetooth 5.0. Cette carte
49
traitement de texte, jeux). Il peut également diffuser des vidéos en haute définition grâce à
son circuit BroadcomVideoCore VI (permet le décodage des flux vidéo 4k H.265 et 1080p
H.264). Cette nouvelle version supporte également le 4k en natif via ses sorties micro-HDMI.
La Raspberry Pi 4 B nécessite une carte SD munie d'un OS, une alimentation, un clavier
USB, une souris USB, un boîtier et des câbles (non inclus). Pour préparer une carte SD
• Raapberry PI
Caractéristiques Raspberry Pi 4 B :
• Mémoire: 1 GB LPDDR4
• Les ports :2 ports USB 2.0 et 2 ports USB 3.0 et Port Ethernet Gigabit RJ45
• Sorties: 2 x micro-HDMI (4K @ 60 fps maxi), Jack 3,5 mm (partagé avec audio)
• Dimensions : 88 x 58 x 17 mm
• Version : Raspberry Pi 4 B - 1 GB
• Poids : 46 g
4.2.2.1 Description
La carte adaptateur Lynxmotion Smart Servo (LSS) est une carte électronique qui permet
d'alimentation centrale via six connecteurs LSS . L'adaptateur LSS est idéalement conçu pour
être alimenté par une batterie LiPo via le connecteur XT60 mâle embarqué, ou avec un
51
adaptateur mural équipé d'un connecteur XT60 femelle . Il existe de nombreuses façons de
4.2.2.2 Fonctionnalités
4.2.2.3 Caractéristiques
pour Python qui nous permet d'exécuter directement du code Python. Il s' agit d' un langage
Open Source et gratuit, téléchargeable sur le site officiel dans la rubrique téléchargement.
Python Launcher permet lui d' exécuter du code Python créé dans des fichiers séparés .py en
Arrêt
D ébogage
Programme
L'objectif est d' étudier et proposer la commande du bras robotisé pour améliorer la
Nous cherchons à faire atteindre une certaine valeur à une variab le du système. Dans le
cas d'un servomoteur, il s' agit principalement d' une vitesse ou d' une position.
- Les effets des perturbations doivent être minimisés, voire effacés, et ce le plus vite
possible (régulation).
- Les changements de consigne doivent être SUIVIS rapidement et avec une bonne
Néanmoins, ces critères de perfonnance sont souvent antagoniques, et nous verrons que
Régulateur PID (Proportionnel, Intégral, Dérivé) est une méthode d'auto régulation (en
boucle fermée), qui cherche à réduire l'erreur entre la consigne et la mesure [39].
E = Consigne - Mesure
Le régulateur PID sert à atteindre la valeur souhaitée pour une des variables du
l'asservissement.
54
Action
PropOitionnelle
Action DérIVée
Tel que mentionné précédemment, le régulateur PID est un régulateur, en boucle fermée
(Figure 4-5), qui a pour rôle de diminuer l'erreur entre la consigne et la mesure et d'atteindre
la position souhaitée.
Sen·omolalr
o kd du (t )
de
L'asservissement de type proportionnel (P) est le plus simple qUI soit. Il s' agit
.....
lOO·
lOO r
~ .... ~ .... ~
..
0
]li)
,
"]li).
s
.. JCO.
,...
200- "".
1OO· 100-
IDO -
,.
lOO llIOO l\OO
temps on, "'"
+UOI6641Zt12
-1"
tUa_Hlel2
11000 20000
temps en s
22000
+U0I669Stl2
Alors, d'après les signaux de la figure 4.6, le rôle du proportionnel est d ' amplifier
virtuellement l'erreur pour que le système réagisse plus vivement, comme si l'erreur était
plus grande qu'elle ne l'est en réalité, il permet de vaincre les grandes inerties du système et
grande, plus nous donnons de puissance au servomoteur). Lorsque nous augmentons Kp, le
système réagit plus vite et l'erreur statique s'en trouve améliorée, mais en contrepartie, le
système perd en stabilité. Le dépassement se fait de plus en plus grand, et le système peut
même diverger dans le cas d'un Kp démesuré. Un ajustement du gain est donc requis pour
permettre une réponse acceptable. Toutefois, l'utilisation de méthodes classiques, basées sur
L'erreur est intégrée sur un intervalle de temps, puis multipliée par une constante Ki.
t
Ic(t)= kif Ec(t).dt [39]
100 ·
. ..
G ·
200 - 200-
,-
~~~-=~-~ ~~~ ~~ ~ 52000 54000 5iODO 6000 :JIDOO DIO !OOO
temps; en 5 +L6OI!I67nt:l2 ttmpun 5 +1.60111I1e.12 temps en 5 tl.6086754tll
Figure 4-7 Réponse d'un servomoteur du bras dans un asservissement Kp et Ki, passage de
la position zéro à la position 600 = 60°.
57
l'erreur depuis le début et d' ajouter cette erreur à la consigne: lorsque nous nous rapprochons
de la valeur demandée, l'erreur devient de plus en plus faible. L' intégrale agissant comme
un filtre sur le signal intégré, permet de diminuer l'impact des perturbations (bmit, parasites),
et il en résulte alors un système plus stable. Malheureusement, le terme intégral sur notre
système ici d' après la figure 4.7 est mal adapté pour les conditions du système. Notons que
plus le terme intégral est important plus il entraînera de dépassement de la consigne, une
dEc(t)
Dc(t) = Kd dt [39]
58
"".
j œ·
lOO·
Or
- - ....
temps en s +L6086I62t12
....
-.,. .
.g
~
œ·
O· O· O·
lIlOOO
'=="==1lOO
= .....
== ""..
:'-=:
"""'
='=="=1lOO""'......
=:':::-.."..
='=-:::
."...
'=' 66000 6IODO 1000CI 12000 140DII 62OCIO IGO 66000 6aJOO XIOOO 12000 J.4OOO
en s tUœ6I6tU temps en 5 tl6086864e12 temps en s +UOI6IUf:U
Figure 4-8 Réponse d'un servomoteur du bras dans un asservissement PID, passage de la
position zéro à la position 600 = 60°.
système.
Le réglage d'un PID consiste à trouver les meilleurs coefficients Kp, Ki et Kd dans le but
d'obtenir une réponse adéquate du procédé et de la régulation. L' objectif est d'obtenir une
En absence d'un modèle du système, nous avons utilisé une approche manuelle
une valeur relativement grande de Kp, puis nous avons ajusté Ki et Kd pour éliminer l' erreur
...
...
~-
i-
...
t
,..
....
mo 1SOO mo
.u
+l.iIOIM747•
Figure 4-10 Gains ajustés PI Kp=0.9, Ki=1O- 5en position 600 = 60.
_---1
~~u~...~.~--------------------------------------~
_J\U • ....~1IU71 •
• J\U. -"rl'" . .
Figure 4-11 Gains ajustés pour PID : Kp=0.9, Ki=10- 5, Kd=0.3, en position 600 = 60°.
60
peut être employé pour diminuer l'erreur entre la consigne et la mesure et ainsi atteindre une
p kp.Ee ( t )
t O m(t)
1 l.:JEe(t).dt SMvomou
dEC
0 kd (t)
dt
Comme nous avons fait sur le réglage d'un PID sur la position, c'est le même principe
d'ajustement les coefficients sur la vitesse consiste à trouver les meilleurs coefficients Kp,
IO· ~~~--~--~~----
50·
~-
50·
10 - 40·
~-
10 ·
lO·
10- JI.
s· 10 -
10·
- ".2. .L ...·l - ".2. iGoL ...-1
0- • -- ~ 0- • - - CIIOOIIN 0-
-201)0 -1000 toêo lIlÔo lIlÔo l'lSOO 1)000 aoioo 11000 11500 mOoo IlSOO HÔoo Itno ttSoo Itno _ lDMo Wo mno nooo
+l 6147OntU +UI47OntU +UI41Otl.U
Figure 4-13 Gains ajustés pour PID : Kp=2, Ki=I , Kd=l , trois vitesses différentes.
61
Nous remarquons d'après la Figure 4.13 que plus nous ralentissons ou diminuons la
Toutefois, visuellement la rotation du servomoteur n' est pas saccadée comme le suggère
la courbe.
palier, puis en décélérant juste avant d' atteindre la position fmale afin d' éviter de la dépasser
(ce que fait naturellement un conducteur de véhicule). Typiquement, nous implémentons une
commande trapézoïdale, c'est-à-dire que nous appliquons un seuil à la fois sur la vitesse et
Vite se
Temps
Se!vomo1eur
Mc(t)
selon la distance du déplacement: l'évolution de la vitesse se fait selon 3 phases, une phase
d'accélération, une de vitesse constante et enfin une phase de décélération. Ainsi , plus nous
nous rapprochons de la position de référence, plus la vitesse diminue afin d'atteindre une
lU -
15 -
...
a ...
:~
10 -
~-
5-
...
!DO
0-
!DO lOOO 1100 lAOO l600 l8DO :DM»
+1 61.U5n.1l
Le résultat obtenu par un double asservissement ne possède pas beaucoup d' ondulation
au niveau de la courbe de vitesse (ondulation faible). Nous remarquons que le signal de sortie
63
MLI (PWM) au cours de la vitesse constante est maximal, ce qui signifie aussi que la vitesse
Le terme d ' ensemble flou apparaît pour la première fois en 1965 lorsque le professeur
Lotfi A. Zadeh, de l'université de Berkeley aux USA, publie un article intitulé « Ensembles
p~ numérique
de sortie
Figure 4-17 Schéma représentatif du fonctionnement d 'un système par Logique Floue [41].
Conversion des valeurs d'entrée (grandeurs physiques) en grandeurs floues réunies dans
le vecteur x, cette partie consiste à traduire les données numériques quantitatives provenant
d'un capteur, alors dans notre cas l' entrée est la position du servomoteur, en variables
64
linguistiques qualitatives grâce à une fonction d' appartenance utilisée. Alors, l'entrée est
partitionnée dans notre cas en 8 variables linguistiques sur un intervalle de position [-1800,
1800], représentant une variation d'angle entre -180° et 180°, par les fonctions
10
~ ~
1 - ~
01 · - ~I.'l:f'l:tiEn'
-~~rr
H' = ~
1"-
o. ·
1
- ~
02 ·
00
- 1500 - 1000 -soo
Il
0 500 1000 1SOO
l'OsErr
imprécises (ensembles flous d'entrée) à générer par un schéma d'inférence, qui est basé sur
une base de connaissances de la force de contrôle à appliquer sur le système. Avec la base
des règles, la prise des décisions pour chaque règle activée donne un sous-ensemble flou de
sortie, alors les règles de base pour la position du mouvement dans le servomoteur
Tableau 4-1 Les règles de base pour la position du mouvement dans le servomoteur
4.4.3.1.3 La défuzzification
Le résultat de l'inférence en utilisant une des méthodes d'implication floue ne peut être
utilisée directement. Une transformation doit être prévue à la sortie du bloc d'inférence pour
étant connue par le terme défuzzification (concrétisation) [41]. La figure suivante représente
1000 •
lIDO -
0-
.
li500 7000 7500 11100
+1 . 614]991~U
Figure 4-19 Réponse d'un servomoteur du bras dans un asservissement avec logique floue.
L'entrée maintenant est la vitesse angulaire du servomoteur, nous traduisons ces données
10
08 -
Ol ;
/
00
~O
-
40 - 20 0 20
Spee-dErr
Le schéma d'inférence généré par le contrôleur par logique floue de la vitesse angulaire
du servomoteur permet la prise des décisions pour chaque règle activée _ Celui-ci donne le
Tableau 4-2 les règles de base pour la vitesse du mouvement dans le servomoteur
4.4.3.2.3 La défuzzification
10 - --------
lO -
J) -
IS - e-
J) -
»- 1O -
lO -
s- ID -
»-
0-
.000 _ eOoo eôoo _ SlOoo S?Ôoo 9Ôoo
0-
J1Ôoo J1SOO . . . .soo
lIOOO __ '-4IOO.oo_5IIÔo12Ôo~SIOo5llÔoào
,
+16141Ontll +16141014412 +16111010111
0
Vitesse 20 /S Vitesse 40 0 /S Vitesse 60 0 /S
Nous remarquons d'après le Figure 4.23 que plus nous ralentissons ou diminuons la
vitesse, plus le signal de mesure de vitesse est bruité. Ce phénomène a été observé aussi pour
Dans la section suivante, nous appliquons le double asservissement par Logique Floue
d'un servomoteur, passant par la méthode de freinage en douceur avant la position souhaitée
à parcourir. En effet, l'asservissement par Logique Floue sur les deux variables (position et
vitesse), facilite le freinage à appliquer (sur la tension) selon la distance du déplacement pour
ralentir avant d' arriver à la position souhaitée. Or il est souvent préférable de se déplacer à
une vitesse globalement constante quelle que soit la distance à parcourir, en décélérant juste
68
avant d' atteindre la position flnale afln d' éviter de la dépasser. Typiquement, on implémente
triangulaires sur un intervalle de position [-1800, 1800] et la vitesse [-60, 60] par les fonctions
LO
o.. -
Cl.
~ 0.6
j 0.4 -
0.2
0.0
-tG -10 - 20 0 20 40
spndErr
Figure 4-22 Variables linguistiques pour décrire la position (8, J.l(8)) et la vitesse (n, J.l(n)).
angulaire du servomoteur permet la prise des décisions pour chaque règle activée et donne le
Tableau 4-3 les règles de base pour la position et la vitesse du mouvement dans le
servomoteur
4.4.4.1.1 La défuzzification
transformation à la sortie du bloc d' inférence et convertir les sous-ensembles flous de sortie
600 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 -
500 - 50-
«lO -
300 - )0-
2DO -
100 • 10-
0- 0-
GOO 4400 4600 4IlOO 5000 5lOO 5400 56GO 5000 1000 6!100 7000
+1 6141l52el2 +1 .61S0297el2
Figure 4-23 Résultat du double asservissement par la Logique Floue sur la position
(bleu) et sur la vitesse (rouge).
4.5 Conclusion
Dans ce chapitre, nous avons abordé les différents aspects (matériel et logiciel) relatifs à
la réalisation du projet, notamment les différents composants du bras robot. Nous avons
étudié également la commande d'un servomoteur du bras robot utilisant des correcteurs de
type PID et la commande par Logique Floue. Nous avons présenté des exemples des résultats
5.1 Introduction
auparavant sont testées sur le prototype de servomoteur d'un bras manipulateur Lynxmotion.
La procédure de comparaison consiste à vérifier les performances des lois de commande sous
des conditions similaires d' opération (positions initiale et finale). Notons que bien que dans
la simulation ceci est possible dans l'étude expérimentale deux conditions identiques de test
Les figures 5.1 et 5.2 montrent les résultats de tests des deux méthodes pour une
liOO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
500 -
100 -
2DO -
100 •
0-
ClOO 4400
. .
4600 4IlOO 5000 ~ 5400 5600
+1 614m2.l2
100 ...
------------':-=-=--::;-~ a.--
Nous constatons que la rapidité du système (temps de réponse, temps de monté) dans la
réponse obtenue par la commande par Logique Floue est meilleure que celle obtenue par la
commande avec PID. Dans la commande par Logique Floue, la réduction de l' erreur et la
stabilisation se font plus rapidement par contre avec la commande PID l' atténuation de
l' erreur se fait lentement et présente une certaine oscillation (typique dans les correcteurs de
type PID). Les deux régulateurs permettent d' éliminer l'erreur et le dépassement, donc
peuvent être employés pour obtenir une bonne précision sans mouvements brusques ou
saccadés.
Les figures 5.3 et 5.4 montrent les résultats de tests des deux méthodes pour une
JI- 50-
15-
JO -
IS- JI-
/0-
Ill- JO-
5- 111-
10-
- 1;I-2.Ki-LJ(d-1 - Kpal. Ki-\. 1Cd-\ - Kpa2.II-\. ICd-\
0- ,
-2000 -1000 1000
-- CIIMIp
lDOO JIOO
0-
19500
,
lIlOOO lIl500 81000
-- ........
ll500 lIlOOO lIlSOO
0- • • ! l ,
--
1
........
• • j
19000 19250 19500 19150 lOOOO J0250 lO5OO J0150 Zlooo
tlUn_1l +1 i1410910ll
"" ""NI"'"
Figure 5-3 Résultats avec correcteur PID pour trois différentes consignes de vitesse
angulaire 20 0 /s, 40 0 /s, 60 0 /s.
10- ---------
§o -
lS-
JO- 40-
lO- JO-
Ill-
lO ·
s- ID ·
ID-
0- , l , 1 1 1 1 • , , 0-. 1 1 1 • 1 1 1 •
4iOOO 47000 l1OOO 4!1000 50000 51000 52000 5lOOO J1000 J1500 _ 11500 .l1OOO 11500 _ 4IOO4lOO4IIOO 500052005400 56OO5IIOO1iDOO
,n 5U1Olltn .... "1.lf11fi~1)
Figure 5-4 Résultats avec la Logique Floue pour trois différentes consignes de vitesse
Nous remarquons que les résultats obtenus avec la Logique Floue (d'après la figure 5.4)
présentent moins de perturbation dans la vitesse du servomoteur par rapport aux résultats
obtenus avec la commande PID (Figure 5-3)_ En revanche, le temps de réponse dans les
faibles vitesses des mouvements de la commande PID plus rapide par rapport à la commande
de vitesse par Logique Floue 20 0 /s, 40 0 /s_Mais dans les grandes vitesses 60 0 /s le temps de
réponse de la vitesse de mouvement de la commande par logique Floue est plus rapide_
73
Les figures 5.5 et 5.6 montrent les résultats de tests des deux méthodes pour une
- r-:----=::;:::::=;:-:J
lfl-
IS ·
-
10 -
5-
0- - Kp-O 1. _0 01.1Cd-0 01
2!1600 2!1100 30000 30100 30400 _ lO8OO l2000
+l.IOI)4~12
+15l42296f!12
10 - 000- -----------------------------
50- 500 •
lD- 100 -
le · 200 -
100 -
0-
4SOO
. .
sooo
.
li500 JOOO
0-
C2004400
.
16004Il00 sooo 520054005600
Figure 5-6 Résultats pour le double asservissement position-vitesse avec Logique Floue.
Nous constatons que la commande par la Logique Floue donne des meilleurs résultats à
savoir: un bon suivi de la position et vitesses articulaires, ainsi qu' une meilleure convergence
asymptotique de l'erreur. La commande avec PID peut être aussi un bon choix. Toutefois, la
réponse risque d' être affectée si la charge mécanique du servomoteur varie. Dans ce cas, nous
Selon les résultats obtenus, nous pouvons affirmer que la commande par la Logique
Floue, en plus de donner des bonnes performances et assurer une convergence asymptotique
de l' erreur, son ajustement n' est pas basé sur les caractéristiques ou paramètres du système.
De sorte qu ' elle peut rester fonctionnelle même si la charge du servomoteur change, ce qui
est souvent le cas dans une application de robotique. La commande par la Logique Floue
garantit à la fois l' atteinte du point de consigne et l' atténuation des oscillations.
La commande avec correcteur PID prend juste une seule vitesse constante qUI est
5.2 Conclusion
Dans ce chapitre, nous avons fait une comparaison des résultats expérimentaux entre le
correcteur PID et la commande par la Logique Floue pour réguler la position et la vitesse
Nous remarquons que la commande par la Logique Floue est très efficace, très
performante (rapidité, stabilité et précision) par rapport au correcteur PID. Elle n'est pas
affectée par les retards et les oscillations souvent rencontrées dans les correcteurs de type
PID.
Chapitre 6 - Application de contrôle du robot sous
Logiciel LABVIEW
6.1 Introduction
communication numérique. Dans le but de commander notre bras manipulateur, nous avons
Lab VIEW offre une approche de programmation graphique qui aide à visualiser tous les
mesure et le débogage.
Une des différences fondamenta les de LabVIEW est que ce langage suit un modèle de
flux de données, et non de flux d' instmctions. Cela signifie que pour un langage textuel, ce
sont les instructions qui ont la priorité, alors qu ' avec LabVIEW, ce sont les données. Une
fonction s' exécutera donc uniquement si elle dispose à ses entrées de toutes les données dont
elle a besoin. Lorsqu ' un langage classique est ainsi séquentiel, Lab VIEW est naturellement
76
du code [42] .
Afin de faciliter la communication entre l' homme et la machine, nous avons créé une
Pour commander les quatre servomoteurs du bras manipulateur, nous avons réalisé deux
modes de commande: une commande pour configurer la trajectoire du bras et une commande
de marche automatique, la commande par des potentiomètres pour varier les angles des
_. .....
palinltdl ·1D.llOO pœllrwCdtOUIOO
=1~,
posliMde ·900UCXI pos411111dtQiUao
::1 ....
U.]
•.: 1
pool pooIl
- ,. 0
0 0
,..
-.
• 0
"
~t
arreVmarche •
"",1- POIl inttmlltdlln 1"""" POI .. int~
_Io-
POf J ..
. ·1100.110) dt011100
_
dt .1900
.
de"OIUlSC»
=1
::1 ....... 5 ::1 pean". -1 po&inllf )
pœintft'
-,
"
""
0
:1 • "
0
:1" ..
ll.......-..,.....
I l . . . . . -.. , . . . . . -
".......- , - - -
--.....
postllndt ·tait.lOO pol 2 in de -SOI)' 1600 posJlndt-",i900 pol 41n dt a HSOO
::1 :1 pool,
- :1 •
potI pool' potIl
"
~t
0
-, =
..:1
..;
Partie 1 :
la trajectoire du bras par : une case (1) accès pour configurer les positions initiales
des servomoteurs, (2) accès pour les positions intermédiaire, (3) accès pour les
positions finales , accès (4) marche automatique toutes les positions des
servomoteurs.
pas 1 init do ·1800 11800 pas 1 init do 0 11800 pas) init do ·9OO 1900 pas" init dt «ID a1500
...-:~·1 ~ :.1
• posil
0
:~I
.;.~
posi)
0 :II~' 1------
nt ~
.~ . ... '
..;
pas .. int.nneciaife
1 arret/marche •
pœ 1 irttermdiaîre pas 21niermediHe pas) Intennediair.
do ·1800 11800 doOII800 de ·9OO 1900 do 400 11500
-,
.~]I 0 .....
t:
~
.;
0
...~ll' 0
...
- ;·.· 1
"
post :1
pas 1 lin do·5OO à1600
'"
post 1
0
pas) lin do ·9OO 1900
:1
~
.~
post)
...'
. UIt~
.~ .
....'
automatique.
Partie 2 :
suivre directement des trajectoires désirées. Nous pouvons ainsi , définir les différentes
positions à l' aide de variation des potentiomètres (Figure 6-4), qui eux désignent des angles
pour les servomoteurs, ce qui nous fournit une séquence de mouvement (par les positions des
articulations) et nous définit une trajectoire à réaliser lors de la mise en marche automatique.
78
1 :jl
"
I ·...j
posi
0
~· I ~l ~jl :11~4 1 poOl
:ll
1)
" 0
1 .,.,~ 0
l) COIIfIgundon .... . . . . . - - -
I1/ COIIfIgundon .... .....- ftnIIos
....' ~-1UIDmIIIqut
1 pos 1 fin de ·1800 11800 pos4finde400à ~
:1
pos l fin de ·500 à 1600 pos l fin de ·900 à 900 l 1
Partie 3 : La séquence étant définie par les angles préprogrammés, dès que nous mettons
le système en marche automatique, l' application exécute le programme sous Python pour
exécuter la séquence de mouvement (prendre, déplacer et déposer des objets) avec le bras
robot selon les positions sauvegardées. Dans ce sous-programme, nous illustrons une
Des 6--. -r
potentiomètres
6.4 Conclusion
Dans ce chapitre, nous avons proposé une application sous Labview et Python pour la
souhaitées.
80
L' objectif de ce mémoire était essentiellement d'étudier les lois de commande afin
dans les bras robotisés à faible coût. Ce mémoire présente, donc de manière résumée, le
travail qui concerne l'étude et la réalisation d' un bras manipulateur à trois degrés de liberté
à faible coût, avec l' hypothèse d'un environnement de travail sans obstacles. Nous avons
géométriques, cinématiques, qui ont pour rôle respectivement de générer des trajectoires de
références. Enfin, nous nous sommes intéressés à l' étude expérimentale de la commande de
Des résultats expérimentaux obtenus lors de l' étude pratique et l' implémentation des
techniques de cornnlande par correcteur PID et par Logique Floue nous ont permis de
déterminer certains avantages et inconvénients de ces méthodes par rapport à l' objectif
En termes généraux, la commande par la Logique Floue, dans le contexte de cette étude
et sous les contraintes associées au matériel, offre des meilleures performances en termes de
vitesse et atténuation de l'erreur soit par une commande simple de position ou soit par une
Afin de pouvoir réaliser les tests et contrôler le mouvement du bras robotique avec les
régulateurs étudiés, une application d'interface utilisateur a été développée sous le logiciel
LabVIEW.
Le prototype réalisé peut servir de base pour des travaux futurs qui seront destinés à
Les perspectives et recommandations suivantes permettront d' aller plus loin dans cette
• Faire une étude plus détaillée sur la modélisation dynamique directe et inverse,
utilisant une commande via les observateurs robustes en présence des perturbations;
• Utiliser des servomoteurs offrant un couple moteur plus important, dans le but de
Bibliographie
[1] Bréan, Simon La science-fiction en France: théorie et histoire d'une littérature, PUPS ,
coll.« Lettres fran çaise» (2012).
[2] Liu, Lili. L' ergothérapie à l' ère de la quatrième révolution industrielle. Canadian
Journal ofOccupational Therapy. 85(4), EI-E14 (2018).
[3] C. Bohn and D. P. Atherton, an analysis package comparing PID anti-windup strategies,
IEEE Control Syst.Mag. 15, 34-40 (1995).
[4] Jingqing, Han. Acta Automatica Sinica. Nonlinear PID controller. 20(4) , 487-490
(1994) .
[5] Xu, Yangming, Hollerbach, John M, & Ma, Donghai. A nonlinear PD controller for
force and contact transient control. IEEE Control Systems Magazine. 15(1), 15-21 (1995) .
[6] Armstrong, Brian, McPherson, Joseph, & Li , Yonggang. A Lyapunov stability prooffor
non/inear-stiffness PD contro/. Paper presented at the Proceedings ofIEEE International
Conference on Robotics and Automation. (1996) .
[7] « Robotics », dans English Oxford Living Dictionaries. [En ligne]. Disponible:
https:llen.oxforddictionaries.com/definition!robotics
[9] Huyssen, Andreas. After the great divide: Modernism, mass culture, postmodernism.
The vamp and the machine: Fritz Lang's Metropolis. 65 -81 (1986).
[10] Bessette, Juliette. Les Cahiers de l'École du Louvre. Recherches en histoire de l' art,
histoire des civilisations, archéologie, anthropologie et muséologie. John McHale,
l' Amérique passée à la machine. (13) (2019).
[Il] Noh, Sun Young, & Jeong, Kyungmin. Design Concepts ofEmergency
Respo17se Robot Platform K-R2D2. Paper presented at the Trans. of the Korean Nuclear
Society, Autumn Meeting. (2016).
83
[12] Hurlbut, Shane, Snow, Ben, Gibson, Charlie, Alzmann, Christian. Engineering, &
Technology. Terminator treatment. 4(19), 45-47 (2009).
[16] Raibert, Marc, Blankespoor, Kevin, Nelson, Gabriel, & Play ter, Rob . Bigdog, the
rough-terrain quadmped robot. IFAC Proceedings Volmnes. 41(2), 10822-10825. (2008).
[18] Ornron Adept Technologie, Inc. Plat-Fonne LD. In. États-Unis d'Amérique. (2018).
[19] Salameen, Laith, Estatieh, Abdelkarim, Darbisi, Salman, Tutunji, Tarek A, &
[22] Barbulescu, Vlad, Marica, Ioan, Gheorghe, Viorel, Nistor, Mircea, & Patras cu,
Monica. Encoder-based path tracking with adaptive cascaded control f or a three
omni-wheel robot. Paper presented at the 2017 16th RoEduNet Conference: Networking in
Education and Research (RoEduNet). (2017).
84
[23] Boukli Hacene Lotii Fazil « Commande et supervisio"n d' un ensemble de robots via
internet », Mémoire en vue de l'obtention de Magister, Université Des Sciences Et De La
Technologie D 'oran, 26 avril 2012.
[24] Ni, Zhichen, Liu, Juan, & Chu, Zhaoqi. Multifunctional TrajectolY Control
System of Robot Based on Pc. Paper presented at the 2020 IEEE 3rd International
Conference on Information Systems and Computer Aided Education (ICISCAE). (2020) .
[25] Luqman, Hafiz Muhammad, & Zaffar, Mubeen . Chess Brain and Autonomous Chess
Playing Robotic System. Paper presented at the 2016 International Conference on
Autonomous Robot Systems and Competitions (ICARSC). (2016).
[26] Fisette P., Buyse H. , Samin le. « Introduction à la robotique » Cours, 19 février 2004
[27] Craig, John l « Introduction to robotics : mechanics and control », Pearson Education
International, Livre, 2009.
[28] Gangloff Jacques « Cours de Robotique », Cours, ENSPS 3A Master ISTI, 2018.
[29] Angelles Jorge « Fundamentals of robotic mechanical systems », Springer, Livre,
2002.
[30] Emmanuel Godoy & Coll, Régulation industrielle. Dunod, Paris 2007.
[39] M. Camus, E. Deguine et D. Ross, Régulation par PID, Paris: TELECHOM Tech,
2010
[40] Martinez, José Roman Garcia, Reséndiz, Juvenal Rodriguez, Prado, Miguel Angel
Martinez, & Miguel, Edson Eduardo Cmz. Assessment ofjerk performance s-curve and
frapezoidal velo city profiles. Paper presented at the 2017 XIII International Engineering
Congress (CONIIN). (2017).
[41] Zadeh, Lotfi Asker, Klir, George J, & Yuan, Bo. F~t=zy sefs,jilzzy logic, and
jilz=y systems: selected papers (Vol. 6): World Scientific. (1996).
[44] lGraham, « CES 2017: Cars, robots are expected to star" dans USA TODA Y, 2017.
[Enli gne]. Disponible : https://www.usatoday.com/story /tech/2 016/12/30/ cars-
robotsexpected-star-ces20 17/95890122/
[48] Fuzzy logic Too lbox user guide .Natick, MA : Mathworks, 1997.
Annexe
Annexe 1 : Code PID Position pour un seul servomoteur ... ... ......... ... ........ ... ... 100
Annexe 2 : Code PID Vitesse pour lin seul servomoteur .. . .......... .... . ... .... .. ... .. .. 101
Annexe 3 : Code double PID sur la position et la vitesse (trapézolâale) pour un seul
servomoteur ... .... .... . ....... .... . ..... ...... . ... .... .. ......... ... ... .. . .. . .. . .... ... ... ..... .. . ... 103
Annexe 4 : Code Fuzzy_Iogie sur la Position .. . .... ... ... .. ... ... .. ..... ..... ..... ....... ... 105
Annexe 5: Code Fuzzy_logie sur la Vitesse .. . .. ....... .. .. .... .. ... ... .. ... .. . ..... . ... .... 108
un seul servomoteur .. . .. . .. . ... ... ... .. ..... .... . ... .. ..... .... .. .. .... .......... . .... ....... . ... .. 111
tous les servomoteurs du bras ... .... .. ..... .. ... .. ... .. ... . ... ... ... ........ .. .. .. . .... .. ...... 112
88
Kp= G.09
Ki= .000l,1
Kd= C.3
i=J
myLSS1.move (
while(i < ):
i=i+ ~
time. sleep ( )
Setpoint = 12 a
#myLSS1.setMaxSpeed(6G)
pos i tion= []
temps= []
cons igne= []
plt.style.use( 'b~h' )
pl t . xlabel ( " èl1'PS [1!', " )
plt. ion ()
pos=
Erreur= ()
pos=int(myLSS1.getPosition(»
Erreur= Setpoint-int(myLSS1.getPosition(»
period= O
X= I
myLSSl.moveRelative(round(Output»
#partie de la courbe
if e speed_sum >
e speed_sum #11.mlt'l.ti0n a ' int.=.r"alh' .a SOl'1ll1'" ne depassp
pas 3JO
if e speed_sum <- (
e speed_sum n# ::'lmit ati~,n d ' intervall~' la s :)mme ne depasse
pas -30~
elif pwm pulse> 1 : tlimitati n l ' intervalle pwm ne dépasse pas 300
myLSSl.moveRDM(
pwm_pulse=
myLSSl.moveRDM(int(pwm_pulse»
pl t . legend ()
92
myLSS1. hold ()
plt.ioff() # on quitte le mode interactif pour rendre la main a
l ' utilisateur sur la courbe
pH. show ()
Iss. c l oseBus ()
93
#une fonct~on qUl prends des p05ltlvn dans u~ lnt~rvalle ~n min,in mdX et
fait
#la regle de trois p ur 'Qs ~al uler dans l'int clalle cJuc-ir,out max
def ( x, in min, in max, out min, out max) :
return(x - in - mi;)*(out - m~x - out - min)/(in - max - in- min)+ out min;
,,
Kp=
Ki= l
Kd= 1
#ler eLape p')siticn 0
myLSS1.move ( )
time. sleep ( )
#in~tlallsa+ion de la variab:e previous poSitlO~ à 0 pour memorispr :a
position pLeeédente
pree_pos=
#bo ble ~~_le touj"urs vrdie
while :
position=[]
voltage=[] #on y 5toque les positlon pour -,~ssin.r les c~urbes
temps= []
Vitesse= []
94
courant= []
temperature= []
consigne=[]
erreur_posit i on=[]
print ( " rit .. C')wn +h "wx+- positi'""r:" ) #l angle en degre x 10 qu ' on veut
atteindre
Setpoint =int (input (» #lecture de la valeur ecrite par l ' utilisateur
pwm_pulse=O
e_pos_sum= O#somme des erreurs
e_pos_pre= J#mémorisation de l ' erreur précedent
possomme= #les deqres parcourus par le servo ,c'est ~ne condition de
sécurité
prec_pos=O#initialisation de la position précedente a (
print ( " nr-" ,Setpoint, "pr!:' _ pu " ,prec_pos, "1 0'3'3. mm. " ,possomme)
V=
prec_pwm= J
while (Setpoint -pos <- or Setpoint -pos > <) and (possomme< abs (Setpoint -
prec_pos» :
#condltion d ' arret (erreur entre 2 et 2 degres)
#les degres parcours < la différence entre la derniere position et la
nouvelle
# if pwm_pulse<-5JO :
# pwm_pulse - -500 #limitation d ' intervalle pwm ne depasse pas -300
if (pwm_pulse > ):
pwm=mapnbr( pwm_pulse, ~ , 700 , 1'0 , 700 ) #calcul des valeur de sortie
du pro dans
#l ' intervalle de tonctionnement du servo moteur
elif (pwm_pulse < ):
pwm=mapnbr( pwm_pulse,- 5 ,- 700 ,- 1'O ,- 700 ) #de meme pour les
position negatives
e_pos sum '#llml tat' ~r d ' in'::.ervall riE 13. '3("mme du rIO (nE:
dépasse pas 0'1)
#encrét~ge de :a Vltesse
if pwm-prec_pwm>
pwm = prec_pwm+ 0
if pwm-prec_pwm<- "J :
pwm = prec_ pwm- )0
myLSSl. hold ()
print( " r " ,str(myLSSl.getPosition (») " ' )
prec_pos=Setpoint #memorisdtion de la derniere posirion dans la
vari3b:e pre r pos
#traçag p i p la rourbe
plt.figure( "-- ~t- plO )
plt.plot(temps,voltage, " ." , label= " ~Jn ")
plt.figure( "r:; ",~t " )
plt.plot(temps,position, '" " , label= "~'\p~ ' .l, Y_ , Y'i-J.'1~" )
plt.plot(temps,consigne, " " ,label= " on~igne ")
plt .legend ()
plt.figure( "· oso.;e" )
plt.plot(temps,Vitesse, "" label= "'\p= ( .1, K~ l . l, Y-i 1 . ~" ) # tracE'
la rourbe #plt.subplot(3,:,3)
pl t . legend ()
plt.figure( " a_ " )
plt.plot(temps,courant, ".j:" , label= " ilLP :" )
plt.figure( " IpP~ rp " )
plt.plot(temps,temperature, " " ,label=" Lgn<2 ")
pl t . legend ()
plt.figure( "p_1011r:r ~ rIO )
pl t. plot (temps, erreur _posi tion, "y" , label= " ~ _ :f,'t::' " )
myLSSl. hold ()
plt.ioff() # on quitte le mode interactlf pour rendre la maln a
l'utilisa eUL sur la courbe
plt. show ()
lss.closeBus()
97
Setpoint= t
#fon~t~ n r e freinaqe
def (speed) :
i=
if(speed >= L and speed <= ):
i= .~a marge d'erLeur n ~.gres que le serva dc~t ~'drreter avant
les atteindre
if(speed > 1 and speed <= ):
i=
if(speed > and speed <= ) :
i= 4
if(speed > and speed <= ) :
i= ~
return(i)
#on ) s =Il e les valt"ur s pO..!I ries,,", i nt=> Iles 'vur bes
Vitesse=[]
posi tion= []
temps= []
correction=[]
voltage=[] #o~ y stoque les p~sltion pour dessi'p· ~es courbes
courant= []
consigne=[]
xl=
*entrée erreur de vltesse entre -qO ft ~)
98
RDMrecti f [ ' igNû JI<~)Mre -+- -:. ' ] =fuzz . trapmf (RDMrectif . uni verse, [- 3 JO , - 3 J ,-
~R5 ,- J ])
RDMrectif[ 'I1:,dNelK)Mre;t~f' ]=fuzz.trimf(RDMre cti f.uni verse, [- 70 ,- 235 ,-
2 CJ ] )
RDMrectif[ ' T'al:"N. JrJ!:.1r tif' ]=fuzz.trimf(RDMrec tif.uni verse, [- 2., ,- _90 ,-
1 ])
RDMrectif [ ' ~ 't'S'ni'! lIN ' ~K:->Mre ·t ,! ' ] =fuzz . trimf (RDMrectif . uni verse, [- 1 ... 0 ,-
1 ])
RDMrectif [ , r yS'nd 1 lE vsK.JM' e,+- l ' ] =fuz z . trimf (RDMrectif . uni verse, [ 1 0 , 17"
, 1 Q ])
RDMrectif [ , 1:1Pr ,R[I~1rE ct i ~ ' ] =fuzz. trimf (RDMrectif . universe, [ 1 QO , 1 C , L. (
] )
RDMrectif[ ' ' ... dPù.· ..h'Mre·ti ' ]=fuzz.trimf(RDMre ct if.universe ,[ 0, 5 , 70 ])
RDMrectif[ 'biq~o~~[Mre tl! ' ]=fuzz.trapmf(RDMrectif.universe, [ "70 , ~ 5 , 30J ,
3 ( ])
if (abs (Setpoint -
int (myLSS1 . getPosition (»)<=test (abs (int (myLSS1.getSpee d (»»):
myLSS1.moveRDM ( )
myLSS1 . hold ()
print ( . " , int (myLSS1 . getPosi tion () ) , "
" ,tes t( int (myLSS1 . ge t Speed (»»
break
elif pwm pulse<- : #limitatlon d ' intervalle pwm ne dépasse pas -30u
myLSSl.moveRDM(- )
pwm_pulse=- 700
myLSSl. ho ld ()
possomme= possomme +abs (p os - int (my LSS l.getPosition (»)
print ( "1 ; t~ ~~-" , int (myLSSl. getPosi tion () ) )
print ( " Ar mt "+ str (curr ) ) ;
xl= l
SetSpeed=tù
Setpoint= OC
def ~ (speed):
i=O
if(speed >=1 and speed <= 1 ):
i= "
if(speed > l ' and speed <=23 ) :
i= q
if(speed >23 and speed <= ):
i= lO
if(speed > ~ and speed <= 1):
i= 13
return(i)
elif pwm pu l se > : ~limitd ct' int-ervalle pwm n2 depasse pas 3 l1Q
myLSS1.moveRDM (
pwm_ pu l se =
myLSS1 . hold ()
possomme= possomme +abs (p o s-int (myLSS1.getPosition (»)
104
#pour lp rrac,gp
plt.style.use(
plt.xlabel( " ")
plt.ylabel( " d. ")
#fonrtion po ~ ~e frein'3.ge
def (speed) :
i=l
if(speed >=_ and speed <= ):
i= O#la marge d ' erreuL en ~egres que le serv~ doit s ' arreter avant
les atrelndre
if(speed > and speed <= ):
i= )
if(speed > and speed <= ) :
i=
if(speed > and speed <= ) :
i=
return(i)
courant= []
cons igne= []
106
#xl-i)
#entrée erreur de position entre -1800 et 1800
PosErr= ctrl.Antecedent(np.arange(- 1BOO , 1800 , 1 ), 'fl)~ErL' )
RDMrecti f [ 'l: :jNE'gR[J'1rE'd _ ' ] =fuzz . tr imf (RDMrecti f . uni verse, [- OC , - 700 ,-
1])
RDMrectif[ ': lR:'tv:rutL:,' ]=fuzz.trimf(RDMrectif.universe, [- ,- 5 ,])
RDMrectif[ 'u~ro~CArtctl~' ]=fuzz.trimf(RDMrectif.universe, [- " ~_ ])
RDMrectif[ '2 ,.R.['Vr ti_' ]=fuzz.trimf(RDMrectif.universe, [ , JI , 0 ])
RDMre c tif[ 'trgPü>RDMu'" ' ]=fuzz.trimf(RDMrectif.universe, [ 00 , ( , 1)0 ])
if(Setpoint-int(myLSSl.getPosition(»<= J) :
SetSpeed=-
if(Setpoint-int(myLSSl.getPosition(»> ):
SetSpeed= ':l
while(Setpoint-pos<- or Setpoint-pos> ):
if(Setpoint-int(myLSSl.getPosition(»<= J) :
SetSpeed=- J
if(Setpoint-int(myLSSl.getPosition(»> ):
SetSpeed=
#a'o t le ~leurs pour les _n~r _1 urbe
position.append(int(myLSSl.getPosition(»)
Vitesse.append(int(myLSSl.getSpeed(»)
curr =int(myLSSl.getCurrent(»
millis =int«time.time()* »
temps.append(millis)
correction. append (pwm_pulse)
consigne.append(Setpoint)
courant.append(curr)
possomme= possomme +abs (p os - int (my LSS l.get Pos iti on (»)
#calcul de la s ,mme des degres parcourus à chaque itération de la boucle
whlle
pos =int (myLSSl .get Pos iti on (» #la position du servo
myLSS 1 . ho Id ()
#possomme= possomme +abs(pos-int(myLSSl . getPosition()))
»
print ( " :'l, i 1- 0r fi n,ll( " , int (my LS S l. getPos i tion ()
print ( " .arriDt. ) " +str (curr » ;
#xl=l
#pl t . legend ()
plt. show ()
lss . closeBus ()
110
deftest2 (speed ) :
i =O
if( speed >=20 and speed <=30 ) :
i =20
if( speed > 10 and speed <=20 ) :
i =20
if( speed > 40 and speed <=50 ) :
i =30
if( speed > 50 and speed <= 60 ) :
i =40
return ( i )
deftest ( speed ) :
i =O
if( speed >=10 and speed <=17 ):
i =5
if( speed >17 and speed <=23 ):
i =8
if( speed >23and speed <=27 ) :
i =10
if( speed >27 and speed <=33 ) :
i =13
return( i )
Setpoint= 1000
PosErr= ctrl . Antecedent (np . arange (- 3600 , 3600 , 1 ) , ' PosErr ' )
PosErr [ ' NegPosErr ' ]=fuzz . trimf ( PosErr . universe , [- 3600 ,- 3600 , 0 ])
PosErr [ ' ZeroPosErr ' ]=fuzz . trimf ( PosErr . universe ,[- 3600 , 0 , 3600 ])
PosErr [ ' PosPosErr ' ]=fuzz . trimf ( PosErr . universe ,[ 0 , 3600 , 3600 ])
RDMrectif [ ' bigNegRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[- 700 ,-
700 ,- 500 ])
RDMrectif [ ' NegRDMrectif ' ]=fuzz . trimf (RDMrectif . universe , [- 700 ,-
500 , 0 ])
RDMrectif [ ' ZeroRDMrectif' ]=fuzz . trimf (RDMrectif . universe ,[-
500 , 0 , 500 ])
RDMrectif [ ' PosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ 0 , 500 , 700 ])
RDMrectif [ ' bigPosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ 500 , 700 , 700 ])
perf_ctrl= ctrl . ControlSystem ([ rulel , rule2 , rule3 , rule4 , rule5 , rule6 , rule7 , r
ule8 , rule9 ])
perf= ctrl . ControlSystemSimulation (perf_ctrl )
possomme= O
pre c _pwm= O
perf . input [ ' SpeedErr ' 1=( SetSpeed- int (myLSS1 . getSpeed () »
perf . input [ ' PosErr ' 1=( Setpoint - int (myLSS1 . getPosition ( »)
perf . compute ()
myLSS1 . hold ()
Setpoint= 1000
PosErr= ctrl . Antecedent (np . arange (- 1800 , 1800 , 1 ) , ' PosErr ' )
RDMrectif= ctrl . Consequent (np . arange (- 700 , 700 , 1 ) , ' RDMrectif ' )
PosErr [ ' NegPosErr ' ]=fuzz . trimf ( PosErr . universe ,[- 1800 ,- 1800 , 0 ])
PosErr [ ' ZeroPosErr ' ]=fuzz . trimf ( PosErr . universe ,[- 1800 , 0 , 1800 ])
PosErr [ ' PosPosErr ' ]=fuzz . trimf ( PosErr . universe , [ 0 , 1800 , 1800 ])
RDMrectif [ ' bigNegRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[- 700 ,-
700 ,- 500 ])
114
RDMrectif [ ' NegRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[- 700 ,-
500 , 0 ])
RDMrectif [ ' ZeroRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[-
500 , 0 , 500 ])
RDMrectif [ ' PosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ O, 500 , 700 ])
RDMrectif [ ' bigPosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ 500 , 700 , 700 ])
perf_ctrl= ctrl . ControlSystem ([ rulel , rule2 , rule3 , rule4 , rule5 , rule6 , rule7 , r
ule8 , rule9 ])
perf= ctrl . ControlSystemSimulation (perf_ctrl )
perf . input [ ' SpeedErr ' ]=( SetSpeed- int (myLSS2 . getSpeed () »
115
perf . input [ ' PosErr ' ]=( Setpoint - int (myLSS2 . getPosition ( »)
perf . compute ()
myLSS2 . hold ()
lss . closeBus ()
return( pos )
Setpoint= 900
PosErr= ctrl . Antecedent (np . arange (- 900 , 900 , 1 ) , ' PosErr ' )
RDMrectif= ctrl . Consequent (np . arange (- 700 , 700 , 1 ) , ' RDMrectif ' )
PosErr [ ' NegPosErr ' ]=fuzz . trimf ( PosErr . universe ,[- 900 ,- 900 , 0 ])
PosErr [ ' ZeroPosErr ' ]=fuzz . trimf ( PosErr . universe ,[- 900 , 0 , 900 ])
PosErr [ ' PosPosErr ' ]=fuzz . trimf ( PosErr . universe ,[ 0 , 900 , 900 ])
RDMrectif [ ' bigNegRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[- 700 ,-
700 ,- 500 ])
RDMrectif [ ' NegRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[- 700 ,-
500 , 0 ])
RDMrectif [ ' ZeroRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[-
500 , 0 , 500 ])
RDMrectif [ ' PosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ 0 , 500 , 700 ])
RDMrectif [ ' bigPosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ 500 , 700 , 700 ])
perf_ctrl =ctrl . ControlSystem ([ rulel , rule2 , rule3 , rule4 , ruleS , rule6 , rule7 , r
ule8 , rule9 ])
perf= ctrl . ControlSystemSimulation (perf_ctrl )
perf . input [ ' SpeedErr ' ]=( SetSpeed- int (myLSS3 . getSpeed () »
perf . input [ ' PosErr ' ]=( Setpoint - int (myLSS3 . getPosition ( »)
perf . compute ()
myLSS3 . hold ()
return (pos )
lss . c loseBus 0
Setpoint= lOOO
PosErr= ctrl . Antecedent (np . arange (- lOO , lSOO , l ) , ' PosErr ' )
PosErr [ ' NegPosErr ' ]=fuzz . trimf ( PosErr . universe , [- 100 ,- 100 , 0 ])
PosErr [ ' ZeroPosErr ' ]=fuzz . trimf ( PosErr . universe ,[- 100 , 0 , 1500 ])
PosErr [ ' PosPosErr ' ]=fuzz . trimf ( PosErr . universe ,[ 0 , 1500 , 1500 ])
RDMrectif [ ' bigPosRDMrectif ' ]=fuzz . trimf (RDMrectif . universe ,[ 300 , 500 , 500 ])
perf_ctrl= ctrl . ControlSystem ([ rule1 , rule2 , rule3 , rule4 , rule5 , rule6 , rule7 , r
ule8 , rule9 ])
perf= ctrl . ControlSystemSimulation (perf_ctrl )
perf . input [ ' SpeedErr ' ]=( SetSpeed- int (myLSS4 . getSpeed () »
perf . input [ ' PosErr ' ]=( Setpoint - int (myLSS4 . getPosition ( »)
perf . compute ()
myLSS4 . hold ()
lss . closeBus ()
return (pos)