Vous êtes sur la page 1sur 93

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE

UNIVERSITE ZIANE ACHOUR DE DJELFA

MASTER
COMMANDE
ELECTRIQUE
Faculté des Sciences et de la Technologie
Département de Génie Electrique
Filière : Electrotechnique

JUILLET 2019 Mémoire présenté par :

Smaida elyas
Zekaik Bachir

En vue de l’obtention du diplôme Master - LMD -


En Electrotechnique Option : Commande Electrique

Thème :

Etuded’une
Etude d’uneNavigation
Navigation Visuelle
Visuelle pour
pour
un un Robot
Robot Mobile Mobile Autonome
Autonome

Président de jury : KOURICH Bilkacem Grade: MAA

Membre de jury : BOUDIAF Mohamed Grade : MCA

Promoteur : NADOUR Mohamed Grade: MAA

Co-Promoteur : CHERROUN Lakhmissi Grade : MCA

Référence : …… M ELT 2019


Nous remercions le Dieu le tout puissant de notre avoir donnée le courage, le
patience et la force durant toutes ces années d'étude.

Nous remercions particulièrement mon promoteur Monsieur NADOUR


Mohamed qui a proposé ce sujet, et pour son esprit scientifique et compréhensif
qui notre a beaucoup aidé avec ses idées, ainsi que le co-promoteur
Dr. CHERROUN Lakhmissi pour ses conseils et son encouragement.

Nous remercions aussi les membres du jury qui m’ont fait l’honneur de
participer à l’évaluation de ce travail.

Nous exprimons notre reconnaissance à tous les enseignants du département de


génie électrique

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 :

A mes chers Parents


A mes chères sœurs « Amina, Noura, Wiam,Aya »
A tous la Famille
A mes amis « Ahmed, Omar, Mouloud, Massoud»

A tous mes camarades de la promotion 2019

(Commande électrique)

Bachir
Dédicaces
Je dédie ce modeste travail :

A mes chers Parents


À mon frère « Zakaria »
A mes chères sœurs « Meriame, Selsebile, Sondosse »
A tous la Famille
A mes amis « Oussama, Ahmed, Idir, Ayobe, khalil,
Walide »
A tous mes camarades de la promotion 2019
(Commande électrique)

ELYAS
Table des matières

Table des matières

Introduction Générale ……………………………………………………………………............ 01

Chapitre I : Méthode de navigation visuelle

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

Chapitre II : Présentation et tests réalisé sur l'Arduino

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

Chapitre III : Réalisation du Robot et Résultats Expérimentales

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

Les Références Bibliographique…………………………………………………………………. 76

Annexe A : Documentation technique (Datasheets)……………………………………………... 01


Liste des tableaux

Liste des tableaux


Tab. I.1 : Domaines d’applications des robots mobiles……………………… 8
Tab. II.2 : Caractéristiques de la carte Arduino-UNO………………………... 25
Liste des figures

Liste des figures


Fig. I.1 : Schéma des interactions d’un robot avec son environnement …….............. 4
Fig. I.2 : Le premier robot industriel développe pour les besoins du nucléaire
(Unimate)………………………………………………………………...... 5
Fig. I.3 : La première présentation au grand public d’un robot Unimate en
TV3……………………………………………………………………….... 6
Fig. I.4 : Schéma de perception…………………………………………………….... 9
Fig. I.5 : Les capteurs proprioceptifs……………………………………………........ 10
Fig. I.6 : Fonctionnement d'un capteur faisceau ultrasonore, LASER et IR à mesure
d’angle de réflexion et mesure la distance……………................................ 11
Fig. I.7 : Illustration du principe de base du flot optique…......................................... 12
Fig. I.8 : Schéma de classification des approches visuelles pour la navigation
autonome……………………………………………................................... 14
Fig. 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…………………….. 15
Fig. I.10 : Exemple d’un modèle géométrique du monde………………….................. 15
Fig. 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…………………………………………………………………........... 16
Fig. I.12 : Méthode on-line……………………………………………………............. 16
Fig. I.13 : Par exemple des environnements non structurés, surface d'une planète et
d'une forêt…………………………………………….................................. 17

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

Fig. II.55 : SN74HC595N…………………………………………………………….... 45


Fig. II.56 : Moteur drive shield board L293D pour Arduino-UNO………………….... 46
Fig. II.57 : Micro Servo motor…………………………………………………………….. 47
Fig. II.58 : Schéma pratique d’une commander servomoteur par L293D shield
board……………………………………………………………………...... 47
Fig. II.59 : Application d’une commander servomoteur par L293D shield board en
réalité……………………………………………………………………..... 47
Fig. II.60 : La carte Arduino est connectée au L293D shield board………………....... 47
Fig. II.61 : Schéma pratique d’un robot mobile autonome pour éviter les obstacles..... 48
Fig. II.62 : Application d’un robot mobile autonome pour éviter les obstacles en
réalité …………………………………………………………………….... 48

Fig. III.1 : Interface visuelle du logiciel …………………………………………….... 52


Fig. III.2 : Structure du programme Arduino………………………………………….. 53
Fig. III.3 : Interfaces d’un logiciel Python…………………………………………….. 53
Fig. III.4 : Application d’un Prend les informations du programme de la carte
Arduino, puis affiche-les à l’écran en programme Python en réalité…….... 57
Fig. III.5 : Interfaces d’un la commande par le programme Python (Shell)…………... 59
Fig. III.6 : Application d’une commande d'un LED intègre de la carte Arduino par le
programme Python ON en réalité…………………………………….......... 60
Fig. III.7 : Application d’une commande d'un LED intègre de la carte Arduino par le
programme Python OFF en réalité……………………………………….... 60
Fig. III.8 : Organigramme de navigation visuelle par le technique flux optique…….... 62
Fig. III.9 : La matrice du flux optique divisé en deux parties et détection un obstacle
dans la partie gauche……………………………………………………..... 64
Fig. III.10: Calculer le flux optique et comparaison entre les deux partie avec le seuil.. 65
Fig. III.11: Schéma pratique d’un notre robot mobile…………………………………. 68
Fig. III.12: Matériel utiliser pour construction notre robot mobile…………………….. 68
Fig. III.13: Capteur ultrasonique et support ………………………………………........ 69
Fig. III.14: Percer la plate-forme……………………………………………………..... 69
Fig. III.15: Installer les moteurs à CC………………………………………………….. 69
Fig. III.16: Installation le circuit électrique……………………………………………. 70
Fig. III.17: La dernière construction………………………………………………........ 70
Fig. III.18: Notre robot mobile que naviguer visuellement……………………………. 71
Fig. III.19: Détection d'obstacle (à gauche) et évitement à droite……………………... 71
Fig. III.20: Détection d'obstacle (à droite) et évitement à gauche……………………... 72
Fig. III.21: Détection d'obstacle (à droite et à gauche) et évitement jusqu'à ce que les
flux optiques moyens de la partie gauche et droite inférieurs le seuil……... 72
Listes des Acronymes et Symboles

Listes des Acronymes et Symboles

 Acronymes

R.U.R Rossums Universal Robots


JIRA Association japonaise de robotique industrielle
JRA Japan Robotics Association
UAV Unmanned Aerial Vehicle
2D Deux dimensions
SLAM Simultaneous Localizaion And Mapping
GPS Global Positioning System
IDE integrated development environment
LED light-emitting diode
PWM Pulse Width Modulation
DC Direct Curent
CC Courant continu

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

Tout au long de l’histoire, la robotique a été utilisée pour imiter le comportement


humain et gérer des tâches répétitives. Aujourd’hui, la robotique est un domaine en pleine
expansion, que ce soit au niveau industriel, dans la domotique ou encore dans le militaire.

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

Méthode de navigation visuelle


Chapitre I Méthode de navigation visuelle

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

I.2.1.2. Définition d’un robot mobile :


Il ya plusieurs définitions d’un robot mobile : Un robot mobile est un véhicule doté de
moyens de locomotion qui lui permettent de se déplacer, suivant son degré d'autonomie que
composé des moyens de perception et de raisonnement.
Il est considéré comme un système mécanique, électronique et informatique (la science
qui regroupe toutes ces les ensembles des disciplines permettant de mettre aux points des
robots est nommée "Robotique") agissant physiquement sur son environnement en vue
d’atteindre un objectif qui lui a été assigné [5].

