WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La géolocalisation de réseaux capteurs (algorithme DVHOP )

( Télécharger le fichier original )
par Mohammed et Hichem MEKIDICHE et RAIS
Université Abou Bakr Belkaid à  Tlemcen Algérie - Master 2 en informatique, option: réseaux 0000
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

République Algérienne Démocratique et Populaire
Université Abou Bakr Belkaid- Tlemcen
Faculté des Sciences
Département d'Informatique

Mémoire de fin d'études

Pour l'obtention du diplôme de Master en Informatique

Option: Réseaux et Systèmes Distribués

Thème

...................................................

Réalisé par :

- .......................................

- ......................................

Présenté le.. Juin 2012 devant le jury composé de MM.

-

(Président)

- Mme Labraoui Nabila (Encadreur)

- ...................................................... (Examinateur)

- ...................................................... (Examinateur)

Année universitaire : 2011-2012

Résumé

La localisation dans les réseaux de capteurs déployés de manière aléatoire consiste à déterminer les coordonnées géographiques des différents capteurs. L'utilisation de mécanismes de localisation dans les réseaux de capteurs est essentiel, à la fois pour les protocoles de communication (routage géographique) que pour certaines applications (suivi de véhicules, détection d'événements critiques). Dans ce mémoire, nous avons implémenté et évalué un des algorithmes de localisation de type range-free, nommé DV-HOP. Nous avons également proposé une amélioration de cet algorithme afin de minimiser l'erreur d'estimation et donc obtenir une meilleure précision de calcul des coordonnées des noeuds capteurs. Nos résultats de simulation ont démontré l'efficacité de notre proposition par rapport à la version basique de DV-HOP.

Mots clés: Réseaux de capteurs sans fil, localisation, Dvhop, TinyOS, NesC.

Introduction générale

Le besoin d'observer et éventuellement de contrôler des phénomènes physiques tels que la température, la pression ou encore la luminosité est essentiel pour de nombreuses applications industrielles, scientifiques, et même grand public. Cette tâche est déléguée aux capteurs dont la fonction est l'acquisition de l'information sur les phénomènes observés et, le cas échéant, l'exécution des traitements qui s'y attachent. L'utilisation des capteurs n'est pas une nouveauté en soi. En effet, grâce aux récents progrès des technologies sans fil, les capteurs peuvent communiquer non seulement de proche en proche mais aussi d'acheminer de l'information à tous les noeuds connectés au réseau. On s'est ainsi affranchi de la contrainte de câblage, qui limitait considérablement le déploiement d'un grand nombre de noeuds. Il est donc devenu tout à fait possible de déployer un réseau constitué d'un grand nombre de capteurs collaboratifs afin de surveiller une zone plus large.

Les réseaux de capteurs sans fil sont considérés comme un type spécial de réseaux ad hoc. Ils apportent une perspective intéressante : celle de réseaux capables de s'auto-configurer et de s'auto-gérer sans qu'il y ait besoin d'interventions humaines. Les noeuds sont généralement déployés de manière aléatoire à travers une zone géographique, appelée zone d'intérêt.

Les données récoltées sont acheminées grâce à des communications sans fil en multi-saut (c.-à-d. de proche en proche) à une station de base dont le rôle est entre autre d'agréger/exploiter les données récoltées. Elle représente en quelque sorte le point d'entrée du réseau de capteurs.

Parmi les problèmes cruciaux, deux d'entre eux peuvent être cités :

? celui de la Localisation : une grande majorité des applications dans les

réseaux de capteurs utilise un déploiement aléatoire d'un grand nombre de capteurs, en raison soit de l'hostilité de la zone à surveiller, soit de son immensité. La phase de localisation est donc nécessaire non seulement au fonctionnement du réseau (routage géographique par exemple), Il est donc nécessaire de localiser, avec la meilleure précision possible, tous les noeuds du réseau. Cette problématique, malgré les nombreux travaux de recherche qui s'y étaient attachés, reste une problématique ouverte.

? Couverture : une des conséquences du déploiement aléatoire est la redondance des capteurs sur la zone surveillée. Il est donc tout à fait judicieux, afin de prolonger au maximum la durée de vie du réseau, de mettre en veille un certain nombre de capteurs redondants tout en assurant une couverture totale de la zone surveillée et en maintenant la connectivité du réseau.

? Fusion de données : dans certains cas de figures, il est nécessaire que tous les noeuds du réseau aient à leur disposition un agrégat tel que la moyenne de tous les prélèvements effectués. Ceci dans le but d'effectuer une action concertée par exemple. Cette tâche, d'ordinaire si facile à effectuer dans un réseau fiable, devient rapidement problématique dans le cas d'un réseau sujet à la fois à des perturbations environnementales constantes et à des défaillances fréquentes.

Bien d'autres problèmes tels que l'énergie des capteurs étant limitée, cette contrainte doit être prise en compte afin d'allonger la durée de vie du réseau.

Ce mémoire se focalise sur la problématique de la localisation statique dans les réseaux de capteurs sans fil. Nous nous sommes également intéressé de près à l'algorithme de localisation DV-HOP afin de l'implémenter et d'évaluer ses performances selon la métrique de la précision.

Nous avons également proposé une amélioration de l'algorithme DV-HOP, afin de minimiser l'erreur d'estimation. Nos résultats de simulation ont démontré l'efficacité de notre proposition par rapport à la version basique de DV-HOP.

La suite de ce document est constituée de 4 chapitres :

Le chapitre 1 : nous présentons une description générale des réseaux de capteurs sans fil ainsi que leurs caractéristiques, contraintes et spécificités.

Le chapitre 2 : est consacré à la problématique de la localisation.

Le chapitre 3 : présente une description pour le système TinyOS et le langage

NesC.

Le chapitre 4 : constitue le coeur de notre travail, dans ce chapitre nous présentons le simulateur TOSSIM avec une brève description de ces

composants, ses principales caractéristiques et fonctionnalités. Par la suite nous donnons les résultats de simulation sous forme de graphes de plusieurs simulations, effectuées pour obtenir des mesures pour évaluer la précision de calcul des positions.

En fin de ce mémoire, une conclusion est donnée pour résumer les apports essentiels de notre travail, les ouvertures et les perspectives pour le futur.

Chapitre 1
Réseaux de capteurs sans fil:
Description, protocole

Chapitre 1 Les Réseaux de Capteurs sans Fil

1.Introduction

Les réseaux de capteurs sans fil sont un cas particulier des réseaux sans fil sans infrastructure (réseaux ad hoc). En effet, ceux-ci sont constitués d'un ensemble de petits appareils, ou capteurs, possédant des ressources particulièrement limitées mais qui leur permettent d'acquérir des données sur leur environnement immédiat, de les traiter et de les communiquer. Ils présentent des intérêts considérables pour le secteur industriel, mais aussi pour les organisations civiles où la surveillance et la reconnaissance de phénomènes physiques sont une priorité. En effet, un réseau de capteurs peut être mis en place dans le but de surveiller une zone géographique plus ou moins étendue pour détecter l'apparition de phénomènes ou mesurer une grandeur physique (température, pression, vitesse...).

2. Définitions

Un réseau de capteur sans fil (Wireless Sensor Network ; WSN, ou RCSF)

est un type spécial de réseau ad-hoc défini par un ensemble coopérant de noeuds capteurs dispersés dans une zone géographique appelée zone de captage afin de surveiller un phénomène et récolter ses données d'une manière autonome. Les noeuds capteurs utilisent une communication sans fil pour acheminer les données captées avec un routage multi sauts vers un noeud collecteur appelé noeud puits (ou sink) qui va transmettre, via internet ou satellite, ces informations à l'utilisateur du réseau (Figure I.1). Ainsi, l'usager peut adresser des requêtes aux autres noeuds du réseau, précisant le type de données requises, puis récolter les données environnementales captées par le biais du noeud collecteur.

Chapitre 1 Les Réseaux de Capteurs sans Fil

Figure I. 1 : Accès à un réseau de capteur via Internet.

3. Domaines d'application des réseaux de capteurs

La miniaturisation des micro-capteurs, le coût de plus en plus faible, la large gamme des types de capteurs disponibles (thermique, optique, vibrations, etc.) ainsi que le support de communication sans fil utilisé, permettent l'application des réseaux de capteurs dans plusieurs domaines parmi lesquels :

3.1 Domaine militaire

Comme pour de nombreuses autres technologies, le domaine militaire a été le moteur initial pour le développement des réseaux de capteurs.

Le déploiement rapide, le coût réduit, l'auto organisation et la tolérance aux pannes des réseaux de capteurs sont des caractéristiques qui font de ce type de réseaux un outil appréciable dans un tel domaine. Actuellement, les RCSFs peuvent être une partie intégrante dans le commandement, le contrôle, la communication, la surveillance, la reconnaissance, etc.

3.2 Domaine médical

Les réseaux de capteurs sont également largement répandus dans le domaine médical. Cette classe inclut des applications comme : fournir une interface d'aide pour les handicapés, collecter des informations physiologiques humaines de meilleure qualité, facilitant ainsi le diagnostic de certaines maladies, surveiller en permanence les malades et les médecins à l'intérieur de l'hôpital.

Chapitre 1 Les Réseaux de Capteurs sans Fil

3.3 Domaine architectural :

Transformation des bâtiments en environnements intelligents capables de reconnaître des personnes, interpréter leurs actions et y réagir

3.4 Domaine environnemental

Dans ce domaine, les capteurs peuvent êtres exploités pour détecter les catastrophes naturelles (feux de forêts, tremblements de terre, etc.), détecter des fruits des produits toxiques (gaz, produits chimiques, pétrole, etc.) dans des sites industriels tels que les centrales nucléaires et les pétrolières.

3.5 Domaine commercial

Parmi les domaines dans lesquels les réseaux de capteurs ont aussi prouvé leur utilité, on trouve le domaine commercial. Dans ce secteur on peut énumérer plusieurs applications comme : la surveillance de l'état du matériel, le contrôle et l'automatisation des processus d'usinage, etc.

4. Architecture physique d'un capteur

Un capteur est composé de quatre composants de base: Unité de capture, unité de traitement, unité d'émission/réception, et une unité d'énergie. Il se peut aussi qu'il existe d'autres composants additionnels dépendant de l'application, par exemples: un générateur d'énergie, un système de localisation, et un mobilisateur [1].

Chapitre 1 Les Réseaux de Capteurs sans Fil

Figure I. 2: les composants d'un capteur

4.1 Unité de capture

La fonction principale de l'unité de capture est de capturer ou mesurer les données physiques à partir de l'objet cible. Le signale analogique correspondant aux évènements observés par le capteur est ensuite transformé en données numériques qui peuvent être utilisées par l'unité de traitements.

4.2 Unité de traitements

L'unité de traitement joue un rôle majeur dans la collaboration entre les noeuds afin d'accomplir les tâches prédéfinies. Actuellement, il existe plusieurs familles d'unités de traitement incluant les microcontrôleurs, microprocesseurs, et FPGAs (Field Programmable Gate Arrays).

Les FPGAs consomment plus d'énergie et ne sont pas compatibles aux méthodologies de programmation traditionnelles, mais le fait qu'ils soient programmables et reconfigurables [2] présente un réel avantage.

L'unité de traitement a besoin de stocker les informations pendant le traitement local et l'agrégation des données, une mémoire flash (mémoire non volatile servant au stockage stable d'informations) est généralement utilisée vu son coût et capacité de stockage

Chapitre 1 Les Réseaux de Capteurs sans Fil

4.3 Unité d'émission/réception

Il existe trois schémas de communication pour les réseaux de capteurs: la communication optique (Laser), l'infrarouge, et la radiofréquence (RF: Radio Frequency).

Le Laser consomme moins d'énergie que la RF et fournit une haute sécurité, mais exige l'utilisation d'une ligne optique et il est sensible à la perturbation physique.

L'infrarouge n'a pas besoins d'antennes, mais sa capacité de diffusion est limitée.

La RF est la plus simple à utiliser mais elle exige l'utilisation des antennes [2].Plusieurs stratégies de réduction de la consommation d'énergie sont développées, comme la modulation/démodulation et le filtrage. La modulation en amplitude est plus simple par rapport à celle en fréquence, mais elle est susceptible au bruit

4.4 Unité d'énergie

La consommation d'énergie est un point très important pour les réseaux de capteurs. Les batteries utilisées sont soit rechargeables ou non. Souvent, dans les environnements sensibles, il est impossible de recharger ou changer une batterie, donc avoir une meilleure gestion de la consommation d'énergie est primordial pour augmenter la durée de vie du réseau.

Il existe deux grandes politiques pour conserver la consommation d'énergie. Dans la première, appelé DPM (Dynamic Power Management), les composants inactifs sont mis en veille. Dans ce cas une analyse stochastique pour prédire les prochains évènements est Généralités sur les réseaux de capteurs nécessaires.

Pour la deuxième, appelé DVS (Dynamic Voltage Scheduling), l'énergie est fournie aux composants selon leur charge de travail

Les nouveaux capteurs peuvent contenir des générateurs d'énergie renouvelable, par exemple: l'énergie solaire, et l'énergie mécanique (vibration, l'aire...)

