Vous êtes sur la page 1sur 94

[Tapez un texte]

Partie I : ...................................................................................................................................... 6
Phase d’étude et planification .................................................................................................... 6
Chapitre I : Introduction à la robotique ............................................................................................7
I. Introduction : .........................................................................................................................7
II. Composition des systèmes robotiques : .............................................................................8
1) Les processeurs embarqués: ...........................................................................................9
2) Les capteurs : ................................................................................................................10
3) Les systèmes de vision : ...............................................................................................12
4) Les effecteurs ...............................................................................................................14
5) Les systèmes de locomotion :.......................................................................................14
6) Systèmes de communication : ......................................................................................16
III. Les fonctions de la robotique ...........................................................................................17
Chapitre II : Etude théorique et Inception ......................................................................................18
I. Introduction : .......................................................................................................................18
II. Mise en contexte: .............................................................................................................18
1) Principe et fonctionnalités du safety-bot : ....................................................................18
2) Schéma explicatif du projet : ........................................................................................19
III. Etude détaillée du système informatique embarqué sur le Safety-bot : ...........................20
1) Système de communication par WIFI : ........................................................................20
2) Système de traitement : ................................................................................................21
3) Les entrées /Sorties : ....................................................................................................21
IV. Etude de la cinématique du robot et de la commande des moteurs : ...............................22
1) Commande des moteurs par PWM : ............................................................................22
2) Etude de la cinématique du robot: ................................................................................22
V. Architecture matérielle adoptée : .....................................................................................25
Chapitre III : Gestion de projet et planification .............................................................................27
I. Introduction : .......................................................................................................................27
II. Structure du projet et planification : ................................................................................28
1) La partie « commande du robot » : ..............................................................................28
2) La partie « Télésurveillance et vision » : .....................................................................28
3) La partie « Construction et intégration » :....................................................................28
4) Diagramme de gantt : ...................................................................................................29
III. Conclusion .......................................................................................................................30

1
[Tapez un texte]

Partie II : ................................................................................................................................... 31
Commande du robot ................................................................................................................. 31
Chapitre I : Phase d’étude et de modélisation ................................................................................32
I. Introduction : .......................................................................................................................32
II. Transmission des données: ..............................................................................................33
1) Introduction sur la programmation socket : .................................................................33
2) Architecture Client/Serveur : .......................................................................................33
III. Carte électronique utilisée : .............................................................................................33
1) Description de la carte électronique utilisée : ..............................................................33
2) Mode de fonctionnement de la carte : ..........................................................................34
IV. Spécification générale de la partie commande : ..............................................................35
Chapitre II : Phase de conception ...................................................................................................37
I. Introduction : .......................................................................................................................37
II. Diagrammes d’états/Transitions et activités : ..................................................................37
III. Mode de contrôle du robot : .............................................................................................39
IV. Mode autonome : Exécuter un circuit préenregistré : ......................................................41
V. Diagramme des classes : ..................................................................................................42
VI. Elaboration de la base de données : .................................................................................44
1) Besoins : .......................................................................................................................44
2) Liste des données : .......................................................................................................44
3) Dictionnaire des données .............................................................................................45
4) Schéma logique des données : ......................................................................................45
5) Modèle relationnel : .....................................................................................................46
VII. Conclusion : .....................................................................................................................46
Chapitre III : Phase de réalisation ..................................................................................................47
I. Introduction .........................................................................................................................47
II. Environnement logiciel ....................................................................................................47
1) Rational Rose ...............................................................................................................48
2) NetBeans ......................................................................................................................48
3) PostgreSQL ..................................................................................................................48
4) Qt Jambi .......................................................................................................................49
5) La mise en place d’une connexion réseau Ad-hoc .......................................................49
6) La création et la connexion à la base de données .........................................................51

2
[Tapez un texte]

III. De l’émission de l’ordre…à la carte : ..............................................................................53


IV. Afficher le chemin : .........................................................................................................57
V. Conclusion : .....................................................................................................................58
Partie III : ................................................................................................................................. 59
Télésurveillance et vision ......................................................................................................... 59
Chapitre I Analyse Fonctionnelle ..................................................................................................60
I. Introduction : .......................................................................................................................60
II. Diagrammes de cas d’utilisation : ....................................................................................61
Chapitre II : Conception .................................................................................................................64
I. Introduction : .......................................................................................................................64
II. Diagrammes de séquences : .............................................................................................64
III. Diagrammes d’activités : .................................................................................................68
Chapitre III : Réalisation ................................................................................................................72
I. Les techniques de détection du mouvement : ......................................................................72
1) Introduction : ................................................................................................................72
2) Techniques de Détection du mouvement : ...................................................................73
3) Soustraction de l’image de fond : .................................................................................74
4) Mise à jour de l’image de fond : ..................................................................................76
II. Transmission de données : ...............................................................................................78
1) Introduction : ................................................................................................................78
2) Transmission de flux vidéo : ........................................................................................78
3) Importation de données : ..............................................................................................80
III. Mode autonome : .............................................................................................................81
IV. Conclusion : .....................................................................................................................82
Partie IV : Phase d’intégration ................................................................................................. 83
I. Interfaces de l’application : .................................................................................................84
1) Menu principal : ...........................................................................................................84
2) Mode autonome : ..........................................................................................................85
II. Mise en œuvre du Robot : ................................................................................................85

3
[Tapez un texte]

Introduction générale

Présente dans tous les secteurs, l’informatique s’impose comme une discipline
scientifique pluridisciplinaire et dont les domaines d’application restent très nombreux. En effet,
parmi les différentes branches informatiques on peut citer l’informatique scientifique,
l’informatique de gestion, l’ingénierie des connaissances ou encore les systèmes embarqués. Les
différents domaines d’application vont de la biologie avec la bioinformatique à l’aéronautique et
l’espace avec les systèmes de transmission satellitaires ou l’avionique en passant par la gestion du
flux d’information en entreprise avec l’ingénierie des systèmes d’information.

Parmi les domaines d’application en plein essor, l’industrie de la robotique s’impose


comme l’une des plus prometteuses. Il y a une vingtaine d’années, la robotique s’est développée
initialement dans le domaine manufacturier sous forme de bras manipulateurs destinés à des tâches
de soudure, de peinture, de manutention, d’assemblage. Cette robotique, dite industrielle, a permis
un accroissement important de la productivité et de la flexibilité des ateliers de production en
soulageant l’homme de travaux pénibles.
Toutefois, l’univers de la production est relativement bien structuré et déterministe, si bien que le
robot industriel peut travailler le plus souvent "en boucle ouverte" par rapport à son environnement.

Au-delà de l’activité manufacturière, la robotique a diffusé dans de nombreux autres


domaines où l’environnement est moins bien connu, voire incertain ou même hostile. C’est le cas
par exemple en robotique agricole où les tracteurs robotisés évoluent dans un environnement naturel
peu structuré avec des conditions d’adhérence très variables, mais aussi dans les domaines du
nucléaire, de la route automatisée, de la robotique spatiale et sous-marine, sans oublier la robotique
humanoïde.

La robotique est par essence une discipline transversale qui met à contribution l’essentiel
des domaines scientifiques des sciences de l’ingénieur : la mécanique au niveau des modèles des
systèmes poly-articulés, de la locomotion et de la préhension, l’automatique pour la planification de

4
[Tapez un texte]

trajectoires et la commande en boucle ouverte ou fermée, l’électronique pour l’implémentation des


contrôleurs en temps réel et l’instrumentation, l’informatique au niveau du traitement des données
capteurs et des langages de programmation, la vision par ordinateur et le traitement d’images…
jusqu’aux sciences sociales et politiques qui doivent prendre en compte l’irréversibilité du progrès
technique dans l’organisation des sociétés humaines du futur.

Attirés par cet aspect généraliste et pluridisciplinaire nous avons décidé de nous lancer le
défi de concevoir et développer un robot. A travers ce robot nous voulions appliquer l’ensemble des
connaissances acquises à l’ESTI et nous ouvrir sur d’autres compétences et connaissances
scientifiques comme l’imagerie numérique, l’électronique ou même la mécanique.

Nous avons décomposé ce rapport en 4 parties, qui décrivent l’enchainement logique que
nous avons adopté afin de mener à bien ce projet. Dans la première partie nous allons évoquer
l’étude que nous avons faite du domaine de la robotique ainsi que la spécification du projet qu’on
en a déduite. Dans les deux autres parties nous allons aborder la conception et la réalisation des
deux modules qui composent notre Robot.

5
[Tapez un texte]

Partie I :

Phase d’étude et planification

6
[Tapez un texte]

Chapitre I : Introduction à la robotique

I. Introduction :
La robotique est un domaine dont l’importance croît d’année en année, et qui est considérée comme
l’un des domaines scientifiques et industriels les plus stratégiques au niveau mondial. Plusieurs
centaines d’entreprises et de multinationales se spécialisent dans la recherche et la fabrication du
matériel de robotique. De plus, la robotique trouve son application dans des champs de recherche
très variés comme la médecine, l’astrophysique, les télécommunications, le transport et la
production de matériels et d’équipements de haute technologie.

La robotique regroupe un très vaste domaine d’activités du génie humain. Plus de 700 000 robots
sont à l'œuvre aujourd’hui dans l’industrie mondiale et des milliers d’autres sont utilisés pour les
sciences de l’éthologie, de la médecine et de la recherche spatiale.

À peine âgée de cinquante ans, la robotique profite de la progression rapide des micros technologies
et des nanotechnologies pour évoluer vers une forme d’intelligence artificielle qui dépasse
l’imagination des plus prolifiques auteurs de science-fiction.

Pourtant, c’est à un auteur de science-fiction, Isaac Asimov (1926-1996), que l’on doit le terme
robotique et les trois lois qui doivent régir la fabrication des robots.

 Première loi : Un robot ne peut porter atteinte à un être humain ni, restant passif, laisser cet
être humain exposé au danger.
 Deuxième loi : Un robot doit obéir aux ordres donnés par les êtres humains, sauf si de tels
ordres sont en contradiction avec la première loi.
 Troisième loi : Un robot doit protéger son existence dans la mesure où cette protection n’est
pas en contradiction avec la première et la deuxième loi.

Ainsi, la robotique est définie comme devant servir et protéger l’être humain. Nous pourrions aussi
ajouter : et s’en inspirer. Car, en comparant les fonctions humaines et celles des systèmes
robotiques existants, nous découvrons que les chercheurs et les inventeurs s’inspirent depuis
toujours de la physiologie humaine, que ce soit pour créer des machines simples, des robots
industriels ou des androïdes.

La robotique est née, il y a très longtemps, du désir des humains de se dépasser. Après avoir inventé
des machines pour se servir et se protéger, l'humain a voulu aller plus loin. Jusque dans l’espace,
même.

7
[Tapez un texte]

II. Composition des systèmes robotiques :


Un robot est une machine complexe, parce qu’elle peut « apprendre » à faire des travaux répétitifs,
dangereux ou aller dans des endroits inaccessibles (très petits) ou hostiles (comme dans l’espace ou
sous la mer). Le robot est donc une machine ou un dispositif qui fonctionne de façon automatique
ou en réponse à une commande à distance. Un grille-pain automatique ou un four à micro-ondes
sont des robots au même titre que le robot manipulateur de la Station spatiale internationale. Les
robots peuvent presque tout faire : respirer des parfums, détecter des produits défectueux dans une
chaîne de montage, « voir » comme un œil humain, assembler des pièces compliquées avec minutie
et perfection. Il y a aussi des robots dits « intelligents », capables de s’instruire, de travailler et de
prendre des décisions.

La robotique est l’étude et la technologie des robots. Elle permet d’élaborer des mécanismes
automatisés capables de remplacer l’être humain dans certaines fonctions. On peut classer les
systèmes qui composent les robots en six grandes familles, qui sont semblables aux fonctions du
corps humains :

Le système humain Le système robotique Fonctions

Ils ont des fonctions de


direction des opérations.
Le cerveau Les processeurs embarqués
Exemple : Les
microcontrôleurs industriels

Ils permettent de capter de


La peau, le nez, les oreilles,
Les capteurs l’information tactile,
les papilles
lumineuse ou sonore.

Ils fonctionnent avec des