I.2.2. Aperçu historique :


Le terme "Robot" a été utilisé pour la première fois en1920 par Karel Capek1 dans sa
pièce de théâtre R.U.R. (Rossums Universal Robots : Les robots universels de Rossum) en
quelle il décrit la révolte de robots) [4].
Il provient du tchèque "robota" qui signifiée corvée, travail obligatoire le terme
robotique a été employé pour la première fois par Asimov en 1941 [6] [7], ce terme fut
introduit dans la littérature en 1942 par " Isaac Asimov" dans son livre "Run-around".
En 1960, des chercheurs ont mis au point des bras robotiques, mais l’un des plus
importants était le «Unimate Arm».
Il s’agit de l’un des premiers robots industriels et est installé sur la chaîne de montage
de General Motors, ce qui permettra de réduire les risques de blessure et de mort en cours de
production Unimate est maintenant inscrit au "Robot Hall of Fame" avec "R2-D2"
(Figure I.2).

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

Depuis ce temps, les robots n’étaient encore que de la science-fiction où l’échéance


semblait très éloignée, et pourtant, lors de l'émission "Tonight Show", le présentateur Johnny
Carson présente Unimate, le premier robot industriel de l’histoire en 1961. (Figure I.3)

Figure I.3 : La première présentation au grand public d’un robot Unimate en TV


La firme Unimation qui a construit le premier robot, était presque la seule sur le marché
américain jusqu’à quinze ans après, malgré ça elle n’a commercialisé que 1000 robots, tandis
que JIRA (association japonaise de robotique industrielle) annonçait en 1975 à peu près
65000 robots D’après la JRA (Japan Robotics Association : Association du Robotique
Japonaise) en 2010 le marché de la robotique a marqué 24.9 Milliard de dollars En 2011, le
nombre total de robots industriels en service à travers le monde est estimé à 1 035 000
produits et 15,7 milliards de dollars [6].
I.3. Types des robots
On distingue deux groupes de robots, les robots fixes et les robots mobiles.
I.3.1. Les robots fixes :
Ce type de robot est généralement ancré et ne se déplace pas dans son lieu de travail, il
est conçu généralement pour faire des tâches uniques et répétitives ou précises.
Les robots fixes sont souvent utilisés dans l’industrie pour réaliser des tâches
dangereuses (soudure du châssis ou peinture de la carrosserie dans une usine automobile).
I.3.2. Les robots mobiles :
Ce type de robot a la possibilité de se déplacer dans son lieu de travail. Contrairement
aux robots fixes ce type de robot peut évoluer de type autonome dans son environnement.
Un robot mobile autonome est un système automoteur doté de capacités décisionnelles
et de moyens d’acquisition et de traitement de l’information qui lui permettent d’accomplir
sous contrôle humain réduit, un certain nombre de taches, dans un environnement non
complètement connu.

 Nous allons détailler un ensemble des robots mobiles existants.

Page 6
Chapitre I Méthode de navigation visuelle

I.4. Type des robots mobiles


Les robots mobiles sont souvent désignés (catégorisés) par leurs types de déplacement,
ci-dessous quelques types de robots mobiles.
4.1. Mobiles à roues :
Ce type de robot est le plus répandu à cause de la simplicité de conception et de
commande. Pas structure mécanique particulière.
4.2. Mobiles à chenilles :
Ce type de robot se caractérise par une meilleure adhérence au sol, utilisé dans les
terrains accidentés ou perturbés, le changement de direction se fait en imposant des vitesses
différences aux chenilles droite et gauche.
4.3. Mobiles à pattes :
Ce type est utilisé sur des terrains dont il existe une grande différence d’amplitude, son
déplacement se fait en utilisant plusieurs pattes. Ce type de robot est plus performant par
contre sa conception et commande est plus complexe.
4.4. Volatile :
Les robots volatiles existants les drones sont les plus répondus (faux-bourdon; sigle
militaire : UAV = Unmanned Aerial Vehicle) est un aérodyne sans pilote embarqué et
télécommandé qui peut emporter une charge. Ce type de robots est destiné à des missions de
surveillance, de renseignement, d’exploration, de combat, ou de transport [8] [9] [10].
4.5. Robot flottant et sous-marine :
Ils sont utilisés pour différent raisons tel que l’étude de vie sous-marine, l’étude de
pollution, l’exploration ……... etc.
4.6. Mobiles se mouvant par reptation :
Ils sont plus utilisés dans le domaine militaire. Ce type de robot se déplace par reptation
dans des galeries ou des tuyaux.

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

I.5. Classification des robots mobiles


Les robots mobiles sont classés selon plusieurs critères, notamment:
(Degré d’indépendance, Système de mouvement, Energie utilisée....), la classification la plus
intéressante, et la plus utilisée est selon leur degré d’autonomie.

Page 7
Chapitre I Méthode de navigation visuelle

Un robot est dit autonome :


 S’il est capable de choisir ses actions pour atteindre son but.
 S’il est capable d'accomplir correctement sa tâche même s’il rencontre de nouvelles
situations inattendues sans intervention humaine.
I.6. L’architecture des robots mobiles
L’architecture des robots mobiles se compose de cinq parties essentielles:
 La structure mécanique et la motricité.
 Les capteurs de navigation.
 Le système de localisation.
 Les organes de sécurité.
 Le système de traitement des informations et gestion de tache.
Les problèmes liés à la conception des robots mobiles sont les suivants:
 Conception mécanique liée à la mobilité.
 Déterminez la position et la direction.
 Déterminez le chemin optimal.
I.7. Application d’un robot mobile
Le domaine d’application des robots mobiles est vaste, nous présentons quelques
applications dans le tableau suivant :
Domaines Applications
Industrie nucléaire -Surveillance de sites
-Manipulation de matériaux
radioactifs
-Démantèlement de centrales
Sécurité civile -Neutralisation d’activité terroriste
-Déminage
-Pose d’explosif
-Surveillance de munition
Chimique -Surveillance de site
-Manipulation de matériaux toxique
Mine -Assistance d’urgence
Agricole -Cueillette de fruits
-Traite, moisson, traitement des
vignes.
Nettoyage -Coque de navire
-Nettoyage industriel
Espace -Exploration
industrie -Convoyage
-Surveillance
Sous-marine -Pose de câbles
-Cherche de modules
-Cherche de navires immergés
-Inspection des fonds marins
Militaire -Surveillance
-Pose d’explosif
-Manipulation de munitions
Tableau I.1 : Domaines d’applications des robots mobiles.

Page 8
Chapitre I Méthode de navigation visuelle

I.8. Les avantages dans l’utilisation des robots mobiles


Les différents avantages des robots mobiles peuvent être résumés comme suit:
1. Accroissement de la capacité de production.
2. Remplacement de l’homme dans l’exécution des tâches pénibles ou dangereuses.
3. Manutentions.
I.9. Le système de perception
La fonction perception consiste globalement à saisir un certain nombre d’informations
sensorielles dans le but d’acquérir une connaissance et une compréhension du milieu de
l’évolution.

Figure I.4 : Schéma de perception

La perception est un domaine crucial du robot mobile, l'élément de base du système de


perception est le capteur qui a pour objet de traduire en une information exploitable des
données représentant des caractéristiques de l’environnement.
Les moyens utilisés pour la perception de l’environnement sont nombreux. Nous citons:
 Les systèmes de vision globale (Les cameras).
 Les télémètres laser et ultrasonores.
 Les capteurs optiques et infrarouges.
 Les capteurs tactiles……………….etc.
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,
l’intégration de capteurs sur le robot mobile autonome, la précision désirée et une fréquence
d’acquisition élevée seront autant de facteurs qui augmenteront le coût d’un capteur Il s’agit
donc là d’une contrainte qui pèsera inévitablement sur le choix d’un système de perception.

Page 9
Chapitre I Méthode de navigation visuelle

I.10. Les capteurs en robot mobile