Certaines applications ont besoin de savoir l'emplacement du capteur. Pour cette raison, le capteur doit avoir un système de localisation telle qu'un GPS (Global Positioning System).

Pour les réseaux de capteurs mobiles, des noeuds doivent se déplacer, donc un mobilisateur doit exister dans les composants du capteur [1].

Chapitre 1 Les Réseaux de Capteurs sans Fil

5. Exemple de capteur sans fil

Le modèle que nous allons présenter est le Mica2. D'autres modèles existent chez ce fabriquant tel que le MicaZ, l'Imote2 ou le TelosB .

Figure I. 3: Capteur Mica2.

5.1 Le capteur Mica2

Chaque Mica2 est équipé d'un processeur cadencé à 7,37 Mhz et doté de 4ko de RAM, de 128 ko de mémoire flash et d'un transmetteur radio à 433 MHz.

Les Mica2 peuvent être équipés de plusieurs types de circuits intégrés permettant d'effectuer des mesures de phénomènes naturels. Chaque carte supporte plusieurs capteurs sous forme de composants électroniques. L'équipe SOD du LaBRI dispose de Mica2 munis de deux types de cartes [3]:

A.La carte Crossbow

MTS300 est équipée d'un capteur de température, d'intensité lumineuse, d'un microphone et d'un buzzer à 4kHz (figure 1.4)

B.La carte Crossbow

MTS420, beaucoup plus complète, comporte un capteur d'humidité et de température, un capteur de lumière ambiante, un baromètre, un accéléromètre à deux axes et une puce GPS (figure 1.5)

Chapitre 1 Les Réseaux de Capteurs sans Fil

Figure I. 4: carte Crossbow MTS300

Figure I. 5: carte Crossbow MTS420

6. Architecture des réseaux de capteurs sans fil

Un réseau de capteurs est constitué essentiellement de : plusieurs noeuds capteurs, un noeud Sink ou plusieurs et un centre de traitement des données.

6.1 Noeuds

Un réseau de capteurs sans fil est un réseau ad hoc avec un grand nombre de noeuds qui sont des micros capteurs capables de récolter et de transmettre des données environnementales d'une manière autonome. La position de ces noeuds n'est pas obligatoirement prédéterminée. Ils peuvent être aléatoirement dispersés dans une zone géographique, appelée « champ de captage » correspondant au terrain d'intérêt pour le phénomène capté.

En plus d'applications civiles, il existe des applications militaires aux réseaux de capteurs (détection d'intrusions, localisation de combattants, véhicules, armes, etc. sur un champ de bataille, sous l'eau, dans l'espace, dans le sol...)

Chapitre 1 Les Réseaux de Capteurs sans Fil

Figure I. 6: les Noeuds d'un réseau capteur.

6.2 Sink

Et c'est un noeud particulier dans le réseau et est le responsable de la collecte de données issues des différents noeuds de réseau. Doit être active et illimitée d'énergie, nous pouvons trouver deux ou plusieurs sinks pour alléger la charge.

6.3 Centre de traitement des données

Est le centre, qui est une collection de toutes les données envoyées par les sinks, cet endroit à le rôle d'extraire des informations utiles afin d'exploiter

7. topologie d'un réseau de capteur

Il existe plusieurs topologies pour les réseaux de capteurs

7.1 Topologie en étoile

La topologie en étoile est un système uni saut. Tous les noeuds envoient et reçoivent seulement des données avec la station de base. Cette topologie est simple et elle demande une faible consommation d'énergie, mais la station de base est vulnérable et la distance entre les noeuds et la station est limitée.

7.2 Topologie en toile (en grille)

La topologie en toile est un système multi saut. La communication entre les noeuds et la station de base est possible. Chaque noeud a plusieurs chemins pour envoyer

Chapitre 1 Les Réseaux de Capteurs sans Fil

des données. Cette topologie a plus de possibilités de passer à l'échelle du réseau, avec redondance et tolérance aux fautes, mais elle demande une consommation d'énergie plus importante

7.3 Topologie hybride

La topologie hybride est un mélange des deux topologies ci-dessus. Les stations de base forment une topologie en toile et les noeuds autour d'elles sont en topologie étoile. Elle assure la minimisation d'énergie dans les réseaux de capteurs

Figure I. 7: Topologie hybride d'un réseau de capteurs sans fil

8. Communication dans les réseaux de capteurs

8.1 Architecture de communication basée sur le modèle OSI

Le modèle de communication comprend cinq couches qui ont les mêmes fonctions que celles du modèle OSI ainsi que trois couches pour la gestion d'énergie, la gestion de la mobilité et la gestion des tâches[4].

Chapitre 1 Les Réseaux de Capteurs sans Fil

Figure I. 8: Modèle en couches du réseau de capteurs sans fil.

Rôles des couches :

A. Couche physique : Matériels pour envoyer et recevoir les données

B .Couche liaison : Gestion des liaisons entre les noeuds et les stations de base, contrôle d'erreurs

C. Couche réseau : Routage et transmission des données

D. Couche transport : Transport des données, contrôle de flux

E. Couche application : Interface pour les applications au haut niveau F.Plan de gestion d'énergie : Contrôle l'utilisation d'énergie

G. Plan de gestion de mobilité : Gestion des mouvements des noeuds

H.Plan de gestion de tâche : Balance les tâches entre les noeuds afin d'économiser de l'énergie.

8.2 Technologies de la communication dans les réseaux de capteurs

A. Bluetooth / IEEE 802.15.1

Bluetooth est une spécification de l'industrie des télécommunications. Elle utilise une technique radio courte distance destinée à simplifier les connexions entre les appareils électroniques. Malheureusement, un grand défaut de cette technologie est sa trop grande consommation d'énergie.

Chapitre 1 Les Réseaux de Capteurs sans Fil

B. ZigBee / IEEE 802.15.4

ZigBee est une norme de transmission de données sans fil permettant la communication de machine à machine. Zigbee offre des débits de données moindres, mais sa très faible consommation électrique et ses coûts de production très bas en font une candidate idéale pour la domotique ou les matériels de type capteur, télécommande ou équipement de contrôle dans le secteur industriel.

C. Dash 7 / ISO/IEC 18000-7

Dash7 est une nouvelle technologie de réseaux de capteurs sans fil en utilisant la norme ISO/IEC 18000-7. Sa consommation électrique est très faible, la durée de vie de batterie peut arriver à plusieurs ans.

Sa distance de communication est 2km. Elle fournit une faible latence pour le suivi des objets en mouvement, un protocole petit pile, des supports de capteurs et de sécurité et un débit de transmission allant jusqu'à 200kbits/s.

9. Conclusion

Dans ce chapitre nous avons présenté les réseaux de capteurs sans fil (RCSF), en exposant leurs architectures, leurs contraintes ainsi que leurs domaines d'applications.

Dans le chapitre suivant, nous allons présenter le principe de localisation utilisé dans des systèmes tels que GPS et Galileo, puis nous abordons la problématique de la localisation dans les réseaux de capteurs sans fil (RCSF).

Chapitre 2
La localisation dans les
réseaux de capteur sans fil

Cha itre 2 la localisation dans les Résea x de Ca te rs sans-- Fil

p p

1. Introduction

De nombreuses applications pour les réseaux de capteurs comme la surveillance de feu de forêt, le suivi de véhicule, etc... Ont besoin d'avoir une information géographique pour fonctionner efficacement. Les protocoles de routage géographique ou orienté position vont pouvoir fonctionner sans le coûteux mécanisme de découverte de route proactive et ainsi économiser de l'énergie et améliorer le taux d'acheminement. De plus, dans les protocoles de contrôle de topologie, où chaque capteur doit ajuster sa puissance de transmission pour minimiser sa consommation énergétique, les algorithmes ont le plus souvent besoin d'information sur la position des voisins. [8]

2. Les systèmes de localisation

2.1 Les principaux systèmes de localisation

A. GPS (Sigle signifiant Global Positioning System)

Système de géolocalisation par satellite. Le réseau de 24 satellites (plus 4 satellites en réserve) actuellement en fonctionnement, développé par l'armée américaine, est mis à disposition des civils. Il permet de déterminer les coordonnées géographiques de n'importe quel point situé à la surface du globe. Sa précision peut atteindre 1 mètre. Le GPS s'utilise en association avec une carte pour se repérer et se positionner : randonnées, voile, trek...

B. Galileo

Est le futur système de positionnement européen par satellite. Ce système est en phase de test depuis 2004, commencera à être utilisable en 2010 et pleinement en 2013.

Ce système vise à supprimer la dépendance de l'Europe à l'utilisation du système américain GPS (Global Positioning System). Cette indépendance est essentielle car le système américain souffre de restrictions sur la précision de positionnement, sur la fiabilité et sa continuité. De plus, le positionnement dans certaines régions du globe n'est pas possible avec le GPS pour des raisons techniques ou politiques.

Le système Galiléo sera entièrement sous contrôle civil, contrairement aux autres systèmes de positionnement existants. [9]

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

C. le system IRNSS (Indian Regional Nafigational Satellite System)

Est une proposition de système de positionnement par satellites qui serait construit et contrôlé par le gouvernement Indien. Il fournirait la position absolue à une précision de 20 mètres à travers toute l'Inde et à une distance de 1500 à 2000 km des frontières. Un but de contrôle complet de la part du gouvernement Indien a été cité, ce qui implique que toutes les parties du projet soit construites en Inde.

d. Glonass

Signifie en russe GLObal'naya NAvigatsionnaya Sputnikovaya Sistema soit système mondial de navigation par satellite. C'est un système de positionnement développé par l'actuelle Union Soviétique et contrôlé pour le gouvernement russe par l'agence spatiale russe. Il est une alternative et complémentaire du GPS américain et du futur Galiléo européen.

Le développement de Glonass a débuté en 1976 avec pour but une couverture mondiale en 1991. Le premier lancement de satellite a eu lieu le 12 octobre 1982 et la totalité des satellites furent mis en orbite en 1995. Cependant, après l'achèvement du projet, le système se délabra avec l'effondrement de l'économie russe. Les Russes lancèrent un grand projet de restauration du système en 2001, en introduisant notamment le gouvernement indien en tant que partenaire, et accélérant ainsi le programme de restauration du système a été achevé en 2009. [9]

2.2 Le système GPS

A. La structure du système GPS

Le système GPS peut être séparé en trois parties : le segment de contrôle, le segment spatial et le segment utilisateur.

? Le segment de contrôle

Le segment de contrôle est formé par six stations de contrôle appartenant aux forces armées américaines de l'air (USAF), reparties tout autour du globe en fonction de la longitude.

Le but de ces stations est de contrôler la santée du segment spatial et de maintenir le temps du système, le GPS-time (GPST). De manière plus précise, ces stations permettent de contrôler l'état de santé des satellites ainsi que leur trajectoire, prédire les éphémérides des satellites et les paramètres de l'horloge, mettre a jour les messages de

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

navigation des satellites, commander de petites manoeuvres afin de réinitialiser une orbite.

V' Le segment spatial

Le système GPS est formé de 31 satellites (situation au 27 août 2009) en orbite quasi circulaire (excentricité <0,01) a une altitude de 20200 km. Leur période est de 11h58 minutes, soit un demi jour sidéral. Ces satellites sont repartis sur six plans orbitaux inclinés 55° par rapport au plan équatorial.

Chaque satellite contient plusieurs horloges atomiques, certains ont quatre horloges (deux au rubidium et deux au césium), certains en ont trois au césium et, dans les plans de modernisation du GPS, les prochains satellites auront des maser a hydrogène, qui sont extrêmement précis. Ce sont les stations au sol qui sélectionnent l'horloge la plus précise. En effet, ces horloges perdent ou gagnent moins d'une nanoseconde par jour !

