LaribiMohamed LimaniM
LaribiMohamed LimaniM
LaribiMohamed LimaniM
Présenté par
mohamed LARIBI
mohamed LIMANI
Thème
M Redouan KARA
MCA, UMMTO, Président
M Rabah MELLAH
MCA, UMMTO, Encadreur
M Prénom NOM
Grade, Lieu d’exercice, Co-Encadreur
M Ahmed MAIDI
MCA, UMMTO, Examinateur
M Amar HAMACH
MCB, UMMTO, Examinateur
Remerciements
A mon binôme
A mon binôme
Chapitre 1 : Généralités
Figure n°1: Structure fonctionnel d'un robot…………………………………………2
Chapitre 6: La Commande.
Figure n°48: Captures simultanées des deux images gauche et droite. ………...…55
Chapitre 1 : Généralités
1- Définition ................................................................................................................... 1
2- Les éléments constitutifs d'un robot .......................................................................... 2
2.1- L'unité d'information .......................................................................................... 2
2.2- L'unité d'opération .............................................................................................. 2
3- Vocabulaire du robot ................................................................................................. 3
3.1- La base ............................................................................................................... 3
3.2- Le système mécanique articulé (SMA ............................................................... 3
3.3- L'actionneur ........................................................................................................ 4
3.4- L'organe terminal ............................................................................................... 4
3.5- Les capteurs ..............................................................................................................4
4- Classification des robots ..................................................................................................4
4.1- Classification fonctionnel .........................................................................................4
4.1.1. Classe (A) manipulateurs à commande manuelle ou télécommande ............... 5
4.1.2. Classe (B) manipulateurs automatiques à cycles préréglés ............................. 5
4.1.3. Classe (C) robots programmables ................................................................... 6
4.1.4. Classe (D) robots intelligents .......................................................................... 6
4.2- Classification géométrique ................................................................................. 7
4.2.1. Porteur cartésien (PPP ..................................................................................... 7
4.2.2. La structure cylindrique (RPP) ou (PRP ......................................................... 8
4.2.3. La structure sphérique ou polaire à axe de rotation orthogonale..................... 8
4.2.4. La structure SCARA (Selective Compliance Arm for Robotic Assembly) .... 9
4.2.5. La structure 3R (anthropomorphe ................................................................... 9
Chapitre 2 : Etude du robot
1- Définition .................................................................................................................. 42
2- Stéréovision .............................................................................................................. 42
2.1- Capteur stéréoscopique actif ............................................................................. 43
2.2- Capteur stéréoscopique passif ........................................................................... 43
2.3 - Modèle de caméra ............................................................................................ 44
2.3.1- Modèle intrinsèque de la caméra.................................................................... 45
2.3.2- Modèle extrinsèque de la caméra ................................................................... 46
2.3.3- Les distorsions ................................................................................................ 47
2.4- Calibration du capteur stéréoscopique .............................................................. 47
2.5- Géométrie épipolaire et rectification ................................................................. 48
2.6- La mise en correspondance stéréo dense .......................................................... 49
2.6.1- Block matching (BM ...................................................................................... 50
2.6.2- Semi global block matching (SGBM....................................................................51
2.7- Triangulation ..................................................................................................... 52
Chapitre 6: La Commande.
Annexes ...................................................................................................................................... 66
Bibliographie .............................................................................................................................. 67
Résumé:
Ce projet porte sur la conception d'une commande gestuelle assistée par la vision, des
servomoteurs qui contrôlent les différentes articulations d'un bras manipulateur à 4 DDL
(degré de liberté).
Introduction générale
Introduction:
Le mot robot fut utilisé pour la première fois en 1920, dans la pièce théâtrale de
science fiction RUR (Rossum's universal robot) de KAREL CAPEK. Inventé par son frère
JOSEF, le mot robot a été dérivé du mot tchèque « robota », qui signifie "travail-corvée".
Le robot moderne, qui est un dispositif mécatronique, n'est en faite que le fruit d'une
évolution exponentielle dans les domaines de la mécanique, l'électronique et l'informatique.
Cette évolution à ouvert un nouvel horizon à la fabrication de robot, en les rendant plus fiable,
plus précis, et surtout avec des tailles miniaturisées facilitant leur exploitation dans différents
domaines qui révolutionne la vie quotidienne de l'homme.
Pour des systèmes autonomes, être au courant de l'environnement qui l'entoure est très
important pour prendre des décisions. Pour cela, avoir accès à des images de son
environnement est cruciale pour extraire des donnés nécessaire sur ce dernier.
La carte de profondeur joue un grand rôle pour déterminer l'environnement qui entoure
les systèmes, puisque elle fournit des informations tel que la distance de l'objet du système.
Pour accéder à ces informations un seul moyen existe, c'est la stéréovision.
Difficultés:
-le nombre de degré de liberté qui cause des difficultés pour avoir un bon modèle du
bras manipulateur.
Chapitre 1 : Généralités.
Introduction :
1- Définition :
Pour l'oncle Sam (USA), la RIA (Robot Institute of America) a une définition plus
spécifique: "Un manipulateur reprogrammable multi fonctionnel conçu pour déplacer des
matériaux, des pièces, des outils ou tout autre dispositif spécialisé au moyen d’une série de
mouvements programmés et d’accomplir une variété d’autres tâches"[1].
1
Chapitre 1 : Généralités.
D'une vue globale, on distingue deux grandes unités complémentaires dans un robot,
l'unité d'information et l'unité d'opération. Ces dernières servent à assurer le bon
fonctionnement du robot dans son environnement.
Cette unité a pour but de recevoir les informations sur l'environnement du robot et la
tâche à accomplir, afin de concevoir une commande adéquate des différents actionneurs du
robot, en vue de réaliser cette tâche.
Cette unité constitue la partie physique du robot, elle sert à mettre en œuvre la
commande envoyée par l'unité d'information.
2
Chapitre 1 : Généralités.
3- Vocabulaire du robot:
3.1- La base:
Pour la quasi totalité des robots manipulateurs, la base est fixée sur le milieu de
travail.
3
Chapitre 1 : Généralités.
3.3- L'actionneur:
On le qualifie par tout dispositif destiné à manipuler des objets ou a les transformer
(dispositifs de serrage, dispositifs magnétiques, torche de soudage, pistolet de peinture…etc.).
En d'autres termes, il s'agit d'une interface permettant au robot d'interagir avec son
environnement. L'organe terminal peut être équipé de plusieurs dispositifs ayant des
fonctionnalités différentes.
Ce sont les organes de perception du robot, ils servent d'intermédiaire entre le robot et
sont environnement. En envoyant des informations sur l'état interne du robot, tel que la
position et la vitesse des actionneurs, ou sur l'environnement (présence d'objet, mesure de
distance…etc.).
Le nombre de classe varie d'un pays à un autre (on trouve 4 classes en France et 6 classes
au japon). Selon la AFRI il existe 4 classes distinctes illustrées ci-dessous.
4
Chapitre 1 : Généralités.
Cette classe de robot, se sert d'une commande manuelle ou à distance qui nécessite la
présence de l'homme [1].
5
Chapitre 1 : Généralités.
C'est la première génération de robot industriel. Cette classe de robot reproduis les
mouvements ou le cycle qu'on lui à apprit ou programmer au préalable [1].
6
Chapitre 1 : Généralités.
Les robots sont aussi classés selon leur configuration géométrique, en d'autres termes
l'architecture de leur porteur. Les porteurs peuvent êtres réalisés avec un grand nombre de
combinaison de translation ou de rotation, autrement dit prismatique (P) ou rotatif (R) [1].
Dans cette classe de robot on trouve une succession de trois liaisons prismatique. Cette
structure et relativement peu utilisée, sauf dans quelques applications particulières, robots
pratiques, robots de magasinage, par exemple
7
Chapitre 1 : Généralités.
Cette structure associe une rotation et deux translations. Elle est pratiquement
pas utilisée vu son volume de travail réduit.
Pour des raisons similaires que la classe précédente, cette classe est peut utilisée ou
même quasiment abandonnée..
8
Chapitre 1 : Généralités.
Une des structures les plus utilisées dans le domaine de l'industrie, cette structure
comporte des axes de rotation parallèles à la verticale, avec un ratio très favorable entre le
volume de travail et l'encombrement.
Reproduisant la structure d'un bras humain, cette structure allie force et précision en
offrant un volume de travail plus grand que les classes précédentes.
9
Chapitre 1 : Généralités.
Conclusion:
10
Chapitre 2: Etude du robot
1- Le corps du robot:
Le volume de travail d'un robot, est défini comme l'espace physique formé par un
point de son organe terminale en mouvement suivant toutes les orientations possible. Cette
espace est exprimée en unité volumique où la forme de son enveloppe peut être simple ou
complexe, selon la forme et la géométrie du robot, plus précisément, la géométrie de ses
articulations [1].
11
Chapitre 2: Etude du robot
Ce volume dépend :
• de la géométrie du robot;
3- Charge utile:
La charge utile est définit comme la charge que peut porter le robot sans dégrader la
répétabilité et les performances du robot.
Reste à savoir que la charge utile est nettement inférieure à la charge maximale que
peut porter le robot qui est directement liée aux actionneurs.
12
Chapitre 2: Etude du robot
4- Précision et Répétabilité:
4.1- Précision:
La précision du robot manipulateur est définit par l’écart entre un point désiré
(programmer) et une orientation dans l’espace cartésien (le point atteint) [3].
4.2- Répétabilité:
5- Le système de commande :
L'ordinateur muni d'un logiciel d'interfaçage, reçoit les informations envoyées par les
deux caméras pour synthétiser une loi de commande en temps réel qui sera envoyé à la carte
de commande par un port USB en vu de commander en PWM (pulse width modulation) les
actionneurs du bras manipulateur.
13
Chapitre 2: Etude du robot
6- Caractéristiques techniques:
Alimentation 6V/1.5A DC
électrique pour
chaque actionneur
Camera Webcams CMOS Logitech
1.3
Méga pixel port USB
Matériaux Aluminium
14
Chapitre 2: Etude du robot
Les limites angulaires de chaque articulation sont illustrées dans la figure ci-dessous.
6.2.1. Ordinateur:
15
Chapitre 2: Etude du robot
16
Chapitre 2: Etude du robot
Le plus souvent, les robots sont utilisés pour des taches simples et répétitives. Pour la
classe anthropomorphe, elle est utilisée fréquemment dans le domaine d'industrie pour divers
taches tel que l'assemblage, le soudage et le tri, et cela à cause de ses qualités de précision et
de flexibilité.
Pour notre robot, vu qu'il est commandé à distance (classe A), ce dernier peut être
utilisé dans des environnements hostiles tel que le domaine de la recherche (laboratoires de
chimie nucléaire).
De là, on peut dire que la tâche donnée au robot peut varier selon l'organe effecteur
qu'on lui attribut.
8- Fonctionnement du robot:
Les articulations du robot sont configurées pour avoir une position initiale de la pince,
où chaque servomoteur d'articulation est initialisé à un angle donné comme suit:
ߠଵ =90
ߠଶ =90
ߠଷ =90
ߠସ =90
17
Chapitre 2: Etude du robot
Les caméras vérifie la présence dans sont champ de vision d'un objet de couleur désiré
bien différente de celle de l'arrière plan. Dans notre cas l'objet recherché c une main portant
un gant. Autrement dit les cameras se focalise sur la couleur de l'objet, non sur sa forme.
Une fois que l'objet est présent dans le champ de vision des caméras, la stéréovision
intervient pour extraire les coordonnées (x,y,z) du centre de gravité de la forme détectée.
18
Chapitre 2: Etude du robot
19
Chapitre 3: Actionneur et Capteurs.
Introduction:
Les derniers robots sont parvenus à effleurer le summum d’évolution, en intégrant une
multitude de capteurs, ces robots peuvent imiter presque à la perfection tous les gestes d’un
être humain. Tous ces mouvements sont réalisés à l’aide d’actionneurs. Dans ce chapitre on
va expliciter les actionneurs et capteurs qui composent le robot.
1- Les actionneurs:
Comme un bras humain peut réaliser ses mouvements grâce à ses muscles, les robots
de même, ont besoin d'actionneurs pour convertir les informations qui lui sont fournis via un
éventuel pré-actionneur, en un travail utile.
En d’autres termes, l'actionneur est l'organe qui anime la structure mécanique en lui
fournissant la force physique nécessaire pour exécuter un travail ordonné.
Le choix des actionneurs d'un robot dépend de la tâche à accomplir. Évidemment, pour
pouvoir valider un choix, il faut connaître les performances que nous voulons atteindre.
De manière semblable aux moteurs à courant continu, les servomoteurs disposent d’un
axe de rotation qui est entravé par un système de bridage. Cela ne veut pas dire qu’il ne tourne
pas, mais cela signifie qu’il ne peut pas tourner au delà d’une certaine limite. Les
Servomoteurs RC (radio commandé) sont souvent utilisés dans beaucoup d’applications
industrielles ou de robotique pratique vu leur taille compact [5].
20
Chapitre 3: Actionneur et Capteurs.
Un servomoteur est composé d’un moteur DC, d’une boite de vitesse, d’un capteur de
retour de position (potentiomètre) ainsi qu'une électronique de commande (faisant office de
“cerveau”). Le nom vient en fait du latin "Servus" qui signifie esclave. Le servomoteur peut
être contrôlé par un signal externe à large impulsion de modulation (PWM) [5].
21
Chapitre 3: Actionneur et Capteurs.
Le signal que nous allons devoir générer doit avoir une fréquence de 50 Hz.
Autrement dit, le temps séparant deux fronts montants est de 20 ms.
La position du rotor dépend du signal de contrôle reçu par les servomoteurs RC.
L’angle de rotation maximum du moteur peut changer en fonction du type de servomoteurs, la
plupart des servomoteurs ont une limite de rotation de 180°, les servomoteurs à rotation
constante se font rares.
22
Chapitre 3: Actionneur et Capteurs.
Reste à citer qu'il existe deux types de servomoteur : ceux qui possèdent une
électronique de commande de type analogique, qui sont les plus courants et les moins chers et
ceux qui sont asservis par une électronique de commande numérique, très fiables et très
performants, mais bien plus chers que les analogiques.
Connectique:
Mécanique:
23
Chapitre 3: Actionneur et Capteurs.
Les servomoteurs RC utilisés pour la base et la pince, sont des "Futaba S3003" qui
fournissent un couple moyen, assez pour orienter la base du bras manipulateur et pour arriver
à soulever l'objet à prendre.
24
Chapitre 3: Actionneur et Capteurs.
25
Chapitre 3: Actionneur et Capteurs.
Le servomoteur utilisé pour le coude est un Towerpro MG995. Avec un couple assez
élevé qui vient en aide pour le servomoteur précédent. Ses dimensions sont montrées sur la
figure qui suit:
26
Chapitre 3: Actionneur et Capteurs.
2- Les capteurs:
Afin de réaliser la commande gestuelle, des capteurs de vision sont nécessaire pour
capter les mouvements de la main.
main Pour cela on a opté pour des webcaméras.
Les webcaméras:
Une webcam est une caméra conçue pour être utilisée comme un périphérique
d'ordinateur, cette dernière produit une vidéo qui n'est pas d'une
une haute qualité, mais qui peut
être transmise en direct à travers d'un réseau, typiquement Internet.
Les webcams possèdent un capteur, qui peut être CCD (charge-coupledcoupled device),
device) ou
CMOS (complementarity
complementarity metal-oxide-semiconductor).
metal Certaines webcams sont équipées de
lentilles en verre que l'on retrouve dans les appareils photo. Pour améliorer l'image, les
webcams sont souvent couplées à un logiciel d'interpolation ayant pour but d'afficher une
image détaillée à partir d'une image de faible qualité,
qualité en créant des pixels intermédiaires dont
la couleur est calculée par comparaison avec les pixels adjacents.
27
Chapitre 4: Modélisation de la structure du robot.
Introduction:
La commande d'un robot fait appel aux calcules de certains modèles mathématiques,
tels que :
- les modèles de transformation entre l'espace opérationnel (où est définie l'organe
terminal) et l'espace articulaire (dans lequel est définie la configuration du robot). On
distingue trois classes de modèles :
1- Matrices de transformation:
Une transformation rigide est le résultat d’un mouvement rigide, amenant un solide
d’une situation initiale à une situation finale. En transformant ses coordonnées de leur
position initiale vers leur position finale.
La représentation de la matrice de transformation homogène noté est basée sur les
coordonnés homogènes (représentation d'un point et d'une direction).
Pour une matrice de transformation complète d’un repère ayant subi des
rotations et des translations par rapport à un repère , il est possible d’utiliser une écriture
générale. Cette écriture prend en compte les différents vecteurs (s, n, a) de la matrice de
passage [9].
28
Chapitre 4: Modélisation
odélisation de la structure du robot.
robot
, , , ]=
]=
0 0 0 1
, , ,
Où , et
de la matrice désignent respectivement les vecteurs
cteurs unitaire suivant
Les éléments de la matrice sont appelés cosinus directeurs, car ils représentent les
coordonnées des trois vecteurs de la base exprimés dans .
Fig
Figure n°29: transformation d'un repère.
Les matrices de transformation à rotation pure sont formées par les vecteurs (s, n, a) et
le vecteur étant nulle. Soient Rot(x, θ), Rot(y, θ) et Rot(z, θ) des matrices de rotations
autour des axes X, Y et Z successivement [9].
29
Chapitre 4: Modélisation de la structure du robot.
1 0 0 0
0 cos (!) −sin (!) 0&
Rot(x,θ)=
0 sin (!) cos (!) 0
0 0 0 1
30
Chapitre 4: Modélisation
odélisation de la structure du robot.
robot
1 0 0 3
Trans(a, b, c)= 0 1 0 4
,
0 0 1
0 0 0 1
2- Modélisation géométrique:
31
Chapitre 4: Modélisation de la structure du robot.
Une structure ouverte simple est composée de n+1 corps notés 56 ,…., 57 et de n
articulations. Le corps 56 désigne la base du robot et le corps 57 le corps qui porte l'organe
terminal. L'articulation I connecte le corps 58 au corps 589: :
32
Chapitre 4: Modélisation
odélisation de la structure du robot.
robot
< : Angle entre les axes >89: et >8 correspondant à une rotation autour de ?8
2 : Angle entre les axes ?89: et ?8 correspondant à une rotation autour de >8 ;
La matrice de transformation définissant le repère ;8 dans le repère ;89: est donnée par 4
transformations élémentaires [10]:
33
Chapitre 4: Modélisation de la structure du robot.
BC89:,8 =
,-. (!) −./0 (!) 0 0 1 0 0 3 1 0 0 3 1 0 0 0
./0 (!) ,-. (!) 0 0 0 1 0 0 cos (!) −sin (!)
& 4
, 0 1 0 4
, 0&
0 0 1 0 0 0 1 0 0 1 0 sin (!) cos (!) 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
,!8 −.!8 ,A8 .!8 .A8 38 ,!8
.! ,!8 ,A8 −,!8 .A8 38 .!8
= 8 &
0 .A8 ,A8 @8
0 0 0 1
Pour fixer les repères sur les différentes liaisons articulaires on suit les deux
contraintes fixées par Denavit-Hartenberg [10]:
34
Chapitre 4: Modélisation
odélisation de la structure du robot.
robot
Figure
ure n°34:
n° placement des repères du robot.
Corps/paramètres 2 = <
1 2 =: -90 0
2 !P 0 0 a2
3 !Q 0 0 a3
4 !R 0 0 a4
Tableau n°7
n° : les paramètres géométriques du robot
,!: 0 #..!: 0
.! 0 , :
,! 0&
I6,:= :
0 #1 0 @:
0 0 0 1
35
Chapitre 4: Modélisation de la structure du robot.
,PQR ,!: −.PQR ,!: −.!: ,!: (3Q ,PQ + 3P ,!P + 3R ,PQR )
, .! −.PQR .!: ,!: .!: (3Q ,PQ + 3P ,!P + 3R ,PQR )
I6,R= PQR : &
−.PQR −,PQR 0 @: − 3Q .PQ − 3P .!P − 3R .PQR
0 0 0 1
,!8 =cos(!8 );
.!8 =sin(!8 );
,PQR =cos(!P + !Q + !R );
.PQR =sin(!P + !Q + !R ).
Ayant les coordonnées à atteindre par l'organe terminale, quelles est la configuration
(variables articulaires 2 ) adéquate des différentes liaisons articulaires de la SMA? Voila la
problématique du modèle géométrique inverse. La détermination des différentes variables
36
Chapitre 4: Modélisation de la structure du robot.
articulaires revient à résoudre des équations algébriques non linéaire couplées, cependant, il
n'existe pas une méthode standard pour le résoudre. Contrairement au MGD qui est unique, il
existe plusieurs MGI pour un robot (plusieurs configurations articulaire pour une position
d'organe terminale donnée), ce qui est montré dans la figure ci-dessous pour un bras
manipulateur planaire 2R.
Méthode de Paul : Elle traite séparément chaque cas particulier et convient pour la
plupart des robots industriels [11].
Méthode de Pieper : Elle permet de résoudre le problème pour les robots à six degrés de
liberté possédant trois articulations rotoïdes, d’axes concourants ou trois articulations
prismatiques [11].
37
Chapitre 4: Modélisation
odélisation de la structure du robot.
robot
Pour notre robot qui est un bras manipulateur à 4ddl,, on a opté pour une méthode
géométrique qui est plus simple, et qui consiste à une projection sur les différents plans du
repère fixé sur la base du robot. Pour rendre plus simple le calcule du MGI, on a procédé à un
découplage qui consiste à traiter la première variable articulaire liée à la base seule, et les trois
restantes seules.
Fig
Figure n°36: projection sur le palan (OXY)
38
Chapitre 4: Modélisation
odélisation de la structure du robot.
robot
Fig
Figure n°37: projection sur le plan (OXZ)
Par simple projection sur les axes OX et OZ on obtient les deux équations suivantes:
On pose ∅ 2W U 2^ U 2_
Où ∅ c'est l'angle que fait l'organe terminal avec l'horizontale (l'axe des X) comme
c'est illustré dans la figure ci-dessus.
dessus. Par la suite on aura:
YK aP ,!P U aQ ,PQ U aR ,∅
YD a: U aP .!P U aQ .PQ U aR .∅
]K YK # aR ,∅ aP ,!P U aQ ,PQ a
\
]D Y` # aR .∅ # a: aP .!P U aQ .PQ
39
Chapitre 4: Modélisation de la structure du robot.
cos (a-b) = cos (a) cos (b) + sin (a) sin (b)
]K P U ]D P aP P + aQ P + 2aP aQ ,!Q
,!Q j
cd e f cg e 9he e 9hi e
Phe hi
On tire:
2^ klmn ()
On aura:
.!P ,!P
(he fhi oHi ) cg 9hi pHi cd (he fhi oHi ) cd fhi pHi cg
cd e f cg e cd e f cg e
De là :
2W V W(2W , q2W )
40
Chapitre 4: Modélisation de la structure du robot.
On imposant l'angle ∅ que fait l'organe terminal avec l'axe des X, on pourra facilement
tirer la variable articulaire :
2_ ∅ − 2^ − 2W
Conclusion:
41
Chapitre 5: vision par ordinateur.
Introduction:
"De même qu’un trou n’est défini que par ce qui l’entoure, un robot n’a de sens que
dans un environnement qu’il modifie" (P.Coiffet). Un robot doit posséder des capacités de
perception et de mouvement nécessaires pour qu’il puisse exécuter ses tâches dans son
environnement. L’enjeu de la vision par ordinateur est de permettre à un ordinateur de ”voir”
et de prendre conscience de ce qui l'entoure, en récupérant des informations visuelles par
l'intermédiaire d'un système d'acquisition d'image puis les exploiter.
1- Définition:
Ces informations peuvent être liées à la reconnaissance d'un objet connu (existence
d'une pièce), la reconstruction en trois dimensions d'une scène ou un objet, la position et
l'orientation ou la mesure de toute propriété spatiale d'un objet (la distance entre deux de ses
points distingués ou le diamètre de la section circulaire…etc.).
Dans notre projet, le traitement désiré est d'extraire la position d’un objet en se basant
sur la stéréovision et la segmentation d'image. Pour ce faire, nous avons opté pour une
bibliothèque en C/C++ nommée OpenCV (voir annexe).
2- Stéréovision:
La stéréovision est l'un des sujets clés de la recherche en vision par ordinateur
actuellement. Elle s’est considérablement développée dans le domaine de la robotique où une
reconnaissance spatiale de l’environnement entourant le robot est nécessaire au déplacement.
42
Chapitre 5: vision par ordinateur.
Il existe trois étapes cruciales qui rentrent en jeu pour calculer la distance ou les
coordonnées d'un objet de la caméra:
En combinant une caméra avec une source de lumière, un faisceau laser éclaire une
partie de la scène qui correspond à l’intersection du plan lumineux et de la scène afin
d'extraire les coordonnées tridimensionnelles de points sur la surface d’un objet.
43
Chapitre 5: vision par ordinateur.
44
Chapitre 5: vision par ordinateur.
Dans le cas d’une caméra, les droites de vue sont issues d’un point unique : le centre
optique de la caméra. Le plan image d’une caméra se trouve à la distance (en mm) ࢌࢉ du
centre optiqueࢉ , ࢌࢉ étant la distance focale de l’objectif de la caméra utilisée.
Dans le plan du capteur, les coordonnées sont exprimées en pixel, tandis que dans les
autres systèmes l’unité principale est le millimètre.
Les paramètres principaux du modèle intrinsèque sont la longueur focale " ࢌࢉ " et le
centre de l'image "c".
En vérité, le centre de l'image ne se trouve pas toujours sur l'axe optique, pour cela,
deux nouveaux paramètres ࢉ࢞ ݁ ࢟ࢉ ݐsont introduits pour exprimer un éventuel déplacement du
centre de l'image de l'axe optique [13].
Pour une caméra de qualité moyenne, les pixels ont une forme rectangulaire au lieu de
carré, ce qui nécessite l'introduction de deux focales ࢌ࢞ ݁ ࢟ࢌ ݐqui sont les facteurs
d'agrandissement de l'image. la longueur focale ࢌ࢞ est le produit de la longueur focale
physique ࢌࢉ et la taille du pixel ࢙࢞ sur le plan de l'image, ce qui donne ࢌ࢞ = ࢌࢉ . ࢙࢞ .et de
même pour ࢌ࢟ .
Ces quatre paramètres sont réunis dans une matrice homogène nommée matrice
intrinsèque:
ࢌ࢞ ࢉ࢞
= อ ࢌ࢟ ࢉ࢟ อ
45
Chapitre 5: vision par ordinateur.
Soit le repère du monde, ayant comme origine ࢝ et le repère de la caméra placé sur
le centre optique de la caméra ࢉ comme montré dans la figure suivante:
La relation géométrique qui existe entre ces deux repères permet de définir les
paramètres extrinsèques du modèle, afin de déterminent la position et l'orientation du repère
de la caméra par rapport au repère du monde. La position du point focal ࢉ par rapport à ࢝
est donnée par le vecteur translation T de la forme:
ࢀ࢞
ࢀ
= ܂ቮ ࢟ቮ
ࢀࢠ
L'orientation des axes du repère de la caméra par rapport au repère du monde est
donnée par la matrice de rotation R, cette dernière est obtenue par un simple produit matriciel
de trois matrices de rotation autour des axes X, Y et Z.
46
Chapitre 5: vision par ordinateur.
Ces deux matrices sont regroupées dans une matrice générale nommée matrice
extrinsèque de la caméra qui est la suivante:
En théorie, il est possible de définir une lentille parfaite qui ne cause pas de distorsion,
en pratique par contre, il n'existe pas de lentille parfaites. Il existe deux types de distorsion
essentielle à prendre en compte, les distorsions radiale et tangentielle.
La distorsion radiale est due à la forme imparfaite de la lentille, ce qui cause une
distorsion de la localisation des pixels à la bordure du plan de l'image. Cette distorsion est
exprimée par les trois termes , ࢋ࢚ .
La deuxième distorsion est la distorsion tangentielle, cette dernière est due au défaut
de construction, où la lentille n'est pas fixée d'une manière parallèle exacte au plan de l'image.
Cette distorsion est exprimée par deux paramètres ݁ ݐ .
Ces Cinque paramètres sont regroupés dans un vecteur nommé: vecteur de distorsion
۲ = ተ ተተ
ተ
Le calibrage des caméras est une étape essentielle pour l’extraction d’informations
géométriques (distances, surfaces, volumes) précises à partir d’images stéréoscopiques. La
stéréo-calibration consiste à trouver une relation géométrique entre les deux caméras dans
l'espace, et de faire la correspondance entre les points de la scène observée et les points dans
le plan du capteur.
Le processus standard de calibration consiste à prendre une image d’un objet dont la
structure est parfaitement connue, le plus souvent l'objet à utiliser est un échiquier dont le
47
Chapitre 5: vision par ordinateur.
nombre de lignes et colonnes est connu. La mise en correspondance des cases de l'échiquier et
de leur projection respective dans le plan image permet de déterminées les paramètres de la
caméra cités auparavant. Un simple algorithme de détection de coins peut reconnaître les
intersections noire et blanche des cases de l'échiquier.
La géométrie épipolaire combine deux modèle sténopé, elle est utilisée dans la
stéréovision pour limiter l'espace de recherche afin de trouver les points correspondants dans
les deux images. Un point X dans l'espace 3D est vu dans la vue de gauche que nous
appellerons l'image source, comme une ligne dont les points extrêmes sont le point focal de la
caméra de gauche OL et le point X. Par contre, dans la vue de droite, que nous appellerons
l'image de recherche, il est vu comme une ligne appelée ligne épi-polaire. Ce qui signifie que
pour chaque pixel de l'image source, correspond une ligne épipolaire dans l'image de
recherche [13].
Pour trouver les lignes épipolaires, deux matrice essentielles sont nécessaires, la
matrice E qui est la matrice extrinsèque de la caméra et la matrice F qui est la matrice E
augmenté par les matrices intrinsèque des deux caméras.
48
Chapitre 5: vision par ordinateur.
Une fois ces deux matrices trouvées, on peut procéder à la rectification. Le but de cette
dernière, est de projeter le plan image des deux caméras (d'une manière mathématique) afin
qu'il soit sur le même plan où les lignes épi-polaires soient colinéaires. La figure ci-dessous
montre le processus de la rectification.
Les résultats de ce processus sont huit paramètres, représentés par quatre pour chaque
caméra. En effet, pour chaque caméra on a un vecteur de distorsion, une matrice de rotation et
les matrices rectifié et non rectifié de la caméra. Ainsi, on peut créer une cartographie pour
définir où interpoler les pixels de l'image originale afin de créer une image rectifiée.
Pendant la mise en correspondance, les images rectifiées des deux caméras sont
utilisées pour faire correspondre les points d'une image à l'autre. Pour déterminer la distance
d'un point de la caméra, une disparité doit être trouvée, qui représente le changement de
localisation d'un point dans l'image gauche par rapport à l'image de droite.
- Graph Cut;
- Believe Propagation;
49
Chapitre 5: vision par ordinateur.
- programmation dynamique;
- Block Matching;
Cette méthode est basée sur l'idée d'utiliser la somme des distances absolus des blocks
de pixels (sum of absolute difference SAD) pour trouver les points de correspondance entres
les deux images rectifiées. Les étapes de cet algorithme sont énumérées comme suit:
Dans le bute d’avoir une bonne mise en correspondance, pour chaque pixel de l'image
gauche on cherche la ligne correspondante dans l'image de droit. Pour un pixel de
coordonnées (ݔ , ݕ ) dans l'image de gauche, son correspondant dans l'image de droite doit
être sur la même ligne, sur la même coordonnée ou à gauche de cette dernière. La figure
suivante illustre ce qu'on vient d'expliquer.
50
Chapitre 5: vision par ordinateur.
Cette dernière est une image 2D où chaque pixel a une couleur en niveau de gris qui
représente sa distance par rapport à la caméra. La couleur des pixels proche de la caméra tend
vers le blanc, et celle des pixels loin de la caméra tend vers le noir, tandis que les pixels entre
les deux sont représentés par une échelle de gris.
- Calcule du cout;
- Agrégation du cout;
- Calcule de disparité;
- Le raffinement de disparité.
51
Chapitre 5: vision par ordinateur.
Pour avoir une carte de disparité optimale, l'algorithme d'SGBM qui est implémenté dans
la bibliothèque OpenCV, nous donne la possibilité de travailler avec des paramètres réglables:
- SAD size : c’est la taille des blocs pour le calcul de l'énergie de l'algorithme.
Crête.
2.7- Triangulation:
Apres avoir effectué les trois premières étapes de la stéréo vision (stéréo-calibration,
mise en correspondance stéréo dense), on peut calculer la positon (x,y,z) d’un point P se
trouvant dans l’espace 3D. la triangulation fait usage d'un certain nombre de variables, à
savoir : les centres des rétines des deux caméras (C1, C2), la longueur focale (F) , les plans
images (R1,R2 ), et les deux points (P1, P2) qui sont la projection du point P dans les deux
images, V1 et V2 sont les distances horizontales entre P1 et C1, P2 et C2 respectivement et b
la distance en mm qui sépare C1 de C2 comme le montre la figure ci-dessous.
52
Chapitre 5: vision par ordinateur.
ࢆ= ࢄ= ࢅ=
܊. ۴ ܄ . ܈ ܡ . ܈
۲ ۴ ۴
Où ݕଵ est la position de P1 selon l’axe des Y dans l’image gauche [13].
Conclusion:
Dans ce chapitre on a expliqué le principe de la vision par ordinateur, ainsi que les
différentes étapes nécessaires pour calibrer une paire stéréoscopique. Générer les paramètres
cités auparavant et les combiner avec la robotique, nécessite certaines méthodes qu'on verra
dans le prochain chapitre.
53
Chapitre 6: La commande.
Introduction:
Ce chapitre va énumérer d'une manière explicite toutes les étapes utilisées pendant la
pratique, en passant par le programme qu'on a utilisé pour la stéréovision et celui utilisé pour
la commande des différents servomoteurs du robot et l'interfaçage entre les deux.
1- Robot/système de commande:
2- Logiciel:
Le logiciel utilisé dans ce projet est composé de deux parties essentielles, la partie
vision et la partie commande. Dans ce qui suit on va expliquer d'une manière détaillée les
différents sous programmes appropriés à ces deux parties essentielles.
54
Chapitre 6: La commande.
La première tâche à faire est d'ajuster manuellement les deux caméras afin qu'elles
aient les axes optiques parallèles. Pour ce qui en suit, les sous programmes sont implémentés
et expliqués dans l'ordre cité dans le chapitre précédent.
Le premier sous programme a pour but la capture de paires d'image gauches et droite
simultanément. Les deux caméras ont la même scène à capturer mais de perspectives
différentes. La mire utilisée pour la calibration est un damier de 10x7 carreaux. Les caméras
prennent plusieurs captures en niveau de gris du damier avec différents positions (rotation et
translation).
55
Chapitre 6: La commande.
Ce programme sert à calibrer et rectifier les deux caméras en utilisant les paires de
captures d'image prises par le premier sous programme. Le résultat de ce programme est un
fichier XML contenant les différentes matrices citées dans le chapitre précédant. Un extrait du
fichier XML est illustré ci-dessous:
Le programme lit d’abord la taille du damier et les paires d'images gauches et droites,
ensuite il détecte les coins du damier en se basant sur les sous-pixels des coins détectés, après
il définit les points principaux qui constituent les coins où tous les échiquiers peuvent être
trouvés. Les coins du damier trouvé sont juste approximatifs, pour cela on utilise les sous
pixels des coins détectés pour trouver la localisation exacte des coins. Les fonctions utilisées
pour ce fait sont:
56
Chapitre 6: La commande.
Fig
Figure n°50: Détection de coins du damier.
57
Chapitre 6: La commande.
Le programme calcule une carte de rectification en temps réel pour les deux images
individuellement en utilisant la fonction d’OpenCV nommée cvStereoRectify()
Rectify(). La fonction
cvRemap() est utilisée pour ajuster les pixels de l'image originale afin de produire l'image
rectifiée. Le résultat est montré par la figure ci-dessous,
ci dessous, où nous pouvons voir que les deux
images originales rectifiées.
Figure
ure n°51:
n° : Images avant et après rectification.
rectification
58
Chapitre 6: La commande.
Afin de faciliter le réglage et de ne pas changer le code à chaque fois, on a crée une
fenêtre où sont regroupés tout les paramètres à l'aide de la fonction cvCreateTrackbar().
Cette partie du programme sert à détecter l'objet qui est la main dans notre cas. Pour
commencer, le programme prend des captures d'images en mode BGR (blue green red) et les
convertir en mode HSV (hue saturation value) à l'aide de la fonction cvtColor(), après ca, on
procède à une segmentation en jouant sur les paramètre regroupés dans une fenêtre crée pour
ce fait.
59
Chapitre 6: La commande.
2.1.5- Triangulation:
ation:
Apres avoir détecter l'objet dans les deux caméras, les coordonnées (x, y, z) de sont
centre de gravité sont calculées par la triangulation ensuit transmises en temps réel à la carte
de commande Arduino.
Cette partie a pour but de lier la partie vision et la partie commande, cette liaison se
figure par l'envoi de la position calculée de l'objet vers la carte de commande Arduino. Pour
ce faire on a utilisé la bibliothèque libSerial qui nous permet d'accéder aux différents
paramètres des ports séries telle que la vitesse de transmission, la taille des caractères et le
contrôle du flux sortant et entrant. Reste à mentionner que la care de commande Arduino a un
logiciel d'interfaçage, donc c'est ce dernier qui reçoit la position de l'objet afin de l'envoyer à
la carte.
#include SerialStream.h
#include iostream
60
Chapitre 6: La commande.
SerialStream ardu;
ardu.SetBaudRate(SerialStreamBuf::BAUD_115200);
Cette partie comme son nom l'indique, sert à commander le bras manipulateur en
recevant les coordonnées cartésiennes x, y, z de la main, et les convertir en coordonnées
angulaires ߠ . L'organe essentiel de cette partie est la carte de commande Arduino muni de
son logiciel d'interfaçage. Pour passer des coordonnées cartésiennes en coordonnées
articulaires, on a implémenté le modèle géométrique inverse calculée précédemment dans le
chapitre trois.
Pour utiliser les servomoteurs avec Arduino, il va nous falloir générer un signal PWM.
Pour ce faire, Arduino est équipé d'une classe nommée servo dédiée à ce fait. Pour travailler
avec cette classe il faut d'abord inclure la bibliothèque #include <Servo.h> au début du code,
ensuite on pourra déclarer les servomoteurs on leurs attribuant un nom et un pin sur lequel ils
sont branché en utilisant la syntaxe suivante:
Servo monServo;
monServo.attach(N° de pin);
61
Chapitre 6: La commande.
Reste à mentionner que les servomoteurs ne renvoient pas la position atteinte à la carte
de commande, d'une manière plus explicite, si on fait bouger l'axe du servomoteur
manuellement, on ne peut pas lire l'angle de sortie.
62
Chapitre 6: La commande.
3- Organigramme:
L'organigramme suivant résume tout notre projet, en montrant les étapes effectuées
durant le travail en passant de la stéréovision jusqu'à la simulation de mouvement par le robot.
63
Chapitre 6: La commande.
Début
Robot en état initiale
Cameras allumées
Calibration
et
rectification
Mise en correspondance
Non
Main
Oui
Triangulation
Simulation de mouvement
Fin
64
Conclusion Générale
Conclusion générale:
Ce mémoire est le résultat d'un travail qui porte sur la réalisation d'une commande
gestuelle assistée par la vision d'un bras manipulateur à structure ouverte à 4 DDL.
Dans le premier chapitre, nous avons présenté des généralités sur la robotique pour
rendre plus facile la lecture du deuxième chapitre, qui porte sur une étude détaillée du robot
utilisé dans ce projet. Les caractéristique des différents actionneurs et capteurs utilisés dans ce
projet ont fait l'objet du troisième chapitre. Dans le quatrième chapitre on a présentée la
modélisation robotique où on a élaboré les modèles géométriques directe et inverse du robot
en utilisant les conventions de Denavit - Hartenberg. Pour réaliser la commande du robot, on a
expliqué les points majeurs de la vision par ordinateur dans le chapitre Cinque avant de
l'intégrer dans notre système dans le chapitre six.
65
Annexes.
Annexes n°1 :
1- Arduino:
C'est une plateforme basée sur une interface entrée/sortie simple, Chaque module
Arduino possède au moins un régulateur linéaire 5 V et un oscillateur à quartz 16 MHz. Le
microcontrôleur est préprogrammé avec un bootloader de façon à ce qu'un programmateur
externe ne soit pas nécessaire [5].
1.1.Vue d'ensemble:
Les différentes versions des Arduino fonctionnent sous le même principe général:
-A: ce sont les pattes dites digitales (0,1) ou "tout ou rien", elles offrent en sortie 5V et
acceptent en entrée 5V.
66
Annexes.
1.2. Programmation:
Le logiciel de programmation des modules Arduino est une application Java, servant
d'éditeur de code et de compilateur, et qui peut transférer le programme au travers de la
liaison série (RS-232, bluetooth ou USB selon le module). Il est également possible de se
passer de l'interface Arduino, et de compiler et uploader les programmes via l'interface en
ligne de commande [5].
Avec Arduino, nous devons utiliser un code minimal lorsqu'on crée un programme, Ce
code permet de diviser le programme en deux parties.
Dans le code se trouvent deux fonctions, les fonctions sont en fait des portions de
code.
67
Annexes.
• Setup():
On appelle cette fonction "fonction d'initialisation", elle est appelée une seule fois
lorsque le programme commence. Elle a pour fonction d’initialiser les variables, indiquer les
modes des broches, déclarer les bibliothèques.
• Loop():
C'est dans cette fonction qu'on écrit le contenu du programme, cette fonction est
appelé en permanence, elle se répète en boucle infinie.
• Bibliothèque sevo:
Cette bibliothèque permet à une carte Arduino de contrôler des servomoteurs RC, elle
supporte jusqu'à 48 servomoteurs. Ses principales fonctions sont:
• attach()
• write()
• writeMicroseconds()
• read()
• attached()
• detach()
• Bibliothèque LiquidCrystal:
Cette bibliothèque permet à une carte Arduino de contrôler un écran LCD (liquid
crystal display). Ses principales fonctions sont:
• lcd.begin()
• lcd.write()
68
Annexes.
Annexes n°2 :
La carte Arduino Mega 2560 est une carte à microcontrôleur basée sur un
ATmega2560, Cette carte dispose de :
• un quartz 16Mhz;
69
Annexes.
Annexe n°3 :
3- Communication:
La carte Arduino Mega2560 dispose de toute une série de facilités pour communiquer
avec un ordinateur, une autre carte Arduino, ou avec d'autres microcontrôleurs.
Le logiciel Arduino inclut une fenêtre terminal série sur l'ordinateur qui permet
d'envoyer des textes simples vers la carte Arduino. Les LED RX et TX sur la carte, clignote
lorsque les données sont transmises via le circuit intégré ATmega8U2 utilisé en convertisseur
USB-vers-série.
70
Annexes.
Annexe n°4 :
4- OpenCV:
Afin de mieux présenter son étendue et ce qu'elle permet de faire, on va voir les
principaux modules accessibles au travers de son API C:
Cette bibliothèque permet de manipuler les structures de base, réaliser des opérations
sur des matrices, dessiner sur des images, sauvegarder et charger des données dans des
fichiers XML…
-features2d: descripteur.
71
Annexes.
Ces fonctions servent à segmenter et suivre les objets en mouvement dans une vidéo.
72
Bibliographie
Références bibliographiques:
[1] http://docslide.fr/documents/introduction-a-la-robotique-55b344a0ae1fc.html.
[3] http://icube-avr.unistra.fr/fr/img_auth.php/a/a4/Cours_rob_intro.pdf
[4] http://www.mon-club-
elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.MaterielMega2560. July 01,
2013
[5]http://www.centralmedia.fr/download/Premiers_pas_en_informatique_embarquee.p
df. 01 juin 2014.
[6] http://store.easyrobotics.fr/servomoteur/12-servomoteur-futaba-s3003.html
[7]http://www.rcteam.fr/mega-servos/231-futaba-mega-servo-s3306-24kg-016s-nylon-
4513886012327.html
[8] http://www.mr-rcworld.co.uk/index.php?productID=1027
[10] https://www.ensta-bretagne.fr/jaulin/mastersds_cours_robot_boimond.pdf
[11] http://www.memoireonline.com/07/08/1351/m_programmation-robots-
industriels-application-robot-manipulateur-algerie7.html. 2007.
[13] Gary Bradski and Adrian Kaehler “Learning OpenCV” O’REILLY. 2008.
[15] https://openclassrooms.com/courses/introduction-a-la-vision-par-
ordinateur/avant-de-commencer-8. 5 décembre 2013.
67