En robotique mobile, on classe traditionnellement les capteurs en deux catégories selon
qu’ils mesurent l’état du robot lui-même ou l’état de son environnement. Dans le premier cas,
à l’image de la perception chez les êtres vivants, on parle de proprioception et donc de
capteurs proprioceptifs. On trouve par exemple dans cette catégorie les capteurs de position
ou de vitesse des roues et les capteurs de charge de la batterie [11].
Dans le deuxième cas, les capteurs renseignant sur l’état de l’environnement, donc de ce
qui est extérieur au robot lui-même, sont eux appelés capteurs extéroceptifs. Il s’agit de
capteurs donnant la distance du robot par rapport aux amers de l’environnement, la
température, signalant la mise en contact du robot avec l’environnement, etc.…
Donc la classification des capteurs est généralement faite par rapport à deux familles :

I.10.1. Les capteurs proprioceptifs :


Les capteurs proprioceptifs qui fournissent des informations propres au comportement
interne du robot, c’est-à-dire sur son état à un instant donné.
On peut regrouper les capteurs proprioceptifs en deux familles [12] [13] :

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

Figure I.5 : Les capteurs proprioceptifs

Page 10
Chapitre I Méthode de navigation visuelle

I.10.2. Les capteurs extéroceptifs :


Les capteurs extéroceptifs qui fournissent des informations sur le monde extérieur au
robot.
Les capteurs extéroceptifs généralement le complément indispensable aux capteurs
présentés précédemment. Des méthodes de fusion de données seront alors utilisées pour
conditionner et traiter les informations sensorielles de natures différentes. Deux familles de
capteurs extéroceptifs embarqués peuvent être identifiées : les capteurs télémétriques par
exemple (les capteurs à ultrasons, laser et infrarouges, «Voir la figure I.6 ») et les systèmes
de vision par exemple (les caméras) [13].

Figure I.6 : Fonctionnement d’un capteur faisceau ultrasonore, LASER et IR à mesure


d’angle de réflexion et mesure la distance

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

I.11. Les caméras


L’utilisation d’une caméra pour percevoir l’environnement est une méthode attractive
car elle semble proche des méthodes utilisées par les humains et fournit une grande quantité
d’information sur l’environnement et bon marché. Le traitement des données volumineuses et
complexes fournies par ces capteurs est cependant souvent difficile, mais c’est une voie de
recherche très explorée et prometteuse pour le robot mobile.
Il est également possible d’utiliser globalement une image pour caractériser une position
ou un point de vue dans l’environnement. Il faudra alors comparer cette image aux nouvelles
images acquises par le robot pour savoir si le robot est revenu à cette position. Cette
comparaison peut faire appel à différentes techniques, notamment celles utilisées dans le
domaine de l’indexation d’image.
Lorsque le robot est en mouvement, il est également possible de tirer parti du flot
optique (le mouvement apparent des objets dans l’image, voir la figure I.7), afin d’avoir une
estimation de la distance des objets. En effet, les objets les plus proches ont un déplacement
apparent plus important que les objets lointains. Cette méthode permet notamment de réaliser
un évitement d’obstacles ou de réaliser une reconstruction tridimensionnelle de
l’environnement.

Figure I.7 : Illustration du principe de base du flot optique


En fin, même si une image en niveaux de gris ne nous fournit qu’une estimation bruitée
de la quantité de lumière renvoyée par les objets présents dans la direction pointée par la
caméra, les méthodes statistiques du traitement de l’image permettent d’en obtenir une
information pertinente adaptée à la tâche souhaitée. La vision apporte une information riche
qu’il faut savoir extraire et manipuler, en fonction des besoins, mais également des ressources
disponibles. D’autre part, la mise en place d’un système de vision pour un robot autonome est
simple à réaliser et les coûts engendrés sont largement inférieurs à ceux d’un télémètre laser,
par exemple, compte tenu de la baisse des prix des caméras de taille réduite et de bonne
qualité.
Si nous concluons que les applications de la vision au robot mobile sont nombreuses:
des problèmes de localisation et de cartographie peuvent être adressés sur la base de la vision,
de même que les tâches de navigation et d’évitement d’obstacles.

Page 12
Chapitre I Méthode de navigation visuelle

I.12. Notions sur la navigation des robots mobiles


I.12.1. Définition :
D’après Levitt et Lawton (1990), la navigation est définie comme le procédé permettant
de répondre aux trois questions suivantes:
1 -"Où suis-je ?".
2- "Où sont les autres lieux par rapport à moi ?".
3- "Comment puis-je atteindre ces autres lieux depuis l’endroit où je me trouve ?".
Donc, la navigation est la science et l’ensemble des techniques qui permettent de :
 connaître la position (coordonnées) d’un mobile par rapport à un système de référence,
ou par rapport à un point fixe déterminé (Commande de Régulation en Automatique).
 calculer ou mesurer la route à suivre pour rejoindre un autre point de coordonnées
connues en respectant un certain nombre de contraintes et de critères qui découlent de
plusieurs facteurs, qui dépendent généralement des caractéristiques du robot, de
l’environnement, et du type de tâche à exécuter (Commande poursuite de Trajectoire).
 calculer toute autre information relative au déplacement de ce mobile (distance et
durée, vitesse de déplacement, heure estimée d’arrivée, etc.)
I.12.2. Catégories de navigation :
Sont incluses plusieurs catégories de navigation, parmi eux : la navigation autonome et
la navigation semi-autonome …etc.
Nous avons besoin l’approche visuelle pour la navigation autonome seulement
(voir la figure I.8).
I.13. Navigation visuelle
Sous le vocable navigation visuelle, on désigne toutes les fonctions qu’un système
autonome doit exécuter pour planifier et exécuter ses déplacements dans un environnement
quelconque, inconnu à priori, perçu par une ou plusieurs caméras embarquées. Parmi les
fonctions que le robot mobile doit exécuter, citons:
 L’acquisition d'une image et l’extraction d’une description 2D de la scène courante. Il
s’agit d’une fonction d’interprétation qui identifie dans l’image, les entités de
l’environnement utiles pour la navigation d’un robot terrestre: zones de terrain navigable,
obstacles, chemins, amer, etc.
 la construction d’un modèle de l’environnement par fusion des descriptions acquises
depuis les positions successives du robot mobile.

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.

Figure I.8 : Schéma de classification des approches visuelles pour la navigation


autonome

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

I.13.1. Navigation visuelle en milieu intérieur :


Dans les premiers projets en robotique mobile, les séquences d’images ont été
proposées pour fournir des informations utiles à la navigation d’un robot [14]. Elles sont
généralement traitées par des méthodes de reconnaissance de formes pour détecter une cible
connue par un modelé (apparence de la cible ou modelé géométrique d'un objet) dans les
images successives. La plupart de ces approches utilisent des modèles structures [15] ; le
processus de navigation est associé à l’une des modalités suivantes :
I.13.1.1. Utilisation de cartes connues de l'environnement :
Le système dépend, pour se déplacer et se localiser, d’une carte (modèle) géométrique,
probabiliste ou topologique de son environnement. Elle est fournie par l’utilisateur [16]. Mais
ces modèles ne sont pas toujours faciles à obtenir. Les systèmes de vision permettent au robot
de se localiser dans ces modèles, en détectant certains amers de l'environnement.

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

Figure I.10 : Exemple d’un modèle géométrique du monde

I.13.1.2. Construction incrémentale d’une carte au fur et à mesuré des déplacements :


Le robot construit son propre modèle de l’environnement en utilisant l’information
provenant des déférents capteurs (ultrasons, caméras, lasers, etc.) pendant une phase
d’exploration [17]. Dans un premier temps, le robot doit acquérir un modèle adapté pour sa
propre localisation ; ce sont souvent des cartes stochastiques éparses contenant les
représentations paramétriques des amers détectes par le robot tandis qu’il se déplace dans
l’environnement.

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

Figure I.12 : Méthode on-line

Page 16
Chapitre I Méthode de navigation visuelle

I.13.2. Navigation visuelle en milieu extérieur :


Pour les milieux naturels d’extérieur, la construction d’une carte est nettement plus
compliquée, à plus forte raison quand les scènes changent dynamiquement (à cause de la
météo, de la saison, des conditions d’illumination, etc.) Ou quand d'autres agents dynamiques
partagent le même environnement (piétons, autres robots, véhicules,...).
Ce type de navigation peut être divise en deux classes suivant le type de structuration,
navigation en environnements structures ou non structures. [15]
I.13.2.1. Environnement d’extérieur structuré :
La navigation en environnement structuré d’extérieur concerne les techniques de suivi
de routes [20] ou de chemins en terrain plat). Dans ces systèmes, les modelés de
l’environnement ne sont pas exagérément complexes grâce à l’utilisation d'informations telles
que les points de fuite (vanishing points) [21, 22], ou autres propriétés géométriques de la
route ou de la voie.
Peuvent être représentés par des primitives géométriques simples (i.e., détection de
lignes droites, surfaces planes, couloirs, portes. . .).
I.13.2.2. Environnement d’extérieur non structuré :
Les environnements non structurés manquent de primitives géométriques régulières
(lignes blanches bien délimitées, largeur de la voie relativement constante, etc.) [23, 24], Sont
considérés pour des applications en milieu vraiment naturel (site planétaire, polaire, forestier.
. .) ; en milieu terrestre, ce sont de riches sources d’information contextuelle, de couleur et de
texture. Il a un niveau élevé d’autonomie.

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.