Les satellites sont lancés par blocs qui ont tous des spécifications. V' Le segment utilisateur

Le segment utilisateur rassemble l'ensemble des utilisateurs du système, du simple utilisateur aux géomètres et aux militaires. L'ensemble de ces utilisateurs peut être sépare en deux catégories, selon la prestation du systéme qu'ils utilisent. [10]

B. Le principe de GPS

Voici une illustration en deux dimensions du principe de la détermination de la position d'un récepteur GPS:

Chacun des trois satellites S1, S2 et S3 envoie un signal indiquant sa position ainsi que le moment de l'envoi du signal.

A partir des temps de parcours de ces trois signaux, le récepteur GPS placé en P calcule sa distance à chacun des trois satellites.

Le point P est l'unique point d'intersection de ces trois cercles.

Dans l'espace, les signaux de quatre satellites sont nécessaires pour déterminer de façon univoque la position de P. Le point P est alors l'unique point d'intersection de quatre sphères.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

Figure II. 1: principe de mesure GPS.

3. la localisation matérielle

La localisation dans les réseaux de capteurs dépend de plusieurs dispositifs matériels. Cette dépendance se relève à l'utilisation des ancres (beacons), et à l'estimation des distances entre les noeuds. Dans cette section nous présentons la définition d'une ancre et son mode d'utilisation, et nous introduisons également les différentes techniques d'estimation de la distance. [11]

3.1 Ancres/Beacons

L'objectif de la localisation est de déterminer les coordonnées physiques d'un groupe de noeuds. Ces coordonnées peuvent être globales, c'est à dire qu'elles sont alignées avec un système extérieur comme le système GPS par exemple, ou bien relatives, ce qui signifie qu'elles forment une transformation rigide (rotation, réflexion, translation) des coordonnées du système global. Dans le deuxième cas, on n'a pas besoin de la position des noeuds pour fonctionner, une carte relative est suffisante. Les méthodes qui créent une carte relative des coordonnées sans recours aux ancres sont appelées « anchor-free ». Par contre d'autres méthodes ne fonctionnent pas sans connaître la position d'un certain nombre d'ancres à priori, sont appelées « anchor-based ». [11]

Les ancres (souvent appelées aussi beacons) sont au préalable nécessaires pour localiser les noeuds d'un réseau dans un système de coordonnées global. Les ancres sont simplement des noeuds ordinaires qui connaissent leurs coordonnées à priori. Cette connaissance pourrait être difficilement codée, ou bien facilement acquise par un certain matériel supplémentaire comme un récepteur GPS. Au minimum, trois ancres non-colinéaires sont nécessaires pour définir un système de coordonnées en deux dimensions.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

Les ancres peuvent être utilisées de plusieurs façons. Certains algorithmes de localisation trouvent une carte arbitraire relative pour les coordonnées des noeuds, puis ils utilisent les ancres pour déterminer une transformation rigide des coordonnées relatives vers les coordonnées globales. D'autres algorithmes, partant des positions des ancres, calculent les positions des noeuds non-ancres dans un système global. [11]

3.2 Estimation de distances

Parmi les méthodes de localisation dans les réseaux de capteurs nous distinguons entre deux catégories, les méthodes qui ne sont pas basées sur la distance inter-noeuds et d'autres qui y sont. Les premières sont celles qui ne calculent pas de distances entre voisins. Elles utilisent d'autres informations telles que la connectivité pour estimer la position des noeuds.

Les deuxièmes sont des méthodes qui estiment les distances entre les noeuds pour calculer les positions. Plusieurs techniques sont développées pour les estimations des distances entre les noeuds voisins. Parmi lesquelles nous trouvons celles qui sont basées sur les dispositifs radio comme la méthode de la force du signal reçu « Received Signal Strength Indication (RSSI) » et la technique d'estimation de la distance par le nombre de sauts radios « Radio hop count » ; et celles qui sont fondées sur l'utilisation d'autres matériels (microphones, etc) comme la technique de la différence entre les temps d'arrivée de deux signaux « Time Différence of Arrival (TDoA) » Et celle qui estime l'angle d'arrivée du signal « Angle of Arrival (AoA) ».

4. Critères de localisation

Un algorithme de localisation est évalué selon une liste de critères dont nous citons :

4.1 Précision de la localisation

L'erreur de la localisation est souvent définit comme étant, la distance euclidienne entre les vraies positions des noeuds et celles estimées par l'algorithme. L'objectif d'un algorithme de localisation est de minimiser cette erreur pour augmenter la précision de localisation. Généralement, cette imprécision vient de l'imprécision des methodes d'estimation de la distance. Les obstacles environnementaux et les terrains irréguliers peuvent influencer la précision des algorithmes de localisation. Des obstacles

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

comme de gros rochers peuvent interférer avec les ondes radios, et empêcher l'utilisation de « TDoA » du fait qu'on n'a plus une ligne droite.

4.2 Contraintes de ressources

Les noeuds capteurs possèdent généralement des resources très limitées. Ils possèdent de faibles processeurs et de petites mémoires, ce qui rend les grands calculs irréalisables. Par conséquent, un algorithme de localisation doit être simple et non complexe et son développement n'exige pas de grands calculs ni de grande capacité de stockage de mémoire. De plus, nous ajoutons la rapidité de l'algorithme. Avec quelle rapidité le système de localisation renvoie-t-il les positions des noeuds ? Ceci est particulièrement important, surtout lors du traçage d'un chemin d'une cible.

4.3 Contraintes énergétiques

La seule source d'énergie d'un noeud capteur est sa batterie. Pour cela, dans les réseaux de capteurs, une gestion de l'énergie très économique est nécessaire. Comme le facteur dominant de la consommation d'énergie est la communication radio, il faut trouver un algorithme de localisation qui communique le moins possible via la radio.

4.4 Passage à l'échelle

Les réseaux de capteurs sont généralement envisagés à large échelle, avec des centaines voir des milliers de noeuds. La question qui se pose, est-ce qu'un algorithme de localisation fonctionne sur un réseau de plusieurs milliers de noeuds ? Et si oui, est-il toujours aussi efficace ? Ce critère est en rapport avec le fait qu'un algorithme soit implémentable de façon distribuée ou non.

Pratiquement, il est impossible de tenir compte de tous ces critères lors du développement d'un algorithme de localisation. Néanmoins, il peut être intéressant de les garder à l'esprit afin de pouvoir rendre notre méthode meilleure selon tel ou tel critère.

5. Algorithmes de localisation

Cette section est destinée aux algorithmes de localisation. Nous distinguons deux façons d'implémenter un algorithme de localisation selon leur organisation de calcul : les algorithms centralisés et les algorithmes distribués.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

5.1 Algorithmes centralisés

Les algorithmes centralisés sont conçus pour fonctionner sur une machine centrale très puissante au niveau ressources. Les noeuds capteurs recueillent des informations (signal, voisins, distances, etc) de leur environnement et les transmettent à une station de base qui à son tour les analyse, calcule les positions et les transmet aux noeuds. Les algorithmes centralisés contournent le problème des ressources limitées des noeuds en acceptant des coûts de communications très élevés pour envoyer les informations à la machine centrale. Ces algorithms deviennent de plus en plus coûteux quand la taille du réseau augmente, car ça épuise les noeuds qui sont trop proches de la station de base qui subissent un très grand nombre de communications. En outre, les algorithmes centralisés exigent qu'une station de base puissante soit déployée parmi les noeuds, ce qui n'est pas toujours possible. Dans le cas où c'est possible, le problème de la mise à l'échelle peut être résolu en déployant plusieurs stations de bases.

Cependant, La centralisation permet à un algorithme d'être plus complexe, car les calculs se font sur la machine centrale et non pas par les noeuds eux mêmes. [11].

5.2 Algorithmes distributes

Dans le cas d'un algorithme distribué, tous les noeuds communiquent avec leurs voisins pour estimer les distances et échanger les informations de voisinage, afin de dériver leur position. Par conséquent, à la fin du processus de localisation, chaque noeud doit connaître sa position ainsi que celles de ses voisins sans l'aide d'aucune unité centrale. Les algorithmes distribués, extrapolent généralement les positions des noeuds à partir de celles des ancres. Ainsi, ils localisent les noeuds directement dans le système de coordonnées global de ces ancres.

Comme le calcul des positions se fait par les noeuds eux mêmes, les algorithmes distribués ne sont pas complexes. Pour les réseaux à grande échelle, on considère qu'une méthode distribuée est nécessaire car les méthodes centralisées demanderaient trop de communication pour l'acheminement des informations vers l'unité centrale et consommeraient donc trop d'énergie.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

5.3 Comparaison

Une comparaison entre les algorithmes distribués et centralisés est présentée dans le tableau 2.1. Cette comparaison montre les différentes caractéristiques de ces algorithmes en tenant compte des critères de localisation.

Algorithmes

Centralisés

Distribués

Precision

Bonne à cause du calcul complexe.

Moyenne/faible.

Contraintes resources

Non, les calculs se font sur la machine puissante.

Oui, les noeuds font le

calcul.

Complexité

Très complexes, O(n2),

O(n3).

Non complexes.

Consommation

d'énergie Forte, grand

nombre de
communications.

Faible.

Passage à l'échelle

Non robustes

Robustes

Tableau II. 1: Comparaison entre algorithmes centralisés et distribués.

6. Les technologies de mesure

Plusieurs technologies permettent à un capteur de mesurer la distance qui le sépare d'un capteur voisin (ToA, TDoA, RSSI) ou bien de mesurer l'angle qu'il forme avec celui-ci (AoA).

6.1 Temps d'arrivée

La technologie ToA (Time of Arrival) suppose que les noeuds du réseau sont synchrones. La distance qui sépare deux capteurs se déduit de la vitesse de propagation du signal et de la différence entre les dates d'émission et de réception du message. Cette technologie est celle utilisée par le système GPS (Global Positioning System) .

Lorsque les noeuds ne sont pas synchrones, l'envoi d'un message aller-retour est nécessaire. En fonction de son horloge, de la vitesse de propagation du signal et du temps de traitement du signal reçu, un capteur récepteur obtient la distance qui le sépare du capteur émetteur en calculant la différence entre les dates d'émission et de réception, en y soustrayant le temps de traitement du signal, puis en divisant le résultat par deux.

Cela suppose que les noeuds du réseau ont un temps de traitement du signal identique.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

6.2 Différence des temps d'arrivée

La technologie TDoA (Time Difference of Arrival) (Savvides et al. 2001) se base sur la différence des dates d'arrivée d'un ou plusieurs signaux et suppose également que la vitesse de propagation des signaux est connue. Cette technologie s'applique dans les cas suivants :

- un émetteur envoie des signaux de natures différentes (par exemple, l'ultrason, l'onde radio, ...) à un récepteur.

- un récepteur reçoit des signaux d'une même nature d'au moins trois émetteurs.

- un émetteur envoie un signal reçu par au moins trois récepteurs (dans ce dernier cas une vue globale des signaux sera connue).

Dans chacun des cas, les récepteurs mettent en corrélation leurs informations et en déduisent les distances qui les séparent des émetteurs. Il s'agit d'une simple resolution d'un système d'équations dont les distances sont les inconnues.

6.3 Puissance du signal

La puissance d'émission et de réception d'un signal peut être également exploitée pour obtenir la distance entre deux capteurs. La technologie RSSI (Received Signal Strength Indicator) (Bahl et Padmanabhan, 2000) considère la perte de puissance d'un signal entre son émission et sa réception. Cette perte varie en fonction de la distance entre les deux capteurs : plus les capteurs sont éloignés (resp.proches), plus la perte est importante (resp. faible). Cette perte sera alors traduite en une distance.

6.4 Angle d'arrivée

La technologie AoA (Angle of Arrival) (Niculescu et Nath, 2003a) calcule l'angle formé entre deux capteurs. Chaque capteur est doté d'antennes orientées de sorte à déduire l'angle qu'il forme avec un voisin lorsque ce dernier lui envoie un signal. Cet angle est reporté par rapport à un axe propre au capteur. Toutefois, un capteur peut être équipé d'une boussole et, dans ce cas, l'angle sera reporté sur un des axes nord, sud, est ou ouest. [12]

7. Les méthodes libres de mesure

Dans cette famille de méthodes, les capteurs cherchant à déterminer leurs positions s'appuient uniquement sur les positions des ancres. Aucune mesure de distance ou d'angle n'est utilisée. Par conséquent, ces méthodes ne peuvent fournir que

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

