Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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]
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.
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]
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 :
6
[Tapez un texte]
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]
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 :
8
[Tapez un texte]
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.
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]
11
[Tapez un texte]
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 :
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.
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.
CCD, CMOS,
Émission et réflexion Réflectance, luminance,...
Barrettes CCD,...
de la lumière visible
infrarouge
Échographie,
Distance, densité de tissus,...
Écho ultrasonore sonar,
Distance, spécularité de
Radar, SAR,...
Écho électromagnétique surfaces,
Radiographie,
Absorption des rayons X Densité de tissus,...
tomographie,...
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.
Concernant la robotique mobiles voici un échantillon des bases mobiles les plus utilisées :
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.
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.
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]
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]
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 .
Principe : Safety-bot est un robot équipé d’une camera et pouvant être commandé à
distance via une connexion WIFI.
18
[Tapez un texte]
Voies de communication 1 4
(Connexion WIFI ad-hoc)
Système
Informatique
embarqué 3
Le robot (Safety-bot) 2
Moteurs Camera
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.
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.
Entrées/Sorties adéquates
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 :
21
[Tapez un texte]
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.
22
[Tapez un texte]
Avec :
Et :
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 :
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.
25
[Tapez un texte]
Transmission
d’ordres
Transmission
d’images
26
[Tapez un texte]
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
Résultat
27
[Tapez un texte]
28
[Tapez un texte]
4) Diagramme de gantt :
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]
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]
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 :
33
[Tapez un texte]
Carte K8055
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.
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]
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)
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]
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.
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]
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]
Pré-conditions :
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.
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]
Description : l’utilisateur donne l’ordre au robot d’exécuter un circuit parmi les circuits déjà
enregistrés.
Pré-conditions :
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]
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]
Contenu_media
44
[Tapez un texte]
Chemin
Authentification
-Type -password
-Taille
-Durée
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 :
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]
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.
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.
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]
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]
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.
51
[Tapez un texte]
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.
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.
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]
Ce tableau sera utilisé par la classe Canvas pour « dessiner » le chemin parcouru.
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]
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]
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
Déclencher la détection :
61
[Tapez un texte]
Visualiser Vidéo :
Description : L’utilisateur demande au système de visualiser une vidéo donnée à partir de l’interface
de détection.
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.
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.
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 :
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 :
63
[Tapez un texte]
Chapitre II : Conception
I. Introduction :
********************************************************************************
********************************************************************************
********************************************************************************
****************************
:interface systéme
: Utilisateur
1: s'authentifier
2: transfert login mot de passe
3: verification
7: Resaisir données
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]
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.
-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
8: Traitement d'ordre
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]
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]
S'authentifier
[Refusée]
[ Acceptée ]
Capturer image
Background (F)
Capturer flux
vidéo
[ x<seuil ]
[x>seuil]
Démarrer
enregistrement vidéo
[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]
Capturer image de
fond (1ére image F)
[Tampon=F]
Prendre l'image
courante (Cour)
[Tampon=Cour, Nbre=0]
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]
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
Diff gauche = moitié gauche (i)- moitié gauche (j) Diff droite = moitié droite (i) - moitié droite (j)
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 :
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]
72
[Tapez un texte]
(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.
73
[Tapez un texte]
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é
74
[Tapez un texte]
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.
À 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]
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.
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.
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
77
[Tapez un texte]
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.
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.
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.
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).
80
[Tapez un texte]
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.
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]
83
[Tapez un texte]
I. Interfaces de l’application :
1) 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
84
[Tapez un texte]
2) Mode autonome :
85
[Tapez un texte]
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]
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]
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.
88
[Tapez un texte]
Plaque d’essai
89
[Tapez un texte]
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]
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]
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]
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]
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