Dans la prochain chapitre, nous donnerons un aperçu général du composant (Arduino)


le plus important d’un notre robot mobile que naviguer visuellement, et dont nous allons
construire.

Page 18
Chapitre II

Présentation et tests réalisé sur l’Arduino


Chapitre II Présentation et tests réalisé sur l'Arduino

II.1. Introduction

Le système Arduino nous permet de réaliser un grand nombre d’applications dans


plusieurs domaines (pour des dispositifs interactifs autonomes simples, comme interface entre
(capteurs, actionneurs et ordinateur), réalisation des robots, le jeu de lumières, comme
programmateur de certains microcontrôleurs, communication, …etc.).

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

II.2. Généralité sur les cartes Arduino

II.2.1. Historique du projet Arduino :

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.

Et vu sa simplicité d’utilisation, Arduino est utilisé dans beaucoup d’applications


comme l’électronique industrielle et embarquée, le modélisme, la domotique mais aussi dans
des domaines différents comme l’art contemporain ou le spectacle !

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

II.2.2. Définition et le but de la carte Arduino :

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.

Il est composé d’entrées-sorties qui peuvent recevoir des signaux de capteurs ou


interrupteurs et peuvent commander des moteurs, éclairages, etc. Les projets Arduino peuvent
être autonomes ou communiquer avec un PC.

Le système Arduino simplifie la façon de travailler avec les microcontrôleurs, tout en


offrant plusieurs avantages pour les enseignants, les étudiants et les amateurs intéressés :

 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

assemblée à la main. Les cartes Arduino pré-assemblées coûtent moins de 25 Euros


(microcontrôleur inclus...).
 une compatibilité sous toutes les plate formes Windows, Linux et Mac OS
Contrairement aux autres logiciel qui ne sont en général compatibles qu’avec
Windows.
 Un environnement de programmation simple et facile à utiliser, tout en étant assez
flexible pour que les utilisateurs avancés puissent en tirer profit également.
 Logiciel Open Source et extensible : le logiciel Arduino et le langage Arduino sont
publiés sous licence open source, disponible pour être complété par des
programmateurs expérimentés. Le langage peut être aussi étendu à l’aide de librairies
C++.
 Matériel Open source et extensible : les cartes Arduino sont basées sur les
microcontrôleurs Atmel ATMEGA8, ATMEGA168, ATMEGA 328, etc.… Les
schémas des modules sont publiés sous une licence Créative Commons, et les
concepteurs de circuits expérimentés peuvent réaliser leur propre version des cartes
Arduino, en les complétant et en les améliorant. Mais il y a une condition que nous
allons aborder dans les types des cartes Arduino.
 Donne la possibilité d’allier les performances de la programmation à celles de
l’électronique : cette carte se programme sur l’ordinateur via un câble USB(ou autre)
et permet ensuite de diriger n’importe quel appareil, il suffit pour cela de modifier le
code qu’exécute l’Arduino.
 Une communauté ultra développée, de présentations de projets, de propositions de
programmes et de bibliothèques, on constante une évolution sur internet.
 Un site en anglais et un autre en français arduino.cc : toute la référence Arduino, le
matériel, des exemples d’utilisations, de l’aide pour débuter, des explications sur le
logiciel et le matériel, . . . etc.
 Existence de « shield » (boucliers en français) : ce sont des cartes supplémentaires qui
se connectent sur le module Arduino pour augmenter les possibilités comme par
exemple : afficheur graphique couleur, interface Ethernet, GPS, . . . etc. [28]

II.2.3. Les applications possibles

Cette plate forme logicielle et matérielle de création d’objets numériques permet de


programmer des circuits électroniques qui interagissent avec son entourage en la reliant
notamment à des capteurs (thermiques, de mouvement, sonores, . . . etc.).

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] :

 contrôler des appareils domestiques.


 donner une intelligence à un robot.
 réaliser des jeux de lumières.
 permettre à un ordinateur de communiquer avec une carte électronique et différents
capteurs.
 télécommander un appareil mobile (modélisme), . . . etc.

II.2.4. Les types des cartes Arduino :

Il existe plusieurs modèles de la cartes Arduino et classés selon :


• Les ≪ officielles ≫ qui sont fabriquées en Italie par le fabricant officiel : Smart
Project
• Les ≪ compatibles ≫ qui ne sont pas fabriquées par Smart Projets, mais qui sont
totalement compatibles avec les Arduino officielles.
• Les ≪ autres ≫ fabriquées par diverse entreprise et commercialisées sous un nom
diffèrent (Freeduino, Seeduino, Femtoduino ...).

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.

Figure II.1 : Les types des cartes Arduino

Page 23
Chapitre II Présentation et tests réalisé sur l'Arduino

Le type de carte dont disposons est « UNO » ou « Duemilanove » nous choisirons


d’utiliser la carte portant le nom de « UNO ».
II.3. Présentation d’une carte Arduino-UNO
II.3.1. Définition :
Est un circuit imprimé en matériel libre sur lequel se trouve un microcontrôleur qui peut
être reprogrammé pour analyser et produire des signaux électriques.
C’est la carte idéale pour commencer la programmation par Arduino. Elle présente des
caractéristiques simples de base.
La figure II.2 présente la carte Arduino-Uno et ses composants principales... etc. [27]

Figure II.2 : Composants de l’Arduino-UNO


II.3.2. Schéma simplifié de la carte Arduino-UNO :
Les signaux d’entrée-sortie du microcontrôleur sont relies a des connecteurs selon le schéma
ci-dessous. (Figure II.3). Cette figure présente le brochage des différents composants.

Figure II.3 : Schéma simplifié de la carte Arduino-UNO

Page 24
Chapitre II Présentation et tests réalisé sur l'Arduino

II.3.3. Synthèse des caractéristiques d’un Arduino-UNO :