des positions estimées aux capteurs. Les méthodes (He et al. 2005; Bulusu et al., 2000; Nagpal et al., 2003; Chan et al., 2005; Datta et al., 2006; Liu et al., 2007, 2005c), pour ne citer qu'elles, sont des exemples de méthodes libres de mesure.

Il existe deux techniques courantes dans ce type de méthodes. La première consiste à définir des zones contenant les capteurs dont les centres de gravité correspondent à leurs positions estimées. Par exemple, dans (He et al. 2005) les auteurs proposent le raisonnement suivant : soit n étant le nombre d'ancres dans le réseau, chaque ancre diffuse sa position. Lorsqu'un capteur obtient les positions des n ancres, il calcule tous les triangles possibles qu'il peut former avec ces positions et obtient alors un ensemble de triangles. Ensuite, pour chaque triangle, le capteur détermine s'il se situe à l'intérieur ou à l'extérieur. Après avoir déterminé son appartenance ou non à chacun des triangles, il en déduit une zone le contenant et calcule sa position estimée comme étant le centre de gravité de cette zone. En présence d'un pourcentage faible d'ancres dans le réseau, cette solution est intéressante. En revanche, si l'augmentation de ce pourcentage améliore la précision des positions, elle engendre dans le même temps des calculs importants pour les capteurs.

Dans (Datta et al. 2006), les auteurs définissent des zones en utilisant non pas des triangles mais des polygones.

Dans la seconde technique, chaque capteur estime les distances qui le séparent des ancres et applique la multilatération pour calculer sa position estimée. La méthode HTRefine (Savarese et Rabaey, 2002) utilise ce procédé. Ce schéma est également adopté par des méthodes basées mesures.

HTRefine

75m,--' B At.

Figure II. 2 : DV-hop

Au commencement de la méthode HTRefine, toutes les ancres diffusent leurs positions.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

Lorsqu'un capteur reçoit la position d'une ancre, il estime la distance qui le sépare d'elle. Pour ce faire, HTRefine utilise la technique d'estimation des distances DV-Hop.

Dans cette technique, lors de l'inondation des positions des ancres, chaque capteur calcule le nombre de sauts minimum qui le sépare de chacune des ancres. Une deuxième vague d'inondation fournit suffisamment d'informations au capteur pour qu'il puisse convertir ces nombres de sauts en estimations de distances. La conversion consiste à multiplier le nombre de sauts séparant le capteur d'une ancre par une distance moyenne entre deux capteurs voisins. Lors de la première vague, lorsqu'une ancre A reçoit la position d'une ancre B, elle calcule la distance euclidienne qui les sépare et la divise par le nombre de sauts. Elle obtient ainsi une moyenne des distances des sauts entre elle et B et la communique aux capteurs. Lorsque A reçoit d'autres positions d'ancres, elle calibre à nouveau sa distance moyenne et diffuse cette mise à jour aux capteurs afin qu'ils puissent affiner leurs estimations de distances.

DV-Hop

La figure 2.2 est une illustration de DV-Hop où l'ancre A estime la distance moyenne d'un saut. Les noeuds noirs représentent les ancres et les noeuds blancs les capteurs non localisés. Trois sauts séparent A et B alors que quatre séparent A de C. L'ancre A calcule les distances euclidiennes d AB = 75m et d AC = 125m. La distance moyenne d'un saut est donnée par la fraction (125+75)/ (3+4)= 28.75 m.

Le capteur X estimera les distances avec B et C comme suit : d XB = 2* 28.57 et d XC = 3 * 28.57.

Pour obtenir leurs positions, les capteurs utilisent ensuite la multilatération. En reprenant l'exemple de la figure 2.2, X obtiendra sa position en résolvant le système suivant :

Finalement, un processus de raffinement des positions est effectué. En effet, après avoir estimé leurs positions, les capteurs les diffusent à leurs voisins. En fonction de ces données et grâce aux relations de voisinage, les capteurs calculent à nouveau leurs positions qui se rapprochent de leurs positions réelles. Après un nombre d'itérations défini, les capteurs fixent leurs positions estimées. [12]

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

8. Conclusion

Dans ce chapitre nous avons abordé la problématique de la localisation plus particulièrement dans les réseaux de capteurs sans fil. Nous avons également présenté les différentes technologies utilisées ainsi que quelques algorithmes existants (DV-Hop).

Dans le chapitre suivant, nous allons présenter le système d' exploitation TinyOs un système open source embarqué pour les RCSF afin de pouvoir comprendre son fonctionnement et présenter le langage NESC pour l'implémentation des applications.

Chapitre 2 la localisation dans les Réseaux de Capteurs sans Fil

Chapitre III

Description de l'architecture

de la plateforme TinyOS :

un système d'exploitation

pour les réseaux de capteurs

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Chapitre 3 Description de l'architecture de la plateforme TinyOS

1. Introduction

Suite aux différents problèmes vécus par les réseaux de capteurs (problème énergétiques et de mémoire), l'université de Berkeley a développé alors un système d'exploitation minime destiné pour ces réseaux : TinyOS, Il est orienté "composants" afin de faciliter l'implémentation de ces réseaux, tout en minimisant la taille du code afin de respecter les contraintes de mémoire des composants matériels [5]

TinyOS, comme les applications tournant dessus, a été écrit en NesC. Ce langage a été inventé pour répondre aux attentes des systèmes embarqués. Il possède une syntaxe proche de C, supporte le système multitâche de TinyOS et défini des mécanismes pour architecturer et "linker" des composants logiciels en un système embarqué robuste [6].

Dans ce chapitre, nous introduirons le mode de fonctionnement de la plateforme TinyOS, ainsi que le langage NesC et Cette description va nous permettre par la suite (dans le chapitre 4) d'implémenter un algorithme de localisation dans les RCSF

2. TinyOS: Tiny Micro threading Operating System

2.1 Présentation

TinyOS est un système d'exploitation open-source, intégré, modulaire, destiné aux réseaux de capteurs. Il respecte une architecture basée sur une association de composants, réduisant la taille du code nécessaire à sa mise en place afin de respecter les contraintes de mémoires qu'observent les réseaux de capteurs.

En effet, TinyOS est constitué de plusieurs modules disponibles pour les applications et offrant des fonctions de capture de mesures ou de communication. Il n'existe pas d'exécutable pour le noyau du système, il est construit au moment de la compilation de l'application en fonction des composants qu'elle utilise. Le langage de programmation associé, le nesC, qui est une extension du langage C, permet de déclarer les composants ainsi que les liens qui les unissent et de faire l'association code/composants.

Chapitre 3 Description de l'architecture de la plateforme TinyOS

TinyOS s'appuie sur un fonctionnement évènementiel, c'est à dire qu'il ne devient actif qu'à l'apparition de certains évènements, par exemple l'arrivée d'un message radio.

Le reste du temps, le capteur se trouve en état de veille, garantissant une durée de vie maximale connaissant les faibles ressources énergétiques des capteurs. Ce type de fonctionnement permet une meilleure adaptation à la nature aléatoire de la communication sans fil entre capteurs [7].

2.2 Principes de TinyOS

Un composant est constitué d'au moins un module utilisant et fournissant des interfaces. S'il contient plusieurs modules les liens entres eux sont décrits par un fichier de configuration.

Une application complète est un composant contenant plusieurs modules liés entre eux dont un module Main qui permet de démarrer.

Le SE offre une centaine de composants que l'on peut utiliser pour écrire des applications. Quand le programme est généré par le compilateur, seuls les composants utilisés (y compris ceux du système) sont présents. Main est lui-même connecté à certains composants du système (comme l'ordonnanceur par exemple) qui seront donc chargés en mémoire puis lancés par Main On va décrire dans des fichiers portant le suffixe .nc les modules, les interfaces et les configurations. Une application comporte donc plusieurs de ces fichiers.

Figure III. 1: Symbole de system TinyOS

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Figure III. 2: TinyOS : un ensemble de composants logiciels

2.3 Propriétés de la plateforme TinyOS

TinyOS est basé sur des propriétés qui font que ce système d'exploitation, s'adapte particulièrement bien aux systèmes à faible ressources :

A.Disponibilité et sources: TinyOS est un système principalement développé et soutenu par l'université américaine de Berkeley, qui le propose en téléchargement sous la licence BSD et en assure le suivi. Ainsi, l'ensemble des sources sont disponibles pour de nombreuses cibles matérielles.

B.Event-driven : Le fonctionnement d'un système basé sur TinyOS s'appuie sur la gestion des évènements se produisant. Ainsi, l'activation de tâches, leur interruption ou encore la mise en veille du capteur s'effectue à l'apparition d'évènements, ceux-ci ayant la plus forte priorité.

Ce fonctionnement évènementiel (event-driven) s'oppose au fonctionnement dit temporel (time-driven) où les actions du système sont gérées par une horloge donnée.

C.Non préemptif: Le caractère préemptif d'un système d'exploitation précise si celui-ci permet l'interruption d'une tâche en cours. TinyOS ne gère pas ce mécanisme de préemption entre les tâches, mais donne la priorité aux interruptions matérielles. Ainsi, les tâches entre elles ne s'interrompent pas mais une interruption peut stopper l'exécution d'une tâche.

D.Pas de temps réel: Lorsqu'un système est dit « temps réel » celui ci gère des niveaux de priorité dans ses tâches, permettant de respecter des échéances données par son environnement. Dans le cas d'un système strict, aucune échéance ne tolère de dépassement contrairement à un système temps réel. TinyOS se situe au-delà de ce second type, car il n'est pas prévu pour avoir un fonctionnement temps réel.

E.Langage: TinyOS a été programmé en langage NesC que nous allons détailler

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Plus tard :

F.Consommation d'énergie : TinyOS a été conçu pour réduire au maximum la consommation en énergie du capteur. Ainsi, lorsqu'aucune tâche n'est pas active, il se met automatiquement en veille.

2.4 Allocation de la mémoire

TinyOS a une empreinte mémoire très faible puisqu'il ne prend que 300 à 400 octets dans le cadre d'une distribution minimale. En plus de cela, il est nécessaire d'avoir 4 Ko de mémoire libre qui se répartissent entre les différents besoins suivant :

La pile : sert de mémoire temporaire, on y empile et dépile les variables locales.

Les variables globales : réservent un espace mémoire pour le stockage de valeurs pouvant être accessible depuis des applications différentes.

La mémoire libre : pour le reste du stockage temporaire.

Autres particularités, il n'y a pas d'allocation dynamique de mémoire et pas de mécanisme de protection de la mémoire, ce qui rend le système vulnérable à des crashs ou des corruptions de mémoire.

2.5 Fonctionnement

Les composants déclarent des tâches, des commandes ou des événements.

Les tâches sont des travaux de "longue durée". Lors de l'appel d'une tâche, cette dernière est ajoutée dans une file de type FIFO. Les tâches s'exécutent dans l'odre de la file et en entier car TinyOS ne dispose pas de mécanisme de préemption entre les tâches.

Les commandes sont des exécutions d'une fonctionnalité précise dans un autre composant

Les événements sont les équivalents logiciels aux interruptions matérielles, ils sont prioritaires par rapport aux tâches et peuvent donc les interrompre.

Lorsque la file d'attente est vide, cela signifie qu'aucune tâche n'est exécutée, et TinyOS met en veille le capteur, afin d'économiser la batterie.

Chapitre 3 Description de l'architecture de la plateforme TinyOS

2.6 Cibles possibles pour TinyOS

Il existe de nombreuses cibles possibles pour ce système d'exploitation embarqué. Malgré leurs différences, elles respectent toutes globalement la même architecture basée sur un noyau central autour duquel s'articulent les différentes interfaces d'entrée-sortie, de communication et d'alimentation.

Mote, processeur, RAM et Flash : On appelle généralement Mote la carte physique utilisant TinyOS pour fonctionner. Celle-ci a pour coeur le bloc constitué du processeur et des mémoires RAM et Flash. Cet ensemble est à la base du calcul binaire et du stockage, à la fois temporaire pour les données et définitif pour le système TinyOS.

Radio et antenne : TinyOS est prévu pour mettre en place des réseaux sans fils, les équipements étudiés sont donc généralement équipés d'une radio ainsi que d'une antenne afin de se connecter à la couche physique que constituent les émissions hertziennes.

LED, interface, capteur : TinyOS est prévu pour mettre en place des réseaux de capteurs, on retrouve donc des équipements bardés de différents types de détecteurs et autres entrées.