signaux optiques, capables de
Les yeux Les systèmes de vision
« voir ». Exemple : une
webcam.
Ils exécutent toutes les
fonctions de manipulation ou
Les bras, les mains Les effecteurs de soutien d’outils : pinces,
perceuses, perches,
marteaux, balais, etc.
Ils utilisent des mécanismes
reliés au mouvement : roues,
Les pieds Les systèmes de transport
pieds, ailes, hélices, fusées,
etc.

8
[Tapez un texte]

Ils servent à communiquer ou


Scientifiquement non
Les systèmes de à agir à distance. Exemple :
identifié à ce jour chez
télécommunications le téléphone, l’Internet, le
l’humain !
télécopieur.

Tableau I : Analogie Homme/ Robot

1) Les processeurs embarqués:


Le processeur est l’équivalent du cerveau en robotique. Il contrôle, décide, oriente et interprète les
programmes et commande les actions. Les ordinateurs, les puces avec mémoire, les systèmes
informatiques sont des processeurs. Lorsque ces appareils sont minuscules, on les nomme
microprocesseurs.

Figure I.II.1 : microprocesseurs

Pour construire une habitation dans l’espace comme la station spatiale, le cerveau humain doit
déployer des prodiges d’imagination et de logique. Mais aujourd’hui, il n’est plus seul. Des
ordinateurs superpuissants font pour lui les calculs les plus complexes, exécutent des programmes à
haute vitesse commandant de nombreux systèmes robotiques. Les plus récents systèmes robotiques
sont si petits qu’ils sont pratiquement invisibles! Bientôt, ces nano machines vont permettre de
construire des usines microscopiques et des robots qui nagent dans les artères et les réparent! Ainsi,
la taille et le poids des interfaces d’ordinateur se réduisent de plus en plus, ce qui est un avantage
fabuleux dans l’espace.

Les styles architecturaux de ces processeurs varient selon la fonction et le domaine d’application du
robot. Parmi les processeurs les plus utilisés on a :

 Les processeurs DSP : Principalement utilisé dans le traitement numérique du signal. Les DSP
sont utilisés dans la plupart des applications du traitement numérique du signal en temps réel.
Exemple : Robot contrôlé à distance via une connexion WIFI.

9
[Tapez un texte]

 Les processeurs ARM : Ce sont des processeurs à architecture RISC. les processeurs ARM
font partie des processeurs dominants sur le marché de l’informatique embarquée en
particuliers dans le secteur de la téléphonie mobile et les tablettes.

 Les microcontrôleurs : Un microcontrôleur se présente sous la forme d’un circuit intégré


réunissant tous les éléments d’une structure à base de microprocesseur. Voici généralement
ce que l’on trouve à l’intérieur d’un tel composant :

 Un microprocesseur (C.P.U)
 De la mémoire de donnée (RAM et EEPROM)
 De la mémoire programme (ROM, OTPROM, UVPROM ou EEPROM)
 Des interfaces parallèles pour la connexion des entrées / sorties
 Des interfaces séries (synchrone ou asynchrone) pour le dialogue avec d’autres
unités
 Des timers pour générer ou mesurer des signaux avec une grande précision
temporelle

Parmi les circuits imprimés dans lesquels on peut trouver des microcontrôleurs, et qui sont très
utilisés en robotique, on peut citer les modules Arduino.

 Les circuits logiques programmables (FPGA) : Ce type de produit peut intégrer dans un seul
circuit plusieurs fonctions logiques programmables par l’utilisateur. Sa mise en œuvre se fait
très facilement à l’aide d’un programmateur, d’un micro-ordinateur et d’un logiciel adapté.

2) Les capteurs :
Les capteurs sont des systèmes permettant au robot de recueillir de l’information dans le milieu qui
l’entoure. Il y a des capteurs tactiles (toucher), sonores, lumineux et calorifiques (chaleur). Le
système de vision artificielle est une version à part de ce type de système.

Les capteurs s’apparentent beaucoup à nos sens. De fait, nos mains, qui peuvent toucher et ressentir
la chaleur, nos oreilles, qui peuvent entendre, nos yeux, qui peuvent voir, et même notre nez, qui
peut sentir, sont de parfaits exemples de capteurs.

Nos sens captent des sensations et les transmettent à notre cerveau, notre « processeur ». On voit
bien que l’humain a vraiment conçu le robot pour qu’il lui ressemble... en quelque sorte!

Voici un aperçu des types de capteurs qu’on peut trouver dans l’industrie de la robotique :

10
[Tapez un texte]

LES CAPTEURS LES PLUS FREQUENTS...


Produisent dans l'axe du capteur un champ magnétique oscillant.
Ce champ est généré par système constitué d'une selet d'une
Inductif. capacité montée en parallèle. Lorsqu'un objet métallique pénètre
dans ce champ, il y a perturbation de ce champ, atténuation du
champ oscillant.
Capteurs de proximité qui permettent de détecter des objets
métalliques ou isolants. Lorsqu'un objet entre dans le champ de
Capacitif. détection des électrodes sensibles du capteur, la fréquence des
oscillations est modifiée en même temps que la capacité de
couplage du condensateur.
Capteur photoélectrique ou se compose d'un émetteur de lumière associé à un récepteur. La
optique. détection d'un objet se fait par coupure du faisceau lumineux
Ce sont des capteurs à contact. Ils peuvent être équipe d'un galet,
d'une tige souple, d'une bille. L'information donnée par ce type de
Capteur de position.
capteur est de type tout ou rien et peut être électrique ou
pneumatique.
Un capteur ILS est un capteur de proximité composé d'une lame
souple sensible à la présence d'un champ magnétique mobile.
Lorsque le champ se trouve sous la lame, il ferme le contact du
Capteur ILS (Interrupteur à
circuit provoquant la commutation du capteur. Ce capteur se monte
Lame Souple)
directement sur un vérin et permet de détecter des positions autres
que les positions extrêmes. Pour utiliser ce type de capteur, il est
nécessaire d'utiliser un vérin comportant un aimant sur le piston.
Les capteurs à fuite sont des capteurs de contact. Le contact avec
l'objet à détecter peut se faire soit par une tige souple, soit par une
bille. Pour pouvoir fonctionner correctement, ces capteurs doivent
être couplés avec un relais pour capteur à fuite. Le capteur est
Capteurs à fuite. alimenté en pression par le relais. L'air peut alors s'échapper de ce
capteur par un orifice prévu à cet effet. Lorsque la bille ou la lame
souple est déplacée dans son logement, elle obture l'orifice
d'évacuation d'air et le relais pour capteur à fuite se déclenche et
émet un signal à la pression industrielle.
pyromètre, thermomètre, sonde PT100, thermocouple,
Capteur de température :
thermistance...
tube de Bourdon, capsule anéroïde, piézo-électrique, corde
Capteur de pression :
vibrante, baromètre, hypsomètre...
photodiode ou phototransistor, capteur photographique, cellule
Capteur de lumière :
photoélectrique...
débitmètre à turbine, roues ovales, plaque à orifice, tube de Pitot,
débitmètre à effet vortex, débitmètre, électromagnétique,
Capteur de débit :
débitmètre à Venturi, débitmètre à ultrasons, débitmètre ionique,
débitmètre massique...
Capteur de courant : Capteur de courant à effet Hall, Shunt...
Capteur de son : microphone, hydrophone...

11
[Tapez un texte]

Tableau II : Les types de capteurs

3) Les systèmes de vision :


Les systèmes de vision artificielle, tout comme l’œil humain, recueillent des signaux optiques. Ils
peuvent « voir » d’autres parties du spectre électromagnétique tel que les hyperfréquences et
l’infrarouge, contrairement à notre œil.

Par exemple le système canadien de vision spatial, mis à bord des navettes et de la Station spatiale
internationale, fournit en temps réel des données sur l’orientation, l’emplacement et la position dans
l’espace d’un objet. Sa précision est telle qu’il peut dire si l’objet avance, recule ou tourne, en
utilisant des repères visuels synthétiques, puisque dans un environnement comme l’espace, il n’y a
pas de repères naturels pour identifier où se trouvent le haut et le bas.

Parmi les disciplines connexes qui nous permettent d’extraire de l’information ou à partir d’une
suite d’image on a :

 La reconnaissance des formes : Le problème que cherche à résoudre la reconnaissance des


formes est d'associer une étiquette à une donnée qui peut se présenter sous forme d'une image
ou d'un signal. Des données peuvent recevoir la même étiquette, ces données sont les
réalisations ou les exemplaires de la classe identifiée par l'étiquette. Par exemple, le son /a/
prononcé par différents locuteurs conduit à des signaux différents mais ces différences ne sont
pas significatives du point de vue de l'identification du son, ces signaux sont des réalisations
de la classe /a/. De même, l'écriture manuscrite du caractère A varie d'un scripteur à l'autre
mais le lecteur identifiera le caractère A pour chacune de ces réalisations.

Des méthodes générales ont été développées en reconnaissance des formes pour extraire
automatiquement des informations des données sensibles afin de caractériser les classes de
formes (apprentissage) et d'assigner automatiquement des données à ces classes
(reconnaissance). La mise en œuvre de ces méthodes générales pour des problèmes
particuliers amène à introduire la notion de processus de reconnaissance qui pose la question
de l'intégration des méthodes de la reconnaissance de formes dans un système qui a pour but
de reconnaître des formes.

Parallèlement aux travaux sur les méthodes de reconnaissance, se développaient le traitement


d'image, la vision par ordinateur, et le traitement de la parole. Ces domaines ont focalisé le
problème de la reconnaissance sur des données spécifiques, mais par ailleurs ils ont permis de
situer la reconnaissance dans un processus plus vaste d'interprétation d'image ou de
compréhension de la parole impliquant des niveaux de perception et des connaissances
propres au domaine.

 Vision industrielle : La vision industrielle est utilisée au niveau des chaines de production afin
de contrôler la cadence de production ou encore gérer le flux d’objet au niveau de ces chaines.
Par ailleurs la vision industrielle peut être utilisée dans la robotique non déterministe où la
machine doit prendre une décision en fonction des événements auxquelles elle est confrontée.

Parmi les applications de la vision par ordinateur au domaine de la robotique on peut citer :

12
[Tapez un texte]

 évitement d'obstacle
 reconstruction 3D
 environnement non structuré / hostile
 temps réel primordial

Le system de vision varie selon le domaine d’application, le milieu physique et les fonctions du
robot.

Phénomène Physique Grandeur mesurée Capteur

CCD, CMOS,
Émission et réflexion Réflectance, luminance,...
Barrettes CCD,...
de la lumière visible

Rayonnement Luminance IR (chaleur), ... Bolomètres,...

infrarouge

Échographie,
Distance, densité de tissus,...
Écho ultrasonore sonar,

Présence d'un corps


IRM, RMN,...
Résonance magnétique chimique,...

Distance, spécularité de
Radar, SAR,...
Écho électromagnétique surfaces,

Radiographie,
Absorption des rayons X Densité de tissus,...
tomographie,...

Tableau III : Phénomènes physiques, image et capteurs

13
[Tapez un texte]

4) Les effecteurs
Dans le corps humain, les effecteurs sont les messagers qui réagissent quand un des sens (capteurs)
demande une action. En robotique, les effecteurs « effectuent » les tâches « manuelles » demandées
par l’utilisateur à l’aide de leurs terminaisons-outils. Exemple : Bras manipulateur.

5) Les systèmes de locomotion :


Pour vous déplacer d’une pièce à l’autre dans la maison, vous avez le choix de marcher, ramper,
sauter ou encore de vous y prendre d’une multitude d'autres façons. Lorsqu'on fabrique un robot, il
est important de déterminer comment celui-ci se déplacera. Certains robots sont munis de roues,
comme les tracteurs. D’autres font partie d’une chaîne de montage, ce qui signifie qu’ils demeurent
au même endroit pendant que les objets qui sont fabriqués, ou réparés se déplacent sur un tapis
roulant.

Concernant la robotique mobiles voici un échantillon des bases mobiles les plus utilisées :

 Les plateformes différentielles :

Figure I.II.5.a : Pioneer 2 DX de la société ActivMedia

Une des configurations les plus utilisées pour les robots mobiles d’intérieur est la configuration
différentielle qui comporte deux roues commandées indépendamment. Une ou plusieurs roues folles
sont ajoutées à l’avant ou à l’arrière du robot pour assurer sa stabilité. Cette plate-forme est très
simple à commander, puisqu’il suffit de spécifier les vitesses des deux roues, et permet de plus au
robot de tourner sur place.

V
r ω

ω
1
Figure I.II.5.b : Exemple de plate-forme différentielle
14
[Tapez un texte]