La carte s’interface au PC par l’intermédiaire de sa prise USB. La carte est alimente par
le jack d’alimentation (utilisation autonome) mais peut être aussi alimentée par l’USB (en
phase de développement par exemple).
Le tableau ci-dessous montre les caractéristiques de la carte Arduino-UNO.
Microcontrôleur ATmega328
Tension de fonctionnement 5V
Tension d’alimentation (recommandée) 7-12V
Tension d’alimentation (limites) 6-20V
Broches E/S numériques 14 (dont 6 disposent d’une sortie PWM)
Broches d’entrées analogiques 6 (utilisables en broches E/S numériques)
Intensité maxi disponible par broche E/S (5V) 40 mA (ATTENTION : 200mA cumulé pour
l'ensemble des broches E/S)
Intensité maxi disponible pour la sortie 3.3V 50 mA
Intensité maxi disponible pour la sortie 5V Fonction de l’alimentation utilisée - 500 mA
max si port USB utilisé seul.
Mémoire Programme Flash 32 KB (ATmega328) dont 0.5 KB sont utilisés
par le bootloader
Mémoire SRAM (mémoire volatile) 2 KB (ATmega328)
Mémoire EEPROM (mémoire non volatile) 1 KB (ATmega328)
Vitesse d'horloge 16 MHz

Tableau II.1 : Caractéristiques de la carte Arduino-UNO


 Après cette présentation générale d’un les crtes arduino, les types et choisi la carte
Arduino-UNO pour posséder plusieurs des caractéristiques dont nous avions besoin, dans
la section suivante, nous effectuerons plusieurs tests afin de comprendre le mécanisme
d’exécution du Arduino, avec une petite définition de quelques composants.

II.4. Les tests réalisés


Nous construisons les tests sur les trois bases suivantes :
1- Le programme (le code) :
Les codes d’un l’environnement de programmation Arduino (IDE en anglais) des tests
réalisé, mettre dans la Annexe A (Cette base explique dans le partie logiciel "Software")
2- Schéma pratique d’un test :
C’est un des schémas, qui appartiennent à site web schématique ou (paint) d'un PC.
3- Application de test en réalité :
On va prend une photo du test réalisé que nous avons fait ou capter d’un vidéo que
filmée lors de nos tests précédents pour éviter la répétition les tests plusieurs fois.

Page 25
Chapitre II Présentation et tests réalisé sur l'Arduino

Test 1 : (Commande simple dans LED)


Schéma pratique d’un test :

Figure II.4 : Schéma pratique d’une commande simple dans LED

Application de test en réalité :

Figure II.5 : Application d’une commande simple dans LED en réalité

Test 2 : (Commander LED par Bouton)


Bouton : Utilisez pour ouvrir et fermer d’un LED

Figure II.6 : Mini bouton poussoir


Schéma pratique d’un test :

Figure II.7 : Schéma pratique d’une commander LED par Bouton

Page 26
Chapitre II Présentation et tests réalisé sur l'Arduino

Application de test en réalité :

Figure II.8 : Application d’une commander LED par Bouton en réalité

Test 3 : (Commander ensemble de LED séquentielle)

Schéma pratique d’un test :

Figure II.9 : Schéma pratique d’une commander ensemble de LED séquentielle

Application de test en réalité :

Figure II.10 : Application d’une commander ensemble de LED séquentielle en réalité

Note : On peut placer un « piezo sounder » à la fin de l’éclairage successif

Page 27
Chapitre II Présentation et tests réalisé sur l'Arduino

Figure II.11 : placer un piezo à la fin de l’éclairage successif

Test 4 : (Commander la lampe par une cellule photoélectrique et relais)

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.12 : Relais et Cellule photoélectrique


Schéma pratique d’un test :

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

C. HDX : Est un "commutateur d’inclinaison" on/off en fonction de l'angle.

Figure II.15 : HDX "commutateur d’inclinaison"

Application de test en réalité :

Figure II.16 : Application d’une commande LED par une HDX "commutateur
d’inclinaison" en réalité

Conclusion deux application

 Première application : La Commande est lié à la luminosité de la lumière.


 Deuxième application : La Commande est lié à l’angle d’un HDX.

Page 29
Chapitre II Présentation et tests réalisé sur l'Arduino

Test 5 : (Mesure la distance à l’aide d’un capteur Ultrasons HC-SR04)

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.17 : capteur Ultrasons HC-SR04 et principe de fonctionnement

Schéma pratique d’un test :

Figure II.18 : Schéma pratique d’une mesure la distance à l’aide d’un capteur
Ultrasons HC-SR04

Application de test en réalité :

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.

Figure II.22 : Lien le test réalisé dans le bâton d'un aveugle.

Page 31
Chapitre II Présentation et tests réalisé sur l'Arduino

Test 6 : (Applique le transistor comme "switch" dans le moteur)

Contrairement aux (LED et Ultrasons HC-SR04...etc.), vous ne pouvez pas connecter


un moteur à courant continu à l’une des broches de sortie de votre Arduino et vous attendre à
ce qu’il fonctionne. Les moteurs à courant continu ont des besoins en courant et en tension
qui dépassent les capacités de votre microcontrôleur (la carte Arduino) ou de votre micro-
ordinateur. Il est nécessaire d’utiliser des composants électroniques externes pour conduire et
contrôler le moteur, et vous aurez probablement aussi besoin d’une alimentation séparée.

Il existe différentes manières de commande un moteur à courant continu à partir de la


sortie de votre la carte Arduino. Un seul transistor peut être utilisé pour commander un
moteur à courant continu. Cela fonctionne bien si vous n’avez pas besoin de changer le sens
de rotation du moteur.

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.

Figure II.23 : Transistor NPN

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.

Figure II.24 : Diode

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.

Figure II.25 : principe de fonctionnement d’un moteur à courant continu

Figure II.26 : Exemple de "Moteur réducteur "

Schéma pratique d’un test :

Figure II.27 : Schéma pratique d’une application le transistor comme "switch" de


moteur

Application de test en réalité :

Figure II.28 : Application d’une la application le transistor comme "switch" de moteur


en réalité

Page 33
Chapitre II Présentation et tests réalisé sur l'Arduino

Test 7 : (Applique le transistor comme " amplifier " de moteur)

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é

Lors du changement la polarité d’alimentation, le sens de rotation du moteur est


Inverse, mais les deux applications réalisés précédemment restent les mêmes.

Page 34
Chapitre II Présentation et tests réalisé sur l'Arduino

Test 8 : (Commande manuel de deux moteurs à l’aide de la carte L298N)

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

Un pont en H est simplement un moyen de commuter la polarité de la tension appliquée


à un moteur à courant continu, contrôlant ainsi son sens de rotation, et l’utilisation de
transistors vous permet également de contrôler la vitesse du moteur avec PWM. Un pont en H
soit généralement construit à l’aide de transistors, (Voir la figure II.31).

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.

Figure II.31 : pont en H


1. A. L298N :
Fait partie d’une famille de circuits intégrés qui convient à la plupart des moteurs, notre
carte de puissance est composée de deux ponts en H. Un pont en H sont généralement réalisés
à partir de quatre transistors qui travaillent comme des interrupteurs et permettent d’obtenir
quatre états selon la façon dont ils sont commandés, des diodes rapides de protection (pour
protéger les transistors des surtensions produites par le moteur).
Un pont en H est donc simplement un interrupteur qui relie la batterie au moteur. Cet
interrupteur est généralement commandé par Quatre entrées logiques : In1, In2, In3 et In4, et
pour la commande de la vitesse il y a une deux entrées analogiques : En A et En B, (Voir la
figure II.32).
Note : Quand il n’y a pas "En A". "In1" et "In2" Ils n'ont aucun sens, autrement dit, le moteur
ne fonctionnera pas, et la même chose avec "En B", pour les deux commandes "In3" et "In4".

Page 35
Chapitre II Présentation et tests réalisé sur l'Arduino

Figure II.32 : Diagramme du L298


B. Source d’alimentation cc :
Dans ce test, n’utiliserons pas l’Arduino, et nous allons commander manuellement, (le
sens de rotation, la fermeture et l’ouverture du moteur). C’est pourquoi nous aurons besoin
d’une Source d’alimentation à courant continu ou batterie pour alimenter la carte de puissance
L298N.

Figure II.33 : Source d’alimentation cc


Schéma pratique d’un test :
Lorsque le mot couleur est rouge : + 5 volts (1)
Lorsque le mot couleur est noir : - Ground (0)

Figure II.34 : Schéma pratique d’une commande manuellement par L298N

Page 36
Chapitre II Présentation et tests réalisé sur l'Arduino

Application de test en réalité :

Figure II.35 : Application d’une commande manuellement par L298N en réalité

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

Figure II.36 : Résistance variable "potentiomètre" et Mini bouton poussoir

Page 37
Chapitre II Présentation et tests réalisé sur l'Arduino

Schéma pratique d’un test :

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é

Test 10 : (Robot mobile programmé)


Pour comprendre L298N comment ils fonctionnent avec l’Arduino nous définissons
deux fonctions.
 Première démo "demoOne" : cette fonction fait tourner les deux moteurs à une vitesse
de 200 pendant deux secondes. Il inverse ensuite les moteurs et le fait tourner pendant
deux secondes supplémentaires. Enfin, il éteint les moteurs.
 Deuxième démo "demoTwo" : cette fonction fait tourner les moteurs. Il les accélère
d’abord de zéro à pleine vitesse, puis les décélère à zéro. Encore une fois, il éteint les
moteurs quand c’est fait.
Note (appartenir à la programmation) importante parce que c’est basique :
Dans chacune de ces fonctions, la fonction "digitalWrite" d’Arduino permet de produire
des signaux logique aux sorties numériques dédié au "In1" "In2", "In3"et "In4", et la fonction
"analogWrite" d’Arduino permet de produire des signaux PWM aux sorties numériques dédié
au "En A" et "En B".
Dans la boucle "void loop", nous appelons simplement les deux fonctions, en insérant
un délai d’une seconde entre elles. Cela continue jusqu’à ce que vous éteigniez l’Arduino.

Page 38
Chapitre II Présentation et tests réalisé sur l'Arduino

Schéma pratique d’un test :

Figure II.39 : Schéma pratique d’un robot mobile programmé


Application de test en réalité :
D’abord et avant tout, nous avons choisi six sorties d’Arduino dédié au L298N

Figure II.40 : Application d’un robot mobile programmé en réalité

Test 11 : (Robot mobile commander la vitesse par deux potentiomètres)

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.

Schéma pratique d’un test :

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

Application de test en réalité :

Figure II.42 : Application d’un robot mobile commander la vitesse par deux
potentiomètres en réalité

Test 12 : (Robot mobile contrôlé totalement par un joystick)

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.

Figure II.43 : Un joystick

Page 40
Chapitre II Présentation et tests réalisé sur l'Arduino

Schéma pratique d’un test :

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é

Test 13 : (Robot mobile contrôler par téléphone portable "Bluetooth")

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.

Nous faisons cela en mettant un composant de communication entre l’Arduino et le


téléphone portable, par exemple "Module HC-05 Bluetooth", pour cela nous devons
télécharger une application à partir d’Internet qui identifie le composant.

A. Module HC-05 Bluetooth : Utiliser pour la communication entre l’Arduino et le


téléphone portable.

Figure II.46: Module HC-05 Bluetooth

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.47: Interfaces d’un la application utiliser

Schéma pratique d’un test :

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

Test 14 : (Conception un robot mobile en utilisant le circuit intégré "L293D")

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.

Figure II.50 : L293D


C. IC Prise Connecteur DE Montage :
Nous l’utilisons pour protéger les broches "pins" d’un circuit intégré "L293D".

Figure II.51 : IC Prise Connecteur DE Montage

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

Figure II.52 : Plaque d’essai


Schéma pratique d’un test :

Figure II.53 : Schéma pratique d’une conception un robot mobile en utilisant le


circuit intégré "L293D"
Application de test en réalité :

Figure II.54 : Application d’une conception un robot mobile en utilisant le circuit


intégré "L293D" en réalité

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.

3. A. Moteur drive shield board L293D pour Arduino-UNO :

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

74HC595N : Le 74HC595N est un simple circuit intégré de registre à décalage à 8 bits. En


termes simples, ce registre à décalage est un dispositif qui permet d’ajouter des entrées ou des
sorties supplémentaires à un microcontrôleur en convertissant des données entre des formats
parallèle et série.
L’arduino que nous avons choisi est capable de communiquer avec le 74HC595N à
l’aide d’informations série puis de collecter ou d’envoyer des informations dans un format
parallèle (multibroches). Elle prend essentiellement 8 bits de l’entrée série et les envoie
ensuite à 8 broches.
Ce petit circuit intégré contient un registre à décalage série-entrée parallèle à 8 bits qui
alimente un registre de stockage de type D à 8 bits avec des sorties parallèles à 3 états.

Figure II.55 : SN74HC595N

Page 45
Chapitre II Présentation et tests réalisé sur l'Arduino

Les caractéristiques et fonctionnalités d’un L293D shield board :


 2 connexions pour les servons 5V connectés au minuteur dédié haute résolution de
l’Arduino.
 Jusqu’à 4 moteurs à courant continu bidirectionnels avec sélection individuelle de la
vitesse sur 8 bits (résolution d’environ 0,5%).
 Vous pouvez utiliser 2 servos CC (unipolaire ou bipolaire) avec une bobine simple,
double bobine, entrelacée ou micro-étape. fonctionnant sur 5V et 2 moteurs pas à pas
(ou 1 moteur pas à pas et jusqu’à 2 moteurs à courant continu).
 4 ponts en H: le jeu de puces L293D fournit 0,6 A par pont (1,2 A en pointe) avec
protection thermique, peut faire fonctionner les moteurs de 4,5 à 25 V.
 Connecteurs de gros borniers permettant de connecter facilement les fils (10-22AWG)
et d’alimenter le bouton de réinitialisation Arduino en haut.
 Bornier à 2 broches et cavalier pour connecter l’alimentation externe, pour
alimentations logiques / moteur séparées.
 Testé compatible avec Arduino UNO, Leonardo, ADK / Mega R3, Diecimila et
Duemilanove.

Figure II.56: Moteur drive shield board L293D pour Arduino-UNO


B. Servomoteur :
Les servomoteurs sont appareils pouvant se tourner vers une position donnée.
Habituellement, ils ont un bras servo pouvant tourner à 180 degrés. En utilisant l’Arduino,
nous pouvons contrôler un servomoteur pour qu’il se tourne vers n’importe quelle position
spécifiée, parce qu’il existe une bibliothèque (Library) dédiée, la bibliothèque «servo», dans
le programme "logiciel" est permet de conduire un servomoteur en lui transmettant
simplement l’angle sur lequel on souhaite se positionner.

Page 46
Chapitre II Présentation et tests réalisé sur l'Arduino

Figure II.57: Micro Servo motor


Schéma pratique d’un test :

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:

Figure II.60 : La carte Arduino est connectée au L293D shield board

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

Schéma pratique d’un test :

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

Réalisation du Robot et Résultats


Expérimentales
Chapitre III Réalisation du Robot et Résultats Expérimentales

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.

La réalisation de ce robot nécessite divers notions dans plusieurs domaines


électroniques, mécaniques, informatiques et automatiques, donc nous présenterons un bref
aperçu de chaque domaine, même si nous n’avons pas écrit certaines d’entre elles, mais en
avions besoin lors des tests et processus de construction d’un robot présenté.

III.2. Présentation du projet

On va exposer les logiciels de programmation et les bibliothèques et également


expliquer pourquoi chacun d'eux 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.

III.3. Outils de logiciel utilisés

III.3.1. Le logiciel d’un la carte Arduino-UNO :


III.3.1.1. Aperçu général :
L’environnement de programmation Arduino (IDE en anglais) est une application
gratuite et open source, développé en Java elle était inspirée du langage en traitement, et dont
la simplicité d’utilisation L’IDE permet d’écrire et de modifier un programme et le convertir
en une série d’instructions compréhensibles pour la carte, permettant de commander plusieurs
instruments par des simples codes.
Le logiciel est disposé par un ensemble des bibliothèques utilisable. Après la
compilation du programme, l’utilisateur peut charger le code sur la carte arduino pour
l’exécuter qui vont être transmise à la mémoire de la carte arduino par un câble qui relie
l’ordinateur avec la carte pour la suite de façon autonome.

La figure III.4 montre l’interface visuelle du logiciel qui contient :

 Des boutons de commande en haut.


 Une page blanche vierge (pour écriture du programme).
 Une bande noire en bas (Zone des messages d’erreur ou autres envoyés par le
programme).

Page 51
Chapitre III Réalisation du Robot et Résultats Expérimentales

Figure III.1 : Interface visuelle du logiciel

III.3.1.2. Structure de programme :

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.

En plus de cette structure minimale, on peut ajouter :

 des « sous-programmes » ou « routines » qui peuvent être appelées à tout


moment dans la boucle.
 Des « callbacks », sont des fonctions qui sont rappelées automatiquement depuis
une bibliothèque visée [30].

Page 52
Chapitre III Réalisation du Robot et Résultats Expérimentales

Figure III.2 : Structure du programme Arduino

III.3.2. Le logiciel Python :

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.

Figure III.3 : Interfaces d’un logiciel Python

Page 53
Chapitre III Réalisation du Robot et Résultats Expérimentales

III.3.2.1. NumPy :

NumPy est une extension du langage de programmation Python, destinée à manipuler


des matrices ou tableaux multidimensionnels. Elle contient:

 Un objet puissant, tableau à N dimensions.


 Des outils pour l’intégration de C / C + + et Fortran.
 L’algèbre linéaire, transformée de Fourier,….

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 :

SciPy est un projet visant à unifier et fédérer un ensemble de bibliothèques Python à


usage scientifique. SciPy utilise les tableaux et matrices du module NumPy.

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 :

Est un module d’accès au port série spécial pour Python.

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

La bibliothèque OpenCV met à disposition de nombreuses fonctionnalités très


diversifiées permettant de créer des programmes partant des données brutes pour aller jusqu'à
la création d'interfaces graphiques basiques.

Cette bibliothèque s'est imposée comme un standard dans le domaine de la recherche


parce qu'elle propose un nombre important d'outils issus de l'état de l'art en vision des
ordinateurs tels que :

 Lecture, écriture et affichage d'une vidéo (depuis un fichier ou une caméra),


 Détection de droites, de segment et de cercles par Transformée de Hough,
 Détection de visages par la méthode de Viola et Jones,
 Cascade de classificateurs boostés,
 Détection de mouvement, historique du mouvement,
 Poursuite d'objets par mean-shift ou Camshift,
 Détection de points d'intérêts,
 Estimation de flux optique (traqueur de Kanade-Lucas),
 Triangulation de Delaunay,
 Diagramme de Voronoi,
 Enveloppe convexe,
 Ajustement d'une ellipse à un ensemble de points par la méthode des moindres carrés.

Utilisons cette bibliothèque pour créer le technique flux optique en Python.

 Pour comprendre la manière de communiquer entre le programme du Python et


le programme de carte Arduino, on va réaliser quelque test en réalité.

III.3.3. Les tests réalisés :

Comme nous l’avons dit au chapitre 2 : Nous construisons les tests sur trois bases.

Test 1 : (Prend les informations du programme de la carte Arduino, puis affiche-les à


l’écran en programme Python)

Page 55
Chapitre III Réalisation du Robot et Résultats Expérimentales

1- Les programmes (les codes) :


 Le code d’un logicielle Arduino IDE :

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 configuration (setup), nous initialisons la communication série à


une vitesse de 9600 baud.

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.

 Le code d’un logicielle Python :

import serial
arduinoSerialData = serial.Serial('com5',9600)
while (1==1):
if (arduinoSerialData.inWaiting()>0):
myData = arduinoSerialData.readline()
print myData

Dans notre programme, la première étape consisterait à importer la série (serial). La


bibliothèque série sera utilisée pour lire et écrire des données série.

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

2- Schéma pratique d’un test :

Il n’y a pas de schéma où nous connectons carte Arduino à l'ordinateur via une
connexion USB seulement.

3- Application de test en réalité :

Figure III.4 : Application d’un Prend les informations du programme de la carte


Arduino, puis affiche-les à l’écran en programme Python en réalité

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

1- Les programmes (les codes) :


 Le code d’un logicielle Arduino IDE :
int data;
void setup() {
Serial.begin (9600);
PinMode (LED_BUILTIN, OUTPUT);
digitalWrite (LED_BUILTIN, LOW);
Serial.println ("Hi!, I am Arduino");
}
void loop() {
while (Serial.available()){
data = Serial.read();
}
if (data == '1')
digitalWrite (LED_BUILTIN, HIGH);
else if (data == '0')
digitalWrite (LED_BUILTIN, LOW);
}
Comme indiqué précédemment, à l’intérieur de la fonction de configuration (setup),
nous initialisons la communication série à une vitesse de 9600 bauds et déclarons que nous
utiliserons la LED intégrée en sortie et baisser «LOW» au début du programme. Nous avons
également envoyé un message de bienvenue à python via l’impression en série.
Dans la fonction de boucle (loop), nous lisons toutes les données qui arrivent en série et
nous affectons la valeur à la variable «data». Maintenant, en fonction de la valeur de cette
variable («données»), nous basculons la LED intégrée comme indiqué «LOW» ou «HIGH».

 Le code d’un logicielle Python :


import serial
import time
ArduinoSerial = serial.Serial('com5',9600)
time.sleep(2)
print ArduinoSerial.readline()
print ("Entrer 1 LED ON OU 0 LED OFF")
while 1:
var = raw_input()
print "tu ai introduit", var
if (var == '1'):
ArduinoSerial.write('1')
print ("LED ON")
time.sleep(1)
if (var == '0'):
ArduinoSerial.write('0')
print ("LED OFF")
time.sleep(1)

Page 58
Chapitre III Réalisation du Robot et Résultats Expérimentales

Dans notre programme, la première étape consisterait à importer la bibliothèque de


séries (serial) et le temps (time). La bibliothèque série, comme indiqué précédemment, sera
utilisée pour lire et écrire des données série et la bibliothèque de temps pour créer des retards
dans notre programme.
Comme indiqué précédemment, 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.
Dès que l’objet série est initialisé, nous devons tenir le programme pendant deux
secondes pour que la communication série soit établie.
Maintenant, nous pouvons lire ou écrire n'importe quoi de / vers notre carte Arduino,
donc nous imprimons ce qui vient d’un la carte Arduino.
La ligne var = raw_input obtiendra toute valeur saisie dans le script Shell et affectera
cette valeur à la variable var, plus tard, si la valeur est 1, il donne «1» en série sur Arduino et
si 0, il donne «0» en série sur Arduino, nous allons basculer la LED en fonction de la valeur
reçue, lorsque vous tapez 1 dans Shell la LED est ON ou 0 dans Shell la LED est OFF,
comme nous l’avons écrit et imprimé dans Shell à la sixième ligne "Entrer 1 LED ON OU 0
LED OFF".
2- Schéma pratique d’un test :

Il n’y a pas de schéma où nous connectons carte Arduino à l’ordinateur via une
connexion USB seulement.

3- Application de test en réalité :

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.

Figure III.5 : Interfaces d’un la commande par le programme Python (Shell)

Page 59
Chapitre III Réalisation du Robot et Résultats Expérimentales

Lorsque vous en entrez 1, le résultat est le suivant:

Figure III.6 : Application d’une commande d'un LED intègre de la carte Arduino par le
programme Python ON en réalité

Lorsque vous en entrez 0, le résultat est le suivant:

Figure III.7 : Application d’une commande d'un LED intègre de la carte Arduino par le
programme Python OFF en réalité

 Dans cette partie, on va détailler l’application de la technique du flux optique


pour la commande d’un robot mobile. 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.

Page 60
Chapitre III Réalisation du Robot et Résultats Expérimentales

III.4. Application du flux optique pour la navigation visuelle

III.4.1. Principe de Fonctionnement :

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)
𝒏