Batterie : Comme tout dispositif embarqué, ceux utilisant TinyOS sont pourvus d'une alimentation autonome telle qu'une batterie.

2.7 Ordonnancement

L'ordonnancement détermine l'ordre dans lequel les tâches sont exécutées sur un CPU. Dans les systèmes informatiques traditionnels, l'objectif d'un ordonnanceur est de minimiser la latence, pour optimiser l'utilisation de la bande passante et des ressources, et pour assurer l'équité. Le choix d'un algorithme d'ordonnancement adapté aux réseaux de capteurs dépend généralement de la nature de l'application. Pour les applications ayant des exigences temps réel, un algorithme d'ordonnancement en temps réel doit être utilisé. Pour d'autres applications, les algorithmes d'ordonnancement non temps réel sont suffisants. Les capteurs pour réseau sont utilisés dans des environnements à la fois

Chapitre 3 Description de l'architecture de la plateforme TinyOS

en temps réel et non temps réel, Le système d'exploitation pour capteur en réseau doit fournir des algorithmes d'ordonnancement qui répondent aux exigences des applications. Par ailleurs, l'algorithme d'ordonnancement à un impact sur la gestion de la mémoire et l'efficacité de la consommation énergétique. Il existe deux catégories d'ordonnancement des taches :

? l'ordonnancement en temps réel

Ce mode de fonctionnement permet de répondre aux besoins d'application en temps réel pour la surveillance d'environnement de manière périodique

? l'ordonnancement en temps partagé

L'ordonnancement des tâches en mode événementiel, convient pour des évènements asynchrones

2.8 Tâches, événements et applications

TinyOS est basé sur la gestion de tâches et d'événements. Une tâche est un bloc d'instruction, un événement est l'équivalent logiciel d'une interruption matérielle et a priorité sur les tâches. Chaque tâche est activées ou interrompue en fonction de l'apparition d'un 'événement et TinyOS n'étant pas préemptif les tâches ne peuvent pas s'interrompre entre elles, mais peuvent l'être par un événement.

Gestion des tâches

Chaque tâche active est mise en attente dans une file d'attente de type FIFO (First In First Out : première arrive première sortie), lorsque la file des tâches est vide le système se met en veille en attendant le prochain événement. Ce mécanisme de tâches a pour avantage d'empêcher une tâche d'en interrompre une autre, pouvant bloquer le système, mais il a aussi pour inconvénient de ne pas permettre une gestion en temps réel.

Pour les tâches de longue durée TinyOS possède un mécanisme permettant de fragmenter l'exécution d'une tâche nomme split-phase qui permet de ne pas bloquer le système. Ce mécanisme est utilise dans l'initialisation de composants qui demandent du temps au démarrage, comme la radio par exemple.

Les Evénements

Lorsqu'une interruption matérielle a lieu, l'événement correspondant reçoit un signal et prend la main de manière asynchrone, c'est à dire qu'il n'attend pas la fin de la

Chapitre 3 Description de l'architecture de la plateforme TinyOS

tache courante pour s'exécuter. Des événements peuvent être Signalés ne correspondant pas directement a une interruption matérielle. Il existe également des événements synchronises : ils sont mis en attente dans la liste des tâches, avec une priorité supérieure aux tâches en attente mais n'interrompent pas la tâche courante (cas de certains Timers).

Les applications basées sur TinyOS sont formées de composants réutilisables et portables, (comme les Timers, les convertisseurs de signal ou la radio) qui sont relies entre eux. Ces composants peuvent être directement lies au matériel (composant gérant les LED par exemple) ou un regroupement de plusieurs composants de bas niveau (composants gérant les envois de données par la radio). Les composants sont implémentés en utilisant les tâches, les événements et des commandes qui permettent de faire appel aux fonctions n'alitent d'autres composants auxquels ils sont lies. Exemple d'application

Une application devant mesurer la température d'une pièce régulièrement et transmettre les données à un ordinateur utilisera plusieurs composants :

- un composant de mesure de température

- un composant qui se chargera de l'envoi des données par le port USB

- un composant de mesure du temps

- un composant de gestion des LED pour afficher la fréquence des mesures

2.9 Package TinyOS

