Академический Документы
Профессиональный Документы
Культура Документы
MASTER
COMMANDE
ELECTRIQUE
Faculté des Sciences et de la Technologie
Département de Génie Electrique
Filière : Electrotechnique
Smaida elyas
Zekaik Bachir
Thème :
Etuded’une
Etude d’uneNavigation
Navigation Visuelle
Visuelle pour
pour
un un Robot
Robot Mobile Mobile Autonome
Autonome
Nous remercions aussi les membres du jury qui m’ont fait l’honneur de
participer à l’évaluation de ce travail.
Nous ne saurai oublier d’exprimons notre gratitude à notre famille et mes amis,
pour leurs encouragements et leur soutien moral.
Dédicaces
Je dédie ce modeste travail :
(Commande électrique)
Bachir
Dédicaces
Je dédie ce modeste travail :
ELYAS
Table des matières
I.1. Introduction………………………………………………………………………………….. 04
I.2. Généralité sur le robot mobile……………………………………………………………….. 04
I .2.1. Définition d’un robot et le robot mobile……………………………………………. 04
I.2.1.1. Définition d’un robot…………………………………………………........... 04
I.2.1.2. Définition d’un robot mobile………………………………………………. 05
I.2.2. Aperçu historique…………………………………………………………………… 05
I.3. Types des robots………………………………………………………………………........... 06
I.3.1. Les robots fixes……………………………………………………………………… 06
I.3.2. Les robots mobiles………………………………………………………………….. 06
I.4. Type des robots mobiles ……………………………………………………………………. 07
I.5. Classification des robots mobiles……………………………………………………………. 07
I.6. L’architecture des robots mobiles…………………………………………………………… 08
I.7. Application d’un robot mobile………………………………………………………………. 08
I.8. Les avantages dans l'utilisation des robots mobiles…………………………………………. 09
I.9. Le système de perception……………………………………………………………………. 09
I.10. Les capteurs sont utilisés dans le robot mobile…………………………………………….. 10
I.10.1. Les capteurs proprioceptifs…………………………………………………........... 10
I.10.2. Les capteurs extéroceptifs…………………………………………………………. 11
I.11. Les caméras………………………………………………………………………………… 12
I.12. Notion sur la navigation des robots mobiles……………………………………………….. 13
I.12.1. Définition………………………………………………………………………….. 13
I.12.2. Catégories de navigation……………………………………………………........... 13
I.13. Navigation visuelle………………………………………………………………................ 13
I.13.1. Navigation visuelle en milieu intérieur……………………………………………. 15
I.13.1.1. Utilisation de cartes connues de l'environnement…………………………. 15
I.13.1.2. Construction incrémentale d'une carte au fur et à mesuré des
déplacements…………………………………………………………………............ 15
I.13.1.3. Navigation dépourvue de carte…………………………………………….. 16
I.13.2. Navigation visuelle en milieu extérieur……………………………………………. 17
I.13.2.1. Environnement d'extérieur structuré ……………………………………… 17
I.13.2.2. Environnement d'extérieur non structuré………………………………….. 17
I.14. Conclusion ………………………………………………………………………………… 18
Table des matières
II.1. Introduction………………………………………………………………………………… 20
II.2. Généralité sur les cartes Arduino……………………………………………………........... 20
II.2.1. Historique du projet Arduino ……………………………………………………… 20
II.2.2. Définition et le but de la carte Arduino………………………………………..…… 21
II.2.3. Les applications possibles………………………………………………………….. 22
II.2.4. Les types des cartes Arduino………………………………………………………. 23
II.3. Présentation d’une carte Arduino-UNO …………………………………………………… 24
II.3.1. Définition ………………………………………………………………………….. 24
II.3.2. Schéma simplifié de la carte Arduino-UNO……………………............................. 24
II.3.3. Synthèse des caractéristiques d'un Arduino-UNO…………………………………. 25
II.4. Les tests réalisés …………………………………………………………………………… 25
1. Commande simple dans LED…………………………………………………... 26
2. Commander LED par Bouton…………………………………………………... 26
3. Commander ensemble de LED séquentielle……………………………............ 27
4. Commander la lampe par une cellule photoélectrique et relais………………… 28
5. Mesure la distance à l'aide d'un capteur Ultrasons HC-SR04……..................... 30
6. Applique le transistor comme "switch" dans le moteur………………………... 32
7. Applique le transistor comme " amplifier " de moteur………………................. 34
8. Commande manuel de deux moteurs à l'aide de la carte L298N……………… 35
9. Commander la vitesse d'un moteur (DC) par résistance variable et le sens de
rotation par bouton………………………………............................................... 37
10. Robot mobile programmé……………………………………............................. 38
11. Robot mobile commander la vitesse par deux potentiomètres………................. 39
12. Robot mobile contrôlé totalement par un joystick……………………………... 40
13. Robot mobile contrôler par téléphone portable "Bluetooth"…………………… 41
14. Conception un robot mobile en utilisant le circuit intégré "L293D"…………… 43
15. Commander servomoteur par Moteur drive shield board L293D pour Arduino-
UNO……………………………………………………………………………. 45
16. Robot mobile autonome pour éviter les obstacles………………........................ 47
II.5. Conclusion …………………………………………………………………………………. 49
III.1. Introduction……………………………………………………………………………….. 51
III.2. Présentation du projet……………………………………................................................. 51
III.3. Outils de logiciel utilisés……………………………………………….............................. 51
III.3.1. Le logiciel d’un la carte Arduino-UNO………………………………….............. 51
III.3.1.1. Aperçu général ……………………………………………………........... 51
III.3.1.2. Structure de programme………………………………………………...... 52
III.3.2. Le logiciel Python………………………………………………………............... 53
III.3.2.1. NumPy……………………………………………………………………. 54
III.3.2.2. SciPy………………………………………………………………........... 54
Table des matières
III.3.2.3. PySerial……………………………………………………………........... 54
III.3.2.4. Pywin32………………………………………………………………….. 54
III.3.2.5. Open CV………………………………………………………................. 54
III.3.3. Les tests réalisés………………………………………………………………….. 55
1. Prend les informations du programme de la carte Arduino, puis affiche-les à
l’écran en programme Python………………………………………………….. 55
2. Commande d’un LED intègre de la carte Arduino par le programme Python…. 57
III.4. Application du flux optique pour la navigation visuelle………………………………….. 61
III.4.1. Principe de Fonctionnement………………………………………………........... 61
III.4.2. Résultats d’application…………………………………………………………… 63
III.5. Le code d’un logiciel Arduino qu’appliquons à notre robot mobile………………........... 66
III.6. Construction notre robot mobile que naviguer visuellement………………………........... 68
III.6.1. Schéma pratique d’un notre robot mobile…………………………………........... 68
III.6.2. Application d’un notre robot mobile en réalité…………………………………... 68
III.7. Résultats de Navigation…………………………………………………………………… 71
III.8. Conclusion........................................................................................................................... 73
Conclusion Générale……………………………………………………………………………... 74
Fig. II.1 :
Les types des cartes Arduino……………………………………………..... 23
Fig. II.2 Composants de l’Arduino-UNO…………………………………………....
: 24
Fig. II.3 :
Schéma simplifié de la carte Arduino-UNO…………………….................. 24
Fig. II.4 Schéma pratique d’une commande simple dans LED…………….………..
: 26
Fig. II.5 Application d’une commande simple dans LED en réalité…………….......
: 26
Fig. II.6 :
Mini bouton poussoir……………………………………………………..... 26
Fig. II.7 Schéma pratique d’une commander LED par Bouton………………….......
: 26
Fig. II.8 Application d’une commander LED par Bouton en réalité…………….......
: 27
Fig. II.9 Schéma pratique d’une commander ensemble de LED séquentielle…….....
: 27
Fig. II.10 Application d’une commander ensemble de LED séquentielles en
:
réalité……………………………………………………………………..... 27
Fig. II.11 : placer un piezo à la fin de l'éclairage successif…………………………..... 28
Fig. II.12 : Relais et Cellule photoélectrique………………………………………….. 28
Fig. II.13 : Schéma pratique d’une commander la lampe par une cellule
photoélectrique et relais…………………………………………………..... 28
Fig. II.14 : Application d’une commander LED par une cellule photoélectrique et
relais en réalité…………………………………………………………....... 29
Fig. II.15 : HDX "commutateur d'inclinaison"……………………………………….... 29
Fig. II.16 : Application d’une commande LED par une HDX "commutateur
d'inclinaison" en réalité…………………………………………………..... 29
Fig. II.17 : capteur Ultrasons HC-SR04 et principe de fonctionnement……………..... 30
Fig. II.18 : Schéma pratique d’une mesure la distance à l'aide d'un capteur Ultrasons
HC-SR04……………………………………………………....................... 30
Fig. II.19 : Application d’une mesure la distance à l'aide d'un capteur Ultrasons HC-
Liste des figures
SR04 en réalité…………………………………………………………….. 30
Fig. II.20 : Schéma pratique d’une déterminer la distance par Ultrasons et piezo…….. 31
Fig. II.21 : Application d’une déterminer la distance par Ultrasons et piezo en
réalité……………………………………………………………………..... 31
Fig. II.22 : Lien le test réalisé dans le bâton d'un aveugle…………………………..... 31
Fig. II.23 : Transistor NPN…………………………………………………………….. 32
Fig. II.24 : Diode………………………………………………………………………. 32
Fig. II.25 : principe de fonctionnement d’un moteur à courant continu……………..... 33
Fig. II.26 : Exemple de "Moteur réducteur "………………………………………....... 33
Fig. II.27 : Schéma pratique d’une application le transistor comme "switch" de
moteur…………………………………………………………………….... 33
Fig. II.28 : Application d’une la application le transistor comme "switch" de moteur
en réalité………………………………………………………………….... 33
Fig. II.29 : Schéma pratique d’une application le transistor comme " amplifier " de
moteur…………………………………………………………………….... 34
Fig. II.30 : Application d’une la application le transistor comme " amplifier " de
moteur en réalité………………………………………………………….... 34
Fig. II.31 : pont en H…………………………………………………………………... 35
Fig. II.32 : Diagramme du L298……………………………………………………….. 36
Fig. II.33 : Source d'alimentation cc…………………………………………………… 36
Fig. II.34 : Schéma pratique d’une commande manuellement par L298N…………..... 36
Fig. II.35 : Application d’une commande manuellement par L298N en réalité……..... 37
Fig. II.36 : Résistance variable "potentiomètre" et Mini bouton poussoir …………..... 37
Fig. II.37 : Schéma pratique d’une commande la vitesse d'un moteur (DC) par
résistance variable et le sens de rotation par bouton……………………..... 38
Fig. II.38 : Application d’une commande la vitesse d'un moteur (DC) par résistance
variable et le sens de rotation par bouton en réalité……………………….. 38
Fig. II.39 : Schéma pratique d’un robot mobile programmé………………………....... 39
Fig. II.40 : Application d’un robot mobile programmé en réalité…………………....... 39
Fig. II.41 : Schéma pratique d’un robot mobile commandé la vitesse par deux
potentiomètres…………………………………………………………....... 39
Fig. II.42 : Application d’un robot mobile commander la vitesse par deux
potentiomètres en réalité………………………………………………....... 40
Fig. II.43 : Un joystick………………………………………………………………..... 40
Fig. II.44 : Schéma pratique d’un robot mobile contrôlé totalement par un joystick….. 41
Fig. II.45 : Application d’un robot mobile contrôlé totalement par un joystick en
réalité……………………………………………………………………..... 41
Fig. II.46 : Module HC-05 Bluetooth ………………………………………………..... 41
Fig. II.47 : Interfaces d’un la application utiliser……………………………………... 42
Fig. II.48 : Schéma pratique d’un robot mobile contrôlé par téléphone portable
"Bluetooth"……………………………………………………………….... 42
Fig. II.49 : Application d’un robot mobile contrôler par téléphone portable
"Bluetooth" en réalité…………………………………………………….... 42
Fig. II.50 : L293D…………………………………………………………………….... 43
Fig. II.51 : IC Prise Connecteur DE Montage………………………………………..... 43
Fig. II.52 : Plaque d’essai…………………………………………………………….... 44
Fig. II.53 : Schéma pratique d’une conception un robot mobile en utilisant le circuit
intégré "L293D"………………………………………………………….... 44
Fig. II.54 : Application d’une conception un robot mobile en utilisant le circuit
intégré "L293D" en réalité ……………………………………………........ 44
Liste des figures
Acronymes
Symboles
V Volt
mA Mili Ampère
KB Kilo bit
MHz Mégahertz
Cm Centimètre
A Ampère
Introduction Générale
Introduction Générale
La robotique mobile est un domaine très intéressant. La recherche dans cette discipline
consiste à élaborer des systèmes mécaniques et électroniques fonctionnent d'une façon
automatique, pour accomplir des taches aidant en remplacer les êtres humains, dansleur vie.
Ces machines sont caractérisées par une capacité à être programmées pour réaliser des tâches
très diverses. Ses capacités en matière de manipulation d'objets lui ont permis de s'intégrer
dans des lignes de production industrielle, où elle se substitue à l'homme dans les tâches
difficiles, répétitives ou à risques pour l'être humain. La robotique mobile à pour objectif de
concevoir des systèmes intelligents et automatique.
Les caméras sont aujourd'hui des capteurs bon marché et peu gourmandes en énergie.
Elles fournissent de plus une information très riche sur l'environnement du robot. Le fait que
la vision soit également très utilisée par les animaux et les humains pour se localiser et
naviguer dans leur environnement tend à montrer qu'il s'agit d'une capacité sous-exploitée en
robotique à l'heure actuelle. Bien sûr, les données visuelles sont complexes à traiter pour en
extraire une information utilisable par un système de navigation.
L’environnement dans lequel le robot se déplace a une grande influence sur l’approche
de navigation. Donc, nous avons une première classification entre la navigation en milieu
intérieur et la navigation en milieu extérieur [1]. Les techniques utilisées dans la navigation
intérieure ne sont pas les mêmes utilisées dans la navigation extérieure.
Le terme" le flux optique " est également utilisé par les roboticiens [2], englobant les
techniques connexes de traitement de l'image et le contrôle de la navigation, y compris la
détection de mouvement, la segmentation de l'objet, la durée de l'information de contact,
centre de calculs d'extension, la luminance, l'encodage, compensation de mouvement et de
disparité stéréo mesure [3]. Et aussi l’utilisation la plus importante et la plupart utilisent de la
technique du flux optique est pour la navigation visuelle
Page 1
Introduction Générale
Dans ce travail, on va étudier une application basée sur la technique du flux optique
pour la détection des obstacles en vue de son application à une navigation autonome d’un
robot mobile (navigation visuelle).
Pour ce faire, notre mémoire est structuré en trois chapitres comme suit :
Dans le premier chapitre, on va donner une notion générale sur les robots mobile et
les capteurs d’un robot mobile utilisé, à partir de tous les capteurs, on va besoin que
d’un seul, à savoir les systèmes de vision pour capteur de flux optique avant
d'expliquer la navigation visuelle et les méthodes dont ça robot que naviguer
visuellement.
Le deuxième chapitre sera consacré pour nous présentons une généralité sur le
composant (Arduino) plus important d'un notre robot mobile, et on va mené de
nombreuses test, pour comprendre le mécanisme de fonctionnement d’un Arduino,
avec une petite définition de quelques composants utilisés dans les tests, et présenter
schéma pour pratique (Schéma pratique d’un test), qui appartiennent à site web
schématique ou (paint) d'un PC. Et bien sûr, nous vous fournirons un résultat de
l’application sera présenté en réalité (Application de test en réalité).
Le troisième chapitre on va exposer les logiciels de programmation et les
bibliothèques et également expliquer pourquoi ils sont utilisés, pour développement
l'algorithme de navigation visuelle par la technique du flux optique, avant construire
notre robot mobile que naviguer visuellement.
Page 2
Chapitre I
I.1. Introduction
Chez l’humain, la vision est le sens qui transmet le plus d’informations au cerveau. Elle
nous fournit une grande quantité de données en provenance de l’environnement et nous
permet d’entreprendre une interaction intelligente avec les environnements dynamiques
(évitement d’obstacles mobiles, rendez-vous avec autres agents mobiles et vision de
l’environnement. . .). De ce fait, il n’est pas surprenant de trouver une grande quantité de
recherches sur le développement de capteurs qui essaient d'imiter le système visuel humain.
En robotique, au cours des deux dernières décennies, les innovations technologiques
concernant la fabrication de caméras et l’évolution des ordinateurs ont permis d'intégrer des
systèmes complexes de vision dans les systèmes embarqués, que ce soit sur des robots
mobiles pour la navigation autonome ou sur des véhicules pour l’aide à la conduite.
La navigation visuelle revêt une importance toute particulière car elle permet de fournir
à la machine les capacités nécessaires pour réagir avec son environnement et elle fournit les
représentations à partir desquelles le robot prend des décisions.
Donc, dans ce chapitre, nous allons donner une notion générale sur les robots mobile et
les systèmes de vision d’un robot mobile avant d'expliquer la navigation visuelle et donner les
méthodes dont ça robot que naviguer visuellement.
I.2. Généralité sur le robot mobile
Dans cette partie, on va expliquer d’une manière simple les robots. Nous allons
présenter la définition, aperçu historique, les types, classification et ses architectures…....etc.
I.2.1. Définition d’un robot et le robot mobile :
I.2.1.1. Définition d’un robot :
Il existe plusieurs définitions d’un robot : Un robot est une machine équipée de
capacités de perception, de décision et d’action qui lui permettent d’agir de manière autonome
dans son environnement en fonction de la perception qu’il en a(Voir la figure I.1)[4].
Figure I.1 : Schéma des interactions d’un robot avec son environnement
Page 4
Chapitre I Méthode de navigation visuelle
Figure I.2 : Le premier robot industriel développe pour les besoins du nucléaire
(Unimate)
Page 5
Chapitre I Méthode de navigation visuelle
Page 6
Chapitre I Méthode de navigation visuelle
Page 7
Chapitre I Méthode de navigation visuelle
Page 8
Chapitre I Méthode de navigation visuelle
Page 9
Chapitre I Méthode de navigation visuelle
Les capteurs de déplacement, qui comprennent les odomètres, les accéléromètres, les
radars Doppler, les mesureurs optiques. Cette catégorie permet de mesurer des
déplacements élémentaires, des variations de vitesse ou d’accélération sur des trajectoires
rectilignes ou curvilignes.
les capteurs d’attitude, qui mesurent deux types de données : les angles de cap et les
angles de roulis et de tangage. Ils sont principalement constitués par les gyroscopes et les
gyromètres, les capteurs inertiels composites, les inclinomètres, les magnétomètres. Ces
capteurs sont en majorité de type inertiel.
Page 10
Chapitre I Méthode de navigation visuelle
Pour d’expliquer les systèmes de vision nous avons besoin d’un capteur de flux optique
par exemple les caméras. Après cela nous saurons la navigation, puis on définit la
catégorie, ensuite nous allons donner un aperçu général sur les milieux et les méthodes
de navigation visuelle dons la deuxième partie.
Page 11
Chapitre I Méthode de navigation visuelle
Page 12
Chapitre I Méthode de navigation visuelle
Page 13
Chapitre I Méthode de navigation visuelle
la planification d’une trajectoire requise par une tâche que doit exécuter le robot
mobile, Typiquement dans le contexte «aller vers la cible tout en évitant les obstacles» par
exemple, cette trajectoire est générée à partir du modèle de l’environnement, acquis au
préalable par le robot mobile, ou introduit par un opérateur dans la base de connaissance du
système.
enfin, l’exécution de trajectoires par séquence ment de mouvements élémentaires
contrôlés à partir des images.
Un schéma possible pour classifier les approches visuelles pour la navigation autonome
est présenté dans la Figure I.8. Les systèmes visuels pour la navigation autonome des robots
peuvent être classifiés selon le type de l’environnement, les hypothèses et les buts de la
navigation, et les techniques utilisées dans les approches de navigation [15].
L’environnement dans lequel le robot se déplace a une grande influence sur l’approche
de navigation. Donc, nous avons une première classification entre la navigation en milieu
intérieur et la navigation en milieu extérieur [1].
Plus précisément, les contributions scientifiques de la navigation visuelle, sont
classifiées en deux catégories : la première, la plus prolifique, pour robots d’intérieur et la
seconde, en pleine croissance, pour robot d’extérieur.
Page 14
Chapitre I Méthode de navigation visuelle
Figure I.9 : Carte topologique. Chaque nœud contient la description d’un lieu distinctif ;
les arêtes décrivent la trajectoire reliant deux nœuds
Page 15
Chapitre I Méthode de navigation visuelle
Ces cartes sont construites de manière incrémentale grâce à des techniques d’estimation
proposées pour localiser le robot dans l’environnement et pour fusionner les données acquises
depuis la position courante. Ces méthodes, très étudiées depuis une quinzaine d’années,
traitent donc du problème connu sous la mnémonique SLAM pour (Simultaneous Localizaion
And Mapping).
Une fois qu’il a acquis une carte d'amers, le robot sait se localiser ; il peut alors acquérir
d’autres représentations, typiquement un modèle de l’espace libre.
Figure I.11 : Exemple de carte reconstruction créée par corrélation de scans. Chacun
des cercles reliés par une ligne indique le centre d’un scan ajouté à la carte
I.13.1.3. Navigation dépourvue de carte ou sans carte :
Dans ce type de navigation, le robot ne se sert pas d’une représentation explicite de son
environnement, mais plutôt de connaissances plus qualitatives ou topologiques, construites à
partir de la reconnaissance d’objets immergés dans la scène ou de la détection et du suivi
temporel de cibles visuelles [18] (extincteurs, bureaux, amers plans, corridors, etc.). Citons
aussi des approches bio-inspirées, comme par exemple une méthode fondée sur le flux
optique, inspirée par le système visuel des abeilles [19].
Il existe plusieurs méthodes de navigation tels que : « Espace des configurations,
Décomposition en cellule, Roadmaps, Graphe de visibilité, Diagramme de Voronoï, Méthode
du Potentiel, Navigation par l’algorithme fil d’Ariane, Méthode on-line ».
Par exemple la Méthode on-line : La méthode on-line est une méthode de navigation,
elle est presque la plus simple, elle consiste à tracer une droite rejoignant la position du départ
et la cible, elle est développée suivant le principe stimuli-repense. Cette méthode est très
utilisée pour la navigation, l’exploration et la construction des cartes mais elle présente
l’avantage de pouvoir être utilisée comme méthode réactive "Navigation dépourvue de carte".
Page 16
Chapitre I Méthode de navigation visuelle
Figure I.13 : Par exemple des environnements non structurés, surface d’une planète et
d’une forêt
Tous ces modèles contiennent implicitement des actions pour éviter les
obstacles, pour la détection d’amers, la construction ou l'actualisation de cartes et
l’estimation de la position du robot.
Page 17
Chapitre I Méthode de navigation visuelle
I.14. Conclusion
Nous avons présenté dans ce chapitre un exposé sur le domaine de la robotique, et
détaillons un ensemble des robots mobiles existants, Où malgré la diversité des types de robot
les algorithmes de recherche de trajectoire sont presque les mêmes. Les différences se
trouvent dans les commandes des mouvements et de direction. Et nous avons trouvé que le
système de perception d’un robot mobile intégrera le plus souvent plusieurs capteurs qui
seront de types complémentaires pour un enrichissement des informations sensorielles, la
classification des capteurs est généralement en deux cas, proprioceptifs et extéroceptifs. De
tous les capteurs, nous avions besoin que d’un seul, à savoir les systèmes de vision pour
capteur de flux optique par exemple les caméras et pour la navigation visuelle.
Les contributions scientifiques de la navigation visuelle, sont classifiées en deux
méthodes : la première, la plus prolifique, pour robots d’intérieur et la seconde, en pleine
croissance, pour robot d’extérieur. Où la commande d’un robot mobile se divise en trois
étapes principales : perception, décision et action. La dernière étape concerne l’exécution des
mouvements planifiés, c’est une étape que doit maîtriser un robot mobile pour accomplir ses
missions avec succès.
Page 18
Chapitre II
II.1. Introduction
Et à partir de là, système Arduino nous donne la possibilité d’allier les performances de
la programmation à celles de l’électronique, on peut programmer des systèmes électroniques.
Le gros avantage de l’électronique programmée c'est qu'elle simplifie grandement les schémas
électroniques et par conséquent, le coût de la réalisation, Donc c’est la cause nous avons mené
de nombreuses test, pour comprendre le mécanisme de fonctionnement d’un Arduino.
Dans ce chapitre, nous allons présenter une généralité sur les cartes Arduino, les types
des cartes existantes, on va présenter une description de la carte Arduino de type-UNO, sa
structure interne et les caractéristiques dans la première partie. Puis dans une deuxième partie,
on va donner plusieurs tests réalisés, avec une petite définition de quelques composants, et
présenter schéma pour pratique (Schéma pratique d’un test), qui appartiennent à site web
schématique ou (paint) d'un PC. Et bien sûr, nous vous fournirons un résultat de l’application
sera présenté en réalité.
Le projets Arduino est né en hiver 2005 il a étais créé par une équipe de développeurs
composée de Massimo Banzi (enseignant dans une école de Design), David Cuartielles
(Ingénieur espagnol spécialisé sur les micro-contrôleurs), Tom Igoe, Gianluca Martino, David
Mellis et Nicholas Zambetti , de l’Interaction Design Institute d’Ivrea, en Italie [25].
Cette équipe a imaginé un projet répondant au doux et mettant en œuvre une petite carte
électronique programmable et un logiciel multiplateforme, qui puisse être accessible à tous a
pour but de créer facilement des systèmes électroniques...Sous le nom de Arduino.
Le nom Arduino trouve son origine dans le nom du bar dans lequel l’équipe avait
l’habitude de se retrouver. Arduino est aussi le nom d’un roi italien, personnage historique de
la ville «Arduin d’Ivrée», ou encore un prénom italien masculin qui signifie «l’ami fort» [26].
Page 20
Chapitre II Présentation et tests réalisé sur l'Arduino
Cette équipe est partie sur une « philosophie » et L’idée c’était d’utiliser la carte
Arduino comme un macro-composant dans des applications de prototypage électronique. Le
concepteur n’a plus qu’à développer des interfaces et programmer le macro-composant pour
réaliser son application !
l’Arduino a été conçu aux étudiants de pouvoir disposer d’une plate forme valant un
prix bas pour réaliser des projets interactifs et aussi pour être bon marché , et destiné aussi aux
artistes, designers, et des amateurs et à n’importe qu’elle personne intéressé à créer des objets
ou environnements interactifs.
Ca devient un hit tout de suite auprès des étudiants. Tout le monde arrive à en faire
quelque chose très rapidement sans même avoir de connaissances particulière ni en
électronique ni en informatique : réponse à des capteurs, faire clignoter des leds, contrôler des
moteurs . . . . Ils publient les schémas, investissent 3000 euros pour créer le premier lot de
cartes : 200. Les 50 premières partent directement à des élèves de l’école. En 2006, 5 000
cartes ont été vendues. [27].
Le système Arduino est une plate-forme de prototypage open source d’objets interactifs
à usage créatif constituée d’une carte électronique programmée à microcontrôleur AVR et un
environnement de développement permettant d’écrire, compiler et tester un programme.
Tout d’abord : Arduino une carte électronique programmable et son logiciel est
gratuit.
Peu onéreux : les cartes Arduino sont relativement peu coûteuses comparativement
aux autres plateformes ; la moins chère des versions du module Arduino peut être
Page 21
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 22
Chapitre II Présentation et tests réalisé sur l'Arduino
Ces circuits électroniques peuvent générer des images, actionner un bras articulé,
envoyer des messages sur Internet, . . . etc., avec un prix peu coûteux, pour cela des dizaines
de milliers d’artistes, de designers, d’ingénieurs, de chercheurs, d’enseignants et même
d’entreprises l’utilisent pour réaliser des projets incroyables dans de multiples domaines [29] :
Il y a une condition : le nom « Arduino » ne doit être employé que pour les cartes «
officielles ». En somme, vous ne pouvez pas fabriquer votre propre carte sur le modèle
Arduino et lui assigner le nom « Arduino » [25].
Dans la figure II.1, on donne les types des cartes Arduino.
Page 23
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 24
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 25
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 26
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 27
Chapitre II Présentation et tests réalisé sur l'Arduino
A. Cellule photoélectrique : Est une résistance électrique sensible à la lumière qui est
minimisé résistante lorsque la luminosité de la lumière augmente.
B. Relais : Utilisé pour la protection des circuits imprimés par exemple la carte Arduino-
UNO, alimentation d’une carte Arduino-UNO est 9V-12V (DC), et alimentation de la
lampe est 220V (AC)
Figure II.13 : Schéma pratique d’une commander la lampe par une cellule
photoélectrique et relais
Application de test en réalité :
Nous mettons la LED à la place de la lampe et cela ne changera pas le résultat du test,
Parce que la fonction du relais n’est pas seulement une protection mais Inverser le
fonctionnement Cellule de photoélectrique aussi, c'est le plus important.
Page 28
Chapitre II Présentation et tests réalisé sur l'Arduino
Figure II.14 : Application d’une commander LED par une cellule photoélectrique et
relais en réalité
Note : Nous pouvons placer la HDX à la place de la cellule photoélectrique
Figure II.16 : Application d’une commande LED par une HDX "commutateur
d’inclinaison" en réalité
Page 29
Chapitre II Présentation et tests réalisé sur l'Arduino
A. Capteur Ultrasons HC-SR04 : Ce capteur est connu sous le nom de capteur de distance
par ultrasons. Comme son nom l’indique, c’est un capteur utilisé pour déterminer la
distance d’un objet à partir du capteur.
Figure II.18 : Schéma pratique d’une mesure la distance à l’aide d’un capteur
Ultrasons HC-SR04
Figure II.19 : Application d’une mesure la distance à l’aide d’un capteur Ultrasons HC-
SR04 en réalité
Page 30
Chapitre II Présentation et tests réalisé sur l'Arduino
Note : On peut placer un « piezo sounder » pour déterminer la distance. Par exemple, si la
distance est inférieure à 10 cm le « piezo sounder » émet une sonnerie.
Schéma pratique d’un test :
Figure II.20 : Schéma pratique d’une déterminer la distance par Ultrasons et piezo
Application de test en réalité :
Figure II.21 : Application d’une déterminer la distance par Ultrasons et piezo en réalité
Deuxième note : Notez que le « piezo sounder » a un son gênant. Donc, nous pouvons le
mettre dans le bâton d’un aveugle.
Page 31
Chapitre II Présentation et tests réalisé sur l'Arduino
A. Transistor : Peut être considéré (résistance variable), cette résistance est variable en
variation de courant de base (IB), alors que petite courant (IB) commande grand
courant (IC).
Le transistor varié en 3 utilisations : 1/Couper 2/Saturation 3/Zone active linéaire
Couper et Saturation : utiliser comme "switch" ON /OFF.
Zone active linéaire : utiliser comme amplifier.
B. Diode : Utilisé pour protéger le transistor à partir retour de courant électrique, le moteur a un
bobinage, ce bobinage crée un courant électrique élevé lorsque le transistor est utilisé comme
"switch" ON /OFF, cela se produit parce que l’alimentation d’un moteur est coupée et
fermée sur le bobinage par le transistor.
Page 32
Chapitre II Présentation et tests réalisé sur l'Arduino
C. Moteur à courant continu : Le moteur que nous utilisions pour appliquer le contrôle
que nous voulions. Comme nous le savons, le moteur à courant continu est une
machine électrique qui convertit le courant électrique continu en un pouvoir
mécanique.
Page 33
Chapitre II Présentation et tests réalisé sur l'Arduino
Le teste suivant est similaire à celle qui la précède, mais dans cette teste nous utilisons
le transistor comme " amplifier ".
C’est à dire, la vitesse du moteur augmente jusqu’à la vitesse maximale, parce que le
courant traversant le transistor augmente avec le temps, ensuite, la vitesse du moteur diminue
jusqu’à la vitesse minimale, car le courant circulant dans le transistor diminue avec le temps.
Donc nous n’aurons pas besoin d'une diode pour protéger le transistor car il n’y a pas
d’ouverture et coupure le courant d'un moteur.
Note : La commande utilisée pour commander le transistor comme " amplifier ", est un la
commande PWM (Pulse Width Modulation), Cette fonction est très facile dans Arduino Qui
s’appelle "analogWrite" (l’Arduino Uno dispose de 6 sorties numériques également
compatibles PWM).
Schéma pratique d’un test :
Figure II.29 : Schéma pratique d’une application le transistor comme " amplifier " de
moteur
Application de test en réalité :
Figure II.30 : Application d’une la application le transistor comme " amplifier " de
moteur en réalité
Page 34
Chapitre II Présentation et tests réalisé sur l'Arduino
Maintenant que nous savons comment fonctionnent les moteurs à courant continu,
comment modifier leur vitesse en utilisant la modulation de largeur d’impulsion et comment
inverser leur direction en modifiant la polarité, examinons un moyen simple de procéder grâce
à une configuration de circuit très courante appelée "pont en H".
Donc nous avons besoin d’un circuit électronique dans lequel les commutateurs sont
remplacés par des transistors, il existe de nombreux périphériques basés sur cette
fonctionnalité, le plus important et le plus commun est L298N, L293D, Moteur drive shield
board L293D pour Arduino-UNO...etc.
Page 35
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 36
Chapitre II Présentation et tests réalisé sur l'Arduino
Donc nous avons déjà conclu, pour contrôler les moteurs A et B, vous devez activer
"En A" et "En B".
Test 9 : (Commander la vitesse d’un moteur (DC) par résistance variable et le sens de
rotation par bouton)
Dans ce test, nous allons choisi le moteur A pour faire deux contrôle.
D’abord si vous voulez commander le sens de rotation du moteur, vous devez contrôler les
deux entrées numériques "In1" et "In2" vous n’inverserez que le signal qui leur est attribué,
pour cela nous mettons un bouton, quand le bouton passe un signal d'entrée à l'Arduino,
l’Arduino est inversé le signal de sortie dédié au "In1" et "In2", donc le sens de rotation est
inverse.
Le deuxième contrôle c’est la commande de vitesse du moteur, pour commander la vitesse
du moteur, vous appliquez un signal de modulation de largeur d’impulsion (PWM) au
signal d’activation de moteur à qui est "En A". Plus la largeur d’impulsion est courte, plus
le moteur tourne lentement, nous faisons cela en mettant une résistance variable, pour
variation le signal d’entrée d’un Arduino, à leur tour, ils varièrent le signal de sortie dédié
au "En A" donc la vitesse est variable.
Résistance variable : appelé familièrement potentiomètre, est un type de résistance variable à
trois bornes, dont une est reliée à un curseur se déplaçant sur une piste résistante terminée par
les deux autres bornes, utilisé pour variation le signal d’entrée d'un Arduino.
Page 37
Chapitre II Présentation et tests réalisé sur l'Arduino
Figure II.37 : Schéma pratique d’une commande la vitesse d’un moteur (DC) par
résistance variable et le sens de rotation par bouton
Application de test en réalité :
Figure II.38 : Application d’une commande la vitesse d’un moteur (DC) par résistance
variable et le sens de rotation par bouton en réalité
Page 38
Chapitre II Présentation et tests réalisé sur l'Arduino
Ce test est similaire au test 9, mais sans bouton. Où nous allons contrôler la vitesse de
robot par deux potentiomètres lié à l’Arduino.
Figure II.41 : Schéma pratique d’un robot mobile commander la vitesse par deux
potentiomètres
Page 39
Chapitre II Présentation et tests réalisé sur l'Arduino
Figure II.42 : Application d’un robot mobile commander la vitesse par deux
potentiomètres en réalité
Prise en compte de nos tests précédents, notre circuit réalisé d’un robot est maintenant
beaucoup plus pratique, pour appliquer ce que nous voulons (commander la vitesse et le sens
de rotation), mais il lui manque encore un moyen simple de changer la direction du moteur.
Nous pourrions utiliser l’une des broches numériques non utilisées de l’Arduino comme
entrée pour un commutateur afin de résoudre ce problème, mais j’ai pensé qu’il serait peut-
être un peu plus amusant d’utiliser un joystick.
Donc nous allons enlever les deux potentiomètres que nous avons utilisés lors de la
dernière expérience et connecter le joystick comme indiqué ci-dessous (Voir la figure II.43).
Le joystick sera un moyen amusant de conduire notre véhicule.
Joystick :
Un joystick se compose en fait de trois parties. Il y a tout d'abord deux potentiomètres,
l’un sur l’axe horizontal et l'autre sur l'axe vertical.
La troisième partie est un commutateur de contact momentané (c’est-à-dire un bouton-
poussoir) qui est activé lorsque vous appuyez sur la manette du joystick, pour cela nous
mettons à la place de potentiomètre et le mini bouton poussoir.
Page 40
Chapitre II Présentation et tests réalisé sur l'Arduino
Figure II.44 : Schéma pratique d’un robot mobile contrôler totalement par un joystick
Application de test en réalité :
- La première fois qu’utiliser une plaque d’essai
- Le fil est utilise dans la deuxième fois.
Figure II.45: Application d’un robot mobile contrôler totalement par un joystick en
réalité
Il est clair ce que nous allons faire dans ce test à partir du titre, où nous supprimerons le
joystick, car nous voulons contrôler le robot par téléphone portable.
Page 41
Chapitre II Présentation et tests réalisé sur l'Arduino
B. Arduino Bluetooth RC Car : Ceci est une application que nous avons téléchargée à
partir de "google play" pour la communication par téléphone portable à le module HC-05.
Figure II.48: Schéma pratique d’un robot mobile contrôler par téléphone portable
"Bluetooth"
Application de test en réalité :
Figure II.49 : Application d’un robot mobile contrôler par téléphone portable
"Bluetooth" en réalité
Page 42
Chapitre II Présentation et tests réalisé sur l'Arduino
Comme nous l’avons dit précédemment dans le test 8, pour un bon contrôle, utilisez des
circuits électroniques contenant un pont en H, Il nous a rappelé le plus important et le plus
commun est L298N, L293D, Moteur drive shield board L293D pour Arduino-UNO...etc.
Nous allons tester L293D maintenant et ensuite nous allons tester Moteur drive shield
board L293D pour Arduino-UNO.
2. A. L293D :
Peut contrôler jusqu’à deux moteurs à courant continu à l’aide de circuits intégrés à
pont en H L293D. Vous pouvez lire la fiche technique pour plus de détails "datasheet", mais
l’essentiel est que le circuit intégré utiliser dispose de quatre entrées numériques et puisse
contrôler deux moteurs de manière bidirectionnelle. Les entrées sont par paires et chaque
paire commande un moteur. Par exemple, si broche 2 "pin 2" est réglé sur haut "HIGH" et que
broche 7 "pin 7" est réglé sur bas "LOW", le moteur 1 est activé. Si les entrées sont inversées,
le moteur est à nouveau allumé mais son sens de rotation est inversé. Si les deux sont réglés
sur bas "LOW", le moteur est arrêté.
Donc, cela ressemble beaucoup à L298N, mais il faut une plaque d’essai, pour recevoir
des entrées d’un Arduino par exemple, et produire les sorties du moteur par exemple.
Page 43
Chapitre II Présentation et tests réalisé sur l'Arduino
B. Plaque d’essai :
Utiliser pour connecter les entrées et les sorties d’un L293D à les composant utilisé.
Page 44
Chapitre II Présentation et tests réalisé sur l'Arduino
Test 15 : (Commander servomoteur par Moteur drive shield board L293D pour Arduino-
UNO)
Un petit test pour comprendre son fonctionnement du Moteur drive shield board L293D
pour Arduino-UNO avec le servomoteur.
Ce shield board contient deux conduire de moteur L293D (nous savions déjà comment
fonctionne L293D dans le test 8 et 14) et un registre à décalage 74HC595N de 8 bits. Ce
circuit intégré vous permet d’alimenter les bits en série, mais il les présente ensuite comme
des sorties parallèles. Contrôlé par quatre entrées numériques, il vous permet de contrôler huit
entrées des commandes de moteur "deux L293D" (donc quatre moteurs) à l’aide de quatre
broches de l’Arduino.
L’activation de sortie du L293D est directement connectée aux sorties PWM de
l’Arduino.et les moteurs CC / Pas à pas ne sont pas connectés directement à l’Arduino (sauf le
servomoteur). Ils sont connectés au loquet 74HC595N dont parle à l’Arduino.
Vous ne pouvez pas parler directement aux moteurs, vous devez utiliser la bibliothèque
de boucliers de moteurs (la bibliothèque AFMotor).
Page 45
Chapitre II Présentation et tests réalisé sur l'Arduino
Page 46
Chapitre II Présentation et tests réalisé sur l'Arduino
Figure II.58 : Schéma pratique d’une commander servomoteur par L293D shield board
Application de test en réalité :
Figure II.59 : Application d’une commander servomoteur par L293D shield board en
réalité
Test 16 : (Robot mobile autonome pour éviter les obstacles)
Il existe de nombreux shields que l’on traduit parfois dans les documentations par
«boucliers ». Un «Shield» Arduino est une petite carte qui se connecte sur une carte Arduino
pour augmenter ses fonctionnalités.
Le Moteur drive shield board double L293D pour Arduino-UNO est un excellent
contrôleur de moteur pour Arduino. Ça fait un travail rapide car il n’a pas besoin de beaucoup
de connexions à l’Arduino.
Et en tenant compte du fait que la carte Arduino est connectée au L293D shield board
comme illustré ci-dessous:
Servomoteur : Nous l’utilisons pour éviter de mettre trop des capteurs Ultrasons HC-SR04.
Page 47
Chapitre II Présentation et tests réalisé sur l'Arduino
Figure II.61 : Schéma pratique d’un robot mobile autonome pour éviter les obstacles
Application de test en réalité :
Dans la première partie, le robot avancé jusqu'à la barrière (obstacle), puis s’est arrêté
parce que le robot est connaître la barrière (obstacle) par capteur ultrasons HC-SR04.
La deuxième partie, après connue la barrière (obstacle) dans la première partie. Le
robot est retour un peu en arrière et tourne le capteur ultrasons HC-SR04 à droite et à
gauche, où c'est fait par servomoteur.
Enfin, le capteur revient à sa place après que calculé la distance entre lui et la barrière
(obstacle) à droite et à gauche, puis calculé la différence et tourné vers le plus grand
entre eux et aller en avant.
Figure II.62 : Application d’un robot mobile autonome pour éviter les obstacles en
réalité
Page 48
Chapitre II Présentation et tests réalisé sur l'Arduino
II.5. Conclusion
Dans ce chapitre, nous avons donné un aperçu général sur les cartes Arduino, ainsi que
leurs modes de fonctionnement , leurs caractéristique en général et les types, où trouvé de
nombreux types (UNO, Duemilanove et Megae...etc) et nous choisissons d’utiliser la carte
portant le nom de « UNO ».parce que peu coûteuses comparativement aux autres plateformes,
et aussi simple et facile à utiliser et pour posséder plusieurs des caractéristiques dont nous
avons besoin par exemple la conception pour monté un notre shield.
Après avoir effectué une série de tests sur eux et savons comment connecter de
nombreux composants, nous avons trouvé ce qui prime dans Arduino, c’est sa simplicité qui
permet de mettre en œuvre de beaucoup d’objectifs à moindre coût, sans être un spécialiste en
électronique ou en programmation des microcontrôleurs, cela nécessite juste des petites
connaissances en électronique, et ça carte Arduino-UNO, qui puisse être accessible à tous a
pour créer facilement des systèmes électroniques, tout en étant assez flexible pour que les
utilisateurs avancés puissent en tirer profit également. C’est cette qualité là qui donne à
Arduino le succès qu’on lui connaît.
Dans ce chapitre, il nous manque le programme utilisé pour contrôler l’Arduino. Donc
nous allons présenter dans la prochain chapitre avec tous les logiciels utilisés dans le robot qui
nous construisons dans ce chapitre.
Page 49
Chapitre III
III.1. Introduction
L’objectif de ce chapitre est pour appliquer toutes les expériences tirées du chapitre 2,
c’est-à-dire nous allons construire notre robot mobile que naviguer visuellement.
Page 51
Chapitre III Réalisation du Robot et Résultats Expérimentales
Le programme d’un Arduino est structuré par la forme présenté sur la figure II.5.
Il est constitué de :
En tête: déclaration des variables, des constantes, indication d’utilisation des
bibliothèques, … etc.
UN PROGRAMME ARDUINO = une fonction setup () + une fonction loop ()
Setup (initialisation) : cette partie n’est lue qu’une seule fois, elle comprend les
fonctions devant être réalisées au démarrage (utilisation des broches en entrées
ou en sortie, mise en marche des ports,…etc.).
Loop (boucle): cette partie inclue les fonctions réalisées et les opérations de
calcul. Ces instructions sont répétées plusieurs fois.
Page 52
Chapitre III Réalisation du Robot et Résultats Expérimentales
Est un langage de programmation informatique moderne et gratuit très puissant qui est
de plus en plus utilisé pour développer des applications rapidement et en même temps
efficaces. Il est très utilisé dans le monde scientifique pour sa syntaxe aérée et une vitesse
d’exécution rapide.
Ce langage est aussi excellent pour la création de prototypes car sa simplicité permet
d’implémenter un projet aussi vite que l’on y réfléchit.
Nous l’utilisons pour communiquer avec la carte Arduino et appliquer un flux optique à
ce que le capteur (les images de caméra) de l’environnement environnant.
Page 53
Chapitre III Réalisation du Robot et Résultats Expérimentales
III.3.2.1. NumPy :
Nous l’utilisons pour calculer les vecteurs (créé par Open CV) qui apparaissent lors de
la détection d’un obstacle (calculer le flux optique).
III.3.2.2. SciPy :
Cette distribution de modules est destinée à être utilisée avec le langage interprété
Python afin de créer un environnement de travail scientifique.
III.3.2.3. PySerial :
Demander cette bibliothèque pour nous aider à communiquer avec notre carte Arduino,
où nous faisons en créant une série qui a la même série d’un programme de carte Arduino et
la même sortie de PC (COM), et appeler ça (serial) comme on aime dans le code de
programmation.
III.3.2.4. Pywin32 :
Est un module de Python pour Windows Extensions. Par exemple la caméra intégrée
d'un PC (webcam).
III.3.2.5. Open CV :
OpenCV (Open Computer Vision) est une bibliothèque graphique libre, initialement
développée par Intel, au milieu de l'année 2008, OpenCV obtient l'appui de la société de
robotique Willow Garage et la bibliothèque est encore développée à ce jour, spécialisée dans
le traitement d'images en temps réel.
Page 54
Chapitre III Réalisation du Robot et Résultats Expérimentales
Comme nous l’avons dit au chapitre 2 : Nous construisons les tests sur trois bases.
Page 55
Chapitre III Réalisation du Robot et Résultats Expérimentales
int cnt=0;
void setup() {
Serial.begin (9600);
}
void loop() {
Serial.print ("I am Counting to: ");
Serial.print (cnt);
Serial.println (" second.");
cnt=cnt+1;
delay (1000);
}
Dans la fonction de boucle (loop), nous affichons toutes les données qui arrivent de
l’Arduino, en place de (cnt), c’est un variable parce que nous n’avons pas mis le ("") et
augmente après chaque seconde.
import serial
arduinoSerialData = serial.Serial('com5',9600)
while (1==1):
if (arduinoSerialData.inWaiting()>0):
myData = arduinoSerialData.readline()
print myData
La prochaine étape serait d’initialiser un objet série à l’aide de notre bibliothèque série.
Dans ce programme, nous avons nommé notre objet série «ArduinoSerialData», nous devons
mentionner le nom du port COM auquel notre Arduino est connecté et à quelle taux baud de
vitesse transmission qu’il fonctionne.
Maintenant, nous pouvons lire ou écrire n’importe quoi de / vers notre carte Arduino,
donc nous imprimons tout ce qui vient d’un carte Arduino après avoir été nommé « myData ».
Page 56
Chapitre III Réalisation du Robot et Résultats Expérimentales
Il n’y a pas de schéma où nous connectons carte Arduino à l'ordinateur via une
connexion USB seulement.
Test 2 : (Commande d’un LED intègre de la carte Arduino par le programme Python)
Page 57
Chapitre III Réalisation du Robot et Résultats Expérimentales
Page 58
Chapitre III Réalisation du Robot et Résultats Expérimentales
Il n’y a pas de schéma où nous connectons carte Arduino à l’ordinateur via une
connexion USB seulement.
Tout d’abord, et pour le début de commande d’un LED intègre, le programme Python
est affiche Shell en l’écran de PC et imprime les cinquième et sixième lignes.
Page 59
Chapitre III Réalisation du Robot et Résultats Expérimentales
Figure III.6 : Application d’une commande d'un LED intègre de la carte Arduino par le
programme Python ON en réalité
Figure III.7 : Application d’une commande d'un LED intègre de la carte Arduino par le
programme Python OFF en réalité
Page 60
Chapitre III Réalisation du Robot et Résultats Expérimentales
Le flux optique est une technique de navigation visuelle d’un robot mobile basée
directement sur l’information extraite d’une image, sans modélisation intermédiaire de
l’environnement.
Pour la détection des obstacles on calcule la matrice du flux optique a partir d’une
séquence d’images captée par la webcam, puis divise cette matrice en deux parties, partie
gauche et partie droite, en suite, calcule le flux optique moyen dans les parties gauche et
droite de l’image par l’équation :
̃ 𝒅.𝒈(𝒕) = 𝟏 ∑𝒏‖𝒗
𝑽 ⃗‖ (III.1)
𝒏
Puis on compare le résultat avec un seuil choisi d'une manière expérimentale, ce seuil
représente la valeur de flux moyen pour donner au robot la capacité d’évitement d’obstacles,
après cette étape on recherche de la direction à adopter pour éviter des obstacles.
Si les flux optiques moyens de la partie gauche et droite sont inférieurs le seuil, le
robot continue en avant.
Sinon le flux optique moyen de la partie gauche est supérieur le seuil, le robot s'arrête
et tourne à droite jusqu'à ce que les flux optiques moyens de la partie gauche et droite
soient inférieurs le seuil.
Sinon le flux optique moyen de la partie droit est supérieur le seuil, le robot s'arrête et
tourne à gauche jusqu'à ce que les flux optiques moyens de la partie gauche et droite
soient inférieurs le seuil.
Si les flux optiques moyens des parties gauche et droite sont supérieure le seuil, le
robot s'arrête et tourner sur lui-même jusqu'à ce que les flux optiques moyens de la
partie gauche et droite soient inférieurs le seuil.
Page 61
Chapitre III Réalisation du Robot et Résultats Expérimentales
Page 62
Chapitre III Réalisation du Robot et Résultats Expérimentales
L’algorithme de technique flux optique pour la navigation visuelle, élaboré est écrit en Python
par plusieurs bibliothèque.
import numpy as np
import cv2
from math import *
import serial
import time
ArduinoSerial = serial.Serial('com5',9600)
time.sleep(2)
def draw_flow1(im,flow,step=16):
h,w = im.shape[:2]
fxg,fyg = flow[yg,xg].T
g=np.sqrt(fxg**2+fyg**2)
gg=np.mean(g)
print('gg=',gg)
lines =np.vstack([xg,yg,xg+fxg,yg+fyg]).T.reshape(-1,2,2)
lines =np.int32(lines)
print('dd=',dd)
seuil=0.35
if gg > seuil and dd < seuil :
print(" droite ")
ArduinoSerial.write('1')
else:
print("Avant")
ArduinoSerial.write('4')
Page 63
Chapitre III Réalisation du Robot et Résultats Expérimentales
lines1 =np.vstack([xd,yd,xd+fxd,yd+fyd]).T.reshape(-1,2,2)
lines1 =np.int32(lines1)
vis = cv2.cvtColor(im,cv2.COLOR_GRAY2BGR)
cap = cv2.VideoCapture(1)
ret,im = cap.read()
prev_gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
while True:
ret,im = cap.read()
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
flow = cv2.calcOpticalFlowFarneback(prev_gray,gray,0.5,3,15,3,5,1.2,0)
prev_gray = gray
cv2.imshow('Optical flow',draw_flow1(gray,flow))
if cv2.waitKey(10) == 27:
break
cv2.waitKey(10)
cv2.destroyAllWindows()
On a simulé l’algorithme sur notre webcam du PC utilisé, puis comme une continuation
de travail, on envisage l’appliquer sur notre robot mobile, pour la détection et évite des
obstacles.
Application en réalité :
Etape 1 :
Changemnt
du
flux optique
alors il existe
un obstacle
dans le partie
Gauche
Figure III.9 : La matrice du flux optique divisé en deux parties et détection un obstacle
dans la partie Gauche
Page 64
Chapitre III Réalisation du Robot et Résultats Expérimentales
Calculer
le flux
optique
Comparaison
entre les
deux parties
avec le seuil
alors le robot
s'arrête et
tourne à droite
jusqu'à ce que
les flux optiques
moyens de la
partie gauche et
droite soient
inférieurs le
seuil
Figure III.10 : Calculer le flux optique et comparaison entre les deux parties avec le seuil
Le flux optique de la partie gauche est supérieur à la valeur de seuil, en conséquence
l’action choisie tourner à droite jusqu'à ce que les flux optiques moyens de la partie gauche et
droite soient inférieurs le seuil.
Donc après avoir effectué tous les tests, nous concluons que les quatre cas d’un
application du flux optique pour la navigation visuelle sont possibles et exister, dans notre
algorithme Python qui réalisons.
Maintenant, nous pouvons appliquer l'algorithme sur le robot mobile (Arduino et cartes
de puissance), pour contrôler notre moteur CC.
Page 65
Chapitre III Réalisation du Robot et Résultats Expérimentales
Avant d'appliquer l'algorithme à notre robot mobile, le code d'un logiciel Arduino doit
exister, pour réception l’action choisie de l'algorithme et applique cette action sur la
carte de puissance L298N.
Pour applique notre algorithme Python de navigation visuelle sur la carte de puissance,
nous avons besoin le code d’un Arduino IDE, pour établir une connexion entre eux, et c'est
comme suit :
int data;
const int IN1=3;
const int IN2=5;
const int IN3=6;
const int IN4=9;
const int trigPin=10;
const int echoPin=13;
float duration, distance;
int SPEED_Control=120;
void setup() {
Serial.begin(9600);
pinMode( IN1 , OUTPUT);
pinMode( IN2 , OUTPUT);
pinMode( IN3 , OUTPUT);
pinMode( IN4 , OUTPUT);
pinMode( trigPin , OUTPUT);
pinMode( echoPin , INPUT);
}
void FORWARD(int Speed){
analogWrite(IN1,0);
analogWrite(IN2,Speed);
analogWrite(IN3,Speed);
analogWrite(IN4,0);
}
void BACKWARD(int Speed){
analogWrite(IN1,Speed);
analogWrite(IN2,0);
analogWrite(IN3,0);
analogWrite(IN4,Speed);
}
void LEFT(int Speed){
analogWrite(IN1,0);
analogWrite(IN2,Speed);
analogWrite(IN3,0);
analogWrite(IN4,Speed);
}
void RIGHT(int Speed){
Page 66
Chapitre III Réalisation du Robot et Résultats Expérimentales
analogWrite(IN1,Speed);
analogWrite(IN2,0);
analogWrite(IN3,Speed);
analogWrite(IN4,0);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(1);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
if(distance<=15)
{
while (Serial.available()){
data = Serial.read();
}
if(data=='4'){
FORWARD(SPEED_Control);
}
if(data=='3'){
BACKWARD(SPEED_Control);
}
if(data=='1'){
RIGHT(SPEED_Control);
}
if(data=='2'){
LEFT(SPEED_Control);
}
}
if(distance>=15)
{
FORWARD(SPEED_Control);
}
Finalement la partie commande d'un notre robot mobile que naviguer visuellement est
terminée totalement. Donc, nous clôturerons ce chapitre par construire le robot présenté
comme indiqué précédemment.
Page 67
Chapitre III Réalisation du Robot et Résultats Expérimentales
Page 68
Chapitre III Réalisation du Robot et Résultats Expérimentales
Page 69
Chapitre III Réalisation du Robot et Résultats Expérimentales
Etape 3 :
Installation le circuit électrique où nous mettons les composants et connectons entre eux.
Etape 4 :
Et enfin, notre robot mobile que naviguer visuellement est devenir comme suivant :
Page 70
Chapitre III Réalisation du Robot et Résultats Expérimentales
Page 71
Chapitre III Réalisation du Robot et Résultats Expérimentales
D’après ses figures, on a montré que le robot mobile réalisé peut exécuter les actions
générées par le programme élaboré. En se basant sur l’mage captée par la caméra, le robot
peut détecter les obstacles proches, et il peut éviter les obstacles.
Page 72
Chapitre III Réalisation du Robot et Résultats Expérimentales
III.8. Conclusion
Notre projet est composé de deux parties :
La partie software : Nous avons exposé les logiciels de programmation et les bibliothèques et
également expliquer pourquoi ils sont utilisés, tout ça pour la réalisation de notre programme
de navigation visuelle, on peut être divisé en deux grandes parties :
L’idée consiste à utiliser l’image acquise par la caméra du robot pour identifier le sens
de mouvement afin d’éviter la collision avec les obstacles proches, pour cela on a simulé
l’algorithme, sur notre webcam du PC utilisé, puis comme une continuation de travail, on
envisage l’appliquer sur notre robot mobile, pour la détection et évite des obstacles.
La partie hardware : Cette partie était très difficile il nous a fait étudier plusieurs domaines
comme indiqué dans l'introduction, Où nous avons construit notre robot mobile que naviguer
visuellement a base de l'expérience acquise lors des tests réalisé dans le chapitre 1 et 2.
On peut conclure que notre robot mobile est composé de deux plates-formes :
Page 73
Conclusion Générale
Conclusion Générale
Page 74
Conclusion Générale
Dans la troisième partie (la partie software d'un notre robot), il nous manque le
programme utilisé pour contrôler l’Arduino. Donc nous allons présenter dans cette
partie avec tous les logiciels utilisés dans le robot qui nous construisons, où nous
avons exposé les logiciels de programmation (Python et IDE) et les bibliothèques
(NumPy, PySerial et Open CV...etc.) et également expliquer pourquoi ils sont
utilisés, tout ça pour la réalisation de notre programme de navigation visuelle, par
la la technique du flux optique. L’idée consiste à utiliser l’image acquise par la
caméra du robot pour identifier le sens de mouvement afin d’éviter la collision
avec les obstacles proches, pour cela on a simulé l’algorithme, sur notre webcam
du PC utilisé, puis comme une continuation de travail, on envisage l’appliquer sur
notre robot mobile, pour la détection et évite des obstacles.
Dans le dernier parties (la partie hardware d'un notre robot), Cette partie était très
difficile il nous a fait étudier plusieurs domaines, Où nous avons construit notre
robot mobile que naviguer visuellement a base de l'expérience acquise lors des
tests réalisé dans le chapitre 1 et 2. Le robot mobile réalisé et les tests faits sont
présentés.
Les résultats obtenus montrent que le robot peut détecter les obstacles en avant et peut
décider sur l’action à appliquer pour l’évitement de la collision avec les obstacles (en avant, à
droite et à gauche). Le robot mobile réalisé peut éviter les obstacles perçus avec une précision
acceptable.
Puisque le sujet est de nature expérimentale, on a rencontré un ensemble des difficultés
dans différents points par exemple la détection d'un couleur blanche. Pour L’amélioration et
possible prochainement. Pour cela, comme perspectives, on peut citer :
- L’ajout d’autres capteurs pour sécuriser le robot mobile,
- L’application du deuxième algorithme de calcul du flux optique et la comparaison,
- La subdivision de l’image en plus de deux parties pour rendre les actions de
mouveùment plus compatible avec le cas réel.
Page 75
Les références Bibliographique
- [1] Y. Mezouar et F. Chaumette, ”Optimal camera trajectory with image based control”
International Journal of Robotics Research. October-November 2003.
- [2] Huston SJ, Krapp HG, « Visuomotor Transformation in the Fly Gaze Stabilization Systeme,
PLoS Biology, 2008.
- [3] Andrew Burton and John Radford, Thinking in Perspective: Critical Essays in the Study of
Thought Processes, Londres, Routledge, 1978.
- [4] D. Filliat, ”Robotique Mobile”. http://creativecommons.org/licenses/by-nc-sa/2.0/fr/.
Dernière mise à jour: http://www.ensta-paristech.fr/~ Livre à Ecole Nationale Supérieure de
Techniques Avancées. 5 octobre 2011.
- [5] J-L. Boimond, Jacques Gangloff, le livre : « Cours robotique ». ENSPS 3A MASTER ISTI,
Université Angers.
- [6] Laëtitia Matignon: ”Introduction à la robotique”. GREYC-CNRS. Université de Caen,
Basse Normandie. France http://lmatigno.perso.info.unicaen.fr/L1robotique. 2011.
- [7] Le petit Larousse Illustré. Éditions Larousse 2007. ISBN 978-2-03-582503-2.
- [8] Gerardo Flores, Shuting Zhou, Rogelio Lozanoy, and Pedro Castillo: “A Vision and GPS-
Based Real-Time Trajectory Planning for MAV in Unknown Urban Environments”.2013
International Conference on Unmanned Aircraft Systems (ICUAS). May 28-31.
- [9] Lefteris Doitsidis, Stephan Weiss, Alessandro Renzaglia, Markus W. Achtelik, Elias
Kosmatopoulos, Roland Siegwart, Davide Scaramuzza: “Optimal surveillance coverage for
teams of micro aerial vehicles in GPS-denied environments using onboard”. Springer Science
+ Business Media, LLC 2012. Published online: 31 March 2012.
- [10] Roland Siegwart & Illah R. Nourbakhsh. Introduction to autonomous mobile Robots. The
MIT Press, 2004.
- [11] Bernard BAYLE, "Robotique mobile". Ecole Nationale Supérieure de Physique de
Strasbourg Université Louis Pasteur. Année 2008–2009.
- [12] G. Frappier – "Système inertiels de navigation pour robots mobiles" – Séminaire "Les
robots mobiles", EC2, Paris, 1990
- [13] Cyril Drocourt, "Localisation et modélisation de l'environnement d'un robot mobile par
coopération de deux capteurs omnidirectionnels". Thèse pour l’obtention du grade de Docteur
de l’Université de technologie de Compiègne. Discipline : Robotique. Soutenu le : 22/02/2002.
Page 76
Les références Bibliographique
- [14] G. Giralt, R. Sobek & R. Chatila. A Multi-Level Planning and Navigation System for a
Mobile Robot; A First Approach to Hilare. In 6th International Joint Conference on Articial
Intelligence, 1979.
- [15] Haythem Ghazouani "Navigation visuelle de robots mobiles dans un environnement
d’intérieur" université de Montpellier II, https://tel.archives-ouvertes.fr/tel-00932829
Submitted on 21 Jan 2014.
- [16] Jean Bernard Hayet, Frederic Lerasle & Michel Devy. A visual landmark framework for
indoor mobile robot navigation. In IEEE International Conference on Robotics and
Automation, May 11-15 2002.
- [17] S. Thrun. Learning Metric-Topological Map for Indoor Mobile Robot Navigation. Articial
Intelligencen, February 1998.
- [18] Antonio Marin-Hernandez. Vision dynamique pour la navigation d'un robot mobile.
Thèses de doctorat, Institut National Polytechnique, LAAS, Toulouse, France, 9 Février 2004.
- [19] A. Rizzi, G. Bianco & R. Cassinis. A Bee-Inspired Visual Homing Using Color Images.
Robotics and Autonomous Systems, November 1998.
- [20] R. Chapuis, A. Potelle, J. L. Brame & F. Chausse. Real-Time Vehicle Trajectory
Supervision on the Highway. International Journal of Robotics Research, December 1995.
- [21] Christopher Rasmussen. Grouping dominant orientations for ill-structured road following.
In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Washington, DC,
June 27 - July 2 2004.
- [22] Christopher Rasmussen. Texture-Based Vanishing Point Voting for Road Shape
Estimation. In British Machine Vision Conference (BMVC), Kingston Univeristy, London,
September 7-9 2004.
- [23] B. Wilcox, L. Matthies, D. Gennery, B. Cooper, T. Nguyen, T. Litwin, A. Mishkin et H.
Stone. Robotic vehicles for planetary exploration. In IEEE International Conference on
Robotics and Automation, May 12-14 1992.
- [24] R. Chatila, S. Lacroix, T. Simeon & M. Herrb. Planetary exploration by a mobile robot:
Mission teleprogramming and autonomous navigation. Autonomous Robots Journal, 1995.
- [25] Astalaseven , Eskimon et olyte "Arduino pour bien commencer en électronique et en
programmation" Licence Creative Commons BY-NC-SA 2.0, 4/08/2012.
- [26] Arduino. Mémoire de D.E.A., 2011-12-22.
- [27] Livret Arduino en français par Jean-Noël Montagné : Initiation à la mise en œuvre matérielle
Page 77
Les références Bibliographique
Page 78
Annexe B
Annexe A :
Documentation technique (Datasheets)
Annexe B.1 : Fiches techniques de CI utilisés dans les tests 8, 9, 10, 11, 12, 13 et
notre robot mobile que naviguer visuellement.
Datasheet : L298N
Page 11
Annexe B
Annexe B.2 : Fiches techniques de CI utilisés dans les tests 14,15 et 16.
Datasheet : L293D
Page 12
Résumé
Dans ce travail, nous avons présenté étude d'une navigation visuelle d’un robot mobile
autonome, pour l’évitement des obstacles, et nous exposons les logiciels de programmation
(Python, IDE) et les bibliothèques (NumPy, PySerial et Open CV...etc.) et également on
expliquer pourquoi chacun d'eux ils sont utilisés, pour développement l'algorithme de
navigation visuelle par la technique du flux optique, l’idée consiste à utiliser l’image acquise
par la caméra du robot pour identifier le sens de mouvement afin d’éviter la collision avec les
obstacles proches, pour cela on a simulé l’algorithme, sur notre webcam du PC utilisé, puis
comme une continuation de travail, on envisage l’appliquer sur notre robot mobile, pour la
détection et évite des obstacles. Enfin nous construisons notre robot mobile que naviguer
visuellement.
Mots clés : Robot mobile, Flux optique, Navigation visuelle, Evitement d’obstacles.
Abstract
In this work, we presented a study of a visual navigation of an autonomous mobile robot, for
the avoidance of obstacles, and we expose programming software (Python, IDE) and libraries
(NumPy, PySerial and Open CV...etc.) and also it is explained why each of them is used, for
development the algorithm of visual navigation by the technique of the optical flow, the idea
consists in using the image acquired by the camera of the robot to identify the sense of
movement to avoid collision with nearby obstacles, for that we simulated the algorithm, on
our PC webcam used, then as a continuation of work, we plan to apply it on our mobile robot,
for the detection and avoids obstacles. Finally we construct the mobile robot that navigates
visually.
Key words : Mobile robot, Optical flow, Visual navigation, Obstacle avoidance.
ملخص
ونكشف برامج البرمجة، لتجنب العقبات، قدمنا دراسة حول التنقل المرئي لروبوت متنقل مستقل، في هذا العمل
، لتطوير خوارزمية التنقل البصري بواسطة تقنية التدفق البصري، والمكتبات و كما يتم شرح سبب استخدام كل منها
تتمثل الفكرة في استخدام الصورة التي حصلت عليها كاميرا الروبوت لتحديد اتجاه الحركة لتجنب االصطدام بالعوائق
، ثم كاستمرار للعمل، على كاميرا الويب الخاصة بالكمبيوتر المستخدمة لدينا، لذلك قمنا بمحاكاة الخوارزمية، القريبة
نصمم الروبوت المتحرك الذي يتنقل، أخيرا
ً . من أجل اكتشاف العقبات وتجنبها، نخطط لتطبيقه على روبوتنا المحمول
.بصريًا
تجنب العقبة، المالحة البصرية، التدفق البصري، روبوت متنقل: الكلمات المفتاحية