L’estimation du déplacement par odométrie est également très simple à partir de la mesure des
vitesses de rotation des deux roues ω1 et ω2. Les vitesses de translation v et de rotation ω sont en
effet données par :

 V= (ω1r + ω2r)/2
 ω = (ω1r - ω2r)/2L

Ce type de plate-forme peut également être utilisé avec des chenilles ce qui fournit une capacité de
franchissement de petits obstacles intéressante Ces plates-formes peuvent ainsi être utilisées en
milieu urbain, ou dans des décombres. L’utilisation de chenilles conduit cependant à une odométrie
très bruitée à cause du contact mal défini entre les chenilles et le sol.

 Les plates-formes omnidirectionnelles :

Les plates-formes omnidirectionnelles permettent de découpler de manière encore plus nette le


contrôle de la rotation et de la translation d’un robot. Elles utilisent pour cela 3 ou quatre roues qui
tournent à la même vitesse pour fournir une translation et un mécanisme qui permet d’orienter
simultanément ces roues dans la direction du déplacement souhaitée. Le corps du robot lui-même
n’effectue pas de rotation mais uniquement des translations. Ce système permet un contrôle très
simple et relativement rapide car les changement de direction ne concernent que les roues et
peuvent donc se faire très vite. Par contre ces plateformes sont relativement limitées en capacité de
franchissement et requièrent un sol très plan.

Figure I.II.5.c : Exemple de plate-forme différentielle

 Les plates-formes non holonomes :

15
[Tapez un texte]

Des plates-formes non holonomes, de type voiture, sont également utilisées en robotique mobile.
Ces plates-formes sont toutefois plus difficiles à commander car elles ne peuvent pas tourner sur
place et doivent manœuvrer, ce qui peut être difficile dans des environnements encombrés.

Figure I.II.5.d : Exemple de plate-forme non holonome.

 Les plateformes à pattes :

Des plates-formes à deux, quatre ou six pattes peuvent également être utilisées. Les plates-formes
à six pattes sont relativement pratiques car le robot est en équilibre permanent, ce qui facilite le
contrôle. Les plates-formes à deux ou quatre pattes sont plus complexes à commander et le simple
contrôle de la stabilité et d’une allure de marche correcte reste aujourd’hui difficile, ce qui les
rend en général relativement lentes. L’odométrie de ce type de plates-formes est de plus
généralement de très faible qualité. Ces différents facteurs font que ces plateformes sont rarement
utilisées quand l’application visée a un besoin précis de positionnement et de navigation. De telles
plates-formes commencent cependant à apparaître à relativement grande échelle (par exemple le
robot Aibo de Sony) et peuvent être utilisées en conjonction avec certaines méthodes de
navigation précises.

6) Systèmes de communication :
Les systèmes robotiques peuvent communiquer avec des ordinateurs, des téléphones portables, ou
encore avec d’autres robot. Cette communication peut être câblée, comme elle peut se faire grâce
aux signaux transmis dans l’espace. Afin de rendre cette communication possible le robot dispose
de bus et autre systèmes muni de protocoles de communication qui jouent le rôle d’interfaces entre
le microprocesseur et le monde extérieur. Les bus et protocoles de communication les plus connu
sont :

 Bus USB
 Bus CAN
 RS232
 WIFI
 Bluetooth
 Bus Ethernet
 Bus I2C
 Zig-Bee

16
[Tapez un texte]

III. Les fonctions de la robotique


Les robots jouent un rôle d'une importance cruciale dans nos vies. Et cette importance s'accroît à
vue d'œil! Il existe des milliers d'applications possibles à la robotique et encore plus à explorer. Les
robots sont déjà largement utilisés dans les milieux hostiles afin de réduire les risques encourus par
les humains. On utilise aussi des robots dans les usines d'assemblage, de production, etc.

On se sert de robots pour effectuer certaines tâches qui sont ennuyantes, répétitives ou qui
demandent une extrême précision. Un robot ne se plaint jamais... Il ne s'endort ni ne mange non
plus!

Il existe presque autant de fonctions de la robotique qu'il existe de robots. Ils nous appuient dans
notre vie quotidienne, au travail, à l'école... partout!

Devant toutes ces perspectives, nous avons débuté notre projet par une phase d’étude afin de définir
les fonctionnalités ainsi que l’architecture tant matérielle que logicielle de notre futur robot.

17
[Tapez un texte]

Chapitre II : Etude théorique et Inception

I. Introduction :
Partant d’un niveau d’abstraction élevé, nous allons voir dans ce chapitre les étapes par lesquelles
nous sommes passées pour aboutir à une idée bien définie, qui est celle du robot de surveillance
contrôlé par ordinateur. Par ailleurs, vu qu’un robot peut être considéré comme un « Système
complexe », cette phase d’étude nous a permis de décomposer notre système en un ensemble de
sous systèmes dont l’interaction permettrait d’aboutir au résultat escompté. Grâce aux différents
modèles mathématiques que nous avons utilisés nous avons pu choisir les principaux composants
du robot en l’occurrence ceux des systèmes électroniques et mécaniques. La partie Informatique
quand à elle nous à permis de commander le robot tout en lui procurant une certaine forme
d’intelligence, l’analyse fonctionnelle et la conception des modules informatiques dont est
composé le système informatique seront détaillées dans les parties 2 et 3 du rapport .

II. Mise en contexte:


Notre démarche de conception et réalisation d’un robot de surveillance contrôlé par ordinateur est
une démarche personnelle à travers laquelle nous voulions mettre en application une grande partie
des connaissances que nous avions pu acquérir à l’ESTI tout en explorant d’autre domaines
scientifiques comme l’électronique ou encore la mécanique.

1) Principe et fonctionnalités du safety-bot :

 Principe : Safety-bot est un robot équipé d’une camera et pouvant être commandé à
distance via une connexion WIFI.

 Fonctionnalités : Safety-bot peut être contrôlé par l’utilisateur à distance dans un


environnement donné sans que celui-ci ne soit présent sur le même lieu que le robot. En effet
grâce à la caméra embarquée au bord du robot, celui-ci peut être piloté grâce aux images
transmises en temps réel au poste de commande, ainsi l’utilisateur peut prendre les décisions
nécessaires en se basant sur les images reçues. Profitant de cette caméra embarquée et
voulant nous ouvrir sur le domaine du traitement de l’image nous avons inclus une fonction
de détection du mouvement permettant d’alerter l’utilisateur d’un mouvement suspect
produit lorsque le robot est immobile et au moment où l’utilisateur n’était pas devant son
centre de contrôle. Nous avons aussi travaillé sur un mode autonome. Ce mode procure au
robot une intelligence qui lui permet de détecter un obstacle et l’éviter. Voici un récapitulatif
de l’ensemble des fonctions du Safety-bot :

 Commande à distance via une connexion Wifi


 Télésurveillance

18
[Tapez un texte]

 Détection du mouvement et alerte d’intrusion


 Mode autonome grâce à une fonction de détection d’obstacles et une autre à base
de circuit préenregistré.

2) Schéma explicatif du projet :

 Centre de contrôle Ordinateur

 Voies de communication 1 4
(Connexion WIFI ad-hoc)

Système
Informatique
embarqué 3

 Le robot (Safety-bot) 2

Moteurs Camera

Figure II.II.2 : Schéma explicatif de l’acheminement de l’information

 Messages N°1 : Ces messages sont émis à partir du centre de commandes vers le robot. ils se
décomposent en deux catégories :
 Messages de commande de robot (avancer, tourner à droite, reculer……….)
 Messages de contrôle de la caméra (Ouvrir, fermer)

19
[Tapez un texte]

 Messages N°2 : Ces messages sont les ordres directs envoyés aux moteurs après traitement des
messages N°1 au niveau de l’unité de traitement embarquée.
 Messages N°3 : Ces messages se décomposent en deux catégories :
 Ordres vers la caméra
 Images transmises de la caméra vers l’unité de traitement embarquée.
 Messages N°4 : Ces messages représentent les images transmises en temps réel vers le centre
de contrôle.

III. Etude détaillée du système informatique embarqué sur le


Safety-bot :
Afin de pouvoir traiter les requêtes envoyées depuis le poste de commande, le robot doit être
muni d’un récepteur WIFI lui permettant d’extraire l’information à partir d’un signal analogique.
Ensuite pour pouvoir transformer cette information en ordre effectif le robot à besoin d’un
microprocesseur qui, après avoir traité l’information, transmettra l’ordre directement à la cible à
travers une sortie spécifique. Ayant opté pour des moteurs à courant continu, et pour pouvoir en
contrôler la vitesse il était nécessaire d’avoir un système embarqué muni de sorties permettant ce
genre de manœuvres.

De même, afin de pouvoir traiter les images et les envoyer au poste contrôle, le robot a besoin d’un
microprocesseur assez puissant et d’un émetteur WIFI, dont la vitesse de modulation permet un
transfert à haut débit et ce pour avoir un ratio Images/seconde raisonnable.

Système de communication par


WIFI

Moteurs Système de traitement de Caméra


l’information

Entrées/Sorties adéquates

Figure II.III : Architecture abstraite du système informatique Embarqué sur le


Safety-
1) Système de communication par WIFI :
Afin de pouvoir communiquer à distance avec le Safety-bot, il faut que celui-ci soit muni
d’un système de communication lui permettant d’émettre et recevoir des données. Puisque nous avons
intégré une fonction de streaming vidéo à notre projet, ce système de communication doit proposer

20
[Tapez un texte]

un débit de transmission assez élevé. C’est ainsi que nous avons décidé d’utiliser le protocole de
communication WIFI.

2) Système de traitement :
Pour avoir une grande puissance de calcul deux possibilités se sont offertes à nous :

 Les kits de développement embarqués : Ce sont des solutions embarquées, généralement


munies d’un système d’exploitation embarqué type « Linux embarqué » ou « Windows CE ».
Ces kit permettent de développer des applications diverses dans des domaines comme la
robotique, la domotique ou encore les transports. Au début nous avons trouvé un kit de
développement muni d’un processeur ARM9 32bit et d’un système de transmission WIFI,
d’une entrée USB pour brancher une Webcam ainsi que de plusieurs sorties PWM très utiles
pour faire fonctionner les moteurs (nous expliquerons leurs principes par la suite). C’est sur
cette solution que c’est porté notre intérêt vu que le processeur offrait la puissance nécessaire
pour développer nos différents modules, surtout celui de la détection du mouvement.
Seulement l’acquisition de ce genre de carte nécessite son importation depuis l’étranger, ce
qui nous a poussés à chercher une autre solution.

 Un ordinateur portable (de préférence léger) : Un ordinateur portable a plusieurs avantages.


La première c’est qu’il offre une puissance de calcul très satisfaisante il peut être muni d’une
webcam intégrée et du WIFI. En contre partie ordinateur n’offre pas les sorties permettant de
commander les moteurs. Le choix de cette option nous a imposé de rechercher un système qui
joue le rôle d’interface entre les effecteurs (Moteur) et l’unité de traitement (Ordinateur). Ainsi
une carte qui, munie de deux sorties PWM et de huit sorties numériques, nous a permis
d’interfacer entre l’ordinateur et les moteurs. Nous allons étudier le signal PWM et voir son
utilité par la suite.

3) Les entrées /Sorties :


L’acheminement de l’information à travers notre système, suppose l’existence d’entrées et de
sorties. Les entrées et sorties dont nous avons besoin sont les suivantes :

 Entrée USB : pour brancher la camera sur le système de traitement de l’information.


 Sorties Analogiques PWM : pour faire varier la vitesse des moteurs
 Sorties numériques : pour faire fonctionner les moteurs en mode tout ou rien.

21
[Tapez un texte]

IV. Etude de la cinématique du robot et de la commande des


moteurs :
Pour pouvoir choisir les moteurs, le système informatique embarqué ainsi que la
plateforme nécessaire, une étude fondamentale faisant appel à quelques modèles mathématiques
était nécessaire. En effet il ne fallait pas se trouver avec une carte ne permettant pas de commander
les moteurs avec une vitesse variable, ou des moteurs ne pouvant pas supporter le poids du robot.

1) Commande des moteurs par PWM :