TinyOS est prévu pour fonctionner sur une multitude de plateformes, disponibles dès l'installation, TinyOS peut être installé à partir d'un environnement Windows (2000 et XP) ou bien GNU/Linux (Red Hat essentiellement, mais d'autres distributions sont également possibles). Deux principales versions de TinyOS sont disponibles : la version stable (v. 1.1.0) et la version actuellement en cours de tests (v.1.1.15); la première présente moins de risques mais est nettement moins récente.

Windows : un guide propose l'installation de tous les principaux outils nécessaires au bon fonctionnement du système, notamment Cygwin (couche d'émulation de l'API Linux) qui permet d'avoir une interface Unix sous Windows. Le JDK Java 1.4 de Sun est nécessaire an d'exécuter la procédure d'installation.

GNU/Linux : des packages RPM sont proposés au téléchargement, un guide explique la marche à suivre. Les distributions Linux ayant un autre gestionnaire de paquet peuvent

Chapitre 3 Description de l'architecture de la plateforme TinyOS

utiliser un programme (comme Alien) pour installer les packages, ou compiler directement à partir des sources. Le JDK de IBM est nécessaire.

Par la suite, des packages supplémentaires peuvent être ajoutés en passant par le site Source Forge, qui met à disposition le code open source de TinyOS et d'un ensemble de programmes dédiés.

3. Description du langage NesC

Il doit exister un environnement de développement logiciel afin d'importer des applications sur les capteurs. Le langage utilisé pour le développement dans TinyOS est le nesC.

Figure III. 3:symbole de langage NesC

3.1 Présentation

Le langage NesC a une architecture basée sur des composants. Cela permet de réduire la taille mémoire du système et de ses applications, chaque composant correspondant à un élément matériel du type LED ou timer par exemple. Les composants peuvent être réutilisés dans n'importe quelle application. L'implémentation des composants, dans le but d'élaborer des applications, s'effectue en déclarant des tâches, des commandes ou des évènements.

Les tâches sont utilisées pour effectuer la plupart des blocs d'instruction d'une application. A l'appel d'une tâche, celle-ci va prendre place dans une file d'attente de type FIFO pour y être execute.

3.2 Concepts principaux dans NesC

Application: un ou plusieurs composants reliés ensemble pour former un exécutable Composant : un élément de base pour former une application nesC. Il existe deux types de composants: modules et configurations

V' Module : composant qui implémente une ou plusieurs interfaces

V' Configuration : composant qui relie d'autres composants ensemble

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Interface : définie d'une manière abstraite les interactions entre deux composants

3.3 Développement

Les interfaces spécifient un ensemble de fonctions, appelées commandes, qui doivent être implémentées par le fournisseur de l'interface et un ensemble de fonctions, appelées évènements, qui doivent être implémentées par l'utilisateur de l'interface. Afin de distinguer les fonctions concernant un évènement de celles concernant une commande, les en-têtes des fonctions sont précédés des mots-clés respectifs event ou command. Voici un exemple simple d'interface :

interface Timer {

command result_t start(char type, unit32_t interval): command result_t stop();

event result_t fired();

}

TinyOS n'autorise pas les pointeurs de fonctions. Afin de néanmoins proposer un mécanisme alternatif, NesC utilise des interfaces paramétrées. Celles-ci permettent à l'utilisateur de créer un ensemble d'interfaces identiques et d'en sélectionner une seule à appeler grâce à un identifiant.

interface SendMsg[unit8 t id]

Dans la pratique, NesC permet de déclarer deux types de fichiers: les modules et les Configurations. Les configurations, permettent de décrire les composants composites c'est-à-dire des composants composés d'autres composants c'est à dire de granularité supérieure. Une configuration permet donc de décrire l'architecture. Une configuration est donc constituée de modules et/ou d'interfaces ainsi que de la description des liaisons entre ces composants.

configuration NonModule {}

implementation {

//liste des modules et configurations utilises, ex :

components Main,Modulel ModuleN,Configl, ,ConfigiM ;

//descriptifs des liaisons

//Interface fournie <- Interface requise ou //Interface requise -> interface fournie, ex : Main.StdControl -> Modulel.StdControl ; }

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Détaillons ici, quelques caractéristiques concernant les configurations. La première d'entre elles concerne une simplification. Lors du descriptif des liaisons, il est en effet possible de ne pas préciser l'interface fournie par un module. Dans ce cas, elle possédera le même nom que celle requise. L'autre caractéristique concerne le composant Main. En effet, il est à noter que ce composant est obligatoirement présent dans la configuration décrivant l'ensemble de l'application car son rôle est de démarrer l'exécution de l'application.

Les modules sont eux les éléments de base de la programmation. Ils permettent en effet d'implémenter les composants et sont stockés dans un fichier possédant la structure suivante :

module NomModuleM {

provides {

//liste des interfaces fournies, ex : interface NominterfaceFourniel ; I

uses {

//liste des interfaces requises, ex :

interface NomlnterfaceRequisel ;

I

I

implimentation {

//déclarations des variables, ex :

int state ;

//implementations des fonctions décrites par les interfaces fournies :

}

3.4 Types des données

Les types de données qui peuvent être utilisés en NesC sont tous ceux que fournit le langage C standard plus quelques autres qui n'apportent pas de puissance de calcul mais qui sont très utiles pour la construction de paquets puisqu'ils fournissent à l'utilisateur le nombre de bits qu'ils occupent (ceci est important au moment de la

Chapitre 3 Description de l'architecture de la plateforme TinyOS

transmission des informations par l'intermédiaire des ondes radio). Ces types additionnels sont :

- uint16_t : entier non signé sur 16 bits.

- uint8_t : entier non signé sur 8 bits.

- result_t : utilisé pour savoir si une fonction a été exécuté avec succès ou non, c'est comme un booléen mais avec les valeurs SUCCESS et FAIL. (Retour de fonction) - bool : valeur booléenne qui peut être TRUE ou FALSE.

En NesC il est possible de faire une utilisation dynamique de la mémoire mais ce n'est pas très recommandé (à moins que cela ne soit absolument nécessaire). Pour pouvoir l'utiliser il existe un composant spécial appelé MemAlloc qui permet une gestion dynamique de la mémoire [6].

3.5 Compiler et exécuter une application nesC

La première étape de ce processus consiste à compiler les fichiers nécessaires à l'application et au système d'exploitation. Celle-ci est réalisée via le compilateur NesC fourni par TinyOS. Son rôle est premièrement de transformer les fichiers NesC en fichier C et deuxièmement d'y intégrer les fichiers du noyau de TinyOS. Ce qui permet d'obtenir un fichier source C unique. Une fois cette étape accomplie, il ne reste alors qu'à utiliser un compilateur C traditionnel qui va utiliser le fichier précédemment créé afin de générer une application exécutable. Celle-ci sera donc constituée par la «fusion» du système d'exploitation et du code applicatif. Ces différentes phases peuvent être synthétisées comme l'illustre la figure 3.4 Pour effectuer une compilation, les fichiers doivent se situer dans le même répertoire contenant aussi un makefile.

Chapitre 3 Description de l'architecture de la plateforme TinyOS

Figure III. 4: Etapes de compilation d'une application sous TinyOS

4. Conclusion

Le système TinyOS est un système embarqué, dédié spécialement pour les réseaux de capteurs, qui présente un environnement de calcul particulier soumit a plusieurs contraintes tel que l'énergie, l'espace mémoire, etc.

TinyOS permet le développement d'application simplifiée par la mise en relation de composants cibles, tout en offrant des primitives ainsi que des bibliothèques réseaux qui le rondent complet. Il est classé parmi les systèmes temps réel, préemptif, événementiel.

Dans le chapitre suivant, nous allons implémenter, analyser un algorithme de localisation nommé DV-Hop pour les RCSF dans la plate forme TinyOS en utilisant le

langage NesC.

Chapitre 4

Implémentation et

Evaluation de

L'Algorithme de

Localisation DV-Hop

Chapitre 4 Implémentation et Evaluation de DV-Hop

1. Introduction

Avant sa mise en place, le déploiement d'un réseau de capteurs nécessite une phase de simulation, afin de s'assurer du bon fonctionnement de tous les dispositifs. En effet, pour de grands réseaux le nombre de capteurs peut atteindre plusieurs milliers et donc un coût financier relativement important. Il faut donc réduire au maximum les erreurs de conception possibles en procédant à une phase de validation.

Dans ce chapitre, nous allons en premier lieu, présenter la plate-forme logicielle que nous avons utilisée pour les simulations TOSSIM, ensuite, nous allons présenter les contextes de simulation et les résultats pour le protocole de localisation étudié avec discussion de résultat.

2. Simulateur de réseaux de capteur

2.1 Définition

Afin d'évaluer les protocoles de localisation, TOSSIM a été utilisé.TOSSIM est le simulateur de TinyOs. Il permet de simuler le comportement d'un capteur (envoie/réception de messages via les ondes radios, traitement de l'information, etc...) au sein d'un réseau de capteurs. Pour une compréhension moins complexe de l'activité d'un réseau, TOSSIM peut être utilisé avec une interface graphique, TinyViz, permettant de visualiser de manière intuitive le comportement de chaque capteur au sein du réseau.

2.2Description

a.TinyViz

TinyViz est une interface graphique Java. Elle permet de donner un aperçu des capteurs à tout instant ainsi que des divers messages qu'ils émettent. Elle détermine un délai entre chaque itération des capteurs afin de permettre une analyse pas à pas du bon déroulement des actions en activant différents modes comme Radio, CPU, etc. [15]

Chapitre 4 Implémentation et Evaluation de DV-Hop

b. PowerTOSSIM

Le simulateur TOSSIM n'a pas la capacité de vérifier le taux d'énergie dissipée pendant l'exécution des applications. Cependant, le besoin de vérifier la consommation énergétique dans un RCSF a un intérêt primordial. L'université de Harvard a conçu le simulateur PowerTOSSIM qui surmonte ce problème. Ce nouveau simulateur est intégré dans TOSSIM. Il permet de générer un fichier de l'extension .trace qui enregistre les détails de la simulation comme l'énergie consommée dans le réseau. [16]

Figure IV. 1: Fenêtre graphique TinyViz de notre application

3. Estimation des coordonnées

DVHOP est un algorithme de localisation. Son but est de permettre aux capteurs de trouver leurs positions à l'aide des positions connues de quelques capteurs spécifiques appelés (ancres).

En plus, la localisation par moyens propres est donc indispensable. Elle se fait en deux étapes : premièrement l'estimation de la distance aux autres noeuds, et deuxièmement la multilatiration.

Chapitre 4 Implémentation et Evaluation de DV-Hop

Noeud

Ancre

Figure IV. 2: Figure représentant le modèle réel.

Figure IV.2 illustre un modèle de réseaux des capteurs sans fil en utilisant la méthode de multilatiration pour estimer les positions des noeuds, les boules violées représentent les ancres (leur position est connue) et les oranges représentent les noeuds (leur position est inconnue).

Les cercles représetnent les zones de couvertures des ancres, pour que l'erreur d'estimation soit minimale, il faut placer les noeuds dans la zone d'intersection des cercles (zone bleu)

A- Estimation de la distance

L'estimation de distance peut se faire sur base de différents indicateurs :

? Le temps de propagation d'une onde.

? La puissance du signal à la réception.

? Le taux d'erreurs corrigées lors des transmissions.

? Le nombre de saut.

Chapitre 4 Implémentation et Evaluation de DV-Hop

B- Multilatération

La Multilatération est une méthode relativement simple et intuitive, en utilisant plus que trois points de référence (ancres). La position d'un noeud est calculée en connaissant les positions d'un certains ancres et les distances estimées de ce noeuds aux différents ancres.nous formons le système suivant :

Soit une cible a dont on veut trouver la position Xa, et soit m ancres i dont

nous connaissons les positions xi, 1 < i <m, Nous
supposons que nous connaissons aussi une estimation des distances Dai 1 < i <m entre chaque ancre i et le noeud a.

Nous pouvons alors poser :

(x11 - xa1)2 + (x12 - xa2)2 + . . . + (x1p - xap)2 = d21a ...

(xm1 - xa1)2 + (xm2 - xa2)2 + . . . + (x1p - xap)2 = d2 ma

Le système peut être linéaire en soustrayant la dernière équation des m - 1 équations précédentes.

x2 11 - x2 m1 - 2(x11 - xm1)xa1

+x2 12 - x2 m2 - 2(x12 - xm2)xa2

+. . .

+x21p - x2 mp - 2(x1p - xmp)xap = d2 1a - d2 ma

...

...

x2(m-1)1 - x2 m1 - 2(x(m-1)1 - xm1)xa1

+x2(m-1)2 - x2 m2 - 2(x(m-1)2 - xm2)xa2

+. . .

+x2(m-1)p - x2 mp - 2(x(m-1)p - xmp)xap = d2(m-1)a - d2 ma

En réordonnant les termes, nous obtenons un système d'équations linéaires de la forme Ax = b où :

2(x11 - xm1) . . . 2(x1p - xmp)

Chapitre 4 Implémentation et Evaluation de DV-Hop

...

A =

...

2(x(m-1)1 - xm1) . . . 2(x(m-1)p - xmp)

x2 11 - x2 m1 + . . . + x2 1p - x2 mp + d2 ma - d2 1a

B= ...

...

x2 (m-1)1 - x2 m1 + . . . + x2 (m-1)p - x2 mp + d2 ma - d2 (m-1)a

Comme nous avons des erreurs dans les estimations de distances, nous ne pouvons pas trouver de solution exacte à ce système d'équationsEt donc :

Xa = = (ATA) -1ATb.

xa1

xa2

Où xa=

C'est-à-dire notre estimation de la position du noeud a.

xap

Le processus peut être recommencé avec tous les noeuds inconnus du réseau. Nous obtenons ainsi les positions de tous les noeuds dans le réseau. Cette méthode sera implémentée par Delphi.

4. Objectifs et métriques de la simulation

Le but général de ce chapitre est d'implémenter et d'analyser DVHOP (détaillé en chapitre 2) un algorithme de localisation sur les réseaux de capteurs sans fil en particulier:

? Evaluer la précision de la localisation.

Ces métriques sont évaluées en fonction du nombre de noeuds ordinaires dans le réseau ainsi que le nombre des ancres.

Cette formule représente la précision de localisation de l'algorithme lors d'estimation des distances entre les noeuds et les ancres. Nous supposons que

Chapitre 4 Implémentation et Evaluation de DV-Hop

nous connaissons également les vraies positions des noeuds. La précision d'un noeud Ni est calculée comme suivant:

Erreur totale= *100% [13]

Tel que :

Xr, Yr : les positions réelles d'un noeud.

Xi, Yi : les positions d'un noeud trouvées par DV-hop.

N : le nombre des noeuds ordinaires.

Erreur Ni : l'erreur d'un noeud

Erreur totale: la Moyenne d'erreur de tous les noeuds de réseau

? La consommation d'énergie.

Ces métriques sont évaluées en fonction de la taille du réseau

(changement du nombre de noeuds dans le réseau).

5. Version amélioré de DV-hop (Improved DV-hop )

Le même principe pour la version DV-hop, cependant, on recalcule les distances entre les noeuds et les ancres, si un noeud reçoit un hop inférieur à l'ancien hop du même ancres [14]

6. Résultat de la simulation

6.1 La métrique précision de localisation

Cette évaluation montre l'efficacité de la phase de calcule de distance entre chaque noeuds avec tous les autres ancres.

Le but est de savoir la précision de localisation d'un noeud par rapport à sa position exacte.

La précision de la localisation est évaluée en fonction de deux paramètres : le nombre de noeuds ordinaires et le nombre des ancres.

On a utilisé deux versions d'algorithme : la première est la version basique DV-hop et la deuxième est la version ameliorée IDV-hop

a. Erreur d'estimation pour la version basique Scénario 1

Chapitre 4 Implémentation et Evaluation de DV-Hop

En fonction de densité des noeuds ordinaires, on a obtenu les résutats suivants avec une topologie constitué en 3 ancres et 5 puis 10 puis 20 noeuds ordinaires

Nombre de noeuds

5

10

20

Erreur (%)

54.08

50.26

34.57

Tableau IV. 1: précision de l'algorithme dvhop en foction de densité de noeuds

Figure IV. 3: estimation d'erreur de localisation en fonction de nombre des noeuds Observation et discussion : On remarque clairement dans le graphe de la

Figure IV.1, que l'errer diminue lorsque le nombre des noeuds ordinaires augmente. Ceci s'explique par le fait que algorithme DVHOP n'est pas adapté pour un réseau qui contient un grand nombre de noeuds.

Scénario 2

En fonction de densité des ancres, on a obtenu les résutats suivants avec une topologie constituée en 5 noeuds et 3 ancres puis 4, 5, 6 et 7 ancres

Nombre d'ancres

3

4

5

6

7

Erreur (%)

54.08

40.1

36.71

30

24.73

Tableau IV. 2: précision de l'algorithme dvhop en foction de densité d'ancres

Chapitre 4 Implémentation et Evaluation de DV-Hop

3 4 5 6 7

60

50

erreur %

40

30

20

10

0

Nombre des ancres

Figure IV. 4: estimation d'erreur de localisation en fonction de nombre des ancres

Observation et discussion :

On remarque clairement dans le graphe de la Figure IV.2, que

l'erreur diminue lorsque le nombre des ancres augmente car dans la

phase de multilateration, la zone d'intersection des cercles qui

representent les zones de couvertures, va dimunuer et les coordonnées X et Y sont inclus dans cette zone, donc l'erreur va dimunuer.

b. Erreur d'estimation pour la version ameliorée

Scénario 1

En fonction de densité des noeuds ordinaires, on a obtenu les résutats suivants avec une topologie constituée de 3 ancres et 5 puis 10 puis 20 noeuds ordinaires

Nombre de noeuds

5

10

20

Erreur (%)

30.22

27.31

23.76

Tableau IV. 3: Précision de l'algorithme dvhop en foction de densité de noeuds

Chapitre 4 Implémentation et Evaluation de DV-Hop

Figure IV. 5 : estimation d'erreur de localisation en fonction de nombre de noeuds

Observation et discussion : On remarque clairement dans le graphe de la Figure IV.3, que l'errer diminue lorsque le nombre des noueds ordinaires augmente. Ceci s'explique par le fait que algorithme DVHOP n'est pas adapté pour un réseau qui contient un grand nombre de noeuds.

Scénario 2

En fonction de la densité des ancres, on a obtenu les résutats suivants avec une topologie constituée en 5 noeuds et 3 ancres puis 4, 5, 6 et 7 ancres.

Nombre d'ancres

3

4

5

6

7

Erreur (%)

30.22

27.33

24.45

23.25

22.15

Tableau IV. 4: précision de l'algorithme IDV-hop en foction de la densité d'ancres

Chapitre 4 Implémentation et Evaluation de DV-Hop

Figure IV. 6: estimation d'erreur de localisation en fonction de nombre des ancres

Observation et discussion : On remarque clairement dans le graphe de la Figure IV.4, que l'erreur diminue lorsque le nombre des ancres augmente, car dans la phase de multilateration la zone d'intersection des cercles qui representent les zones de couvertures va dimunuer et les coordonnées X et Y sont inclues dans cette zone, donc l'erreur va dimunuer

c. compraison entre DV-hop et IDV-hop en fonction d'erreur d'estimation

En fonction de la densité des ancres, on a obtenu les résutats suivants avec une topologie constituée en 3 ancres et 5 puis 10 puis 15 puis 20 noeuds ordinaires en utilisant le matlab, on a obtenu les courbes suivantes

Chapitre 4 Implémentation et Evaluation de DV-Hop

Figure IV. 7 :

Observation et discussion : on remarque clairement dans le graphe de la Figure IV.,

que l'erreur diminue lorsque le nombre des ancres ou le nombre de noeuds ordinaires augmente. On remarque aussi que l'erreur dans le IDV-hop est moins que le DV-hop soit en fonction de nombre de noeuds ordinaire ou de nombre d'ancre.

En effet, pour que l'erreur d'estimation soit minimale, il faut utiliser le IDV-hop avec un nombre important d'ancres.

6.2. La métrique de consommation d'énergie

Pour évaluer cette métrique, on a utilisé pour chaque simulation les paramètres de configuration propres aux réseaux de capteurs du tableau 4.2:

IDV-hop

Dvhop

Nombre d'ancres

11.35

11,23

3

 
 

4

 
 

5

 
 

6

 
 

7

Tableau IV. 5 :

Chapitre 4 Implémentation et Evaluation de DV-Hop

Observation et discussion :

A partir du graphe de la Figure 4., on remarque que l'énergie totale consommée augmente avec l'augmentation de nombres de noeuds dans le réseau. L'augmentation d'énergie totale consommée est expliquée par l'augmentation de nombre de noeuds en échangeant de différents messages entre eux. On constate aussi que l'énergie consommée dans IDV-hop est légèrement supérieure à celle du DV-hop ; cela est dû au fait que dans IDV-hop, un noeud fait plus d'emmision /réception des messages par rapport au DV-hop.

7. Conclusion

Dans ce chapitre, nous avons présenté l'environnement de simulation avec lequel nous avons travaillé : simulateur TOSSIM et sa caractéristique.

Ensuite, on a décrit en détail le protocole de localisation DV-hop ainsi que sa version améliorée IDV-hop où le but a été d'étudier et d'évaluer leurs performances sous deux métriques à savoir :

L'erreur de localisation ainsi que l'énergie totale consommée par ses derniers.

Nous avons également défini les paramètres de simulation ainsi que les métriques d'évaluation prise en compte dans notre étude.

Par ailleurs, nous avons constaté que l'alogorithme de localisation IDV-hop plus efficace que DV-hop en terme de précision de localisation mais il consomme plus d'energie

Conclusion générale

Les réseaux de capteurs sans fil (RCSFs) sont une nouvelle technologie qui a surgit après les grands progrès technologiques concernant le développement des capteurs intelligents capables de detecter des évenements et de préciser sa position, c'est-à-dire la localisation.Plusieurs recherches qui ont été faites pour la conception de l'algorithme tiennent compte de cette contrainte et en plus minimisent la consommation d'énergie.

En effet, c'est dans le cadre de ce thème que s'oriente l'objectif de notre projet de fin d'étude.

Dans ce projet, nous avons donné un aperçu sur les réseaux de capteurs et

présenté certaines de leurs applications. Nous avons aussi exposé les différents défis qui doivent surmonter la conception des protocoles de communication dans ces réseaux. Nous nous sommes intéressés aux protocoles liés à la localisation, et en particulier DV-hop et sa version améliorée IDV-hop.

Dans ce projet nous avons étudié les deux algorithmes de localisation dans les RCSFs (DV-hop, IDV-hop) dans le but de faire une comparaison entre eux à l'aide de simulateur TOSSIM.

Après avoir effectué plusieurs simulations et analysé les résultats obtenus, nous avons constaté que le DV-hop est plus précis que le IDV-hop . En

effet, en augmentant le nombre de noeuds dans le réseau,on obtient des resultats plus

précis ,donc ils introduisent un lourd surcoût de communication ce qui entraîne une consommation

d'énergie très importante.

Comme perspective, il serait très intéressant de joindre les avantages des

algorithmes range-based en terme de précision aux algorithmes range-free. Par exemple rajouter le RSSI à l'algorithme DVHOP afin de minimiser l'erreur de précision tout en gardant sa simplicité. Une bonne hybridation permettra d'avoir un algorithme de géolocalisation

ayant comme avantage une meilleure précision, à moindre coût.

Chapitre 4 Implémentation et Evaluation de DV-Hop

Chapitre 4 Implémentation et Evaluation de DV-Hop

Chapitre 4 Implémentation et Evaluation de DV-Hop

Chapitre 4 Implémentation et Evaluation de DV-Hop

Chapitre 4 Implémentation et Evaluation de DV-Hop

Chapitre 4 Implémentation et Evaluation de DV-Hop

Annexe1

Code source de notre application :

//Développeurs Rais Hichem & Mekidiche Mohamed

//cet algorithme traite 3 ancres (les ancres sont 0 et 1 et 2) et n noeuds tq n>=1

//lancer le shell et taper les cammandes suivantes

// cd /opt/tinyos-1.x/apps/dvhop3_n pour accéder au
répertoire qui contient notre application

//make pc pour compiler l'application

//export DBG=usr1 pour afficher notre message
//export PATH="$TOSROOT/tools/java/net/tinyos/sim:$PATH"

//TinyViz -run build/pc/main.exe 8 pour lancer la
simulation avec 8 noeuds

//cliquer sur le menu "Layout" puis "file load" et sélectionner un fichier qui prend l'extention ".mps" (c'est une topologie déja créée)

//pour un capteur qui envoie des messages seulement aux capteurs qui ont dans sa zone de couverture: cliquer sur le menu plugins et sélectionner "radio Model" puis décocher "out edges" puis cliquer sur "update"

//cocher debug messages dans le menu plugins pour visualiser les messages

includes DvhopMsg;//appler le fichier DvhopMsg.h qui contient la structure de notre message

module DVhopM {

provide interface StdControl;//interface fournie

//interface utilisée

uses {

interface Timer;

interface Leds;

interface SendMsg as envoiMsg;

interface ReceiveMsg as RecoieMsg;

}

}

implémentation

{

float premier_hop_arriver;

DVhopMsg * pemission;//pointeur sur le message emis

DVhopMsg * poi;//pointeur sur le message reçu

TOS_Msg msg;//message emis

int hop[3][2];//tableau utilisé par chaque ancre pour

stoquer les hop d'autres ancres

bool ancre_recu[3][2];//tableau des boolean chaque ancre

reçoit les hop d'autre ancres

DVhopMsg * p;//pointeur sur le message emis aprés la

réception d'un message

bool noeud_reçu_avant[3];//par exemple si un noeud reçoit un

message d'ancre 1 neud_reçu_avant[1] devient true(avant de

calculer le hopsize)

bool affiche1,v,vv,vvv,r;//variable utilser pour afficher un

message une seule fois

float tab[3][2];//tableau pour stoquer les x et les y des

ancres

float hopsize[3];//tableau pour stoquer les hopsizes

int hop_noeud[3];//tableau utiliser par les noeuds pour

stoquer les hop des ancres

float L1L2,L0L2,L0L1;//les distances entre les ancres

int i,j,k;

bool neud_recu_apres[3];//par exemple si une noeud recoi un

message d'ancre 1 neud_recu_apres[1] devient true(apres de

calculer le hopsize)

command result_t StdControl.init() {

// initialisation des noeuds

pemission =( DVhopMsg* ) msg.data;// pointer sur le

message emis qui est de type TOS_Msg sur le champs data

switch(TOS_LOCAL_ADDRESS) {

case 0 : //si l'adreese du capteur=0 (TOS_LOCAL_ADDRESS=0)

pemission->id_ancre = 0; pemission->hop =0;

pemission->x = 81.75;

pemission->y = 41;

pemission->id_node=TOS_LOCAL_ADDRESS; pemission->hopsize= 0; break;

case 1 : //si l'adreese du capteur=1

(TOS_LOCAL_ADDRESS=1)

pemission->id_ancre = 1; pemission->hop =0;

pemission->x = 16.54; pemission->y = 33.01;

pemission->id_node=TOS_LOCAL_ADDRESS; pemission->hopsize= 0;

break;

case 2 : //si l'adreese du capteur=2 (TOS_LOCAL_ADDRESS=2)

pemission->id_ancre =2;

pemission->hop =0;

pemission->x = 47.76;

pemission->y = 66.02;

pemission->id_node=TOS_LOCAL_ADDRESS;

pemission->hopsize= 0;

break;

default: pemission->id_node=TOS_LOCAL_ADDRESS;

pemission->id_ancre =100;// les autres noeuds prends la valeur 100 par exemple

pemission->hopsize= 0;

call Leds.init(); return SUCCESS;

}

}

command result_t StdControl.start() {

v=TRUE;vv=TRUE;vvv=TRUE;

//stocker les x et les y des ancres dans un tabeau tab[0][0]=81.75;

tab[0][1]=41;

tab[1][0]=16.54; tab[1][1]= 33.01;

tab[2][0]=47.76; tab[2][1]=66.02;

//le calcule des distances entres les ancres

L0L1= sqrt(pow((tab[0][0]-tab[1][0]),2)+ pow((tab[0][1]-tab[1][1]),2));

L0L2= sqrt(pow((tab[0][0]-tab[2][0]),2)+ pow((tab[0][1]-tab[2][1]),2));

L1L2= sqrt(pow((tab[1][0]-tab[2][0]),2)+ pow((tab[0][1]-tab[2][1]),2));

if(TOS_LOCAL_ADDRESS==0){

dbg(DBG_USR1, "La distance entre les ancres 0 et 1= %f\n",L0L1);

dbg(DBG_USR1, "La distance entre les ancres 0 et 2= %f\n",L0L2);

dbg(DBG_USR1, "La distance entre les ancres 1 et 2= %f\n",L1L2);

}

for(i=0;i<=2;i++) for(j=0;j<2;j++) ancre_recu[i][j]=FALSE;

for(i=0;i<=2;i++){ neud_recu_avant[i]=TRUE; neud_recu_apres[i]=FALSE;

}

affiche1=TRUE;

k=0;r=FALSE;

premier_hop_arriver=0;

call Timer.start(TIMER_REPEAT, 2000);// envoyer un

message apres chaque 2 secondes

return SUCCESS;

}

command result_t StdControl.stop() { call Timer.stop();

return SUCCESS;

}

event result_t envoiMsg.sendDone(TOS_MsgPtr sent, result_t success) {

call Leds.redOff();

return SUCCESS;

}

event result_t Timer.fired() {

atomic {

if( k<15){

k=k+1;

//dbg(DBG_USR1, "bien envoyer\n");

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg),

&msg)== SUCCESS)

{

call Leds.yellowToggle(); }else {call Leds.redToggle(); dbg(DBG_USR1, "echec\n");

}

}

}

return SUCCESS;

}

event TOS_MsgPtr RecoieMsg.receive(TOS_MsgPtr m) {

// reception d'un message

call Leds.greenToggle();

atomic {

poi = (DVhopMsg*) m->data;// pointeur sur le message reçu

p =( DVhopMsg* ) msg.data;// pointeur sur le message emis

switch(TOS LOCAL ADDRESS) {

_

_

case 0 :

atomic{

if( (ancre_recu[0][0]==FALSE) && (poi->id_ancre==1) ){//si

l'ancre 0 reçoit un message d'ancre 1

ancre_recu[0][0]=TRUE;

hop[0][0]=poi->hop+1;

dbg(DBG_USR1, "le hop 00=%d reçu a partir de%d

id_node=%d\n", hop[0][0],poi->id_ancre,poi->id_node);

}

else if( (ancre_recu[0][1]==FALSE)

&&(poi>id_ancre==2)){ //si l'ancre 0 reçoit un message
d'ancre 2

ancre_recu[0][1]=TRUE;

hop[0][1]=poi->hop+1;

dbg(DBG_USR1, "le hop 01=%d recue a partir de%d idnode=%d\n", hop[0][1],poi->id_ancre,poi->id_node); }

if( (ancre_recu[0][0]==TRUE) &&(ancre_recu[0][1]==TRUE)&& (v==TRUE)){//si l'ancre 0 reçoit un message d'ancre 1 et 2 alors on calcule le hopsize

v=FALSE;

hopsize[0]=((L0L1+L0L2)/(hop[0][0]+hop[0][1]));

dbg(DBG_USR1, "le hopsize de L0=%f\n",hopsize[0]);

//envoyer un broadcast avec les info suivants

p->hopsize= hopsize[0];

//p->hop=0;

p->id_ancre=0;

for(i=0;i<12;i++)

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg),

&msg)== SUCCESS)

call Leds.redOn();

}

}

break;

case 1 :

atomic{

if( (ancre_recu[1][0]==FALSE) && (poi->id_ancre==0) ){

ancre_recu[1][0]=TRUE;

hop[1][0]=poi->hop+1;

dbg(DBG_USR1, "le hop 10=%d recue a partir de %d

idnode=%d\n", hop[1][0],poi->id_ancre,poi->id_node);

}

else if( (ancre_recu[1][1]==FALSE) &&(poi->id_ancre==2)){ ancre_recu[1][1]=TRUE; hop[1][1]=poi->hop+1;

dbg(DBG_USR1, "le hop 11=%d recue a partir de%d idode=%d\n", hop[1][1],poi->id_ancre,poi->id_node);

}

if( (ancre_recu[1][0]==TRUE) &&(ancre_recu[1][1]==TRUE)&& (vv==TRUE)){

vv=FALSE;

hopsize[1]=((L0L1+L1L2)/(hop[1][0]+hop[1][1])); dbg(DBG_USR1, "le hopsize de L1=%f\n",hopsize[1]); p->hopsize= hopsize[1];

//p->hop=0;

p->id_ancre=1;

for(i=0;i<8;i++)

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg)== SUCCESS)

call Leds.redOn();

}

}

break;

case 2 :

atomic{

if( (ancre_recu[2][0]==FALSE) && (poi->id_ancre==0) ){

ancre_recu[2][0]=TRUE;

hop[2][0]=poi->hop+1;

dbg(DBG_USR1, "le hop 20=%d recue a partir de%d idnode=%d\n",

hop[2][0],poi->id_ancre,poi->id_node);

}

else if( (ancre_recu[2][1]==FALSE) &&(poi->id_ancre==1)){ ancre_recu[2][1]=TRUE;

hop[2][1]=poi->hop+1;

dbg(DBG_USR1, "le hop 21=%d recue a partir de %d idnode=%d\n", hop[2][1],poi->id_ancre,poi->id_node); }

if( (ancre_recu[2][0]==TRUE) &&(ancre_recu[2][1]==TRUE)&& (vvv==TRUE)){

vvv=FALSE;

hopsize[2]=((L0L2+L1L2)/(hop[2][0]+hop[2][1])); dbg(DBG_USR1, "le hopsize de L2=%f\n",hopsize[2]); p->hopsize= hopsize[2];

// p->hop=0;

p->id_ancre=2;

for(i=0;i<12;i++)

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg)== SUCCESS)

call Leds.redOn(); }

}

break;

default :

atomic{

if( poi->hopsize!=0 ){// si le hopsize est calculer

if((r==FALSE) && (poi->id_ancre<3) ){

r=TRUE;

premier_hop_arriver=poi->hopsize;

dbg(DBG_USR1, "le premier hopsize reçu = %f a partir de

noeud %d elle a id_ancre= %d\n",premier_hop_arriver,poi-

>id_node,poi->id_ancre);

}

if( (neud_recu_avant[0]==TRUE) && (poi->id_ancre==0) ){// si le message reçue a id_ancre=0 neud_recu_avant[0]=FALSE; hop_noeud[0]=poi->hop+1;

//dbg(DBG_USR1, "le hopsize reçu=%f a partir de %d et idnode=%d\n",poi->hopsize,poi->id_ancre,poi->id_node);

dbg(DBG_USR1, "le hop 30=%d recue a partir de %d et

idnode=%d\n", hop_noeud[0],poi->id_ancre,poi->id_node);

hopsize[0]=poi->hopsize;

p->hopsize= poi->hopsize;

p->id_ancre=0;

p->id_node=TOS_LOCAL_ADDRESS;

p->hop=poi->hop+1;

for(i=0;i<8;i++)

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg)== SUCCESS)

call Leds.redOn();

}

else if( (neud_recu_avant[1]==TRUE) &&(poi->id_ancre==1)){ neud_recu_avant[1]=FALSE;

hop_noeud[1]=poi->hop+1;

dbg(DBG_USR1, "le hop 31=%d reçue a partir de %d et

idnode=%d\n", hop_noeud[1],poi->id_ancre,poi->id_node);

p->hopsize= poi->hopsize;

hopsize[1]=poi->hopsize;

p->id_ancre=1;

p->id_node=TOS_LOCAL_ADDRESS;

p->hop=hop_noeud[1];

for(i=0;i<12;i++)

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg),

&msg)== SUCCESS)

call Leds.redOn();

}