Avec n est le nombre de pixels dans la moitié droite ou gauche de l’image.

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.

Il y a quatre cas sont possibles :

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

Tout ces cas sont représentés sur l’organigramme ci-dessous.

Page 61
Chapitre III Réalisation du Robot et Résultats Expérimentales

Capteur l’image vidéo par


la Webcam

Diviser l'image en deux parties (verticalement)

Calculer le flux optique


𝟏
̃ 𝒅.𝒈 (𝒕) =
𝑽 ⃗‖
∑‖𝒗
𝒏
𝒏

Comparaison de partie Gauche et

Droite avec le seuil

Gauche La partie La partie Gauche


et et
Droite < seuil Droite > seuil Gauche>seuil Droite > seuil

Stop Stop Stop


Avant
A gauche Adroite Tourner

Figure III.8 : Organigramme de navigation visuelle par le technique flux optique

Page 62
Chapitre III Réalisation du Robot et Résultats Expérimentales

III.4.2. Résultats d’application :

L’algorithme de technique flux optique pour la navigation visuelle, élaboré est écrit en Python
par plusieurs bibliothèque.

Après le assemblage des bibliothèques susmentionnée (NumPy, PySerial et Open CV...etc.), la


réalisation notre algorithme de Python pour notre robot mobile naviguer visuellement, est terminé, et
c'est comme suit :