Il est très souvent nécessaire de faire varier la puissance transmise à une charge. Par exemple,
l'intensité d'une lampe doit varier ou la vitesse d'un moteur doit être réglée. La première idée qui
vient à l'esprit est de faire varier la tension ou le courant dans la charge. Mais il faut pour cela des
circuits électroniques complexes. Il est généralement beaucoup plus simple d'alterner les moments
où la puissance maximale est transmise à la charge avec les moments où aucune puissance n'est
transmise.

Figure II.IV: Principe de PWM

Comme indiqué sur la figure, le signal est de période constante, mais la durée de la partie active du
signal varie. Dans la première partie, 25% de la puissance maximale est envoyée à la charge, vu que
le signal est à « 1 » durant 25% du temps, alors qu'il est à « 0 » le reste du temps. De même, la
puissance passe à 50% au milieu du tracé et à 75% sur la dernière partie.

La fréquence du signal va dépendre de l'application. Pour commander une diode lumineuse, la


fréquence doit être supérieure à 100Hz, pour que l'oeil humain ne voie pas le clignotement. Dans ce
cas, c'est bien l'œil qui effectue l'intégration du signal pour en percevoir une valeur moyenne. Pour
un moteur à courant continu, ce sont à la fois l'inductance de son circuit électrique et son inertie qui
participent à cette intégration. Les fréquences des signaux PWM peuvent aller couramment jusqu'à
des centaines de kHz. Mais plus la fréquence est élevée, plus les pertes électriques à l'instant des
commutations sont importantes et peuvent dissiper de l'énergie dans les éléments de commutation.

2) Etude de la cinématique du robot:


Le choix du moteur qui correspond le plus à nos besoins et qui fait déplacer le robot est tributaire du
calcul de la puissance nécessaire que doit avoir celui-ci.

Pour calculer la puissance du moteur, on a utilisé le théorème de l'énergie cinétique.


Ce théorème traduit la variation de l'énergie cinétique entre l'instant 0 et l'instant t est égale à la
somme des travaux des forces extérieures. Le travail d'une force est égal à la multiplication du

22
[Tapez un texte]

vecteur force par le vecteur de déplacement...)


Mathématiquement :

Avec :

Et :

Voici un schéma simple pour visualiser le problème :

R
F

P
Alpha

Donc :

- La force moteur qui fait avancer le robot (force vers l'avant et parallèle au sol : le robot monte
la pente). Le travail est positif car la force est dans le même sens que le mouvement du robot :

- Le poids du robot qui a tendance à lui faire descendre la pente. L'angle entre la verticale et la

23
[Tapez un texte]

force est égal à l'angle de la pente Le travail est négatif car le mouvement est en sens inverse de
la force :

D'après la formule, s'il n'y a pas de pente alors il n'y a pas de travail de la part de cette force.
Inversement, plus l'angle est grand, et plus le travail est important, il faudra donc un travail plus
important de la part du moteur pour faire avancer le robot.

D’où :

Et donc :

De ce fait on connait la force F que doit fournir le moteur par l’intermédiaire des roues pour une
vitesse v. Or un moteur fournit un couple :

On peut donc calculer la puissance nécessaire au moteur :

24
[Tapez un texte]

L’application des valeurs numériques selon les données correspondantes à notre cas nous permet de
déterminer la puissance nécessaire dont a besoin notre moteur.

V. Architecture matérielle adoptée :


Etant dans l’impossibilité d’acquérir kit de développement embarqué, nous avons opté pour la
solution de l’ordinateur portable embarqué sur le robot et relié à une carte électronique qui servira
d’interface entre l’ordinateur et les moteurs. Pour la webcam nous avons la possibilité d’utiliser
celle intégrée à l’ordinateur portable ou en brancher une, via le port USB. Voici le schéma de
l’architecture du système informatique embarqué sur notre robot :

25
[Tapez un texte]

Transmission
d’ordres

Transmission
d’images

Figure II.V: Architecture matérielle du robot

26
[Tapez un texte]

Chapitre III : Gestion de projet et planification

I. Introduction :

Vu la complexité du projet et l’interaction entre ses différentes composantes, il nous a fallu trouver
une solution nous permettant de travailler en parallèle sur les différents sous systèmes du robot.
Cela permet de décomposer le projet en plusieurs parties peu liées, ou indépendantes les unes des
autres. Cette modularité nous a permis de gagner beaucoup de temps et d’efforts.
Phase d’étude

Projet
Conception et Réalisation

Module 1 Module 2 Module n


(Équipe 1) (Équipe 2) (Équipe n)
Intégration

Résultat

Figure II.I: Modularité du projet

27
[Tapez un texte]

II. Structure du projet et planification :


Nous avons décomposé notre projet en plusieurs modules relativement indépendants afin de
paralléliser notre travail et ainsi gagner en temps et en effort. Notre projet étant de développer un
robot de télésurveillance assisté par ordinateur, nous avons décidé de diviser le travail en trois
grandes parties. La première concerne la conception et réalisation de la partie commande du robot,
la deuxième partie concerne le système de télésurveillance et de vision du robot. Enfin la troisième
partie fut celle de la réalisation de la plateforme mobile du robot, sur laquelle allaient être intégrées
les autres parties.

1) La partie « commande du robot » :


Cette partie concerne la mise en place d’un système permettant de contrôler les mouvements du
robot à distance. En effet après la phase d’étude théorique nous avions décidé de communiquer avec
notre robot en utilisant une connexion WIFI. La technique de communication utilisée est la
programmation socket. Utilisant une carte électronique munie d’une « DLL » il fallait développer
une application sur l’ordinateur embarqué sur le robot permettant de contrôler et manipuler les
sorties de celle-ci en fonction du message reçu de la part du centre de contrôle.

La partie commande du robot est donc elle-même décomposée en 3 modules :

 Conception et réalisation de l’application du centre de contrôle


 Conception et réalisation de l’application embarquée sur l’ordinateur du robot
 Réalisation du module de communication par socket

2) La partie « Télésurveillance et vision » :


Dans cette partie nous avons essayé de rassembler tous les modules en rapport avec la manipulation
des images et leur transmission. En effet il nous fallait développer un système de transmission
d’images en temps réel afin d’avoir un ratio images/secondes nous permettant de contrôler notre
robot sans l’avoir dans notre champ de vision. Un autre module très important est celui de la
détection du mouvement qui nous permet de détecter une intrusion dans le champ de la caméra.
Enfin nous avions intégré une fonction appelée mode autonome qui permet au robot d’éviter un
obstacle soudain qui pourrait se mettre au travers de son chemin.

3) La partie « Construction et intégration » :


C’est la partie ou on assemble tous les modules afin d’aboutir à un résultat final. Dans notre cas il
nous fallait construire une plateforme mobile au dessus de laquelle nous devions installer
l’ordinateur, la carte et les moteurs. Une fois la plateforme prête, il nous restait qu’à attendre la
finalisation des autres parties afin de les y intégrer.

28
[Tapez un texte]

4) Diagramme de gantt :

Figure III.II.a: Ensemble des tâches

Figure III.II.b: Diagramme de gant

29
[Tapez un texte]

III. Conclusion

Dans cette partie, nous avons essayé d’introduire et de mettre en contexte notre projet, en présentant
les différents aspects théoriques étudiés, et ce pour dégager une méthode de travail permettant de
réaliser nos objectifs et mettre en œuvre ce robot, tout en tenant en compte du temps disponible.
Nous avons aussi expliqué les raisons pour lesquelles nous avons divisé ce travail en 3 parties qui
seront présentées dans les pages qui suivent.

Dans la prochaine partie de ce rapport, nous allons nous intéresser essentiellement à tout ce qui est
en rapport avec la commande à distance du robot, en expliquant le principe de transmission de
données par socket, le fonctionnement de la carte de contrôle, ainsi que les différents détails
concernant l’acheminement des ordres de l’utilisateur, partant de l’interface et arrivant la carte de
contrôle.

30
[Tapez un texte]

Partie II :

Commande du robot

31
[Tapez un texte]

Chapitre I : Phase d’étude et de modélisation

I. Introduction :
La partie commande consiste à développer un robot mobile de surveillance, piloté à distance par
connexion wifi. Sa commande est donc tributaire d’une architecture client/serveur, en effet une
application cliente, située sur l’ordinateur de commande, est connectée au robot serveur afin de le
piloter.

Nous avons durant trois mois réfléchi aux fonctionnalités à mettre en œuvre, tenant compte de la
durée de temps disponible nous avons finalement décidé de retenir les fonctionnalités estimées
réalisables.

Initialement, notre objectif était limité au contrôle à distance des mouvements d’un robot. plus tard
il a été question d’élargir les possibilités de contrôle. Nous avons alors décidé de ne pas nous suffire
à notre objectif initial, mais d’en rajouter d’autres modes ou possibilités de commande à savoir le
déplacement en mode autonome, en circuit préenregistré, ou en détectant et évitant des obstacles.
Pour ce dernier cas, le déplacement du robot se fait indépendamment de l’intervention de
l’utilisateur.

Nous allons donc en premier lieu faire une pré-étude théorique sur la transmission de données par
socket, décrire la carte électronique utilisée et présenter ensuite la phase d’étude et de modélisation
pour enfin traiter la phase de réalisation du centre de contrôle du robot.

32
[Tapez un texte]

II. Transmission des données:

1) Introduction sur la programmation socket :


Le socket permet la communication entre divers processus aussi bien sur une même machine qu'à
travers un réseau TCP/IP.

On distingue deux modes de communication le mode connecté et le mode non connecté

Etant donnée que le mode connecté et plus garanti que celui du non connecté, on a opté pour le
choix du mode connecté qui utilise le protocole TCP et permet une communication fiable, d’où le
choix de ce protocole pour la transmission des ordres au robot.

2) Architecture Client/Serveur :
Un Socket client est un Socket qui se connecte sur un Socket serveur pour lui demander d'effectuer
des tâches.

Principe de fonctionnement :

1) Création d’un "socket serveur" associé à un port


2) Connexion au socket serveur situé au pc intégré au robot, en lui envoyant l’ordre de
s’exécuter.
3) Communication client /serveur par sockets, tant que l’utilisateur ne s’est pas déconnecté.

III. Carte électronique utilisée :


1) Description de la carte électronique utilisée :
Le module VM110 ou de Velleman est une carte d’expérimentation USB fournissant des
entrées/sorties pilotées depuis un ordinateur connecté à un PC. En effet grâce à cette carte, il est
possible de connecter les moteurs.

33
[Tapez un texte]

Carte K8055

Elle a les caractéristiques suivantes :

 5 entrées numériques TTL 5V


 2 entrées analogiques
 8 sorties numériques
 2 sorties analogiques avec conversion analogique et PWM
 2 compteurs

Pour accéder aux ressources analogiques ou numériques de la carte, il suffit de programmer un


module en Java pour la contrôler via une DLL fournie par le constructeur de la carte, contenant
toutes les fonctions et les procédures de la DLL.

2) Mode de fonctionnement de la carte :

2.1) Principe d’accès à une DLL depuis Java

Une DLL est considérée comme une ressource "native", car il s’agit d’un binaire appelant des
ressources bas-niveau du système d’exploitation. Dans notre cas (DLL fournie par un constructeur),
il est impossible de recompiler le code pour indiquer qu’on souhaite utiliser JNI. Il faut donc
trouver une solution d’interface Java / natif qui laisse la DLL inchangée.

2.2) Les opérations d’accès aux fonctions de la carte:

 Etudier la DLL cible pour connaître les fonctions qu’ont trouvent sur le DataSheet de la
carte
 Installer la DLL dans le répertoire c :/Windows/system32
 Créer une classe Java basée sur JNative
 Ecrire les opérations qui implémentent les accès à chaque fonction de la DLL
 Ecrire de nouvelles fonctions simplifiées indépendantes de JNative
 Compiler et tester le programme Java

34
[Tapez un texte]

IV. Spécification générale de la partie commande :


Nous considérons que l’utilisateur est le commandant du robot, ainsi toutes les composantes du
système de commande du robot fonctionnent selon les choix de l’utilisateur. C’est dans ce contexte
que la notion de « mode de commande » est retenue. L’utilisateur dispose de divers choix de
contrôles du robot, il peut le faire en temps réel en indiquant, la direction à prendre et la vitesse de
mouvement à tenir, ou le garder en mode autonome avec la possibilité de choisir un des deux sous
modes suivants:

1) Suivi d’un circuit enregistré au préalable par l’utilisateur sur la base de données, et ce
en simulant une succession bien précise de mouvements