else if( (neud_recu_avant[2]==TRUE) &&(poi->id_ancre==2)){

neud_recu_avant[2]=FALSE;

hop_noeud[2]=poi->hop+1;

//dbg(DBG_USR1, "le hopsize reçu=%f a partir de %d et

idnode=%d\n",poi->hopsize,poi->id_ancre,poi->id_node);

dbg(DBG_USR1, "le hop 32=%d recue a partir de %d et

idnode=%d\n", hop_noeud[2],poi->id_ancre,poi->id_node);

hopsize[2]=poi->hopsize; p->hopsize= poi->hopsize; p->id_ancre=2; p->hop=hop_noeud[2]; p->id_node=TOS_LOCAL_ADDRESS;

for(i=0;i<12;i++)

if (call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg)== SUCCESS)

call Leds.redOn();

}

if(affiche1==TRUE && neud_recu_avant[0]==FALSE && neud_recu_avant[1]==FALSE && neud_recu_avant[2]==FALSE ){//si on a reçoit les hop de tous les ancres

affiche1=FALSE;//variable pour afficher le min une seule fois dbg(DBG_USR1, "la distance entre %d et ancre 0 =%f\n",TOS_LOCAL_ADDRESS,premier_hop_arriver*hop_noeud[0]); dbg(DBG_USR1, "la distance entre %d et ancre 1 =%f\n",TOS_LOCAL_ADDRESS,premier_hop_arriver*hop_noeud[1]); dbg(DBG_USR1, "la distance entre %d et ancre 2 =%f\n",TOS_LOCAL_ADDRESS,premier_hop_arriver*hop_noeud[2]); }

}