from __future__ import print_function

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]

yg, xg = np.mgrid[step/2:h:step, step/2:w/2:step].reshape(2,-1).astype(int)

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)

yd, xd = np.mgrid[step/2:h:step, ((step/2)+(w/2)):w:step].reshape(2,-1).astype(int)


fxd,fyd = flow[yd,xd].T
d=np.sqrt(fxd**2+fyd**2)
dd=np.mean(d)

print('dd=',dd)

seuil=0.35
if gg > seuil and dd < seuil :
print(" droite ")
ArduinoSerial.write('1')

elif gg < seuil and dd > seuil :


print(" gauche ")
ArduinoSerial.write('2')

elif gg > seuil and dd > seuil:


print("Arriere")
ArduinoSerial.write('3')

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)

for (x1,y1),(x2,y2) in lines:


cv2.line(vis,(320,0),(320,480),(255,0,0),2)
cv2.line(vis,(x1,y1),(x2,y2),(0,255,0),1)
cv2.circle(vis,(x1,y1),1,(0,255,0), -1)

for (x3,y3),(x4,y4) in lines1:


cv2.line(vis,(x3,y3),(x4,y4),(0,0,255),1)
cv2.circle(vis,(x3,y3),1,(0,0,255), -1)
return vis

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

Après ce résultat, le deuxième résultat est comme suivant :