2) Déplacement libre du robot à une vitesse fixée et inchangée, avec détection des
obstacles à l’aide d’une caméra et évitement de ces derniers (ce sous-mode est expliqué
dans la partie imagerie)

Ceci aboutit donc au diagramme de cas d’utilisations général suivant :

35
[Tapez un texte]

Le diagramme suivant décrit l'interaction entre l'utilisateur et le système, en présence d'une interface
intermédiaire.

En un premier temps, l'utilisateur doit s'authentifier, c'est sur l'interface qu'il va entrer ses
données de connexion pour qu’elles soient transférées au système pour la vérification de validité.

Un principe similaire est adopté quand l'utilisateur choisit un mode de commande : le choix est
manifesté par un appui sur un bouton de l'interface, puis il est transmit au système qui exécute le
code spécifique à ce choix.

36
[Tapez un texte]

Chapitre II : Phase de conception

I. Introduction :
Dans ce chapitre, nous allons aborder avec plus de détails, la commande du robot en fonction des
différents modes. Une description globale des différents états possibles du robot sera succédée
d’une présentation des choix de l’utilisateur, pour enfin détailler le fonctionnement de chaque
mode de commande.

II. Diagrammes d’états/Transitions et activités :


Ce diagramme décrit les états du système qui varient en fonction des choix de l'utilisateur à travers
l'interface.

Une fois la connexion au système est établie (authentification) l’utilisateur choisi le mode à
exécuter, sachant que chaque mode propose un ensemble d'options qui lui sont propres (choix d'une
direction pour le mode contrôle, choix d'un circuit déjà enregistré pour le mode autonome). Il est à
signaler l’existence d’options communes à plusieurs modes (arrêt du robot, enregistrement du
circuit). Ces états communs sont accessibles à partir de tous les modes. Il est à remarquer que
plusieurs possibilités sont données à l'utilisateur qui peut, par exemple, quitter ou changer de mode
à son gré.

37
[Tapez un texte]

Ainsi l'utilisateur, passe par trois états principaux : déconnecté au début et à la fin, connecté après
authentification et commander le robot selon le mode choisi. Pour ce dernier état, l'utilisateur peut
ce déconnecter directement comme il peut quitter le mode en restant connecté, pour en choisir un
autre. Le tout est modélisé par ce diagramme :

A partir de ces deux derniers diagrammes d’état/ transition, on peut déduire le diagramme d’activité
décrivant les différents évènements possibles lors de la commande du robot.

38
[Tapez un texte]

III. Mode de contrôle du robot :


Mode de contrôle du robot :

Description : l’utilisateur choisit le mode de contrôle à distance.

Les Acteurs : L’utilisateur

Pré-conditions : Obligation à l’utilisateur de s’authentifier

Scénario nominal :

Suite à l’authentification, l’utilisateur accède au mode de contrôle à distance pour ensuite piloter le
robot via l’interface de direction.

Une chaîne contenant la direction et la vitesse de mouvement choisi par l’utilisateur est envoyée du
package « client » vers la classe socket en utilisant la fonction recep(). En effet, c’est la classe
socket qui assure le transfert de données entre les classes « client » et « serveur ». Cette chaîne sera
ensuite traitée par la classe « action » qui l’envoie d’abord à la classe « Lecture Clavier » pour
diviser la chaîne en 2 parties, une partie contenant la direction (en utilisant la fonction ordre() et
retourne une chaine « c » contenant seulement la direction) et une partie contenant la vitesse du
mouvement (en utilisant la fonction « param() » qui retourne une chaine « p » contenant la
vitesse). Ces 2 chaînes seront ensuite transmises à la classe mouvement qui, selon les valeurs des
chaînes, se connecte à la carte K8055D et active les sorties appropriées à chaque mouvement
comme le décrit ce diagramme suivant:

Ce mode offre également la possibilité d’afficher le circuit parcouru par le robot une fois arrêté.

39
[Tapez un texte]

 Afficher le schéma du circuit emprunté :

Description : l’utilisateur choisit d’afficher le chemin que le robot vient de parcourir.

Les Acteurs : L’utilisateur

Pré-conditions :

L’utilisateur doit s’authentifier


Le robot doit être en état d’arrêt et avoir fait au moins un mouvement.

Scénario nominal :

Après la commande du robot, l’utilisateur clique sur « arrêter robot », pour pouvoir afficher la
trajectoire parcourue et ce en cliquant sur le bouton « afficher chemin ». Une nouvelle interface
s’ouvre et affiche la trajectoire.

Ce diagramme décrit l’interaction entre les différentes classes du package « affichage du


chemin ».

La classe principale « main » est celle qui interagit avec toutes les autres classes : Elle envoie d’abord
la chaîne reçue de l’utilisateur (qui contient la direction et la vitesse d’un mouvement donné) à la
classe « lecture clavier », qui va en extraire la direction et la retourner à « main », cette dernière la
transmet vers la classe « chemin » pour l’ajouter à un tableau qui va englober, après la mise en arrêt
du robot, toutes les trajectoires suivies. Ainsi une représentation des déplacements est générée à partir
de ce tableau, par la classe « canvas » , et affiché ensuite sur l’interface.

40
[Tapez un texte]

IV. Mode autonome : Exécuter un circuit préenregistré :

 Exécuter circuit enregistré :

Description : l’utilisateur donne l’ordre au robot d’exécuter un circuit parmi les circuits déjà
enregistrés.

Les Acteurs : L’utilisateur

Pré-conditions :

L’utilisateur doit s’authentifier


Il doit y avoir au moins un circuit enregistré

Scénario nominal :

L’utilisateur clique sur le bouton « importer un chemin », une liste contenant les circuits
enregistrés dans la base de données s’affiche, selon le choix de l’utilisateur, le robot exécute
l’ensemble des déplacements y afférents.

Cette liste des circuits est en effet créée par le serveur qui accède à la base de données, il la
transfère à l’interface chargée de son affichage à l’utilisateur. La décomposition du circuit
choisi par l’utilisateur en un ensemble de mouvements ainsi que l’exécution successive de ces
mouvements est assurée par le centre de commande du robot, ainsi expliqué par le diagramme
de séquence suivant :

41
[Tapez un texte]

V. Diagramme des classes :

A partir de tous les scénarios décrits dans les diagrammes des séquences, on peut émerger le
diagramme de classes technique suivant :

42
[Tapez un texte]

- La classe client contient une fonction main qui sera activé au clic de l’utilisateur sur un bouton
de l’interface du contrôle. Cette fonction a pour rôle d’envoyer l’ordre de mouvement par
l’utilisateur (sous forme de chaine) vers le serveur, via socket.
- La classe sock reçoit la chaîne envoyée par Client et la transmet vers le serveur.
- La classe serveur reçoit la chaîne par socket et la transmet vers la partie dédiée au mouvement.
- La classe lecture clavier transforme la chaîne contenant l’ordre du mouvement en 2 sous
chaînes, une première qui contient la direction du mouvement (avancer, reculer, tourner à
droite…) et une deuxième qui va contenir la vitesse du mouvement.
- La classe action va être l’intermédiaire entre les classes lecture clavier et mouvement.
- La classe mouvement reçoit les deux sous chaînes retournées par lecture clavier selon
lesquelles elle va activer les sorties de la carte.
- K8055D est la carte à qui sont liés les moteurs du mouvement.
- La classe affichage contient la fonction main qui sera activée quand l'utilisateur demande
d'afficher le chemin parcouru par le robot. Cette fonction récupère de la classe Lecture Clavier
la partie de la chaîne de l'ordre de mouvement contenant la direction, puis l'envoie à la classe
chemin, où elle sera ajouté au chemin parcouru. Cette classe reçoit aussi le dessin du circuit de
la classe Canvas pour l'afficher sur l'interface.
- La classe chemin contient un tableau où on sauvegarde successivement les mouvements
effectués par le robot, qui constituent le chemin parcouru.
- La classe canvas récupère le chemin parcouru (le tableau) de la classe chemin une fois le
robot stoppé par l'utilisateur. Elle contient une fonction paint qui, à partir du tableau, génère le
dessin du circuit parcouru par le robot. C'est ce dessin qui sera affiché à l'utilisateur.

43
[Tapez un texte]

VI. Elaboration de la base de données :


1) Besoins :
L'utilité majeure de notre base de données est qu'elle permet d'ajouter plus de fonctionnalités au
robot, ainsi que donner plus de détails sur les vidéos et les images capturées par le robot.

En effet le principal atout de la base de données est l'enregistrement du chemin contenant


l'ensemble des déplacements parcourus par le robot.

2) Liste des données :


Nous avons trois entités évidentes que sont :

 Contenu_media

44
[Tapez un texte]

 Chemin
 Authentification

Dont les informations contenues dans ces entités sont :


Contenu_media Chemin Authentification

-Id_media -Id_chemin -id_auth

-Libelle -circuit -login

-Type -password

-Taille

-Durée

3) Dictionnaire des données :

L’utilisation de « Analyse SI » nous a permis de construire le dictionnaire de données.

4) Schéma logique des données :


Voici le schéma relationnel résultant

45
[Tapez un texte]

5) Modèle relationnel :
L’application des règles de passage du schéma relationnel au modèle relationnel nous d’extraire les
tables suivantes :

 contenu_media (id_media, libelle, type, taille, duree)


 chemin (id_chemin, circuit)
 authentification(id_auth,login,password)

Les attributs soulignés désignent les clés primaires de la table.

VII. Conclusion :
Au cours de ce chapitre nous avons abordé la conception de l’application en essayant de détailler la
démarche qui sera suivie pour la réalisation de cette partie. Vu la complexité de cette tâche, nous
avons eu recours au formalisme UML. Cette étape est de nature à éclaircir le résultat final, ce qui
facilitera la tâche de réalisation, objet du chapitre suivant.

46
[Tapez un texte]

Chapitre III : Phase de réalisation

I. Introduction

Après avoir spécifié les différents besoins, modélisé les différentes parties qui constituent le
volet relatif au contrôle du robot et expliqué le principe de transmission des données, nous passons
à présent à la phase de réalisation. Nous présentons dans une première partie l’environnement du
travail, pour ensuite expliciter la démarche à suivre pour créer la base de données et configurer un
réseau Ad-hoc. Pour finir, nous allons présenter des aperçus du fonctionnement des deux modes de
commande.

II. Environnement logiciel

47
[Tapez un texte]

1) Rational Rose
Rational Rose est un AGL composé d’un ensemble d’outils pour
assister le concepteur durant les phases d’analyse, de conception
et de construction du logiciel. Il se base sur le formalisme UML.

2) NetBeans
NetBeans est un environnement de développement intégré open
source édité par Sun. NetBeans permet de supporter plusieurs
langages (C++, Java, PHP, …) grâce aux plugins qu’il intègre.
NetBeans est un logiciel multiplateforme et comprend les
caractéristiques d’un IDE moderne. [wikipédia]

3) PostgreSQL
PostgreSQL est un système de gestion de base de
données relationnelle et objet (SGBDRO). C'est un outil
libre disponible selon les termes d'une licence de type
BSD.

Ce système est concurrent d'autres systèmes de gestion de


base de données, qu'ils soient libres (comme MySQL et
Firebird), ou propriétaires (comme Oracle, Sybase, DB2
et Microsoft SQL Server). Comme les projets libres Apache et Linux, PostgreSQL n'est pas
contrôlé par une seule entreprise, mais est fondé sur une communauté mondiale de développeurs et
d'entreprises. [Wikipédia]

48
[Tapez un texte]

4) Qt Jambi
Qt Jambi est un framework Java permettant de créer
des applications riches basées sur la bibliothèque
logicielle Qt. C'est la seule version de Qt utilisant un
autre langage de programmation que le C++ supporté
officiellement par Qt Software.Même si Qt Jambi utilise
Java Native Interface (JNI) pour faire des appels à la
bibliothèque Qt C++, rien n'est prévu dans l'interface de
programmation pour qu'une application Qt Jambi puisse s'interfacer avec une application Qt C++.
[Wikipédia]

5) La mise en place d’une connexion réseau Ad-hoc


a) Présentation du réseau WiFi Ad-Hoc
Possédant deux ordinateurs équipés d’adaptateurs sans fil (cartes Wifi), et afin d’assurer la
communication entre le PC1 relié au robot et le PC2 contenant l’application. On a opté pour la mise
en place d’un réseau Ad Hoc c’est-à-dire « égal à égal» qui ne nécessite pas l’utilisation d’un point
d’accès.