else if (poi->hopsize==0) {//le hopesize n'est pas encore

calculer

if(poi->id_ancre<3) {

if((poi->id_ancre==0)&&(neud_recu_apres[0]==FALSE)){

neud_recu_apres[0]=TRUE;

p->hopsize=0;

p->id_ancre=poi->id_ancre;

p->hop=poi->hop+1;

p->id_node=TOS_LOCAL_ADDRESS;

for(i=0;i<12;i++)

call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg);

}

else if((poi>id_ancre==1)&&(neud_recu_apres[1]==FALSE)){

neud_recu_apres[1]=TRUE;

p->id_ancre=poi->id_ancre;

p->hopsize=0;

p->id_node=TOS_LOCAL_ADDRESS;

p->hop=poi->hop+1;

for(i=0;i<8;i++)

call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg); }

else if((poi>id_ancre==2)&&(neud_recu_apres[2]==FALSE)){ neud_recu_apres[2]=TRUE;

p->id_ancre=poi->id_ancre;

p->hopsize=0;

p->id_node=TOS_LOCAL_ADDRESS;

p->hop=poi->hop+1;

for(i=0;i<12;i++)

call envoiMsg.send(TOS_BCAST_ADDR, sizeof( DVhopMsg), &msg);

}

}

}

}

break;

}

}

return m;

}

}

Annexe 2

Procédure d'installation sous Windows XP et exemple d'execution

Ce guide propose l'installation du principal outil nécessaire au bon fonctionnement du système, notamment Cygwin (couche d'émulation de l'API Linux) qui permet d'avoir une interface Unix sous Windows. Cygwin est un environnement d'émulation Linux qui permet d'avoir un shell et de compiler et exécuter les programmes Linux (On dispose ainsi de gcc, apache, bash, etc.).

1- Télécharger le fichier tinyos-1.1.0-1is.exe de la source http://www.tinyos.net/dist-1.1.0/tinyos/windows/ .

2- Exécuter ce fichier pour installer la version 1.1.0 sous windows XP. L'installation se fait automatiquement. Un raccourci de Cygwin est sauvegardé sur le bureau.

3- Accéder à C:\tinyos\cygwin\opt\tinyos-1.x\doc\tutorial\verifyhw.html et suivre les étapes que contient cette page afin de vérifier si l'installation est bien réussie.

4- Accéder à: cd /opt/tinyos-1.x/tools/java ET taper : make

5- Installer les mises à jour de NesC1.1.1 and TinyOS1.1.15.

Pour se faire, rechercher sur le net http://www.tinyos.net/dist-1.1.0/tinyos/windows/ ces

mises à jour en téléchargeant le rpm et le mettant dans C:\tinyos\cygwin\home\Nom

de votre répertoire

Et taper dans le shell:

rpm -ivh --ignoreos nesc-1.1.2b-1.cygwin.i386.rpm

rpm -ivh --ignoreos --force tinyos-1.1.15Dec2005cvs-1.cygwin.noarch.rpm

6- Aller à opt/tinyos-1.x/tools/java/net/tinyos/sim et verifier si ces fichiers sont presents:

SimObjectGenerator.java et MoteSimObjectGenerator.java

S'ils existent, alors les supprimer de ce répertoire.

7- Editer le makefile qui est dans C:\tinyos\cygwin\opt\tinyos-1.x\tools\java\net\tinyos\sim

et écrire cette instruction si elle n'existe pas : net/tinyos/message/avrmote/*.class

Le makefile

.....

.....

net/tinyos/sim/plugins/plugins.list \ net/tinyos/sf/*.class \ net/tinyos/util/*.class \ net/tinyos/packet/*.class \ net/tinyos/message/*.class \

net/tinyos/message/avrmote/*.class \

org/apache/oro/text/regex/*.class \ org/python/compiler/*.class \ org/python/core/*.class \ org/python/modules/*.class \ org/python/parser/*.class \ org/python/parser/ast/*.class \ org/python/rmi/*.class \

.....

.....

8- Aller à shell et taper:

cd /opt/tinyos-1.x/tools/java/net/tinyos/sim make clean

make

10- Accéder à l'application qui va être simulée. On prend par exemple, l'application Blink.

Accéder au shell et faire:

cd /opt/tinyos-1.x/apps/blink

make pc

puis

export PATH="$TOSROOT/tools/java/net/tinyos/sim:$PATH"

puis

TinyViz -run build/pc/main.exe 20 ///Insérer le nombre de noeuds. Par exemple 20

Liste de Figures

Liste des Tableaux

Tableau II. 1: Comparaison entre algorithmes centralisés et distribués. .. Erreur ! Signet non défini.

References :

[1] Ian F. Akyildiz, Weilian Su, Yogesh Sankarasubramaniam, and Erdal Cayirci A Survey on Sensor Networks.Georgia Institute of Technology. Pages 102-114,IEEE Communications Magazine. August 2002

[2] Benahmed Khelifa. La sécurité dans les réseaux de capteurs sans fil. Centre universitaire de Béchar, Institut des sciences exactes BP: 417-08000 Béchar 2005.

Chapitre 4 Implémentation et Evaluation de DV-Hop

[3] Mokhtar Aboelaze, Fadi Aloul. Current and Future Trends in Sensor Networks:A Survey. IEEE 2005

[4] Mounir Achir. Technologies basse consommation pour les réseaux Ad Hoc.

Thèse pour obtenir le grade de Docteur de l'INPG.
Institut National Polytechnique de Grenoble. juillet 2005.

[5] memoire de sahraoui

[6] Wassim ZNAIDI , « Modélisation formelle de réseaux de capteurs à partir de

TinyOS »,projet fin d'etude, école polytechnique de tunisie,2006.

[7] Mr. fares Abdelfatah, « Développement d'une bibliothèque de capteur sans fil »,

diplôme de master en informatique, université Montpellier 2, avril 2008

[8]: KAREL Heurtefeux, FABRICE Valois. Localisation collaborative pour reseaux capteurs. Lyon (France).

[9]: ARONDEL Olivier, PONPARDIN Thomas. Systeme de positionnement Galileo/Glonass. Ecole superieur d'ingenieurs 01/09.

[10]: ROCH Jonas. Le Global Positioning System(GSM) :structure et fonctionnement. Travail de maturité 2009.

[11]: MAKHOUL Abdallah. Reseaux de capteurs: localization couverture et fusion de données. These Doctorat. Université de Franche-comté :14-11-2008.

[12]: SAAD Clement. Quelques contributions dans les réseaux de capteurs sans fil : Localisation et Routage . These Doctorat École Doctorale 166 « I2S Mathématiques et Informatique » Laboratoire d'Informatique (EA 4128). présentée à l'Université d'Avignon et des Pays de Vaucluse. 10-07-2008.

[13] Haiyang Zhang.A S elective Anchor Node

Localization Algorithm for

Wireless Sensor Networks

[14] An Iterative Boundary Node Localization Algorithm based on DV-hop Scheme in WSN

Nan Jiang, Xiao Xiang, Chen Huan

Journal of Convergence Information Technology, Volume6, Number 7, July 2011

[15] H. Alatrista, J. Mathieu, K. Gouaïch S. Aliaga, « Implémentation de protocoles sur une plateforme de réseaux de capteurs sans fil », TER master 1 informatique, Université de Montpellier II, 29 Avril 2008.

[16] Borrong Chen, Geoff Werner Allen, Mark Hempstead, Matt Welsh, Victor Shnayder,

Chapitre 4 Implémentation et Evaluation de DV-Hop

« Simulating the Power Consumption of LargeScale Sensor Network

Applications», Proceedings of the 2nd international conference on Embedded

networked sensor systems, Pages: 188 - 200, Harvard University, 2004.






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Là où il n'y a pas d'espoir, nous devons l'inventer"   Albert Camus