Etape 2 :
Avec une note : le seuil = 0.35

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

À partir l'expérience acquise dans les cartes de puissance, on choisit la carte de


puissance L298N, pour contenir à bon nombre des caractéristiques, ce qui distingue des
autres.

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.

III.5. le code d'un logiciel Arduino qu’appliquons à notre robot mobile

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);

duration = pulseIn(echoPin, HIGH);


distance = (duration / 2) * 0.0343;

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

III.6. Construction notre robot mobile que naviguer visuellement

III.6.1. Schéma pratique d’un notre robot mobile :

Figure III.11 : Schéma pratique d’un notre robot mobile

III.6.2. Application d’un notre robot mobile en réalité :


Les composants dont nous avons besoin est suivant :

Figure III.12 : Matériel utiliser pour construction notre robot mobile

Page 68
Chapitre III Réalisation du Robot et Résultats Expérimentales

Un composant que nous avons ajouté plus tard

Figure III.13 : Capteur ultrasonique et support


Etape 1 :
Le processus de percer la plate-forme après la coupe (Couper la plate-forme en forme ronde
avec un diamètre de 30 cm).

Figure III.14 : Percer la plate-forme


Etape 2 :
Installer les moteurs à CC en place sur la plate-forme.

Figure III.15 : Installer les moteurs à CC

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.

Figure III.16 : Installation le circuit électrique

Etape 4 :

Et enfin, notre robot mobile que naviguer visuellement est devenir comme suivant :

Figure III.17 : La dernière construction

Page 70
Chapitre III Réalisation du Robot et Résultats Expérimentales

Figure III.18 : Notre robot mobile que naviguer visuellement

III.7. Résultats de Navigation

Dans ce qui suit, on va donner quelques exemples de navigation automatique du robot


mobile réalisé :

Figure III.19 : Détection d'obstacle (à gauche) et évitement à droite

Page 71
Chapitre III Réalisation du Robot et Résultats Expérimentales

Figure III.20 : Détection d'obstacle (à droite) et évitement à gauche

Figure III.21 : Détection d'obstacle (à droite et à gauche) et évitement jusqu'à ce que


les flux optiques moyens de la partie gauche et droite soient inférieurs le seuil.

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 :

 Première partie : Pour comprendre la manière de communiquer entre le programme du


Python et le programme de carte Arduino, nous avons réalisé quelque test en réalité,
nous conclusions que la bibliothèque très importante dans ce processus est PySerial.
 Deuxième partie : Pour développement l'algorithme de navigation visuelle, nous avons
besoin la technique du flux optique, c'est pourquoi ensemble toutes les bibliothèques
(NumPy, Pywin32 et Open CV...etc.) pour créer cette technique.

Après la mise en œuvre réussie du processus (application la technique du flux optique et


la communication avec la carte) en réalité, les résultats obtenus montrent que le robot peut
détecter les obstacles et peut décider à les éviter. Donc la partie software est terminée.

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 :

 Première plate-forme : Installé les moteurs CC et mettons le circuit électrique pour


contrôler cette moteurs.
 Deuxième plate-forme : Nous mettons le PC au dessus la plate-forme pour le
traitement d'image d'un environnement proche et émette les informations à la carte
Arduino.

Page 73
Conclusion Générale

Conclusion Générale

Dans ce travail, on a étudié le problème de navigation visuelle d’un robot mobile


autonome par l’utilisation de la méthode du flux optique. En simulant cette approche par
Python et Opencv. Nous avons appliqués cette méthode sur une séquence des images captées
par la caméra (La webcam dans notre cas). Le but de cette étude est d’utiliser cette information
pour une navigation autonome d’un robot mobile à roue. Puis, on a fait la mise en œuvre réel de
cette stratégie sur un robot mobile réalisé.
Nous avons divisé notre travail en quatre parties principales :

 Dans la première partie, on a fait un état de l’art sur le domaine de la robotique


mobile en examinant en bref les définitions des robots mobiles, différents
éléments constitutifs, les capteurs utilisés et la navigation visuelle en utilisant les
caméras de perception, et bien sûr les méthodes de navigation visuelle.

 Dans la deuxième partie, nous avon donné un aperçu général du composant


(Arduino) le plus important d’un notre robot mobile que naviguer visuellement,
où on a 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, et 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, et 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.

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

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

et logicielle de l’arduino. Centre de Ressources Art Sensitif, novembre 2006,


http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr.
- [28] olyte Eskimon : Arduino pour bien commencer en électronique et en programmation.
www.openclassrooms.com/. Consulté en 2015.
- [29] Eskimon : Les différents moteurs pas-à-pas et leur fonctionnement. Www. eskimon.fr/290-
arduino-603-petits-pas-le-moteur-pas-pas. Mise en ligne 2014, consulté en 2015.
- [30] Abdelaaziz DJERIOUAT et Leila Hanane KLOUCHE DJEDID : "Mise en oeuvre de
cartes de commande basées sur le module de prototypage Arduino pour moteurs moteurs pas à
pas", Université Abou Bekr Belkaïd de Tlemcen Faculté de Technologie, consulté en 17 Juin 2015

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

Figure B.1 : L298N

Page 11
Annexe B

Annexe B.2 : Fiches techniques de CI utilisés dans les tests 14,15 et 16.
Datasheet : L293D

Figure B.2 : 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.

‫ملخص‬

‫ ونكشف برامج البرمجة‬، ‫ لتجنب العقبات‬، ‫ قدمنا دراسة حول التنقل المرئي لروبوت متنقل مستقل‬، ‫في هذا العمل‬
، ‫ لتطوير خوارزمية التنقل البصري بواسطة تقنية التدفق البصري‬، ‫والمكتبات و كما يتم شرح سبب استخدام كل منها‬
‫تتمثل الفكرة في استخدام الصورة التي حصلت عليها كاميرا الروبوت لتحديد اتجاه الحركة لتجنب االصطدام بالعوائق‬
، ‫ ثم كاستمرار للعمل‬، ‫ على كاميرا الويب الخاصة بالكمبيوتر المستخدمة لدينا‬، ‫ لذلك قمنا بمحاكاة الخوارزمية‬، ‫القريبة‬
‫ نصمم الروبوت المتحرك الذي يتنقل‬، ‫أخيرا‬
ً .‫ من أجل اكتشاف العقبات وتجنبها‬، ‫نخطط لتطبيقه على روبوتنا المحمول‬
.‫بصريًا‬

‫تجنب العقبة‬، ‫المالحة البصرية‬، ‫التدفق البصري‬، ‫ روبوت متنقل‬: ‫الكلمات المفتاحية‬