b) Configuration du réseau Ad-Hoc


Afin de mettre en place le réseau Ad-Hoc il faut aller au « «Panneau de configuration » pour
ensuite ouvrir le « Centre Réseau et partage » où on trouve l’option Configurer une connexion ou
un réseau (voir l’image ci-dessous).

Parmi les options de la liste qui va s’afficher, on choisit l’élément Mettre en place un réseau sans fil
ad hoc (ordinateur à ordinateur) réseau (voir l’image ci-dessous).

49
[Tapez un texte]

Sur l’écran suivant on définit un nom de réseau et un mot de passe, il est également possible
d’enregistrer le réseau en cochant la case Enregistrer ce réseau

Le réseau configuré, la connexion peut être trouvée dans les réseaux sans fil de la fenêtre.

50
[Tapez un texte]

6) La création et la connexion à la base de données


c) Création
Pour permettre une sauvegarde des données saisie par l’utilisateur de l’application Une base de
données doit être créee, le système de gestion de bases de données relationnelle PostgreSQL permet
la création des différentes tables de la base de données.

Interface graphique PostgreSQL

Une fois les tables sont crées et la base est prête à être remplie, et pour qu’on puisse insérer,
modifier et mettre à jour des données via l’application, il est nécessaire de faire l’interfaçage entre
l’IDE en l’occurrence NetBeans et le SGBD donc PostgreSQL.

d) Présentation de JDBC
L'API JDBC a été développée pour permettre à un programme de se connecter à n'importe quelle
base de données en utilisant la même syntaxe, c'est-à-dire que l'API JDBC est indépendante du
SGBD.

De plus, JDBC bénéficie des avantages de Java, dont la portabilité du code, ce qui le rend
indépendant de la base de données et de la plate-forme sur laquelle il s'exécute.

e) L’accès à la base de données avec JDBC


Une application Java est intimement liée avec une base de données. A cet effet, il faut bien
évidemment disposer, pour la base de données concernée, d'un pilote JDBC adéquat, dans le cas de
PostgeSQL on doit charger le driver « org.postgresql.Driver ». Les instructions SQL sont
directement envoyées à la base, qui à son tour renvoie les résultats par un biais tout aussi direct. La
base de données peut être exécutée sur la machine locale (celle sur laquelle l'application Java
fonctionne) ou bien sur un ordinateur du réseau (Intranet ou Internet).

51
[Tapez un texte]

Schéma explicatif de la connexion avec différents SGBD

f) Connexion
Suite à la création de la base sous PostgreSQL, il est nécessaire d’établir la connexion de la base de
donnée avec java, le principe est analogue à l’installation d’une imprimante qui nécessite un driver,
de même Netbeans utilise un driver pour se connecter à la base de données. La connexion à une
base de données avec Java, nécessite un fichier .jar qui correspond au pilote permettant la
connexion.

Intégration de l’ODBC sur NetBeans

52
[Tapez un texte]

Enfin JDBC met à notre disposition un ensemble de classes qui nous permettent de nous connecter,
manipuler et nous déconnecter de la base de données.

III. De l’émission de l’ordre…à la carte :


Nous allons à présent expliquer, à travers un exemple, le fonctionnement du robot en mode
« contrôle à distance ». Nous allons prendre l’exemple où l’utilisateur envoie au robot l’ordre
d’avancer.

53
[Tapez un texte]

L’interface de commande affiche que l’utilisateur à donné l’ordre au robot d’avancer avec une
vitesse quantifiée à 76 (cette valeur est fixée selon la position du slider haut). Cet ordre est transmis
de l’interface vers la classe client du code de contrôle, sous forme d’une chaîne comme indiqué sur
les lignes ci-dessous :

L’ordre est transmis au serveur de contrôle par socket. Le serveur le transmet à son tour vers une
classe action où il sera traité et envoyé vers la carte de contrôle.

54
[Tapez un texte]

L’ordre qui inclut à la fois la direction et la vitesse du mouvement est contenu dans une seule
chaîne. Cette chaîne est donc transmise à une classe LectureClavier, qui contient une fonction ordre
qui extrait la direction de la chaîne de l’ordre, et une fonction param qui en extrait la vitesse.

L’étape suivante consiste à appeler une fonction de la classe mouvement, la fonction à appeler
dépend de la direction du mouvement indiquée par l’utilisateur (c’est là où le résultat de la fonction
ordre trouve son utilité), tout en passant en paramètre la vitesse de l’ordre également (retourné par
la fonction param).

55
[Tapez un texte]

Les sorties numériques de la carte K8055D permettent, dans notre cas, de contrôler le sens de la
rotation des moteurs. Quant aux sorties analogiques, elles contrôlent la vitesse de rotation des
moteurs. Les deux moteurs menant les deux roues doivent tourner à une même vitesse pour que le
robot avance tout droit.

Activation
des sorties
PWM, en
réponse à
l’ordre de
mouvement

56
[Tapez un texte]

IV. Afficher le chemin :


L’interface de contrôle offre également la possibilité d’afficher le chemin parcouru par le robot
pendant la session de commande. En effet, à chaque fois où l’utilisateur envoie un ordre de
mouvement, la direction ainsi que la vitesse de ce mouvement (séparés par les fonctions de la classe
Lecture Clavier) seront stockés dans un tableau statique contenu dans une classe Chemin.

Ce tableau sera utilisé par la classe Canvas pour « dessiner » le chemin parcouru.

Ce dessin sera enfin affiché à l’écran :

57
[Tapez un texte]

V. Conclusion :

Cette partie nous a permis de réaliser la commande à distance du robot via une connexion
sans fil. Une commande qui se présente selon plusieurs modes en fonction du choix de l’utilisateur.
Aussi nous avons expliqué comment transmettre les données entre deux pc par l’intermédiaire des
sockets, ce volet sera aussi présent dans la deuxième partie de notre projet, réservée à l’aspect
imagerie.

58
[Tapez un texte]

Partie III :

Télésurveillance et vision

59
[Tapez un texte]

Chapitre I Analyse Fonctionnelle

I. Introduction :

Notre projet fait appel à deux grandes branches de l'informatique qui sont les systèmes embarqués
d'une part et l'imagerie numérique d'une autre. Afin de réduire la complexité, engendrée par la
difficulté à coordonner entre ces deux aspects, nous avons décomposé notre projet en deux modules,
l'un traitant l'aspect développement à base de dll et l'autre concernant le traitement de l'image et le
streaming vidéo. La communication entre le centre de commande et le robot est assurée grâce au
module de la programmation réseau. Ceci fait de la partie consacrée à la programmation réseau un
module fondamental de notre projet, grâce auquel nous parvenons à assurer une communication en
temps réel entre « Safety-Bot » et le PC central sur lequel application est exécutée. Au début du
projet, nous avons prévu l’achat d’une carte électronique de développement qui supporte une
connexion wifi. Cette carte étant basée sur un système d’exploitation type linux embarqué, nous
avions entamé la phase de documentation en matière de programmation réseau en langage C.

Mais pour plusieurs raisons nous n’avons pas pu nous procurer cette carte ainsi nous avons opter
pour que « Safety-Bot » soit menu d’un PC au lieu de la carte ce qui nous à éviter de programmer
en C. Nous étions donc dans l’obligation de reprendre la phase de documentation de nouveau.
L’idée était d’assurer une connexion entre un client Java et un serveur MATLAB via des sockets
pour déclencher la détection de mouvement puis entre un client java et un serveur Java afin de
transmettre le flux vidéo en streaming via le protocole RTP. En ce qui concerne la détection de
mouvement, nous nous sommes trouvés face à plusieurs choix techniques, il était possible de
programmer soit en Java soit sous Matlab, finalement le deuxième choix était retenu ceci nous
permet d’enrichir nos connaissances par la maitrise du langage le plus utilisé dans le domaine du
traitement d’images. Egalement, nous avons choisi la technique de détection de mouvement qui
répond mieux à nos besoins et qui offre des performances respectables. Ensuite, un mode de
commande autonome est ajouté à notre robot pour renforcer davantage ses capacités. Ce mode est
développé aussi sous Matlab et il se base sur des algorithmes de traitements d’images utilisés pour
détecter les obstacles.

60
[Tapez un texte]

II. Diagrammes de cas d’utilisation :


On entame la partie d’expression de besoin. Pour cela, nous allons représenter le diagramme de cas
d’utilisations dans lequel nous spécifions les besoins de ce projet. Or dans notre système, nous
avons qu’un seul acteur qui va être responsable du contrôle du robot.

Ci-suit les cas d’utilisations de cette application. Elle présente les différentes options mises à
disposition de l’utilisateur.

Déclencher la détection
<<include>>
<<extend>>

<<include>>
Enregistrer vidéo
<<include>>

<<include>> s'authentifier
Visualiser Vidéo
Utilisateur
<<include>>

Détecter obstacle
<<include>>

Importer données

Démarrer la télésurveillance

Description des cas d’utilisation :

 Déclencher la détection :

Description : L’utilisateur donne l’ordre au système de déclencher la détection automatique pour


mettre l’algorithme en marche et pour détecter un mouvement.

Les Acteurs : Utilisateur.

Pré-condition : Obligation à l’utilisateur de s’authentifier.

Scénario nominal : L’utilisateur donne l’ordre au Robot d’ouvrir sa caméra et de déclencher la


détection qui compare chaque image reçue avec l’image de fond, si la différence obtenue dépasse
un seuil prédéfini alors il détecte un mouvement et commence à l’enregistrer.

61
[Tapez un texte]

 Démarrer l’enregistrement vidéo :

Description : L’utilisateur donne l’ordre au système, à partir de l’interface de commande, de


démarrer un enregistrement vidéo.

Les Acteurs : Utilisateur.

Pré-condition : L’utilisateur doit s’authentifier.

Scénario nominal : L’utilisateur demande au système de démarrer un enregistrement vidéo. Le robot


ouvre sa caméra et commence l’enregistrement dans un laps de temps bien déterminé.

 Visualiser Vidéo :

Description : L’utilisateur demande au système de visualiser une vidéo donnée à partir de l’interface
de détection.

Les Acteurs : Utilisateur.

Pré-condition : Il faut que l’utilisateur soit authentifié.

Scénario nominal : L’utilisateur une fois authentifié demande au système de visualiser les
vidéos(lire, arrêter ) à travers un lecteur implémenté dans l’interface de détection.

 Importer des données :

Description : L’utilisateur demande au système d’importer les données. Ces données sont des flux
vidéo qui seront visualisés ensuite sur le terminal de l’utilisateur.

Les Acteurs : Utilisateur.

Pré-condition : Il faut que l’utilisateur soit authentifié.

Scénario nominal : L’utilisateur, après avoir déclenché la détection de mouvement ou enregistré une
vidéo, demande au système d’importer cette vidéo pour pouvoir la visualiser.

 Détecter obstacle :

Description : L’utilisateur demande au système de détecter un obstacle via son interface de


commande.

Les Acteurs : Utilisateur.

Pré-condition : Il faut que l’utilisateur soit authentifié.

Scénario nominal : L’utilisateur demande au système, après avoir activé le mode autonome, de
détecter les obstacles qui peuvent bloquer le robot pendant son mouvement.

62
[Tapez un texte]

 Démarrer la télésurveillance :

Description : l’utilisateur demande au système de démarrer la télésurveillance pour pouvoir contrôler


les mouvements du robot.

Les Acteurs : Utilisateur.

Pré-condition : Il faut que l’utilisateur soit authentifié.

Scénario nominal : L’utilisateur va demander au système de démarrer la télésurveillance. Cette tâche


consiste à démarrer la caméra du robot et envoyer le flux vidéo capturé vers l’utilisateur pour qu’il
puisse commander le robot.

63
[Tapez un texte]

Chapitre II : Conception
I. Introduction :
********************************************************************************
********************************************************************************
********************************************************************************
****************************

II. Diagrammes de séquences :


Ci-dessous la conception des traitements du processus d’importation des données, schématisée à
travers un diagramme de séquences :

:interface systéme
: Utilisateur

1: s'authentifier
2: transfert login mot de passe
3: verification

4: Données valide [login et mot de passe valides]

5: Utilisateur authentifié [données valides]

6: Données invalides [login et mot de passe invalides]

7: Resaisir données

8: Demande d'importer vidéo


9: Connexion système
10: transfert des vidèo disponibles par paquets

11: Afficher vidéo

En un premier temps, l'utilisateur doit s'authentifier sur de connexion. Cette interface va transférer
ces données au système pour la vérification de validité. Un principe similaire est adopté quand
l'utilisateur demande d’importer les vidéos enregistrées sur le robot : La demande est manifestée
par un appui sur un bouton de l'interface, qui transmet cette demande au système et c'est ce dernier
qui va transférer les vidéos disponibles.

64
[Tapez un texte]

:Interface :Client :Soc :Server :SendEcoute ReceiveFile

1: main("importer")
2: recep("importer")
3: accept("importer")
4: main(null)
5: Envoi(fichier)

6: lire()

- Interface : Cette classe représente le moyen que nous utilisons pour contrôler et communiquer
avec le code de l’application. Dans ce cas ci-dessus, nous communiquons avec l‘interface de
détection du mouvement.

-Client : C’est une classe implémentée au niveau du poste de l’utilisateur où il va exécuter sa


fonction « main() » en prenant comme argument une chaîne de caractères («Importer ») pour
indiquer au système d’importer les vidéos.

-Sock : C’est une classe qui permet de transmettre le message en utilisant les sockets. Elle est
appelée dans la classe server par la fonction recep ( ) qui prend en paramètre une chaîne de
caractère indiquant la tâche à exécuter.

-Server : Cette instance représente le serveur de l’application. Elle nous permet de recevoir les
messages émis par l’utilisateur et les traiter en communiquant avec les autres classes. L’état
d’écoute du serveur se fait en exécutant la fonction main ( ).

-SendEcoute : Cette classe est appelée par la classe server. Elle nous offre la possibilité d’envoyer
une vidéo située dans un chemin bien précis (à l’aide de la fonction envoi(fichier)) vers la classe
ReceiveFile située au niveau de l’interface de détection du mouvement.

-ReceiveFile : à l’aide de cette classe, nous arrivons à récupérer une vidéo envoyée par
SendEcoute qui sera affichée par la suite au niveau de l’interface à l’aide de la fonction lire().

65
[Tapez un texte]

:Interface :Systéme
: Utilisateur
1: S'authentifier
2: Transfert login et mot de passe

3: Verfication données

4: Données valides

5: Authentification réussite

6: Demande du lancement de télésuveillance


7: Transfert d'ordre

8: Traitement d'ordre

9: Transfert flux vidéo

10: Lancer la télésurveillance

Le schéma ci-dessus représente la tâche de télésurveillance offert par le robot. Dans cette tâche,
nous allons demander à l’utilisateur de s’authentifier tout d’abord. Ensuite, l’utilisateur demande au
système de lancer la télésurveillance via l’interface de cette dernière. Par la suite, l’interface
transfère cet ordre au système qui va traiter cette demande et enverra le flux vidéo courant qui sera
affiché sur l’interface de l’utilisateur.

66
[Tapez un texte]

:Interface :Client :Sock :Serveur :AvTransmit :AvReceive

1: main("Ouvrircam")
2: recep("Ouvrircam")
3: accept("Ouvrircam")
4: Start()
5: initialize()

6: ouvrircam()

Avtransmit : Cette classe sert à ouvrir la caméra du robot et envoyer le flux capturé vers
l’utilisateur via la fonction start ( ) qui demande l’ouverture de la caméra à l’aide du fonction
initialize ( ).

AvReceive : C’est une classe qui a pour rôle de recevoir le flux vidéo courant de la classe
AvTransmit et l’afficher à l’interface avec la fonction ouvrircam ( ).

67
[Tapez un texte]

III. Diagrammes d’activités :


Ci-dessous la déscription schématisée de l’activité de la détection du mouvement :

S'authentifier

[Refusée]

[ Acceptée ]

Capturer image
Background (F)

Capturer flux
vidéo

Comparer image de fond


avec image courante

[ x<seuil ]

[x>seuil]

Démarrer
enregistrement vidéo

comparer l'image de fond


avec image courante

[nb=15]
[x<seuil,nb++] [ x>seuil, nb=0 ]

Arrêter enregistrement
vidéo

Le principe de détection du mouvement pour lequel nous avons opté est simple et le
plus fiable selon les recherches que nous avons effectuées. Le diagramme d’activités ci-dessus nous
permet de comprendre le principe de fonctionnement de la détection du mouvement.

Dès que nous activons le mode «détection du mouvement », le robot capture une première image
(appelée image de fond ou background) et il la compare avec le flux d'images successives en
prévenance de la Webcam. Si la différence entre ces deux images dépasse le seuil(x), il commence à
enregistrer une vidéo. La comparaison se répète entre la même image de fond et les images
suivantes jusqu’à ce que la condition d’arrêt soit satisfaite (lorsque 15 images successives soient
presque identiques à l’image de fond (nb=15)).

68
[Tapez un texte]

Ci-dessous la description schématisée de l’activité de mise à jour image de fond :

Capturer image de
fond (1ére image F)

[Tampon=F]

Prendre l'image
courante (Cour)

Comparer image de fond (F)


avec image courante (Cour)

[Tampon=Cour, Nbre=0]

[Nbre<15] [ F=Cour ] [ F<>Cour ]

Mettre à jour Détecter


image de fond mouvement

Comparer image courante


(J) avec Tampon
[Nbre=15]
[ Cour=Tampon ] [Tampon<>Cour]

Incrémenter Mettre à jour


nbre(nbre++) Tampon

Ce diagramme d'activité nous aide à mieux présenter la méthode utilisée pour faire la mise à jour de
l’image de fond. Tout d’abord, le robot commence par une capture de la première image prise par
la caméra, celle-ci représentera par la suite l'image de référence. Ensuite, chaque image du flux
vidéo va être comparé avec l’image de référence, ici deux conditions se présentent:

-La différence entre les 2 images dépasse le seuil, dans ce cas un mouvement initial est détecté.
Pour s’assurer de la fiabilité de ce résultat, une autre comparaison se fait entre l’image enregistrée
dans le « tampon » et l’image courante (c’est-à-dire, l’image à t+1). Si aucune différence n’est
détectée après quinze tentatives, une mise de l’image de fond aura lieu afin de détecter un autre
mouvement.

-Dans le cas où la différence notée est inférieure au seuil, la détection se poursuit et l’image de
fond reste inchangée.

69
[Tapez un texte]

Ci-dessous la description schématisée de l’activité de mise à jour image de fond :

S'authentifier

[Refusée]

[Acceptée]
Prendre une image i
du flux vidéo

Prendre une
nouvelle image J

Comparer image i
avec image j [Diff<seuil]
(1) i=j
(2) j=prendre une nouvelle
image

[Diff>seuil]
Détection
d'obstacle

Comparer moitié gauche de i avec Comparer moitié droite de i avec


moitié gauche de j moitié droite de j

Diff gauche = moitié gauche (i)- moitié gauche (j) Diff droite = moitié droite (i) - moitié droite (j)

Comparer difference droite


avec difference gauche
(1) i=j
(1) i=j
(2) j=prendre une
(2) j=prendre une [ Diff droite> Diff gauche ] [ Diff droite< Diff gauche ] nouvelle image
nouvelle image

Demander au robot Demander au robot de


de tourner à gauche tourner à droite

Dans ce qui suit, nous détaillerons le diagramme d’activité décrivant le module de la détection
d’obstacle. Avant tout, l’utilisateur doit s’authentifier pour pouvoir accéder à l’application.
La première étape de l’algorithme consiste à comparer deux images consécutives. Une image
capturée du flux est prise à un instant t suivie d’une autre capture d’une autre image à un instant
t+1. Celles-ci seront comparées l’une à l’autre et deux cas se présentent :

 La différence entre les deux images dépasse le seuil.


 La différence entre les deux images est inférieure au seuil.

70
[Tapez un texte]

- Dans le premier cas, l’obstacle est détecté mais un problème est posé, c’est où cet obstacle est
situé dans l’image (à droite ou bien à gauche). Pour y remédier, chaque image sera divisée en deux
plans gauche et droit. Chaque plan de l’image de référence est comparé à son équivalent dans
l’autre image. Par la suite, une autre comparaison s’effectue entre les différences obtenues dans les
deux plans et deux autres cas se présentent :

 La différence du plan droit dépasse celle du plan gauche : Un ordre est donné au robot pour
se tourner à gauche pour éviter l’obstacle.
 La différence du plan gauche dépasse celle du plan droit : Un ordre est donné au robot pour
se tourner à droite pour éviter l’obstacle.

-Dans le deuxième cas, aucun ordre ne sera transmis au robot, l’opération est reprise dès le début.

71
[Tapez un texte]

Chapitre III : Réalisation


I. Les techniques de détection du mouvement :
1) Introduction :
Face à la nécessité de l’ajout d’un module assurant la fonctionnalité de surveillance d’une
manière plus efficace et plus performante, pouvant en grande partie remplacer le
fonctionnement classique d’un être humain assurant la même tâche, nous avons intégré à
Safety-Bot un module de détection du mouvement. En revanche, ceci permettra à notre robot
de ne pas se limiter à la tâche de la transmission en flux vidéo de ce qu’il voit en face, mais
en plus de détecter et de signaler à l’utilisateur de l’application l’apparition de tout corps dans
son champ de vision que ce soit un être humain, un objet quelconque en déplacement ou un
objet initialement en état stable subissant un mouvement.
Notre solution pour ce problème est purement informatique. Nous nous sommes appuyés sur
des algorithmes de traitement d’images développés sous « Matlab » et non pas des capteurs
détecteurs du mouvement.
Le déclenchement de la détection du mouvement se fait par un ordre de l’utilisateur comme
l’indique le schéma ci-dessous.

72
[Tapez un texte]

2) Techniques de Détection du mouvement :


Dans la phase de recherche nous nous sommes renseignés sur les différentes techniques de détection
du mouvement. Ci-dessous une brève description de chacune d’elles :

a) La différence temporelle des images :


Cette technique consiste à détecter la région du mouvement grâce à la différence pixel par pixel de
deux trames consécutives dans un flux vidéo. Cette méthode est moins efficace, car elle calcule la
différence dans chaque laps de temps. Grâce à cette technique, nous détectons seulement une partie
de la région en mouvement par exemple : la main ou la tête. Aussi nous détectons le vide d’où il
devient plus difficile à extraire les propriétés du mouvement (la taille, la position, la vitesse …).

(a) (b)

Figure : Un exemple de différence temporelle (a) : Une scène avec deux objets en mouvements (b) :
les régions rouges sont la différence entre deux images consécutives.

b) Double de différence temporelle des images et caractère de contour :


Dans cette méthode, nous utilisons aussi la différence pixel par pixel des trames consécutives dans
un flux vidéo. Cette façon nous donne un résultat meilleur que celui de la première
technique, tandis qu’elle adapte aussi le changement de la scène.

c) Soustraction de l’image de fond :


Dans la troisième méthode, nous utilisons une image de fond. Cette méthode est très populaire. Elle
utilise aussi la stratégie de différence pixel par pixel en soustrayant l’image de fond de l’image
courante. nous avons opté cette méthode.

73
[Tapez un texte]

3) Soustraction de l’image de fond :


Cette technique consiste à capturer une première image au démarrage de la détection qui
servira d’image de fond qui est idéalement non bruitée et ne contient aucun objet en mouvement,
celle-ci sera comparée à ses successeurs pixel par pixel. Le mouvement est détecté si la différence
dépasse un seuil prédéfini. Ce seuil est le nombre de pixel changés de l’image courante par rapport
à l’image de fond.

Il existe trois manières pour créer l’image de fond :

 Le calcul de moyenne de N premières images.


 Nous choisissons l’image de fond qui a le moins de changement ou dans laquelle il n y a
pas du mouvement pendant une durée longue.
 Nous choisissons la première image dans le flux vidéo.

Ensuite nous appliquons un filtre qui sert principalement à minimiser le bruit sur une image.
Le bruit est les interférences qui peuvent altérer la qualité d’une image. Ceci permet d’éliminer les
pixels isolés qui pourraient conduire à de faux résultats.

Filtre

Figure 1 Résultat binaire d'une image filtré Figure 2 Résultat binaire d'une image
non filtré

Dans notre application, la détection du mouvement entraine l’enregistrement de la scène dans la


mémoire de « Safety-Bot », la fin de l’enregistrement vidéo se fait dès qu’une image semblable à
l’image de fond est capturée (dans ce cas, la différence devra être inférieure au seuil).

74
[Tapez un texte]

Exemple de détection du mouvement :

Figure 1 Capture de l'image de fond (image 0) Figure 2 détection du mouvement (image 3

Figure 3 Continuité de détection du mouvement (image 5) Figure 4 Continuité de détection du mouvement (image 7)

Figure 5 Retour à l'image de fond (image 10) Figure 6 Retour à l'image de fond (image 25)

Dans la figure 1 : notre robot est en état de surveillance alors il va prendre la première image
comme image de fond.

Dans la figure 2 : notre robot a détecté un mouvement par conséquence il déclenche


l’enregistrement vidéo.

Dans les figures 3 et 4 : continuité de détection du mouvement.

À partir de la figure 5 jusqu’à la figure 6 nous avons 15 images Successives qui sont presque
identiques à l’image de fond, pour cette raison l’enregistrement vidéo est arrêter.

75
[Tapez un texte]

4) Mise à jour de l’image de fond :


Dans notre technique de détection du mouvement (soustraction de l’image de fond) on peut se
trouver dans des cas où le résultat devient faussé si l'image de fond n’est pas mise à jour.

Le cas le plus courant, l’objet stoppe dans une durée du temps longue. On a besoin de mettre à jour
cet objet à l’image de fond. Evidemment, on a besoin d’un seuil pour déterminer qu’un objet sera
additionné s’il a stoppé dans N trames. Alors, on doit mettre à jour l’image de fond.

Exemple de la mise à jour de l’image de fond (objet : une chaise) :

Figure 1 Capture de l'image de fond (image 0) Figure 2 Détection du mouvement


(image3)

Figure 3 Continuité de détection du mouvement (image 5) Figure 4 Changement de place de la chaise (image 6)

Figure 5 Continuité de détection du mouvement (image 10) Figure 6 Mise à jour de l'image de fond (image 25)

76
[Tapez un texte]

Dans la figure 1 : notre robot est en état de surveillance alors il va prendre la première image
comme image de fond avec une chaise située à droite de l’image.

Dans la figure 2 : notre robot a détecté un mouvement par conséquence il déclenche


l’enregistrement vidéo.

Dans les figures 3, 4 : déplacement de la chaise à gauche de l’image

Figure 5 :

La chaise est considérée comme étant un objet en mouvement vu qu’on l’a changé de place.

Dans la figure 6 :

Suite à la prise de 15 images successives le robot a considéré cette chaise comme un objet immobile
donc il change son image de fond et l’enregistrement vidéo sera arrêté.

Déclencher la
détection du
mouvement

Enregistrement
d’une séquence
vidéo

Mise à jour de la
liste des vidéos
importées

Activer
télésurveillance

Liste des vidéos Outils de lecture des


importées depuis vidéos importées
le robot

77
[Tapez un texte]

II. Transmission de données :

1) Introduction :
Étant la fonction fondamentale de tout système de télésurveillance, la transmission du flux vidéo est
doublement nécessaire dans notre cas car nous y ferons appel dans le processus de la
télésurveillance et également pour pouvoir commander le robot à distance (quand il n’est pas visible
directement). En effet, ceci nous offrira la possibilité de suivre son déplacement et de le guider à se
mettre en place à travers la visualisation de ce qu’il affiche dans l’interface de commande en
provenance de sa « caméra intégrée ». Ces images mêmes seront traitées régulièrement pour
assurer la détection du mouvement.

2) Transmission de flux vidéo :

La transmission du flux vidéo en temps réel est une tâche primordiale, elle consiste à faire visualiser
la camera de « Safety-bot » à distance afin d’assurer la commande du robot. Pour cela, nous avons
eu recours à un système client-serveur développé en java basé sur l’utilisation du protocole RTP de
la bibliothèque Java Media Framework. Pour diffuser le contenu vidéo du serveur, le client envoie
une demande via un socket java pour démarrer la caméra et commencer le transfert. Le serveur
traite la demande, il crée un processor qui gère le localisateur de la source média en vérifiant le
format supporté, ensuite il crée une session RTP pour transmettre la sortie du processeur vers
l’adresse IP du client.

RTP (Real-time Transfer Protocol):

C’est un protocole de communication en temps réel, il accorde des fonctions temporelles en tant que
service pour des applications multimédia telles que la diffusion de vidéo en direct et la téléphonie
sur IP. Le but de ce protocole est de fournir un moyen uniforme de transmettre sur IP des données
soumises à des contraintes de temps réel telles que l’audio et la vidéo.

Le rôle principal de RTP consiste à mettre en œuvre des numéros de séquence de paquets IP pour
reconstituer les informations de voix ou vidéo même si le réseau sous-jacent change l'ordre des
paquets.

Plus généralement, RTP permet :

 d'identifier le type de l'information transportée,


 d'ajouter des marqueurs temporels et des numéros de séquence l'information
transportée
 de contrôler l'arrivée à destination des paquets.

78
[Tapez un texte]

De plus, RTP peut être véhiculé par des paquets multicast afin d'acheminer des conversations vers
des destinataires multiples.

Le protocole RTCP est basé sur des transmissions périodiques de paquets de contrôle par tous les
participants dans la session. C'est un protocole de contrôle des flux RTP, permettant de véhiculer
des informations basiques sur les participants d'une session, et sur la qualité de service.

79
[Tapez un texte]

3) Importation de données :
Au niveau serveur du robot et après chaque détection d’un objet en mouvement, l’enregistrement
vidéo de cette scène est lancé automatiquement pour donner la possibilité au poste de commande
d’importer les fichiers enregistrés et les visualiser.
Cette tâche consiste également à créer un serveur de transmission et un client pour la réception des
données. Ce dernier envoie une demande via un socket java au serveur qui lance une recherche des
fichiers, en utilisant le protocole TCP/IP qui se distingue par l’efficacité pour la transmission des
données enregistrées au préalable, la vidéo demandée sera découpée en paquets afin d’assurer
l’acheminement de ces derniers au client. Dés la fin de la transmission, la poste de commande aura
la possibilité de visualiser toutes les vidéos envoyées par le serveur (robot).

Ci-dessous la description schématisée de « l’importation vidéo »

80
[Tapez un texte]

III. Mode autonome :


Le mode autonome permet à « Safety-Bot » de s’autoguider sans avoir besoin de l’intervention d’un
utilisateur pour l’orienter vers une direction précise ou bien à lui éviter d’entrer en collision avec un
corps étranger. Pour ce faire un module de détection d’obstacles basé sur le traitement d’image a été
mis en place. La technique que nous avons utilisée s’appelle « détection par soustraction d’images
successives ».

A la différence de la méthode utilisée dans le processus de la détection du mouvement, dans le cas


d’une détection d’obstacle le traitement d’image ne se fait pas sur la totalité de l’image mais sur
chacune de ses moitiés de manière indépendante. Tout d’abord, chaque moitié est comparée à son
homologue dans l’image suivante, la différence est donc calculée en soustrayant le nombre de pixel
de l’image 1 dans sa moitié droite par le nombre de pixel de l’image 2 dans sa moitié droite aussi.
La même opération de calcul est appliquée à chaque moitié gauche. Ceci permet dans une dernière
étape de comparer le nombre total de pixels changés dans la moitié droite à celui de la moitié
gauche pour en conclure la partie qui a subi plus de changements. Sur la base de cette conclusion,
la bonne direction sera prise de façon à éviter au robot d’entrer en collision avec l’obstacle en face.
Autrement, si la partie gauche compte plus de pixels changés, l’ordre envoyé au robot est de se
tourner à droite et si la partie droite compte plus de pixels changés, l’ordre envoyé au robot est de se
tourner à gauche.

L’ordre du mouvement dans le mode autonome que nous avons mis en place englobe plusieurs
traitements séquentiels. L’opération commence par l’envoi d’une requête de connexion par un code
client écrit en langage Java à un serveur Java. Ensuite, l’ordre de mise en marche est transmis au
robot parallèlement au lancement de l’opération de détection d’obstacle déclenché par un autre
client Java et exécuté par un Serveur Matlab qui retransmet en réponse des sockets contenant la
bonne direction à prendre. Le même message est finalement retransmis au robot pour qu’il change
de direction et évite l’obstacle.

Ci-dessous la description schématisée « Mode autonome »

81
[Tapez un texte]

IV. Conclusion :
Dans cette partie, nous nous sommes intéressés à l’aspect imagerie de notre robot, en expliquant le
principe de détection du mouvement, le principe de détection d’obstacles ainsi que la transmission
de flux vidéo entre la caméra de surveillance et le serveur de contrôle.

Ainsi nous avons présenté les différents aspects fonctionnels et techniques concernant le
développement du robot. En passant par la commande à distance et le mouvement dans la partie II,
et arrivant à tout ce qui concerne l’imagerie sur cette partie. La prochaine et dernière partie sera
donc réservée à l’intégration de toutes les parties précédentes, en reliant les différentes applications
réalisées et appliquant tous les principes adoptées pour enfin faire fonctionner le robot avec toutes
les options qu’il peut offrir.

82
[Tapez un texte]

Partie IV : Phase d’intégration

83
[Tapez un texte]

I. Interfaces de l’application :

1) Menu principal :

Figure 3: Menu principal

Cette interface représente le menu principal de l’application. Elle englobe cinq possibilités de
traitement fondamentales :

 La télésurveillance
 La commande du robot
 La détection de mouvement
 Le mode autonome
 Les chemins enregistrés

Ainsi, on dispose de plusieurs fonctionnalités en rapport avec les interactions du robot.

84
[Tapez un texte]

2) Mode autonome :

Figure 4: Mode Autonome

Cette figure, présente l’interface qui illustre le mode autonome du robot.

II. Mise en œuvre du Robot :

85
[Tapez un texte]

Dans cette partie, on va procéder à la présentation et à la description des différents éléments


qui constituent notre robot commandé, accompagnés de plusieurs images les illustrant afin
de mieux visualiser le système.

Figure 5: Vue d'ensemble du système

Voici une vue d’ensemble du système dont l’ordinateur de réception « !!!!! » va recevoir les
instructions nécessaires au déplacement et à l’exécution des ordres par le robot et qui lui sont
transmis par un 2ème ordinateur de contrôle.

86
[Tapez un texte]

Figure 6: Carte d'acquisition VM110

La carte reçoit les ordres émis par l’utilisateur et les transmet aux moteurs. L’utilisateur dispose une
variété de choix à savoir « Avancer », « Avancer gauche », « STOP »,…

87
[Tapez un texte]

Figure 7: Moteur Réf : C6073

Il s’agit d’un moteur de haute qualité, fabriqué en Angleterre. Tous les engrenages sont en laiton et
l’ensemble compact est monté sur un support en acier de 1mm. La réduction est fixe (1024 :1) et
permet de développer un couple important.

C’est un moteur idéal pour de nombreuses applications en modélisme, maquette, robotique et pour
des usages industriels simples. Son poids est de 72g.

Tension 6V - 12V - 18V - 24V

Couple nominal 1500 g-cm


Couple maximal instantané 4500 g-cm

88
[Tapez un texte]

Figure 8: Vue de dessus


Fils conducteurs

Plaque d’essai

89
[Tapez un texte]

Figure 9: Vue du dessous

Sur cette figure, on peut visualiser la disposition des 3 moteurs ; ceux placés sur un même axe
servent principalement à la marche avant du robot et aussi au changement de direction selon l’ordre
reçu ou l’obstacle détecté, tandis que le moteur se situant au milieu sert à la marche arrière.
Les fils conducteurs servent à relier les trois moteurs à la carte et aux piles d’alimentation.

90
[Tapez un texte]

Figure 10: Vue de face

Cette figure présente les différents composants du système, le premier niveau comporte la carte de
commande et le second l’ordinateur de réception.

91
[Tapez un texte]

Figure 11: Vue de derrière

Ce plan rapproché permet de voir la roue arrière reliée au moteur ainsi que l’ordinateur de
réception, toujours posé en équilibre sur le robot.

92
[Tapez un texte]

Figure 12: Vue de profil

Cette figure montre la disposition des roues vues de profil. Ce sont des roues en bois poli et
plastifiées afin de faciliter le mouvement du robot.

93
[Tapez un texte]

Figure 13: Axe support

Sur cette figure, on voit clairement l’axe et la roue arrière. Il s’agit d’un axe support qui maintient
cette roue droite et l’empêche de tourner. Les deux roues avant sont les roues directrices du robot.

94

Vous aimerez peut-être aussi