Vous êtes sur la page 1sur 204

AIX-MARSEILLE UNIVERSITÉ

ÉCOLE DOCTORALE 184


Laboratoire d’Informatique et Systèmes

Thèse présentée pour obtenir le grade universitaire de


docteur

Discipline : Informatique

Cédric BERENGER

Grands Réseaux Maillés Basse Énergie :


Protocoles minimalistes pour la Synchronisation,
la mesure de Distance et le Partitionnement
Scalable Low Power Mesh Networks: minimalistic Protocols for
Synchronisation, Distance Measuring and Partitionning

Soutenue le 14/01/2021 devant le jury composé de :

Emmanuel Godard PU Aix-Marseille Université, LIS Examinateur


Claire Goursaud MCF INSA Lyon, Inria et CITI Examinatrice
Thomas Noël PU Université de Strasbourg, iCube Rapporteur
Peter Niebert MCF Aix-Marseille Université, LIS Directeur
Nathalie Mitton DR Inria Lille-Nord Europe, FUN Rapporteure
Kévin Perrot MCF Aix-Marseille Université, LIS Co-Directeur

Numéro national de thèse/suffixe local : 2021AIXM0024/002ED184


Cette œuvre est mise à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 4.0
International.
Résumé
Les microcontrôleurs, ces petits ordinateurs embarqués à bas coût, nous per-
mettent aujourd’hui de voir grand. Leur faible consommation ainsi que leur équi-
pement leur permettent d’interagir avec l’environnement, tout en nous commu-
niquant leurs agissements via les ondes. Ainsi, pourquoi ne pas former un grand
maillage, pour administrer et surveiller une maison, un complexe industriel, voir
une ville entière ? Un tel passage à l’échelle s’avère difficile, et même si de nom-
breuses solutions existent déjà pour la gestion de réseaux maillés, les impératifs
de robustesse et d’efficacité ont poussé à faire certains compromis, relayant la
simplicité d’implémentation, la basse consommation ainsi que de l’idéal d’un ré-
seau maillé aux communications entièrement pair à pair à un second plan. Dans
cette thèse, nous contribuons à une solution alternative pour laquelle nous réali-
sons nos propres compromis : Nous cherchons une méthode minimaliste permet-
tant de construire des réseaux maillés à grande échelle, autonomes en énergie et
capable de s’auto-gérer sans coordinateur.
Notre premier choix est celui du modèle de programmation. Nous voulons
exécuter des applications distribuées en rondes synchrones, à la manière d’un
automate cellulaire. La mise en place d’un tel modèle en pratique nous a mené
à nous intéresser à la problématique de la synchronisation : deux nœuds ne
vont jamais à la même vitesse, provoquant un écart qui se creuse avec le temps,
or nous avons besoin de garder localement les nœuds en phase les uns avec
les autres. Nous proposons un algorithme de synchronisation minimaliste, per-
mettant d’établir des rondes d’exécution synchrones. La nature partagée et la
sensibilité du médium sans-fil aux perturbations ne permet pas une utilisation
directe de notre algorithme de synchronisation dans un réseau sans-fil. Ainsi,
nous proposons dans un second temps un protocole qui fournit le cadre frugal à
la synchronisation de nœuds sans-fils.
Après avoir établi le contexte nécessaire à l’exécution d’algorithmes synchrones,
nous avons voulu simplifier le déploiement d’un tel réseau en géolocalisant les
nœuds. Nous avons mis au point une technique permettant de mesurer préci-
sément la distance entre deux voisins, en exploitant le délai de propagation des
ondes ainsi que les infimes différences de fréquences entre leurs horloges. Finale-
ment, nous avons considéré la possibilité d’une interface centralisé vers distribué
permettant la diffusion d’un flux de données via de multiples points d’entrée.

3
Abstract
Microcontrollers are small and cheap embedded computers that can make
great things. With low power consumption, they are equipped to interact with
the environment and give us feedback using radio waves. With such abilities, we
could build a giant mesh network, to monitor a house, an industrial facility, or
event a whole city. However, scalability of such meshed networks is a complex to-
pic, and numerous existing solutions for managing meshed network, submitted
to robustness and performance constraints, make compromises. Solutions with
low power consumption, supporting meshed topologies and using peer to peer
communications, are both hard to find and not easy to implement. In this PhD
thesis, we contribute to an alternative solution following our own compromises.
We propose a minimalistic method to build scalable meshed networks of energy-
autonomous nodes, able to self-organization without central coordination.
We first choose a programming model. We run distributed applications using
synchronous rounds, just as cellular automata. To put such a model in practice,
we discuss the synchronization topic : two nodes never run at the same exact
speed, so there is an increasing skew between clock values in time. But, we need
to keep neighbouring nodes in phase with each others. We give a minimalistic
synchronization algorithm to set synchronous execution rounds. The shared na-
ture of the wireless communication medium and its sensitivity to electromagne-
tic disturbances make it unsuitable for our synchronization algorithm without
adjustments. Thus, we present a protocol giving a necessary frugal framework to
let our synchronization algorithm work on wireless nodes.
Once we are able to run synchronous algorithms on nodes, we aim at simpli-
fying the deployment of such networks by adding geolocation with software tech-
niques. We take advantage of tiny differences in nodes’ clock speeds in order to
measure precisely propagation delays of radio waves exchanged by neighbours.
Finally, we consider a way to interface centralized systems with our distributed
networks allowing to broadcast data streams using several entry points.

4
Remerciements
Je vais bien sûr commencer par remercier mon directeur de thèse Peter Niebert,
qui m’a accompagné depuis ma deuxième année de licence et m’a fait découvrir
les micro-contrôleurs ainsi que les algorithmes distribués. Je lui dois une grande
partie de mes connaissances en électronique et réseaux, et c’est grâce à lui que j’ai
pu investiguer durant ma thèse des thématiques aussi passionnantes que variées,
oscillant régulièrement entre théorie et pratique.
Ensuite, je tiens à remercier tout particulièrement mon co-directeur de thèse
Kévin Perrot, qui a toujours été présent dans les moments de doutes et qui m’a
permis de tenir jusqu’à la fin. Il a effectué un travail titanesque de relecture et
de révision du manuscrit. Toujours positif et pertinent, il a grandement aidé à
apporter la rigueur nécessaire au manuscrit ainsi qu’aux démonstrations.
Je remercie M. Thomas Noël et Mme Nathalie Mitton de m’avoir fait l’honneur
d’être mes rapporteurs. Je remercie également Emmanuel Godard et Mme Claire
Goursaud d’avoir accepté de faire parti de mon jury de thèse.
Je remercie tous mes collègues au laboratoire LIS, notamment Manon, Sébas-
tien D., François, Théodore, Amélia, Cindy, Franck, Florian, Thibault, Damien,
Pâcome, José-Luis, Didier, Léo, etc., avec lesquels j’ai pu apprendre et échanger
et qui ont instauré une ambiance de travail agréable. Je remercie tout particuliè-
rement mes collègues de bureau Sébastien R. et Jeremy qui ont toujours accepté
de prendre de leur temps pour donner des avis critiques sur des démonstrations,
des sections ou des illustrations, et qui on eu la patience de supporter mes ex-
centricités toutes ces années. Ils m’ont également fait profiter de leur expertise
de l’outil LaTeX et m’ont aidé à le manier correctement.
Merci à ma mère, qui, sans bagage avancé en informatique, a lu et relu attenti-
vement les différentes versions de la thèse et qui a vérifié que les différentes sec-
tions soient compréhensibles et lisibles de manière indépendantes. Ses conseils
ont grandement participé à la vulgarisation du récit ainsi qu’à rendre sa lecture
plus fluide. Merci également à ma grand-mère pour son expertise sur la gram-
maire et l’orthographe et qui a corrigé un grand nombre de coquilles.
Merci à mes collègues de la startup LED’sChat, Guillaume pour son soutien, et
surtout Mathieu pour ses annotations et conseils concernant le style et la lecture
de plusieurs chapitres.
Enfin, merci à ma famille, mon père et ma sœur pour leur aide dans la prépa-
ration de la soutenance, et merci à tous ceux qui sont venu si nombreux assister
à ma soutenance de thèse et ce, malgré le fait qu’elle se soit déroulée en visio
durant une période si singulière (janvier 2021).

5
Table des matières
Table des matières 6

1 Introduction 10
1.1 Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Objectif, minimalisme et visualisations interactives . . . . . . . . . 13
1.3 Microcontrôleurs : notions de base . . . . . . . . . . . . . . . . . . . 14
1.4 Horloge et mesure du temps . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1 Signal et fronts d’horloge . . . . . . . . . . . . . . . . . . . . 17
1.4.2 Le temps : une succession d’états . . . . . . . . . . . . . . . 17
1.4.3 Périphérique compteur . . . . . . . . . . . . . . . . . . . . . 18
1.4.4 Perception des évènements . . . . . . . . . . . . . . . . . . . 18
1.4.5 Dérive de la fréquence . . . . . . . . . . . . . . . . . . . . . 20
1.5 Consommation énergétique . . . . . . . . . . . . . . . . . . . . . . . 22
1.5.1 Sources d’énergie . . . . . . . . . . . . . . . . . . . . . . . . 23
1.5.2 Consommation des périphériques . . . . . . . . . . . . . . . 23
1.5.3 Mode de fonctionnement "basse énergie" . . . . . . . . . . . 23
1.6 Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2 Synchronisation filaire 25
2.1 Abstraction synchrone . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.1 Principe général et avantages . . . . . . . . . . . . . . . . . 26
2.1.2 Fonctionnement de la couche . . . . . . . . . . . . . . . . . . 27
2.1.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Synchronisation : état de l’art . . . . . . . . . . . . . . . . . . . . . 29
2.3 Modèle d’horloges et de délais . . . . . . . . . . . . . . . . . . . . . 31
2.3.1 Fréquence nominale et fréquence effective . . . . . . . . . . . 31
2.3.2 Gigue aléatoire . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.3 Exemple : effets cumulatifs de la gigue . . . . . . . . . . . . 32
2.3.4 Exemple : synchronisation par impulsions Pulse Sync . . . . 32
2.4 Primitive : GooseSync . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4.1 Choix du nom Goose Sync . . . . . . . . . . . . . . . . . . . 34
2.4.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Comportement et passage à l’échelle . . . . . . . . . . . . . . . . . 36
2.5.1 Noeuds meneurs et suiveurs . . . . . . . . . . . . . . . . . . 36
2.5.2 Convergence vers un meneur unique . . . . . . . . . . . . . . 36
2.5.3 Mémoire implicite et propagation accélérée . . . . . . . . . . 37

6
2.6 Étude empirique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6.1 Simulation à évènements discrets . . . . . . . . . . . . . . . 39
2.6.2 Simulation par tours . . . . . . . . . . . . . . . . . . . . . . 43
2.6.3 Démonstrateur physique : LED’s Chat Mozaïk . . . . . . . . 47
2.7 Éléments d’étude analytique . . . . . . . . . . . . . . . √ . . . . . . . 48
2.7.1 Variance de Goose Sync bornée par Pulse Sync ( n) . . . . 48
2.7.2 Hypothèse : vitesse de propagation rapide indépendante du
diamètre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7.3 Variance faiblement dépendante du diamètre . . . . . . . . . 49
2.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3 Synchronisation sans fils de réseaux maillés 52


3.1 Medium sans-fil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.1.1 Communications radio : physique et pratique . . . . . . . . . 53
3.1.2 Difficultés par rapport au filaire . . . . . . . . . . . . . . . . 56
3.2 État de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.1 Techniques de multiplexage du médium . . . . . . . . . . . . 57
3.2.2 Protocoles existants pour l’accès au médium (MAC) . . . . . 57
3.2.3 Compromis entre maillage, basse énergie, et efficacité . . . . 58
3.2.4 Notre proposition : MeeMSyP . . . . . . . . . . . . . . . . . 59
3.3 Multiplexage par superposition . . . . . . . . . . . . . . . . . . . . 60
3.4 Protocole MeeMSyP . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.1 Organisation du protocole en 3 canaux . . . . . . . . . . . . 62
3.4.2 Pseudo-code exhaustif . . . . . . . . . . . . . . . . . . . . . 70
3.5 Consommation énergétique . . . . . . . . . . . . . . . . . . . . . . . 77
3.5.1 Écouter consomme autant qu’émettre . . . . . . . . . . . . . 78
3.5.2 Délais relatifs à l’utilisation de l’antenne . . . . . . . . . . . 79
3.5.3 Rapport cyclique : utiliser l’antenne avec parcimonie . . . . 80
3.5.4 Période : une seconde pour rester réactif . . . . . . . . . . . 80
3.5.5 Répartition du temps d’antenne par canal . . . . . . . . . . 80
3.5.6 Mode économie d’énergie : Un réveil difficile . . . . . . . . . 82
3.5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.6 Stabilité, robustesse et scalabilité . . . . . . . . . . . . . . . . . . . 84
3.6.1 Synchronisation : interférences destructives . . . . . . . . . . 84
3.6.2 Distinguer la salve de synchronisation du bruit ambiant . . . 85
3.6.3 Sécurité et robustesse vis-à-vis d’émetteurs étrangers au réseau 86
3.6.4 Sécurité vis-à-vis d’appareils malicieux . . . . . . . . . . . . 86
3.6.5 Avaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.6.6 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.7 Ouverture : récolte d’énergie et utilisations . . . . . . . . . . . . . . 95
3.7.1 Énergie moyenne récoltée par un panneau photovoltaïque . . 95
3.7.2 Récolte et stockage de l’énergie pour passer la nuit . . . . . 96
3.7.3 Exploiter le surplus d’énergie . . . . . . . . . . . . . . . . . 97

7
3.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances 99


4.1 Bases de la mesure de délais sur microcontrôleurs . . . . . . . . . . 100
4.1.1 Faible résolution : ondes ultra-sonores . . . . . . . . . . . . . 101
4.1.2 Haute résolution : ondes-électromagnétiques . . . . . . . . . 102
4.2 Mesure de délais courts : État de l’art . . . . . . . . . . . . . . . . . 102
4.2.1 Méthode de la chaîne de portes logiques . . . . . . . . . . . 103
4.2.2 Méthode de l’échelle de Vernier à deux oscillateurs . . . . . 105
4.2.3 Circuits intégrés ToF . . . . . . . . . . . . . . . . . . . . . . 106
4.3 Protocoles sous un modèle idéalisé . . . . . . . . . . . . . . . . . . . 107
4.4 Mesure de temps de réponse . . . . . . . . . . . . . . . . . . . . . . 107
4.4.1 Description et intuitions . . . . . . . . . . . . . . . . . . . . 109
4.4.2 Calcul de délais : description formelle . . . . . . . . . . . . . 115
4.4.3 Multiples balayages : δ grand . . . . . . . . . . . . . . . . . 118
4.5 Mesure de temps de vol . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.5.1 Protocole de mesure de temps de vol : description et intuitions123
4.5.2 Calculs de délais : description formelle . . . . . . . . . . . . 127
4.5.3 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.6 Confrontation avec la réalité physique . . . . . . . . . . . . . . . . . 134
4.6.1 Dérive des vitesses des horloges . . . . . . . . . . . . . . . . 135
4.6.2 Impact de la chaîne analogique . . . . . . . . . . . . . . . . 137
4.6.3 Propotype mesure de temps de vol d’infrarouges . . . . . . . 139
4.6.4 Dispositif de mesure de temps de vols d’ondes radio . . . . . 144
4.6.5 Conditions d’expérimentation et résultats . . . . . . . . . . . 146
4.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

5 Localisation par interférence et observation de l’onde stationnaire 151


5.1 Etat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.2 Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.3 Simulation interférences 1D . . . . . . . . . . . . . . . . . . . . . . 154
5.3.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.3.2 Captures 1D . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.4 Réalisation pratique . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.5 Résultats et limites . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.6 Généralisation au plan et à l’espace . . . . . . . . . . . . . . . . . . 157
5.6.1 Interférences 2D . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.6.2 Captures 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.6.3 Conclusion, perspectives et applications . . . . . . . . . . . . 160

6 Partitionnement équilibré de grilles non-pondérées en zones connexes162


6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.1.1 Motivation initiale . . . . . . . . . . . . . . . . . . . . . . . 162

8
Table des matières

6.1.2 Énoncé du problème de partitionnement et variantes . . . . 163


6.1.3 Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
6.2 Travaux liés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
6.3 Modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
6.4 NP-Difficulté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
6.4.1 Intuitions de la construction . . . . . . . . . . . . . . . . . . 169
6.4.2 Réduction : de la construction jusqu’aux calculs . . . . . . . 171
6.4.3 Correction de la réduction et calculs . . . . . . . . . . . . . 173
6.4.4 Partitionnement r-équilibré en zones connexes (rBCP) . . . 177
6.5 Partitionnement de grilles q-carré connexe . . . . . . . . . . . . . . 177
6.5.1 q-carrée connexité : définition globale . . . . . . . . . . . . . 178
6.5.2 q-carée connexité : définition locale . . . . . . . . . . . . . . 180
6.5.3 Un algorithme pour la variante non enracinée . . . . . . . . 182
6.5.4 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
6.6 Famille des grilles ×2 . . . . . . . . . . . . . . . . . . . . . . . . . . 191
6.6.1 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
6.6.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
6.7 Perspectives et travaux futurs . . . . . . . . . . . . . . . . . . . . . 194
6.7.1 Optimisations de l’algorithme . . . . . . . . . . . . . . . . . 194
6.7.2 Vers un algorithme pour le problème enraciné . . . . . . . . 195

7 Conclusion et perspectives 197

Bibliographie générale 200

Bibliographie personnelle 204

9
1 Introduction
Les microcontrôleurs sont des ordinateurs miniatures capables d’exécuter un
programme, et de produire en sortie une action physique en fonction d’évène-
ments observés sur des entrées analogiques ou numériques. Un microcontrôleur
peut par exemple allumer une lampe lorsqu’il détecte une variation importante
du signal électrique provenant d’un capteur de présence infrarouge. Les micro-
contrôleurs sont des circuits intégrés peu chers, fiables, et requièrent peu d’éner-
gie. Les groupements de microcontrôleurs peuvent interagir et échanger de l’in-
formation via des câbles ou des émetteurs-récepteurs radio. Il est alors intéres-
sant d’inter-connecter un grand nombre de microcontrôleurs pour former un
réseau de capteurs et accéder à un champ applicatif plus vaste : sans déployer
d’infrastructure lourde, de tels réseaux de capteurs permettent d’une part de sur-
veiller et cartographier l’environnement en récoltant des données sur une large
zone géographique, et d’autre part d’agir sur l’environnement en réaction à des
évènements. Ce champ applicatif s’étend du domaine militaire au public, avec de
nombreuses utilisations concrètes dans les domaines de la santé, de l’industrie,
de l’écologie, ainsi que de la domotique.
Les réseaux de microcontrôleurs sont aujourd’hui en plein essort. Rassemblés
sous la bannière "Internet of things" (Internet des objets), les technologies et mé-
thodes permettant de créer des réseaux de microcontrôleurs foisonnent. Contrai-
rement aux ordinateurs classiques pour lesquels il existe des standards établis qui
dictent comment doivent communiquer les différents noeuds du réseau (comme
le protocole Internet IP, le Wifi pour la liaison sans-fil, et Ethernet pour la liaison
filaire), il n’y a actuellement pas de standard de facto pour établir des réseaux de
microcontrôleurs. De plus, la variété d’applications possibles ainsi que les faibles
ressources des microcontrôleurs empêchent l’existence d’ une méthode générale
répondant à tous les cas d’usages.
Néanmoins, un point commun à l’ensemble de ces technologies est la gestion
du temps. En effet, l’objectif premier d’un protocole réseau est de maîtriser la cir-
culation de l’information. Or, pour que cette circulation soit efficace, sans conges-
tions ni retards, il faut ordonnancer les communications des membres du réseau.
Cette tâche d’ordonnancement primordiale est complexe, en particulier lorsque
l’on considère des réseaux de grande taille, car l’ordonnancement des communi-
cations d’un noeud dépend de celui de ses voisins, et que le manque de précision
des horloges des microcontrôleurs provoque dans le temps une accumulation du
retard ou de l’avance.
Enfin, les lois de la physique limitent la portée des approches centralisées pour

10
1 Introduction – 1.1 Plan

synchroniser de grands réseaux. Dans la mesure où le temps de propagation


des ondes électromagnétiques devient non négligeable sur de grandes distances
(2, 20ms de latence entre Paris et Marseille par exemple) il n’est pas possible de
synchroniser tous les noeuds d’un grand réseau sans introduire de délais entre
couples de noeuds distants. De plus, autant en câblé qu’en sans-fils, un tel si-
gnal de synchronisation est difficile à mettre en oeuvre, car pour couvrir une
grande zone, cela nécessite soit un émetteur puissant, soit des répéteurs, qui
introduisent fatalement des temps de latence supplémentaires.
Ainsi dans cette thèse, nous nous intéressons à deux problématiques intrinsè-
quement liées : les réseaux de microcontrôleurs à grande échelle ; ainsi que la
gestion et la mesure du temps. Nous verrons en premier lieu comment établir
les liens de communications, d’abord filaires puis sans-fils, entre les noeuds en
utilisant une synchronisation locale. Ensuite, nous mesurerons précisément des
délais de propagation en vue de géolocaliser les noeuds et de cartographier le
réseau. Enfin, nous organiserons le routage des données pour optimiser la bande
passante lors de la diffusion et de la récolte d’informations dans le réseau depuis
un serveur central.

1.1 Plan
Nous proposons dans ce document un ensemble de méthodes pour construire,
gérer et déployer de très grands réseaux de microcontrôleurs.
Le présent chapitre 1 est un chapitre introductif présentant les microcontrô-
leurs, les notions de base concernant leur fonctionnement, ainsi que leur gestion
du temps grâce au signal d’horloge.
Dans les premiers chapitres, nous cherchons à établir un cadre pour gérer les
communications du réseau. Nous basons la gestion du réseau sur une primitive
de synchronisation locale auto-stabilisante : nous donnons aux noeuds du réseau
le bon comportement à adopter pour propager efficacement de l’information en
compensant localement tout retard dans le flux. Cette primitive de synchronisa-
tion est étudiée pour le cas filaire dans le chapitre 2 ; nous donnons une analyse
empirique sur simulateurs de la bonne scalabilité de cette primitive et donnons
quelques pistes pour formuler une démonstration analytique de ses propriétés.
Nous constatons dans le chapitre 3 que les communications sans-fil apportent
des contraintes supplémentaires et nous proposons un protocole pour pallier
ces contraintes. Là encore, nous vérifions empiriquement sur simulateur le bon
comportement du protocole. De plus, nous discutons en détail de la consom-
mation énergétique et de la façon de minimiser celle-ci, pour faire fonctionner
le réseau avec une source photo-voltaïque produisant un courant de quelques
micro-ampères.
Dans la continuité des travaux effectués sur la synchronisation et les dérives
d’horloges, les chapitres 4 et 5 se concentrent sur le temps et la mesure de dé-

11
1 Introduction – 1.1 Plan

lais. Nous utilisons les dérives des horloges comme un atout : elles permettent
d’observer les délais d’un évènement périodique sous les différentes valeurs de
phase prises par signal d’horloge du microcontrôleur. Nous proposons dans ces
chapitres deux méthodes distinctes permettant de mesurer précisément le délais
de propagation des transmissions radio afin de mesurer les distances entre paires
de microcontrôleurs, sans matériel supplémentaire. Cela a de nombreuses appli-
cations pour nos réseaux, notamment la localisation dans l’espace des noeuds
lors du déploiement.
Dans le chapitre 4, nous mesurons sur de courtes distances (<10m) des délais
aller-retour entre deux microcontrôleurs (un noeud émetteur, un noeud récep-
teur). Nous obtenons une telle résolution en sur-échantillonnant sur un cadre
temporel intelligemment choisi : ce cadre est en effet délimité par la période
du déphasage progressif entre les fronts d’horloge d’un noeud émetteur et d’un
noeud récepteur. Nous verrons qu’un tel cadre est essentiel pour garantir la
consistance de la mesure. Nous présentons nos résultats expérimentaux et dé-
taillons les paramètres à prendre en compte pour compenser les effets parasites
tels que la tension d’alimentation, la température et l’auto-gain.
Dans le chapitre 5, nous mesurons des distances en observant les effets d’in-
terférences délibérées entre deux noeuds émetteurs. En créant volontairement
des interférences entre les transmissions de plusieurs noeuds, nous créons des
ondes stationnaires. Nous utilisons là encore le déphasage progressif entre les
horloges des noeuds pour localiser les noeuds par rapport à ces ondes station-
naires. Nous constatons que dans les conditions optimales, la mesure peut être
précise à quelques millimètres près, cependant nous discuterons de la difficulté
d’obtenir de telles conditions.
Enfin, le chapitre 6, plus théorique, ouvre sur la diffusion d’informations de-
puis une source centralisée vers un grand réseau distribué de microcontrôleurs.
La problématique est la gestion de la bande passante : si le serveur est relié à
un seul noeud du réseau, le débit est limité par la capacité du lien. Si le réseau
grandit, rajouter des liens vers d’autres noeuds permet d’augmenter le débit, ce-
pendant il faut décider comment partager ce débit en évitant les croisements des
flux provenant des différents liens, et décider pour chaque noeud sa source d’in-
formation. Pour répondre à cette problématique, nous nous sommes penchés sur
le partitionnement de graphes en zones connexes équilibrées. Nous avons étudié
ce problème sur les graphes grilles planaires. Pour le cas général, nous donnons
une preuve de NP-difficulté. Malgré cela, en relâchant certaines contraintes, nous
proposons deux algorithmes polynomiaux permettant de résoudre le problème
en pratique sur deux familles de topologies intuitives.
Bien qu’il y ait une continuité dans laquelle chaque chapitre apporte sa brique
pour construire une solution capable d’établir et d’exploiter un réseau, l’étude de
chaque brique est indépendante. Ainsi les chapitres peuvent être abordés dans
n’importe quel ordre.

12
1 Introduction – 1.2 Objectif, minimalisme et visualisations interactives

1.2 Objectif, minimalisme et visualisations


interactives
En commençant cette thèse, nous avions pour objectif précis de créer et d’uti-
liser des réseaux de microcontrôleurs à grande échelle, à bas coût, tout en res-
tant simples et performants, en conservant de faibles latences ainsi qu’une faible
consommation énergétique. Pour essayer de répondre à cette problématique pra-
tique, nous sommes partis de cet objectif et nous avons résolu pas à pas les
problèmes qui se sont présentés sur notre route en recherchant à chaque fois les
solutions les plus minimalistes possibles. Rester minimaliste est primordial, car
nous travaillons avec des systèmes embarqués disposant de peu de ressources,par
exemple 64Kio de mémoire RAM pour des modèles milieu de gamme. De plus,
nous devons rester capables de prédire avec précision le comportement à long
terme de réseaux constitués de milliers de microcontrôleurs. Utiliser une mé-
thode trop complexe serait à la fois difficilement analysable d’un point de vue
théorique, et difficilement déboguable d’un point de vue pratique.
Ayant une visée orientée applicatif, notre travail est majoritairement empi-
rique. Ce document a pour volonté de rester intuitif et de permettre à n’importe
quel ingénieur en systèmes embarqués d’utiliser nos algorithmes pour concevoir
rapidement et simplement de grands réseaux de microcontrôleur disposant de
primitives entièrement logicielles pour la mesure de distance.
Nous raisonnons de manière intuitive, graphique et interactive. Ainsi, nous
mettons les idées en avant et gardons le formalisme pour lever les ambiguïtés si
besoin. Chaque chapitre est agrémenté d’illustrations et de simulations interac-
tives embarquées à l’intérieur du présent document PDF. Chaque simulation est
codée en javascript dans un seul fichier HTML dont le code source est lié à ce do-
cument. Il suffit de cliquer sur les hyperliens apparaissant dans chaque chapitre
pour lancer l’animation dans un navigateur récent 1 .

1. Les simulations ont été développées et testées avec Mozilla Firefox 76.0.1 (64 bits)

13
1 Introduction – 1.3 Microcontrôleurs : notions de base

1.3 Microcontrôleurs : notions de base

Figure 1.1 – Un microcontrôleur : tous les constituants d’un ordinateur intégrés


sous un même boîtier.

Les microcontrôleurs sont aujourd’hui des composants électroniques omnipré-


sents. On les retrouve embarqués dans la majorité des appareils interactifs ca-
pables de mesurer une valeur, ou d’effectuer une action en réponse à une entrée.
Ils remplacent à eux seul la majorité des circuits électroniques dédiés de ces sys-
tèmes. On peut citer quelques exemples classiques : télécommandes, horloges,
balances, thermostats, objets connectés.
Le microcontrôleur, µC en abrégé, est un ordinateur complet et polyvalent,
intégré dans une même puce de taille réduite, capable de traiter de l’information,
de monitorer des évènements, et d’agir en fonction de ces évènements. Pour cela,
le microcontrôleur comporte un processeur, une mémoire programme (Flash),
une mémoire de travail (RAM), ainsi que divers périphériques propres à chaque
modèle pour gérer le temps et les communications (1.1).
Comme son nom l’indique, au sein d’un système embarqué, le microcontrôleur
est aux commandes. Il dispose des ressources nécessaires pour physiquement
contrôler les capteurs et les actionneurs du système. La puce est en effet capable
d’émettre et de percevoir, sur ses pattes, des tensions électriques pour piloter
divers composants. Un microcontrôleur pourra par exemple allumer un voyant
LED, activer une porte logique, ou encore mesurer la tension présente aux bornes
d’une photodiode. À contrario, le terme microprocesseur désigne une unité de cal-
cul, il ne peut fonctionner seul dans un système sans être épaulé de périphériques

14
1 Introduction – 1.3 Microcontrôleurs : notions de base

et de mémoires externes.
Les concepteurs de systèmes embarqués ont aujourd’hui beaucoup de choix
d’µC. En effet, les constructeurs proposent une grande gamme de modèles pour
satisfaire un grand nombre de contraintes. Une de ces contraintes est le facteur
de forme, certains µC comme l’Attiny 20 UUR peuvent tenir dans un carré de
1.5x1.5mm, tandis que d’autres, nécessitant plus de pattes d’entrée-sorties ou
devant fournir plus de courant, peuvent mesurer jusqu’à plusieurs centimètres
de côté. Une autre contrainte est celle du domaine applicatif visé. En fonction
de l’utilisation souhaitée, les constructeurs intègrent au microcontrôleur des pé-
riphériques pour résoudre spécifiquement des tâches précises. Parmi ces périphé-
riques, on peut citer : les unités de calcul flottant pour le traitement du signal ;
des convertisseurs analogique vers numérique pour l’acquisition de données pro-
venant de capteurs ; les émetteurs-récepteurs radio (bluetooth pour les objets
connectés) ; les commandes de moteur. De plus, pour satisfaire les exigences de
qualité de l’industrie, une même puce existe en différents grades de robustesse,
grade standard, automobile ou militaire. Enfin, une dernière contrainte est celle
du coût. Les modèles les plus rudimentaires et obscurs 2 , comme le PMS150C
du constructeur Padauk, sont disponibles à moins de 0.03C 3 , tandis que les
modèles les mieux équipés dépassent rarement la cinquantaine d’euros. D’expé-
rience, un modèle coûtant moins de 2C 4 est suffisant pour une vaste majorité
d’applications. Nous prendrons comme exemple tout au long de ce document le
microcontrôleur nRF52832 du constructeur Nordic (N ORDIC -S EMICONDUCTOR
2017), équipé d’un périphérique radio et qui est le modèle avec lequel nous tra-
vaillons.
De par leur faible coût, les microcontrôleurs des gammes moyennes sont loin
d’égaler les ordinateurs de bureau en terme de ressources et de performances.
En effet, les microcontrôleurs ne sont pas des ordinateurs taillés pour effectuer
des taches très diverses, leurs ressources sont suffisantes pour une application
précise. Pour donner un ordre d’idées, voici les plages de valeurs des caractéris-
tiques classiques des microcontrôleurs : les microcontrôleurs sont généralement
équipés d’un processeur simple coeur 5 . Pour la fréquence d’exécution, on ne
parle pas en giga Hertz mais en méga Hertz, voire en dizaines de kilo Hertz
lorsque l’on considère des applications basse consommation. En ce qui concerne
la mémoire de stockage des programmes (ROM Flash, équivalent du disque dur),
on ne parle plus en dizaines de gigas octet mais en dizaines/centaines de kilos
octets voire méga octets pour le haut de gamme. Enfin, pour la mémoire vive,
on parlera en dizaines de kilo octets. La table ci-après, exposant les caractéris-
tiques extraites de la documentation technique du nRF52832, donne un exemple

2. Documentation non traduite, outils de développements matériel et logiciel difficilement


accessibles
3. Modèle PMS150C-S08 à 0.024 USD (@1000 pièces), prix LCSC relevé le 12/08/2020.
4. Le modèle nRF52832 coûte 1.83 $ (@1000 pièces), prix LCSC relevé le 12/08/2020.
5. Des microcontrôleurs avec plusieurs coeurs existent mais leur utilisation est peu commune.

15
1 Introduction – 1.4 Horloge et mesure du temps

Caractéristique Valeur Unité


Fréquence CPU 64 MHz
Fréquences périphériques 16 MHz
Mémoire RAM 64 ko
Mémoire Flash 512 ko
Largeur de bus 32 bits
Débits Radio 2 Mbps
Score EEMBC CoreMark 215

Table 1.1 – Caractéristiques et ressources du microcontrôleurs Nordic nRF52832

concret. Aussi, pour l’anecdote et pour se figurer l’écart de performance avec un


ordinateur de bureau, nous inscrivons ici des résultats de benchmarks : un pro-
cesseur de PC portable contemporain Intel Core i5-8250u obtient un score de
123666 6 , tandis que le nRF52832 obtient un score de 215. La dernière généra-
tion de microcontrôleurs 8-bits AVR atmega famille dont le célèbre atmega328p
alimentant les cartes arduino fait partie, obtient un score de 20 (atmega4809).
Ces faibles ressources peuvent à première vue sembler très contraignantes si
on les compare à ce dont on a besoin lorsque l’on programme sur un PC. Ce n’est
en fait pas le cas : Les besoins en mémoire ainsi qu’en vitesse d’exécution sont
bien plus faibles que sur un ordinateur de bureau qui doit aussi faire tourner un
système d’exploitation complexe, des applications utilisateurs, des images haute
résolution, etc. Sur un microcontrôleur, on est en fait rarement à court de mé-
moire et paradoxalement, un microcontrôleur (ré)agit plus vite qu’un ordinateur
de bureau. En effet, un PC exécute un système d’exploitation complexe qui gère
un grand nombre de processus en parallèle. Les évènements, d’entrées sorties par
exemple, doivent traverser un grand nombre de couches d’interfaces physiques
et logicielles comme des mémoires tampons et bus de données avant d’être fina-
lement pris en compte. Les délais cumulés génèrent une latence de l’ordre le la
milliseconde. À l’inverse, un microcontrôleur se consacre uniquement à une seule
application, il n’utilise habituellement pas un système d’exploitation généraliste,
et les évènements d’entrées/sorties sont traités directement par un mécanisme
d’interruption, ce qui confère au microcontrôleur une réactivité de l’ordre de la
microseconde. Les microcontrôleurs sont ainsi des systèmes temps réel.

1.4 Horloge et mesure du temps


Au fil de cette thèse, nous allons nous intéresser au temps ainsi qu’à sa me-
sure avec des microcontrôleurs. Dans cette section, nous allons introduire les

6. Benchmark eembc Coremark, le score prend en compte la pipeline des opérations, les accès
mémoire (avec cache), ainsi que les opérations sur les entiers.

16
1 Introduction – 1.4 Horloge et mesure du temps

mécanismes permettant au microcontrôleur d’effectuer de telles mesures. Nous


verrons qu’un microcontrôleur fonctionne grâce à un signal d’horloge fournissant
des fronts sur lesquels se synchronisent toutes les actions. Nous verrons aussi que
le microcontrôleur utilise des périphériques compteurs pour mesurer les délais
entre deux évènements. Finalement, nous nous intéresserons à la précision des
délais mesurés et à la cohérence de mesures prises par deux microcontrôleurs
différents, cadencés à des vitesses légèrement différentes.

1.4.1 Signal et fronts d’horloge


Un microcontrôleur est un système majoritairement synchrone 7 . Pour effec-
tuer chaque action, il a besoin qu’on lui donne un top départ. Ce top sert à
ordonner les actions afin d’éviter les accès concurrents. En effet, en l’absence
d’évènement pour synchroniser les différentes composantes, chaque partie du
microcontrôleur s’exécute à sa propre vitesse, créant inévitablement des incon-
sistances. Par exemple, la partie processeur du microcontrôleur pourrait lire la
sortie provenant de la partie mémoire avant que la réponse de cette dernière ne
soit disponible sur le bus.
Ces tops sont donnés par une horloge, un circuit électronique interne au mi-
crocontrôleur qui fournit un signal périodique régulier. Ce signal d’horloge est
généralement un signal carré obtenu en discrétisant un signal sinusoïdal prove-
nant d’un oscillateur à quartz (généralement externe au microcontrôleur), ou
encore provenant d’un oscillateur RC, dans lequel un condensateur se charge et
se décharge périodiquement (généralement interne au microcontrôleur). Citons
aussi les oscillateur MEMS, Micro-Electro-Mechanical System, qui consistent en
une structure électro-mécanique complexe gravée dans le silicium et qui peuvent
atteindre de meilleures caractéristiques au détriment d’une consommation élec-
trique plus élevée (E PSON -D EVICE 2014).
Pour obtenir son top d’horloge, le microcontrôleur regarde les fronts montants
et descendants du signal carré généré. La transition du signal d’horloge d’un
niveau logique bas vers le niveau logique haut déclenche la prochaine action du
microcontrôleur.

1.4.2 Le temps : une succession d’états


Par définition, le temps désigne une évolution, une succession de changements,
une suite d’évènements, une progression de l’état de l’environnement.
Percevoir le temps, c’est se rendre compte de cette progression. Lorsque le mi-
crocontrôleur agit en réponse à un top d’horloge, il perçoit la progression d’une
caractéristique de l’environnement. Ici son compteur ordinal s’est incrémenté
pour pointer vers la prochaine instruction à exécuter.

7. Des µC asynchrones existent aussi mais sont très peu présent par rapport aux µC synchrones.

17
1 Introduction – 1.4 Horloge et mesure du temps

Mesurer une durée est une opération relative, c’est comparer l’évolution d’une
première caractéristique de l’environnement par rapport à l’évolution d’une deuxième
servant de référence. Pour un microcontrôleur, cette référence est son état in-
terne qui est mis à jour à chaque top d’horloge.
Ainsi, la plus petite durée mesurable par le microcontrôleur est celle entre deux
tops, deux fronts du signal d’horloge. On appellera cette unité le cycle d’horloge.
Pour convertir une mesure relative, exprimée en nombre de cycles d’horloge, en
une mesure absolue en secondes, il est possible d’utiliser la valeur nominale de
la fréquence de l’oscillateur donnée par le fabricant.

1.4.3 Périphérique compteur


Afin d’éviter d’avoir à compter les cycles machine pour mesurer une durée,
la plupart des microcontrôleurs disposent de périphériques compteurs dédiés à
cette tâche. Ces compteurs peuvent être activés ou arrêtés à volonté par le sys-
tème. Dès lors qu’il est déclenché, le compteur s’incrémente automatiquement
sur chaque nouveau front du signal d’horloge. Ainsi, pour mesurer la durée entre
deux évènements, il suffit d’activer le compteur sur le premier évènement et de
le stopper sur le second. Le programme pourra alors lire ultérieurement la valeur
comptée, valeur accessible via un registre mémoire.

1.4.4 Perception des évènements


Un microcontrôleur dispose de pattes d’entrée-sortie permettant de percevoir
ainsi l’environnement qui l’entoure au travers de capteurs, ainsi que d’interagir
avec des actionneurs. Par exemple, il peut percevoir qu’il fait nuit en recevant
le signal d’un capteur de luminosité et décider d’allumer la lumière en action-
nant un relais électrique. Le microcontrôleur perçoit systématiquement les évè-
nements sur front d’horloge. Ainsi, tout évènement ayant lieu entre deux fronts
ou "top" d’horloge, comme le changement du niveau logique d’une entrée, ne
sera alors pris en compte par le microcontrôleur qu’à partir du prochain top
d’horloge.

18
1 Introduction – 1.4 Horloge et mesure du temps

Figure 1.2 – Latence entre le moment où un évènement se produit et sa perception


par le microcontrôleur.

Par conséquent, si deux évènements ont lieu entre deux même tops d’horloge,
par exemple deux entrées commutant l’une après l’autre du niveau logique bas
vers le niveau logique haut, alors le microcontrôleur ne peut pas déterminer
lequel de ces évènements a lieu en premier. Il est ainsi impossible de mesurer
avec précision une durée entre deux évènements si cette durée est inférieure
au cycle d’horloge, voir figure 1.2. Nous proposerons plus tard une technique
pour mesurer de telles courtes durées pour des évènements répétables. Cette
technique exploite l’écart entre la fréquence nominale et la fréquence effective
de deux microcontrôleurs.

19
1 Introduction – 1.4 Horloge et mesure du temps

1.4.5 Dérive de la fréquence

Figure 1.3 – Oscillation sinusoïdale du quartz transformée en signal carré.

Le signal d’horloge est dérivé d’un signal analogique produit par un oscilla-
teur, voir figure 1.3. Les deux types d’oscillateurs majoritairement utilisés sont
les oscillateurs RC (resistance/condensateur) qui fonctionnent en chargeant et
déchargeant périodiquement un condensateur au travers d’une résistance, et les
oscillateurs à quartz, plus précis, exploitant les propriétés piezoélectriques d’un
diapason de quartz pour générer un signal sinusoïdal.
Si les oscillateurs sont calibrés en ciblant une fréquence d’oscillation nominale,
par exemple 16Mhz, les imprécisions lors de la fabrication conduisent à des fré-
quences effectives différentes d’un oscillateur à l’autre. De plus, en fonction du
type d’oscillateur utilisé, la fréquence effective de l’oscillateur varie au cours du
temps suivant différents facteurs comme le vieillissement, la tension d’alimenta-
tion, la température, ainsi que les condensateurs de charge 8 .
Les oscillateurs RC sont simples, peu chers et consomment peu d’énergie. De
tels oscillateurs sont souvent directement intégrés dans la puce du microcon-
trôleur et servent d’horloge par défaut. La faiblesse de ces oscillateurs est leur
manque de précision et de stabilité. En effet, non seulement la fréquence peut

8. Condensateurs requis par le circuit oscillateur, voir application note SWRA495H (James
Murdock 2015) Texas Instruments

20
1 Introduction – 1.4 Horloge et mesure du temps

fortement varier d’un oscillateur à l’autre (5%), mais elle est aussi grandement
influencée par la température : poser un doigt sur la puce modifie significative-
ment la fréquence d’oscillation. Impossible par exemple d’utiliser cet oscillateur
pour réaliser une montre, l’avance ou le retard à la fin de la journée se comp-
terait en minutes. Pour donner un chiffre concret, la documentation technique
du nRF52832 indique que la fréquence de l’oscillateur interne @64MHz a une
déviation typique inférieure à ±1.5% et que celle-ci peut aller jusqu’à ±6%.
Les applications de précision ont usuellement recourts aux oscillateurs à quartz.
Les propriétés du quartz permettent des fréquences effectives très proches de la
fréquence nominale. L’écart de fréquence ne s’exprime plus en pourcent, mais
en ppm pour (parties par million). La fréquence varie très peu d’un oscillateur
à l’autre. Dans l’exemple du nRF52832, la tolérance maximale requise par les
applications Bluetooth est de ±40ppm. Des oscillateurs ayant une tolérance infé-
rieure de ±20ppm sont d’usage courant. Aussi, tout comme pour les oscillateurs
RC, la fréquence des oscillateurs à quartz varie en fonction de la température
et cette variation peut être de plusieurs ppm. Pour mieux illustrer cela, voici les
courbes caractéristiques typiques d’oscillateurs à quartz extraits de l’application
note SWRA495H de Texas Instruments (JAMES M URDOCK 2015). Voir figures 1.4
et 1.5.

Figure 1.4 – Variation de la fréquence d’un oscillateur 32,768kHz en fonction de


la température. Extrait de l’application note SWRA495H (James
Murdock 2015), Texas Instruments.

21
1 Introduction – 1.5 Consommation énergétique

Figure 1.5 – Variation de la fréquence d’un oscillateur 24MHz en fonction de la


température et de différentes valeurs des condensateurs de charge.
Extrait de l’application note SWRA495H (James Murdock 2015),
Texas Instruments.

1.5 Consommation énergétique


Une problématique essentielle lorsque l’on conçoit un système embarqué muni
d’un microcontrôleur est celle de la consommation énergétique. En effet, en fonc-
tion de l’utilisation, accéder au réseau électrique n’est pas toujours possible ni
voulu, et installer des câbles peut s’avérer contraignant et coûteux. Ainsi de nom-
breux systèmes embarqués sont "autonomes" et disposent de leur propre source
d’énergie. Cette source d’énergie prend des formes différentes suivant l’appli-
cation. Il peut s’agir d’une source tarissable comme une pile au lithium, d’une
source renouvelable récoltant l’énergie présente dans l’environnement comme
l’énergie solaire, les vibrations et les différences de température, ou finalement
une solution hybride entre les deux capable de stocker l’énergie pour la réutiliser
plus tard.
Dans le contexte des réseaux de capteurs où le prix et l’espace consacré à
chaque noeud est limité, les ressources énergétiques à notre disposition sont très
faibles, il est donc vital de les économiser au maximum. C’est pourquoi il nous
faut détailler la quantité d’énergie disponible, et décrire les principaux postes
de consommation de nos systèmes ainsi que les méthodes à notre disposition
pour réduire leurs dépenses. Après avoir donné quelques valeurs de référence
concernant l’énergie disponible, nous verrons que la consommation énergétique
d’un microcontrôleur est généralement modulaire, fonction des périphériques
et des modes d’exécution activés. Nous considèrerons ici le Nordic nRF52832.
Enfin, nous verrons le fonctionnement général des modes basse consommation
qui, pour économiser l’énergie, limitent les opérations au minimum nécessaire.

22
1 Introduction – 1.5 Consommation énergétique

1.5.1 Sources d’énergie


Étant donnée une plage de tension de fonctionnement fixée autour de 3V, les
deux caractéristiques principales d’une source d’énergie électrique sont sa capa-
cité, c.-à-d., la quantité d’énergie à disposition exprimée en Ah, et son courant
maximal exprimé en Ampères, c.-à-d., le taux auquel cette capacité peut-être
débitée.
Pour se donner un ordre d’idées, voir la table 1.2 qui donne liste d’exemples
contenant les caractéristiques de diverses sources d’énergies exploitables par des
noeuds de réseaux de capteurs.

Source d’énergie Courant max délivré Énergie Stockée


2 batteries alkalines AA >1A >2000mAh
Pile boutton CR2032 <10mA >200mAh
Panneau photovoltaïque AM1816 <100uA -
10x6cm 200Lux Fluorescent
Panneau photovoltaïque 4x2cm, <30mA -
Soleil

Table 1.2 – Caractéristiques de différentes sources d’énergie (@3V)

1.5.2 Consommation des périphériques


La technologie des semi-conducteurs CMOS constituant les microcontrôleurs
actuels permet d’éviter de consommer lorsque aucune action n’est effectuée.
À l’inverse, chaque action consomme de l’énergie (charge et décharge de la
grille des transistors à effet de champ, états transitoires des montages en mât-
totémiques 9 lors de la commutation des portes logiques). Cette consommation
est répartie entre : le processeur qui exécute le programme ; la mémoire ; l’hor-
loge et les périphériques ; et est modulaire en fonction des options et périphé-
riques activés.
Les plus gros postes de consommation énergétique sont le processeur et les
communications radio. Voir la table 1.3, table récapitulative des consommations
de chaque mode et périphériques.

1.5.3 Mode de fonctionnement "basse énergie"


Le mode basse énergie du nRF52832 maintient éteint la quasi totalité des
périphériques, y compris l’oscillateur fournissant le signal d’horloge, le CPU et
la mémoire. Notons que des modes analogues existent dans la vaste majorité
des familles de microcontrôleurs orientés basse consommation : Nous pouvons
9. Totem-pole/push-pull

23
1 Introduction – 1.6 Transition

Périphérique/Mode Courants consommé Unité


Système actif, CPU actif 3.7 mA
Compteur actif +70 µA
Module Radio actif +5.5 (en pic) mA
Rétention de la mémoire +400 nA
Système inactif, réveil par horloge RTC 1.9 µA
Système éteint, réveil sur reset 300 nA

Table 1.3 – Courants consommés par les principaux périphériques et modes de


fonctionnement. Les courants préfixés d’un symbole "+" sont à addi-
tionner à la consommation de base d’un mode.

citer les famille STM8L/STM32L de chez ST ; les familles megaAVR, tinyAVR et


XMEGA de Microchip ; et nRF52 chez Nordic.
Lorsque les périphériques du nRF52832 sont éteints car placés en mode basse
énergie, seul un mécanisme de réveil périodique reste actif : le compteur RTC. Le
compteur RTC, Real Time Clock, compte le nombre d’oscillations d’un oscillateur
lent à quartz 32,768kHz. Il sert à garder l’heure ainsi que de temporisateur pour
rallumer automatiquement le système au bout d’une période définie. Ce périphé-
rique RTC consomme en continu très peu d’énergie, un courant de 1.9µA dans le
cas du processeur nRF52832. En choisissant la période entre deux réveils ainsi
qu’en limitant les durées pendant lesquelles le processeur est actif, il est possible
d’atteindre asymptotiquement une consommation de 1.9µA. À noter aussi que
le réveil du système n’est pas instantané, et qu’il peut s’écouler plus de 360 mi-
crosecondes avant que l’oscillateur principal haute fréquence du nRF52832 soit
stable.

1.6 Transition
Nous avons vu dans cette partie introductive les notions de bases concernant la
gestion du temps ainsi que de l’énergie avec les microcontrôleurs. Nous verrons
dans les sections suivantes que cette gestion et mesure du temps joue un grand
rôle dans les communications entre microcontrôleurs et donc dans l’architecture
même des réseaux. Nous reviendrons ensuite sur l’aspect énergétique lorsque
nous aborderons le thème des réseaux sans-fils.

24
2 Synchronisation filaire
Dans un réseau de microcontrôleurs, les nœuds fonctionnent naturellement à
des vitesses différentes, de légères différences lors de la fabrication ou encore
de petites variations des conditions environnementales d’un nœud à l’autre suf-
fisent à modifier significativement la fréquence des horloges. Ainsi, à l’instar de
montres à quartz, même si les horloges des nœuds sont mises à la même heure
au même moment, les horodatages donnés par les nœuds du réseau divergeront
avec le temps.
Cette asynchronie intrinsèque pose problème lorsque les nœuds doivent com-
muniquer : sans compenser ces différences entre les horloges et sans référence
externe, il n’est pas possible de fixer un rendez-vous à l’avance pour échanger
des paquets d’informations. L’incapacité de prédire avec précision la date d’une
future réception oblige les noeuds a rester en permanence à l’écoute. De plus,
tout calcul initié par un nœud est susceptible d’être interrompu au profit du trai-
tement d’un paquet entrant, ce qui constitue une perte de performances. Lors-
qu’un processus prioritaire s’exécute, l’interruption n’est pas toujours possible et
le paquet peut être perdu. Les différences de cadences des noeuds dans un ré-
seau asynchrone requièrent l’utilisation de mémoires tampons lorsque les noeuds
échangent en suivant une relation producteur/consommateur, et ce, afin d’éviter
la perte de données lorsque la production est plus rapide que la consommation.
Finalement, les différences de vitesses dans le réseau rendent les horodatages in-
consistants, autant localement entre nœuds voisins que globalement. Sans base
de temps commune et fiable, l’agglomération dans le temps des mesures de cap-
teurs devient imprécise voire impossible.
La synchronisation permet de s’affranchir de ces difficultés induites par la
nature asynchrone des réseaux de microcontrôleurs. S’en abstraire et considé-
rer le réseau comme étant synchrone rend de nombreux problèmes plus faciles
à résoudre d’un point de vue algorithmique que leur pendant asynchrone. En
effet, un modèle synchrone peut être vu comme un cas particulier de modèle
asynchrone, ainsi l’état de l’art des réseaux de capteurs dispose d’un plus grand
nombre de solutions requierant un paradigme synchrone.
Dans ce chapitre nous allons étudier la synchronisation de réseaux maillés de
microcontrôleurs synchronisés à l’aide de notre algorithme de synchronisation
baptisé Goose Sync. Nous verrons que malgré son fonctionnement en apparence
minimaliste, consistant à suivre simplement le rythme du noeud le plus rapide
dans le réseau, l’algorithme Goose Sync induit un comportement macroscopique
bénéfique faisant barrière à toute désynchronisation. En effet, nous verrons que

25
2 Synchronisation filaire – 2.1 Abstraction synchrone

Goose Sync dispose d’un mécanisme implicite capable de se souvenir des désyn-
chronisations précédentes et de prévenir les désynchronisations futures, en mo-
difiant la vitesse apparente de propagation de paquets de synchronisation.
Nous utiliserons par la suite cet algorithme comme le coeur d’une couche d’abs-
traction qui nous permettra de considérer le réseau sous-jacent comme étant syn-
chrone et sur lequel nous pourrons exécuter des algorithmes synchrones au tour
par tour, sur toute taille de réseaux maillés filaires de microcontrôleurs. Nous
commencerons d’abord par détailler cette couche d’abstraction qui s’inspire du
cadre des automates cellulaires synchrones. Ensuite nous introduirons un mo-
dèle pour les horloges et les délais pour préparer l’étude de la synchronisation.
Enfin, nous entrerons dans le vif du sujet en étudiant notre algorithme de syn-
chronisation, Goose sync, cœur de notre couche d’abstraction. Nous verrons ses
garanties probabilistes théoriques en matière de scalabilité, et comment celles-ci
se traduisent en pratique, en virtuel sur simulateur et en réel dans un réseau
physique. Le chapitre suivant sera consacré à l’adaptation de cette couche d’abs-
traction synchrone aux réseaux sans fils.

2.1 Abstraction synchrone


La nature asynchrone des réseaux de microcontrôleurs rend leur réalisation
pratique complexe. Pour assurer une circulation efficace et sans pertes des pa-
quets de données, il est nécessaire de gérer les interruptions causées par les
paquets entrants qui peuvent surgir à tout moment, de choisir les tailles de tam-
pons de réception pour faire face aux congestions, et pour dater de manière
cohérente les évènements, compenser les écarts entre les différents noeuds qui
indiquent chacun une heure différente.
Dans cette section, nous introduisons une couche d’abstraction qui, en s’ap-
puyant sur une procédure de synchronisation que nous étudierons dans la sec-
tion suivante, s’affranchit de ces considérations : la programmation cellulaire syn-
chrone.

2.1.1 Principe général et avantages


La programmation cellulaire synchrone (N IEBERT et C ARALP 2014) permet de
spécifier le comportement des nœuds du réseau de la même manière que l’on
spécifie l’évolution d’une cellule dans un automate cellulaire à mise à jour paral-
lèle comme le jeu de la vie. Chaque nœud dispose d’un état interne, constitué des
données stockées en mémoire. Cet état évolue tour après tour et est fonction de
l’état au tour précédent ainsi que des états précédents des noeuds voisins dans
le réseau.
Le principal avantage d’une telle abstraction est de rendre les exécutions déter-
ministes : deux exécutions dans les mêmes conditions initiales auront la même

26
2 Synchronisation filaire – 2.1 Abstraction synchrone

trace et le même résultat. Sans cette abstraction, les différences entre les hor-
loges des nœuds du réseau font que les échanges d’informations s’enchaînent
dans des ordres différents en fonction de l’environnement, principalement en
fonction de la température et des défauts d’usine des microcontrôleurs. Ce mo-
dèle simplifie ainsi la conception d’algorithmes : pour concevoir un algorithme
sous la forme d’un automate cellulaire synchrone, il suffit de construire la fonc-
tion de transition commune à tous les nœuds du réseau, sans tenir compte des
dates exactes et de l’ordre de réception des paquets. On considère que tous les
échanges au tour précédent ont été effectués en même temps, en parallèle.
Abstraire un réseau asynchrone et le considérer comme un automate cellulaire
synchrone nous permet de tirer profit de la vaste collection d’algorithmes dispo-
nible dans l’état de l’art des automates cellulaires synchrones. D’un point de vue
orienté applicatif, ce paradigme facilite les tests et le débogage : le réseau fonc-
tionnant au tour par tour, ce dernier peut être simulé sur ordinateur sans devoir
prendre en compte les interactions complexes des noeuds avec l’environnement,
interactions qui modifient significativement les cadences des noeuds.

2.1.2 Fonctionnement de la couche


Considérons un réseau de microcontrôleurs composé de n noeuds. Chaque
noeud dispose d’une mémoire, une suite de m bits que nous appellerons son état
état. Chaque noeud u est connecté à un nombre du de noeuds voisins.
Un noeud u peut connaître l’état de chacun de ces voisins par échanges de
paquets. Nous noterons Su l’ensemble des états des noeuds voisins. En outre,
les émissions et réceptions se font ici en parallèle : d’une part la liaison filaire
offre un canal exclusif permettant à chaque noeud de communiquer indépendam-
ment avec chacun de ses voisins sans gêner les autres, d’autre part les noeuds
disposent de mémoires tampons indépendantes pour chaque liaison, ils peuvent
ainsi émettre et recevoir en même temps sur plusieurs liaisons sans générer de
conflits ou d’interruptions.
Chaque noeud dispose dans sa mémoire programme d’une fonction de transi-
tion f qui étant donné l’état courant du noeud s ainsi que l’état courant de ses voi-
sins Su retourne un nouvel état f (s, Su ). Cette fonction f est appelée périodique-
ment et en parallèle sur chacun des n noeuds du réseau en suivant une logique
au tour par tour : Notons si l’état d’un noeud au tour i et Su,i l’état de ses voisins
au tour i. Nous définissons par récurrence l’état d’un noeud : si+1 = f (si , Su,i ).
Pour appeler périodiquement f , la couche d’abstraction se repose entièrement
sur une primitive de synchronisation gsync , fonction bloquante résidant dans la
mémoire programme qui indique la cadence en rendant la main au début de
chaque nouveau tour. Cette primitive de synchronisation gsync maintient une syn-
chronisation locale : Si u et v sont deux nœuds voisins, alors gsync rendra la main
quasiment en même temps, à quelques microsecondes près en pratique. Ce n’est
plus le cas si on considère deux nœuds éloignés dans le réseau, voir figure 2.1.

27
2 Synchronisation filaire – 2.1 Abstraction synchrone

Figure 2.1 – Diagrammes de temps schématique illustrant la synchronisation


locale obtenue grâce à la primitive gsync sur une chaîne de noeuds.

La couche utilise cet évènement de reprise de l’exécution où gsync rend la main


comme point de rendez-vous synchrone pour communiquer avec les noeuds voi-
sins et échanger leurs états. Dès la reprise, les nœuds se mettent en réception,
marquent un court temps de pause, quelques microsecondes, pour compenser le
faible écart local entre les débuts des tours des voisins, puis, chaque noeud en-
voie son état aux autres. Il est important de noter que grâce à la primitive gsync
et au temps de pause dans une moindre mesure, tous les noeuds sont prêts à
recevoir avant le début des émissions. Voir figure 2.2.

Figure 2.2 – Diagramme de temps schématique illustrant les communications


entre deux noeuds voisins.

Après l’acquisition des états des voisins Si pour le tour courant i, la couche

28
2 Synchronisation filaire – 2.2 Synchronisation : état de l’art

appelle la fonction de transition f qui calcule le nouvel état si+1 , puis la primitive
de synchronisation bloque l’exécution jusqu’au prochain tour. La durée d’un tour
ou période est un paramètre de la primitive de synchronisation gsync .
Tandis que la durée d’un tour est garantie par gsync , la fonction de transition f ,
dont la durée d’exécution n’est ici pas négligeable, doit se terminer dans la limite
du temps imparti dicté par la période. Dans le cas contraire, le début du prochain
tour serait manqué et cela briserait la logique d’automate cellulaire synchrone.

2.1.3 Implémentation
D’un point de vu pratique, la couche d’abstraction que nous proposons uti-
lise très peu de ressources, autant en termes de processeur que de mémoire, ce
qui permet de l’utiliser sur les microcontrôleurs les plus modestes et les moins
onéreux.
Son implémentation, très similaire à celle d’un automate cellulaire synchrone,
est résumée ci-dessous sous la forme d’un pseudo-code, code exécuté sur l’en-
semble des noeuds du réseau :

var period;
var state; //Local state
var nStates[nbNeighbors]; //Array of neighbors states

while(true)
{
gsync(period); //Blocking, Synchronous wait.

startReception(nStates);
shortPause(); //Compensate small delays (µseconds).
startEmission(state);

waitEndOfReception();
state = f(state,nStates);
}

Cette section préliminaire terminée, nous étudierons dans les sections suivante
la primitive de synchronisation gsync . Pour cela, nous allons introduire en premier
lieu le cadre que nous utiliserons pour cette étude, la manière dont nous modé-
liserons les horloges et leur évolution dans le temps.

2.2 Synchronisation : état de l’art


La synchronisation d’horloge fait partie des problèmes distribués fondamen-
taux associés aux réseaux. C’est un problème ancien, longuement étudié depuis

29
2 Synchronisation filaire – 2.2 Synchronisation : état de l’art

les années 70 (L AMPORT 2019) et pour lequel il existe un grand nombre de para-
digmes (N. A. LYNCH 1996 ; R ANGANATHAN et N YGARD 2010 ; S WAIN et H ANSDAH
2015).
Dans ce chapitre, nous nous intéressons à la synchronisation à gradient d’hor-
loge (FAN et N. LYNCH 2006). Ce type de synchronisation consiste à maintenir
le gradient d’horloge, c’est-à-dire l’écart local entre les dates indiquées par des
noeuds voisins, en dessous d’un certain seuil. La synchronisation à gradient s’op-
pose à la synchronisation globale pour laquelle il s’agit de limiter l’écart entre
les dates indiquées par tout couple de noeuds dans le réseau. Le protocole NTP,
Network Time Protocol, (M ILLS 1991) constitue un exemple de synchronisation
globale : il permet à tout ordinateur connecté au réseau internet de synchroniser
son horloge sur une référence centralisée.
Pour que cela soit utile à l’horodatage d’évènements ainsi qu’à la planification
d’actions, les paradigmes de synchronisation introduisent des règles raisonnables
de bon sens. En effet, les horloges doivent indiquer des valeurs cohérentes : les
dates indiquées par les horloges des noeuds doivent suivre linéairement le temps
réel, ne pas revenir en arrière et ne pas s’arrêter ; en effet, sans cette dernière
règle, indiquer toujours la même date "0" résoudraient trivialement le problème.
Sous un tel modèle raisonnable, Fann et Lynch (FAN et N. LYNCH 2006) ont
démontré qu’il n’est pas possible d’assurer un gradient d’horloge constant, même
localement entre noeuds voisins. Le pire écart d’horloge susceptible d’occurer
dans un réseau dépend du diamètre du graphe. Ils donnent une borne inférieure
indiquant qu’il n’est pas possible de garantir mieux qu’un écart logarithmique en
fonction du diamètre.
Depuis 2006, plusieurs algorithmes se sont succédés pour resserrer la borne
supérieure. Pulse Sync (L ENZEN, S OMMER et WATTENHOFER 2009), que nous étu-
dierons plus en détail dans la section 2.3.4 car il constitue un exemple intéres-
sant, maintient √ un gradient d’horloge le long d’un arbre couvrant. Il garantit un
pire écart en O( D), avec D le diamètre du graphe. AlgoLog (L ENZEN, L OCHER et
WATTENHOFER 2008) atteint la borne inférieure en garantissant un écart logarith-
mique mais en permettant cependant aux horloges de sauter pour se resynchro-
niser, c’est-à-dire qu’il peut y avoir des discontinuités dans les dates indiquées
par les noeuds. AlgoOpt (L ENZEN, L OCHER et WATTENHOFER 2010) referme l’in-
tervalle et constitue une solution optimale sans saut d’horloges : l’algorithme
resynchronise en ajustant les vitesses des horloges, et non pas en changeant bru-
talement la valeur de l’horloge.
Les algorithmes que nous avons cités jusqu’ici abordent le problème principa-
lement de manière déterministe : leurs garanties sont données pour le pire cas,
même si ce pire cas n’arrive pas souvent. Il est possible d’aborder le problème
sous un angle plus stochastique, et de s’intéresser aux chances qu’une avarie de
synchronisation survienne. C’est sous cet angle que nous allons travailler dans la
suite du chapitre. Nous allons en effet proposer une méthode simple pour syn-
chroniser des réseaux maillés. Cette méthode à le gros inconvénient de permettre

30
2 Synchronisation filaire – 2.3 Modèle d’horloges et de délais

un gradient d’horloge linéaire fonction du diamètre. Nous verrons en revanche


que ses bonnes propriétés statistiques garantissent empiriquement un écart quasi
constant indépendamment du diamètre.

2.3 Modèle d’horloges et de délais


Nous avons présenté dans la section précédente une couche d’abstraction per-
mettant de considérer un réseau de microcontrôleurs asynchrone comme un au-
tomate cellulaire synchrone. Une telle abstraction requiert une primitive de syn-
chronisation fiable, primitive que nous détaillerons et étudierons dans les sec-
tions suivantes. Dans cette section, nous présentons le modèle utilisé pour cette
étude.
Ce modèle prend en compte la progression des écarts d’horloge dans le temps
ainsi que la gigue aléatoire de transmission, c’est à dire la légère variation du délai
entre l’émission et la réception de chaque paquet de données. Nous illustrerons
par des exemples l’importance de ces deux paramètres et leurs influences sur le
passage à l’échelle de réseaux dans des configurations classiques.

2.3.1 Fréquence nominale et fréquence effective


On considère que tous les nœuds du réseau ont la même fréquence nominale f ,
cependant, chaque nœud v dispose à un instant donné t d’une fréquence effective
fv (t) légèrement différente de f . Celle-ci nous permet de modéliser les écarts de
vitesses imputés d’une part aux défauts d’usine (biais statique), et d’autre part
à l’environnement (biais dynamique induit principalement par les changements
de température).
Sauf contre-indication, nous considérerons par défaut que les fréquences effec-
tives fv sont fixes dans le temps, issues d’un tirage aléatoire suivant une distribu-
tion de probabilité uniforme dans un intervalle centré sur f .

2.3.2 Gigue aléatoire


Lorsque deux nœuds u et v communiquent, il y a une latence entre l’émission
d’un paquet et sa réception qui varie d’un envoi à l’autre. Cette latence est une
combinaison du délai de propagation de l’information dans le circuit (fonction
de la longueur des pistes) ainsi que des délais introduits par les périphériques
effectuant la transmission. Ces délais sont susceptibles de varier en fonction de
l’environnement (température) ainsi que de l’état interne des périphériques au
moment de la transmission.
Nous noterons d le délai nominal d’une transmission. Pour simplifier l’étude,
nous négligerons l’impact de la fréquence effective et nous supposerons le même
délai nominal pour tous les nœuds du réseau. Comme le délai effectif d’une

31
2 Synchronisation filaire – 2.3 Modèle d’horloges et de délais

transmission varie d’un envoi de paquet à l’autre, nous noterons d(u,v) (r) le délai
effectif lors de la transmission d’un paquet de u vers v au tour r, avec r pour
round. Nous noterons aussi j(u,v) (r) la gigue aléatoire (j pour jitter), c’est-à-dire
l’écart entre le délai effectif et le délai nominal : d(u,v) (r) = d + j(u,v) (r).
Sauf contre-indication, nous considérerons que les gigues sur les délais de
transmissions sont tirées aléatoirement suivant une distribution de probabilité
uniforme dans un intervalle centré sur 0.
Nous noterons Aj l’amplitude de la gigue, c’est-à-dire j(u,v) (t) ∈ [−Aj , Aj ].

2.3.3 Exemple : effets cumulatifs de la gigue


Soit une chaîne constituée d’un grand nombre n de nœuds. Chaque maillon vi
de la chaîne est capable de communiquer avec son voisin de gauche vi−1 ainsi
qu’avec son voisin de droite vi+1 .
Considérons qu’un paquet se propage de la gauche vers la droite dans la
chaîne : le paquet de données est créé par le noeud à l’extrémité gauche de
la chaîne puis est transféré de proche en proche aux voisins de droite. La vitesse
de propagation de ce paquet d’un bout à l’autre de la chaîne dépend du délai
nominal d, mais aussi et surtout de la somme cumulée des gigues aléatoires
j(u,v) sur le chemin. La vitesse moyenne du paquet est alors le résultat d’une
marche aléatoire à n itérations, ou autrement dit le résultat d’une somme de n
variables aléatoires indépendantes de loi uniforme continue. La loi de probabilité
correspondante, pour des variables aléatoires sur l’intervalle [0, 1] s’appelle la loi
d’Irwin-Hall (H ALL 1927). Elle a pour espérance n2 et a pour variance 12 n
.
Considérons que l’extrémité gauche émet peu de temps après un deuxième
paquet. Avec probabilité 12 , le deuxième paquet ira plus vite que le premier. Dans
l’éventualité où le délai entre les deux émissions serait trop court par rapport
à la taille du réseau, le deuxième paquet pourrait rattraper le premier paquet,
provoquant ainsi des congestions dans le réseau.
Une telle topologie en forme de chaîne constitue un pire cas. En effet, le dia-
mètre du graphe, maximal sur une chaîne, est le paramètre le plus important ,
car les effets négatifs de la gigue se cumulent avec la distance.

2.3.4 Exemple : synchronisation par impulsions Pulse Sync


Le phénomène d’accumulation de la gigue sur une grande distance rend impra-
ticable certains algorithmes simples de synchronisation lorsque l’on considère de
grands réseaux. Nous allons détailler ici l’exemple d’une synchronisation pério-
dique par impulsions, notre interprétation simplifiée de l’algorithme Pulse Sync
(L ENZEN, S OMMER et WATTENHOFER 2009).
Reprenons le cas précédent d’une grande chaîne de n nœuds. L’extrémité
gauche de la chaîne émet périodiquement, suivant une période nominale fixée p,

32
2 Synchronisation filaire – 2.4 Primitive : GooseSync

une impulsion de synchronisation 1 qui sera relayée et se propagera de la gauche


vers la droite de la chaîne. Cette impulsion donne un top d’horloge permettant
une synchronisation locale : deux nœuds voisins u et v reçoivent périodiquement
le top avec un faible décalage égal au délai de transmission d(u,v) .
Un tel algorithme de synchronisation ne passe pas à l’échelle : comme nous
l’avons vu précédemment, si le réseau est suffisamment grand, deux impulsions
successives peuvent se rapprocher et se rencontrer. Les noeuds éloignés de l’ex-
trémité gauche observeront une périodicité instable entre chaque top et certains
tops peuvent se perdre.
De telles compressions des délais par rapport à la période nominale p ont une
forte probabilité d’occurrence dans de grands réseaux. En effet, les durées de pro-
pagation de deux impulsions consécutives dans la chaîne sont le résultat de deux
marches aléatoires. Si la deuxième impulsion accumule une avance d’une durée
supérieure à la période p, alors celle-ci rattrape la première dans la chaîne. Or,
si pour une√marche aléatoire, l’espérance du déplacement est nulle 2 , son écart
type est√de n. Concrètement cela signifie qu’une compression est très probable
si p < n. Ainsi, la période p doit suivre √ la taille du réseau et rester systémati-
quement dans l’ordre de grandeur de n pour que l’algorithme reste praticable.
Ceci reste vrai même si on considère que la gigue suit une loi gaussienne et non
plus une loi uniforme.
Concluons cette section en ajoutant qu’en plus de ne pas être robuste à un
passage à l’échelle, un tel algorithme de synchronisation repose sur un nœud
racine qu’il faut élire ou spécifier. Si la connexion avec la racine est perdue, la
synchronisation échoue.

2.4 Primitive : GooseSync


Dans cette section nous allons introduire la primitive de synchronisation que
nous utilisons au sein de la couche d’abstraction. Leur association permet l’exé-
cution d’applications distribuées synchrones au tour par tour sur des réseaux
maillés de microcontrôleurs naturellement asynchrones. Avec une visée orientée
réalisation pratique, nous avons pensé cet algorithme de synchronisation, bap-
tisé Goose Sync, pour être à la fois simple et robuste, caractéristiques essentielles
lorsque l’on doit traiter en parallèle un grand nombre de systèmes embarqués.
Nous allons en premier lieu détailler le fonctionnement de goose sync. Nous
verrons que l’exécution à l’échelle d’applications distribuées synchrones est rendu
possible grâce aux garanties probabilistes de notre algorithme. En effet, nous
verrons dans un second temps que Goose Sync fournit périodiquement à chaque
nœud du réseau un top indiquant quand passer au prochain tour. Ces tops se
propagent très rapidement entre nœuds voisins de manière à ce que des nœuds

1. Paquet sans charge utile, seul l’évènement de réception importe


2. Pour un déplacement isotrope

33
2 Synchronisation filaire – 2.4 Primitive : GooseSync

voisins commencent leurs tours quasiment en même temps. Ce décalage minimal


entre voisins facilite la communication : localement, tous les noeuds sont prêts
au début du tour courant.
Nous verrons ensuite que ces tops sont espacés de manière régulière dans le
temps, ce qui garantit d’une part que les tours ont bien la durée minimale néces-
saire à l’exécution du tour courant, et d’autre part que les durées des tours sont
bornées. Enfin, nous verrons que l’algorithme passe à l’échelle et que toutes ses
garanties sont peu dépendantes de la taille du réseau : Goose sync utilisera tou-
jours la même quantité de mémoire par noeud et fournira un top avec la même
régularité que ce soit sur un réseau d’une centaine de nœuds ou un réseaux de
plusieurs millions de nœuds.

2.4.1 Choix du nom Goose Sync

Figure 2.3 – Goose Sync : Analogie avec le vol en formation en "V" des oies
sauvages.

Nous avons nommé l’algorithme "Goose Sync" par analogie avec les forma-
tions en "V" des vols d’oies sauvages. Dans de telles formations, les individus à la
pointe de chaque "V" semblent mener la formation. Les autres individus suivent
leurs voisins directs les plus avancés tout en maintenant une certaine distance,
créant ainsi un gradient continu sur l’ensemble de la formation. Si les meneurs
ne vont pas à la même vitesse, le relief de la formation change progressivement
sans rompre la continuité. Ainsi, deux voisins dans la formation restent toujours
proche dans l’espace et peuvent communiquer visuellement. Si un individu me-
neur fatigue, le relief s’adapte et l’individu le plus rapide localement en reprend
la tête.
Avec Goose Sync, les noeuds du réseau créent une formation en "V" semblable,
sauf qu’ici la distance ne s’exprime pas en mètres, mais en microsecondes :
chaque noeud suit son voisin le plus avancé tout en maintenant une certaine dis-
tance de quelques microsecondes. Le gradient continu permet à chaque couple

34
2 Synchronisation filaire – 2.4 Primitive: GooseSync

de voisins de rester suffisamment proche dans le temps pour communiquer de


manière synchrone.

2.4.2 Fonctionnement
L’algorithme que nous proposons se base sur la propagation rapide de paquets
de synchronisations. Le rôle de l’algorithme est de fournir un évènement pério-
dique, un signal top signifiant à l’application distribuée qu’elle peut passer au
tour suivant en toute sécurité et que les noeuds voisins sont eux aussi prêts à
communiquer.
L’algorithme dispose d’un compteur de tour r (r pour round) ainsi que d’un
compte à rebours décomptant périodiquement de p à 0. Le compte à rebours est
tout le temps actif et décompte à chaque cycle d’horloge du nœud. Lorsque le
compte à rebours soupasse, l’algorithme émet le signal top, le compteur de tour
est alors incrémenté, le compte à rebours est réarmé à la valeur p, et le nœud
émet un paquet de synchronisation contenant le numéro de tour r. Si le noeud
reçoit un paquet de synchronisation contenant un numéro de tour r1 supérieur à
celui du compteur local r, l’algorithme émet le signal top, le compte tour r prend
directement la valeur r1 , le compte à rebours est réarmé à p et le nœud émet un
paquet de synchronisation contenant le numéro de tour r fraîchement réaffecté.

2.4.2.1 Pseudo Code


var tmr; //Countdown timer
var r; //Round number
var p; //Period

setup()
{
tmr.reset(p);
r = 0;
}

interrupt_on_timer_underflow()
{
r++
tmr.reset(p);
send(r);
top_signal();
}

interrupt_on_reception(r1)
{

35
2 Synchronisation filaire – 2.5 Comportement et passage à l’échelle

if(r1 > r)
{
r = r1;
tmr.reset(p);
send(r);
top_signal();
}
}

2.5 Comportement et passage à l’échelle


2.5.1 Noeuds meneurs et suiveurs
Lorsque l’algorithme est exécuté sur un réseau, quelle que soit la topologie,
deux types de nœuds aux rôles complémentaires émergent implicitement en fonc-
tion de leur fréquence : Les nœuds meneurs et les nœuds suiveurs.
Les nœuds possédant les fréquences effectives les plus élevées localement de-
viennent meneurs : puisqu’ils vont plus vite, leurs compte à rebours terminent
systématiquement avant ceux des autres noeuds du voisinage. Ce sont alors ces
nœuds qui dictent localement la cadence et sont à l’initiative de la propagation
par vagues des paquets de synchronisations.
À l’inverse, les nœuds possédant une fréquence effective inférieure à celle des
meneurs deviennent suiveurs : Leurs comptes à rebours n’ont pas le temps de
finir, il sont périodiquement réinitialisés par la réception de paquets provenant
de nœuds meneurs plus ou moins distants dans le réseau.
Ces rôles de meneurs/suiveurs sont amenés à changer suivant l’état du réseau
et l’environnement. À noter que certains nœuds peuvent aussi osciller entre les
deux rôles à cause de la gigue sur les délais de transmissions.

2.5.2 Convergence vers un meneur unique


Nous avons vu précédemment que les noeuds meneurs initient des vagues de
propagations de paquets de synchronisation. Nous avons aussi vu que le compor-
tement d’un noeud meneur n’est pas influencé par les paquets entrants. Le noeud
meneur les rejette car les numéros de tour que contiennent les paquets sont infé-
rieurs. De ce fait, nous pouvons analyser le comportement de deux nœuds u et v
ayant tous deux le rôle de meneurs et éloignés l’un de l’autre dans le réseau sans
devoir considérer les autres noeuds du réseau. Les fréquences sont issues d’un
tirage aléatoire uniforme, ainsi u et v n’ont pas la même cadence (probabilité
nulle). Par conséquent, l’écart entre les tours de u et de v se creuse inélucta-
blement avec le temps. Supposons que v, véloce, a une fréquence effective plus
élevée que u, lorsque l’écart entre les tours de u et de v devient suffisamment

36
2 Synchronisation filaire – 2.5 Comportement et passage à l’échelle

important pour que le paquet de synchronisation envoyé par v au tour rv soit


reçu par u au tour ru avec ru < rv , alors u perd son rôle de meneur, il est mené
par v et il devient suiveur.
Ce même raisonnement s’applique à tout couple de meneurs. Par récurrence
sur tous les couples (u, v) de meneurs, en supposant que les fréquences effectives
sont fixes dans le temps, on déduit que goose sync converge vers un état com-
prenant un unique nœud meneur dictant la cadence pour tout le réseau. Il est
important de noter qu’en fonction de l’aléatoire sur les délais de transmission,
un nœud suiveur peut devenir temporairement meneur localement. Nous allons
voir que ce comportement spécifique assure la scalabilité de l’algorithme.

2.5.3 Mémoire implicite et propagation accélérée


Dans la section 2.3.4, nous avons décrit l’algorithme de synchronisation par im-
pulsions, algorithme simple au fonctionnement ressemblant au nôtre, mais qui
avait le défaut de ne pas passer à l’échelle. Nous avons vu en effet que pour une
période fixée, deux paquets de synchronisations consécutifs provenant du nœud
racine ont de grandes chances de se rattraper mutuellement, créant ainsi une
compression de la durée d’un tour, voire un saut de tour. Aussi, nous venons de
voir que goose sync converge fatalement vers une configuration avec un unique
nœud meneur global. Nous allons donc étudier ici comment goose sync pare le
phénomène d’accumulation de la gigue sur de longues distances. Nous verrons
que le fait qu’un suiveur puisse devenir temporairement meneur a un effet mé-
moire empêchant les fortes accumulations de la gigue de se répéter plusieurs fois
d’affilée, ce qui régule la vitesse de propagation des paquets. Cette régulation de
la vitesse de propagation limite le phénomène de compression de la périodicité
des tours.
L’algorithme goose sync force les paquets de synchronisation à se propager
plus vite que le délai nominal de transmission d dans le réseau. En effet, lorsqu’un
paquet de synchronisation q pour le tour rv + 1 ne parvient pas au noeud v avant
la fin du tour rv , alors le nœud v émettra un nouveau paquet de synchronisation
sans attendre la réception de q.
Cette logique a une mémoire implicite : si un nœud accepte pour le tour r un
paquet q qui, à cause des effets cumulatifs de la gigue, s’est propagé à une vitesse
c plus importante que la moyenne, alors, au tour suivant, ce nœud émettra son
paquet de synchronisation plus tôt. Le noeud devient alors meneur temporaire et
refusera momentanément les prochains paquets entrants s’étant propagés avec
une vitesse inférieure à c.
Illustrons cet effet mémoire sur un exemple : prenons une chaîne de n nœuds
dont les extrémités sont les nœuds v et w. Supposons que les nœuds ont des
fréquences nominales très proches et que v, véloce, est le maillon le plus rapide
dans la chaîne. Supposons aussi que le réseau ait convergé vers une configuration
dans laquelle v commence le tour r et que chaque autre nœud commence le tour

37
2 Synchronisation filaire – 2.6 Étude empirique

r avec un retard égal au délai de propagation nominal d par rapport à son voisin
de gauche. Supposons maintenant que le paquet de synchronisation pour le tour
r + 1 se propage à la vitesse maximale possible (pire tirage possible pour le délai
de propagation pour chaque maillon de la chaîne). Le délai de propagation est
alors d − j. La propagation du paquet est si rapide que tous les nœuds l’acceptent
et sont suiveurs. Hormis le meneur v, tous les noeuds relayent le paquet de
synchronisation sans attendre la fin de leur compte à rebours.
Maintenant nous allons propager depuis le meneur v le paquet pour le tour
r + 2 à la vitesse minimale possible (meilleur tirage possible pour le délai de
propagation pour chaque maillon de la chaîne). Le délai de propagation est alors
d + j. Cependant, grâce à l’accélération survenue lors du tour précédent, tous les
nœuds deviennent meneurs, écoutent leurs comptes à rebours, passent au tour
r + 2 et rejettent les paquets entrants car arrivés trop tard. Ils génèrent alors
tous un paquet de synchronisation et donc, l’impulsion de synchronisation se
propage dans le réseau avec un délai de d − j. Les nœuds sont capables de
garder en mémoire les précédentes vitesses de propagation des paquets pour les
reproduire.
Attention cependant : à cause des différences de vitesses entre les nœuds, cette
mémoire est limitée dans le temps. En effet, comme nous l’avons vu précédem-
ment, l’écart entre les numéros de tour de deux nœuds meneurs et se creuse.
Puisque les nœuds meneurs génèrent leur propre signal de synchronisation indé-
pendamment du reste du réseau, v redeviendra inévitablement meneur global.
Les autres nœuds, redevenus suiveurs auront perdu la capacité de propager le
paquet de synchronisation aussi rapidement.
La clé de l’algorithme goose sync réside dans le fait que cet effet mémoire
converge vers un équilibre : puisque la gigue s’accumule régulièrement, la mé-
moire est en permanence rafraîchie. Ainsi, une fois instaurée, l’effet mémoire
ne disparaît pas. Les nœuds apprennent implicitement à propager le paquet de
synchronisation rapidement avec un délai dgsync inférieur au délai nominal d. Em-
piriquement, même sur de grandes distances, l’effet cumulatif de la gigue n ’est
pas suffisamment important pour engendrer une propagation de paquets aussi
rapide. En conséquence, deux paquets de synchronisations consécutifs partant
d’un même nœud conserveront une distance quasi constante, il n’y a donc pas
de saut de tour ni de compression de tour.

2.6 Étude empirique


Nous avons réalisé une étude empirique de l’algorithme goose sync visant
à démontrer la régularité du top de synchronisation lorsque l’algorithme est
confronté à un passage à l’échelle. Cette étude comporte deux volets, un volet
orienté simulation et un volet orienté démonstration physique.
Dans le premier volet, nous expérimentons l’algorithme sur simulateurs en uti-

38
2 Synchronisation filaire – 2.6 Étude empirique

lisant le modèle d’horloge et de gigue introduit dans les sections précédentes.


Nous avons en effet réalisé deux simulateurs distincts qui nous permettent d’en-
trevoir le comportement de l’algorithme sur de très grands réseaux avec des
paramètres réalistes de distribution des fréquences d’horloge et de gigue sur les
délais de transmission. Ces simulateurs travaillent tous deux uniquement sur des
chaînes de noeuds, le diamètre du graphe étant le paramètre prépondérant in-
fluant sur la durée des tours. Nous verrons que le premier simulateur fonctionne
en utilisant un système à évènements discrets et permet de simuler le plus fidè-
lement le comportement du réseau dans le temps. À l’inverse, le deuxième si-
mulateur utilise une approximation moins fidèle mais toutefois raisonnable pour
simuler des réseaux plus grands.
Dans le deuxième volet de cette étude empirique, nous analysons le compor-
tement de l’algorithme sur démonstrateur physique, ce qui permet de confronter
notre modèle d’étude simplifié à la complexité de la réalité physique.

2.6.1 Simulation à évènements discrets

Figure 2.4 – Simulateur à évènements discrets : Lien simulateur.

Nous avons réalisé un premier simulateur fonctionnant à l’aide d’un système à


évènements discrets. Il est livré attaché au présent document PDF.
Pour utiliser le simulateur, il suffit de cliquer sur l’inscription ci-dessus "lien
simulateur" en bleu. Cela déclenche l’ouverture ou le téléchargement d’une page
html unique embarquée dans ce document comme pièce jointe. L’intégralité du

39
2 Synchronisation filaire – 2.6 Étude empirique

simulateur est contenu dans ce fichier html, pour lancer le simulateur, il faut
ouvrir le fichier dans un navigateur web contemporain de ce document (Mozilla
Firefox Ver.78, 2020).

2.6.1.1 Fonctionnement
Ce simulateur simule une grande chaîne de n noeuds s’échangeant des paquets
de synchronisation. Chaque objet noeud dispose d’une constante de fréquence ef-
fective tirée aléatoirement lors de l’initialisation, ainsi que d’une variable numéro
de tour initialisée à 0. De plus, chaque objet noeud dispose d’une variable dans
laquelle on enregistre la date, dans un référentiel global, à laquelle le noeud
a changé de tour pour la dernière fois. Lorsque un noeud v passe au tour r, il
émet un paquet de synchronisation pour chacun des ces voisins, un tel paquet
qui sera reçu après un délai d + jr où jr est le résultat du tirage aléatoire de la
gigue au tour courant. La réception d’un tel paquet de synchronisation par un
voisin constituera un évènement. De plus, le compte a rebours du noeud dictera
un passage au tour r + 1 après un délais pv fonction de la fréquence effective du
noeud. Ce passage au tour suivant constitue lui aussi un évènement.
Ces évènements sont planifiés à l’avance et sont enregistrés dans une file de
priorité dans laquelle ils sont organisés par ordre d’occurrence. Le simulateur
traite ces évènements les uns après les autres, en suivant l’ordre de la file, ce
qui respecte leur causalité. Chaque évènement traité par le simulateur induit la
création de nouveaux évènements pour des dates ultérieures. Ainsi, pour une
date limite donnée t, le simulateur retrace la chaîne d’échanges de paquets dans
le réseau pour en déduire l’état à l’instant t du réseau.

2.6.1.2 Usage
Le simulateur affiche les noeuds sur l’axe horizontal et affiche sur l’axe vertical
les écarts en microsecondes entres les dates de chaque noeud : chaque noeud v
peut en effet à chaque instant t déduire une date en utilisant le numéro de tour
courant rv ainsi que la valeur actuelle du compte à rebours.
Les points les plus hauts dans l’affichage correspondent aux noeuds les plus en
avance, proches de noeuds meneurs. À L’inverse, les points les plus bas corres-
pondent aux noeuds les plus en retard.
Les échelles horizontales et verticales sont modifiables interactivement en cli-
quant et faisant glisser la souris sur l’affichage.
Le passage d’un tour à un autre est symbolisé par un changement de couleur :
rouge pour les numéros de tour pairs, bleu pour les numéros de tour impairs.
Les noeuds leaders du tour courant sont symbolisés par une variation de teinte :
orange au lieu de rouge pour les tours pairs, cyan au lieu de bleu pour les tours
impairs.
Le simulateur permet de modifier les paramètres suivants :

40
2 Synchronisation filaire – 2.6 Étude empirique

— nnodes est le nombre de noeuds dans la chaine.


— syncPeriod est la période nominale entre deux tours, elle définit la valeur
maximale du compte à rebours.
— nominalT, est la période nominale des oscillateurs à quartz, il permet de
choisir la fréquence nominale des noeuds.
— messageDelay correspond au délai nominal d de transmission des paquets.
— messageJitter correspond à j, l’amplitude maximale de la gigue sur les dé-
lais de transmission.
— frequencyDistribution permet de choisir la précision des oscillateurs en par-
ties par million (ppm), ce qui influe sur les tirages des fréquences effectives
des noeuds.
— Enfin, le paramètre tscale permet de choisir la vitesse de simulation par
rapport au temps réel.
— Le bouton toNextRound permet d’avancer la simulation jusqu’au début du
prochain tour du noeud le plus avancé, pour observer le passage d’un tour
à l’autre.

2.6.1.3 Captures
Ci-après la figure 2.5 rassemble une série de captures dans l’ordre chronolo-
gique retraçant l’évolution des écarts entre les horloges des noeuds.
Capture 1 : Dès l’activation de Goose Sync, les écarts entre les dates indiquées
par des noeuds voisins se resserrent pour dessiner un relief montagneux, assu-
rant un gradient continu sur tout le réseau. Capture 2 : Avant la propagation
des paquets de synchronisation pour le prochain tour, les écarts se sont creu-
sés à cause des différences de fréquences effectives des horloges dans le réseau.
Capture 3 : Le tour de synchronisation n°4 a commencé (noeuds en bleu), les pa-
quets de synchronisation se propagent et recalent localement les débuts de tours
des noeuds. Capture 4 : Fin de la propagation pour le tour n°4, tous les noeuds
sont passés au tour 4. Captures 5,6,7,8 : On avance dans la simulation aux tours
n°40, puis n°81, puis n°214, puis n° 547. le relief évolue progressivement car
les noeuds meneurs, au comportement assez indépendant du reste du réseau,
finissent fatalement par se doubler mutuellement. Captures 9,10 : Le réseau a
presque fini sa convergence (tour n°950) : un noeud devient meneur global.

41
2 Synchronisation filaire – 2.6 Étude empirique

Figure 2.5 – Captures : évolution dans le temps des écarts d’horloges entre les
noeuds. Les statistiques de l’avancement sont visible en zoomant sur
chaque capture (images haute résolutions dans le PDF).

42
2 Synchronisation filaire – 2.6 Étude empirique

2.6.2 Simulation par tours

Figure 2.6 – Simulateur tour par tour : Lien simulateur.

Le deuxième simulateur que nous avons réalisé fonctionne au tour par tour et
simule une chaîne de n noeuds communiquant de façon unidirectionnelle, de la
gauche vers la droite, en prenant comme hypothèse que le noeud à l’extrémité
gauche de la chaîne, u0 , est meneur global.

2.6.2.1 Fonctionnement
Le simulateur résout itérativement les termes d’une suite récurrente : Pour
chaque noeud v et pour chaque tour r, il calcule la date absolue tr (v) à laquelle
le noeud v passe au tour r. Il effectue ce calcul en prenant l’échéance minimale
entre tr−1 (v)+pv où pv est la période du compte a rebours de v 3 , et tr (u)+d+jr (u)
où u est le voisin de gauche de v et d + jr (u) le délai de transmission du paquet
de synchronisation émis par u à destination de v.

tr (v) = min(tr−1 (v) + pv , tr (u) + dr (u))


Le simulateur permet aussi de simuler le comportement de l’algorithme de
synchronisation par impulsion Pulse Sync 2.3.4, pour lequel la récurrence est
plus simple, car les noeuds n’ont pas de compte à rebours :

tr (v) = tr (u) + dr (u)


3. Durée d’un tour relatif à l’horloge de v.

43
2 Synchronisation filaire – 2.6 Étude empirique

Bien que l’on considère ici les liaisons comme unidirectionnelles, la simulation
donne une borne inférieure concernant la variance des écarts locaux d’horloges
pour le cas où les liaisons seraient bidirectionnelles. En effet, avoir des liaisons
bidirectionnelles est bénéfique et contribue à réduire légèrement les écarts en
permettant la propagation sur de courtes distances de paquets de synchronisa-
tion de la droite vers la gauche. Mais puisque nous considérons que le noeud u0
à l’extrémité gauche de la chaîne de noeuds est meneur global, les paquets de
synchronisation s’écoulent majoritairement de la gauche vers la droite, car u0 est
toujours le noeud commençant le tour en premier.
Ainsi, bien que ce deuxième modèle de simulation au tour par tour soit moins
fidèle, il permet d’analyser empiriquement des chaînes bien plus grandes tout en
constituant une bonne approximation par rapport au premier modèle à évène-
ments discrets.

2.6.2.2 Usage
Pour un numéro de tour de synchronisation donné r, le simulateur affiche pour
chaque noeud v la différence entre la date à laquelle le noeud v passe au tour r,
et la date à laquelle son voisin de gauche u passe au tour r.
Le simulateur dispose d’une fonction de rémanence de l’affichage, permettant
de visualiser la variance de ces différences.
Le simulateur affiche en bleu les différences obtenues avec l’algorithme goose
sync, et affiche en rouge les différences obtenues avec l’algorithme de synchroni-
sation par impulsions Pulse Sync 2.3.4.

2.6.2.3 Captures
Gradient de synchronisation : Goose Sync vs Pulse Sync Sur les captures
2.7, 2.8, nous pouvons observer sur une même chaine de 100000 noeuds les
comportements des algorithmes Goose Sync, en bleu, et Pulse Sync, en rouge.
Avec l’algorithme Goose Sync, on observe que les écarts locaux sont stables de
tours en tours, et cela indépendemment de la distance par rapport à l’extrémité
gauche de la chaine, ce qui témoigne de la scalabilité de Goose Sync.
À l’inverse, avec Pulse Sync, les écarts locaux varient beaucoup d’un tour à
l’autre, et les écarts
√ sont beaucoup plus importants en bout de chaîne, et croissent
dans l’ordre de n avec la distance depuis l’extrémité gauche, comme en té-
moigne la forme de parabole que prend la rémanence.

44
2 Synchronisation filaire – 2.6 Étude empirique

Figure 2.7 – Capture avec rémanence sur plusieurs tours : différences entre les
dates de début de tours des voisins, algorithme Goose Sync exécuté
sur une topologie de 100000 noeuds.

Figure 2.8 – Capture avec rémanence sur plusieurs tours : différences entre les
dates de début de tours des voisins, algorithme Pulse Sync exécuté
sur une topologie de 100000 noeuds.

45
2 Synchronisation filaire – 2.6 Étude empirique

Vitesse de propagation accélérée par la gigue Nous observons que l’amplitude


ainsi que la distribution de la gigue aléatoire influe directement le gradient de
synchronisation et donc la vitesse de macro-propagation des paquets.
Voir figures 2.9, 2.10.

Figure 2.9 – Gradient d’horloge sur une ligne 1000 noeuds avec une faible gigue
sur le délai de transmission des messages. En rouge le gradient
correspondant au seul délais de transmissions des messages, en bleu
le gradient obtenu avec Goose Sync.

Figure 2.10 – Gradient d’horloge sur une ligne 1000 noeuds avec une forte gigue
sur le délai de transmission des messages. En rouge le gradient
correspondant au seul délais de transmissions des messages, en bleu
le gradient obtenu avec Goose Sync.

Intuitivement, si l’amplitude moyenne de la gigue est très faible par rapport


à la dérive des horloges, le gradient reprend sa pente initiale dictée par le délai

46
2 Synchronisation filaire – 2.6 Étude empirique

de propagation. La mémoire des désynchronisations précédentes ne peut pas


se maintenir de tour en tour car les noeuds lents dérivent trop rapidement. À
l’inverse, si l’amplitude moyenne de la gigue est très importante par rapport à la
dérive des horloges et à la durée du tour, le gradient maintient une pente plus
aplatie, car les noeuds lents dérivent suffisament lentement pour empêcher que
la pente reprenne sa forme initiale.
Ainsi, nous constatons que la pente du gradient de synchronisation est suréle-
vée par rapport au délai de transmission, et que celle-ci converge vers l’horizon-
tale lorsque l’amplitude de la gigue augmente relativement à la période entre
deux tours et à l’amplitude de la dérive des horloges.

2.6.3 Démonstrateur physique : LED’s Chat Mozaïk

Figure 2.11 – Démonstrateur physique : fresque murale composée de 70 tuiles


mozaïk.

L’algorithme Goose Sync que nous avons réalisé est éprouvé depuis plusieurs
années maintenant par le produit Mozaïk de la société LED’s Chat. C’est avec ce
produit que nous nous sommes intéressés à la synchronisation et avons conçu et
implémenté Goose Sync.
Le produit Mozaïk consiste en un ensemble de tuiles pouvant s’imbriquer entre
elles pour former une surface d’affichage. Chaque tuile dispose d’un microcon-
trôleur PIC32 de Microchip pouvant contrôler une matrice de LEDs et de quatre
connecteurs permettant de communiquer avec les tuiles voisines via liaison sé-
rie UART. Le microcontrôleur exécute une application distribuée programmée
en utilisant l’abstraction cellulaire présentée dans les sections précédentes. Cette
application fonctionne au tour par tour à une fréquence de rafraîchissement de

47
2 Synchronisation filaire – 2.7 Éléments d’étude analytique

100Hz, les débuts de chaque tour sont maintenus en phase avec les noeuds voi-
sins en utilisant l’algorithme Goose Sync.
L’algorithme Goose Sync s’est avéré très robuste sur de grandes installations
de plus d’une centaine de tuiles, et avec un diamètre supérieur à 30 noeuds,
en maintenant un delta moyen de l’ordre de 10µs entre le début des tours de
noeuds voisins. De plus, tout écart local trop important > 30us 4 empêcherait
les communications et provoquerait un redémarrage, car les émissions se pro-
duiraient avant le passage en réception des noeuds. Bien que les installations
Mozaïk soient fréquemment actives pendant des jours, nous n’avons pas observé
un tel phénomène.

2.7 Éléments d’étude analytique


Dans cette section, nous apportons quelques éléments pour étudier analytique-
ment la variance de la durée d’un tour en fonction de la taille du réseau. Malgré
nos efforts, cette étude demeure partielle et comporte une hypothèse vérifiée
empiriquement mais non démontrée formellement.
Nous noterons comme précédemment tr (v) La date absolue à laquelle le noeud
v passe au tour r. Nous nous intéresserons donc à la période pr (v) = tr (vi ) −
tr−1 (vi ) où vi est le ième noeud d’une chaîne de n noeuds.
Pour simplier l’étude, nous considérerons, sans pertes de généralités, que le
noeud u0 à l’extrémité gauche de la chaîne est meneur global.


2.7.1 Variance de Goose Sync bornée par Pulse Sync ( n)
La variance de la durée d’un tour pour l’algorithme Goose Sync est bornée
par la variance de la durée d’un tour pour l’algorithme de synchronisation par
impulsions Pulse Sync.
En effet, Goose Sync est une amélioration de Pulse Sync. Le compte à rebours
qu’il contient apporte un biais dans le tirage des délais de transmission : un
paquet avec un délai de transmission trop faible sera remplacé par un paquet
à l’initiative du compte à rebours, ce qui équivaut à réduire l’intervalle pour
le tirage aléatoire des valeurs de la gigue jr (v). Ainsi, l’intervalle [−j, +j] pour
chaque tirage de la gigue est remplacé par l’intervalle [−j, kr (v)] avec kr (v) < j
et fonction de l’effet mémoire. L’intervalle de la gigue étant plus restreint, la
variance l’est aussi.

4. Délais entre activation de la réception et émission dans l’implémentation

48
2 Synchronisation filaire – 2.7 Éléments d’étude analytique

2.7.2 Hypothèse : vitesse de propagation rapide indépendante


du diamètre
Nous avons évoqué précédemment le fait que le compte à rebours de Goose
Sync permettait d’augmenter la vitesse de propagation des paquets de synchro-
nisation.
Ce fait se vérifie empiriquement sur simulations où l’on observe que les pa-
quets de synchronisation se macro-propagent plus vite que leur délai de transmis-
sion. Nous utilisons ici le terme de macro-propagation car avec Goose Sync, un
paquet peut être émis en prévention lorsque le compte à rebours soupasse, sans
attendre la réception d’un paquet relayé par le réseau.
Nous observons de plus qu’après convergence de la chaîne de noeuds vers un
état possédant un unique meneur global, la nouvelle vitesse ne dépend pas du
diamètre du graphe, mais uniquement de la période nominale des tours p et de
l’amplitude des tirages de la gigue j.
Nous noterons d0 = d − k ce nouveau délai moyen de propagation, où d est le
délai nominal de transmission des paquets.
Tout paquet q au délai de transmission effectif dr (q) = d+jr (q) avec jr (q) > −k
sera ignoré par le noeud destinataire, car arrivé après la fin du compte à rebours
pour le tour r.
Nous continuerons l’analyse en gardant l’hypothèse selon laquelle la vitesse de
propagation d0 est constante et supérieure à d.

2.7.3 Variance faiblement dépendante du diamètre


Dans Pulse √ Sync, la variance en bout de chaîne est importante et est dans
l’ordre de n car les gigues sur les délais de transmission du paquet de syn-
chronisation peuvent s’accumuler tout au long de la chaîne (loi de probabilité
Irwin-Hall). En effet, dans Pulse Sync, c’est le même paquet qui est relayé de
proche en proche, et donc les avances et retards peuvent s’accumuler.
Dans Goose Sync, le compte à rebours compense les variations trop impor-
tantes de délais en émettant sans attendre un paquet en cas de retard. Les retards
ne peuvent donc pas s’accumuler.
De plus, sous l’hypothèse que la propagation des paquets d0 est plus rapide que
la transmission des paquets d, les paquets ne peuvent pas non plus accumuler de
l’avance. En effet, pour pouvoir accumuler de l’avance, un paquet doit être relayé
sur une longue distance dans le réseau. Pour chaque noeud vi , la gigue au tour r
jr (vi ) est tirée aléatoirement et uniformément sur l’intervalle [−j, +j].
Pour être relayé sur une longue distance, le paquet doit maintenir sa vitesse
moyenne de transmission au dessus de la vitesse moyenne de propagation, c’est
à dire la somme des dr (vi ) doit être inférieure à i·d0 , sans quoi le paquet arrêterait
d’être relayé car arrivé au noeud vi après la fin du compte à rebours de vi .

49
2 Synchronisation filaire – 2.8 Conclusion


Puisque l’écart type de la somme des dr (vi ) est de l’ordre de i, maintenir
dr (vi ) > i · d0 est très peu probable. Voir figure 2.12.
P

Figure 2.12 – Fonction de densité d’une loi Gaussienne. Plus une valeur s’éloigne
de petits multiples de l’écart type, plus sa probabilité d’occurrence
est faible. (Adaptation CC-BY M. W. Toews (wikimedia Standard_-
deviation_diagram.svg))

Ainsi, sous l’hypothèse de d0 constant et d0 > d, la variance de la durée d’un


tour pr (v) = tr (vi ) − tr−1 (vi ) est très peu dépendante du diamètre du graphe.

2.8 Conclusion
Dans ce chapitre, nous avons introduit l’algorithme de synchronisation Goose
Sync, algorithme que nous avons conçu pour permettre l’exécution d’applica-
tions synchrones fonctionnant au tour par tour, programmées à la manière d’un
automate cellulaire, en suivant le paradigme de la programmation cellulaire.
Nous avons décrit le comportement de Goose Sync et la manière dont celui-
ci maintient un gradient, de quelques microsecondes en pratique, entre chaque
couple de noeuds voisins, leurs permettant de communiquer de manière syn-
chrone. Nous avons aussi vu comment Goose Sync arrive à se prémunir des
désynchronisations causées par les variations aléatoires de la vitesse de trans-
mission des paquets et les accumulations d’avances et de retards.
Nous avons ensuite étudié empiriquement, sur simulateur et sur démonstra-
teur physique, la bonne scalabilité de l’algorithme Goose Sync et nous l’avons
comparé avec celle de l’algorithme Pulse Sync. Enfin, en gardant comme conjec-
ture que Goose Sync augmente la vitesse de propagation des paquets par rapport
au délai de transmission nominal, nous avons démontré analytiquement cette
propriété de scalabilité.

50
2 Synchronisation filaire – 2.8 Conclusion

Dans le chapitre suivant, nous nous intéresserons à la problématique des ré-


seaux sans fils, problématique qui introduit de nombreuses contraintes par rap-
port aux réseaux filaires. Nous verrons que Goose Sync n’est pas utilisable tel
quel dans de tels réseaux et nous proposerons un cadre nous permettant de l’y
faire fonctionner.

51
3 Synchronisation sans fils de
réseaux maillés
Nous avons vu dans la partie précédente que, dans le cadre de réseaux filaires,
la synchronisation permet l’exécution d’algorithmes distribués au tour par tour,
ce qui apporte un cadre confortable pour le développement d’applications : les
exécutions deviennent déterministes et la gestion des délais critiques pour les
communications est abstraite, relayée à une couche logicielle inférieure. Nous
avons créé un tel cadre d’exécution pour des réseaux filaires en utilisant Goose
Sync, notre algorithme de synchronisation minimaliste et scalable.
Transposer nos travaux sur la synchronisation dans le paradigme des communi-
cations sans fils est une évidence. En effet, nous sommes à une époque où l’inter-
net des objets poursuit son expansion, où les microcontrôleurs équipés de trans-
metteurs radio deviennent de plus en plus abordables (nRF52832 par exemple),
et où les standards pour les réseaux d’objet sans fils émergent et se consolident
(Thread, BLE 5, ZigBee, Wireless Heart, (S ILICON -L ABS 2018),(T EXAS -I NSTRUMENTS
2019), (L INEAR -T ECHNOLOGY 2015)). De plus, la synchronisation a de nouveaux
enjeux lorsque l’on considère des réseaux utilisant un médium de communica-
tion sans fils. En effet, pour des capteurs autonomes fonctionnant sur batteries
ou des systèmes pratiquant la récolte d’énergie, panneaux photo-voltaïques, cap-
teurs piezo, générateurs thermoélectriques etc., les émissions et réceptions radio
deviennent des opérations coûteuses en énergie qu’il convient de restreindre à de
courtes fenêtres de temps. La synchronisation permet la création de rendez-vous
pour les communications et permet ainsi de minimiser la consommation énergé-
tique, en allumant la radio uniquement lorsque cela est strictement nécessaire.
Cependant, les communications sans fils apportent des contraintes supplémen-
taires qu’il faut gérer. En plus des interférences et des possibles pertes de pa-
quets dues à la qualité de la réception, le médium est public, n’importe qui peut
l’écouter et émettre. Ce qui, en plus de poser des problèmes de sécurité, pose
aussi des problèmes de fiabilité ainsi que des problèmes d’ordonnancement pour
le partage équitable du médium. En effet, tout comme lorsque l’on utilise un
talkie-walkie ou un poste CB, les communications radio n’utilisant qu’une seule
antenne sont half-duplex, c’est à dire qu’il est impossible d’émettre et de recevoir
en même temps, et deux émissions simultanées peuvent localement créer une
interférence ou se masquer mutuellement. Ces contraintes rendent impraticable
en l’état l’algorithme de synchronisation Goose Sync présenté dans la partie pré-
cédente, car ce dernier requiert un lien de communication full-duplex exclusif et

52
3 Synchronisation sans fils de réseaux maillés – 3.1 Medium sans-fil

fiable pour chaque couple de noeuds voisins. Goose Sync doit être adapté pour
prendre en compte les spécificités des communications sans-fils.
Ainsi dans cette partie, après avoir détaillé le comportement typique des moyens
de communications sans fils, après avoir décrit les principales différences avec
leur pendant filaire et fait un tour d’horizon des solutions existantes pour syn-
chroniser des réseaux d’objets sans fils, nous adapterons notre primitive de syn-
chronisation Goose Sync à ce médium. En outre, nous proposerons MeeMSyP,
un protocole basse énergie, minimaliste mais complet, reposant sur Goose Sync,
permettant l’exécution d’applications synchrones au tour par tour, avec la particu-
larité de se baser sur la création volontaire d’interférences entre paquets de syn-
chronisations. . Nous validerons empiriquement par simulation le bon compor-
tement de MeeMSyP avant de nous attarder en détail sur l’aspect énergétique :
nous calculerons la consommation théorique d’un réseau de capteurs utilisant
MeeMSyP pour ordonnancer les communications radio et récolter/diffuser de
l’information. En gardant une latence raisonnable, nous verrons qu’il est possible,
d’après le recoupement des données constructeurs, de maintenir la consomma-
tion moyenne en deçà de 10µA (@3V), permettant de tenir plusieurs années sur
une pile bouton.

3.1 Medium sans-fil


3.1.1 Communications radio : physique et pratique
Les principes généraux qui régissent la communication utilisant la propagation
d’ondes sont indépendants du médium utilisé. Qu’il s’agisse d’ondes électroma-
gnétiques, mécaniques ou acoustiques, les rudiments sont analogues. Ainsi, on
peut introduire intuitivement l’aspect physique des communications radio entre
deux microcontrôleurs, équipés de transmetteurs, en faisant le parallèle avec les
communications vocales entre deux humains.
Deux individus communiquent en faisant vibrer l’air à une certaine fréquence
avec l’aide des cordes vocales. Ces vibrations, que nous considérerons pour sim-
plifier être des sinusoïdes, se propagent dans l’air et sont perçues par les interlo-
cuteurs. Pour transmettre une information, émettre en continu un son monotone
et d’intensité fixe ne suffit pas, car cela constitue un seul bit d’information. C’est
pour cela que les individus transmettent différents symboles, syllabes, en mo-
dulant le signal émis par les cordes vocales. Le signal est à la fois modulé en
amplitude, c’est-à-dire en altérant le volume sonore, ainsi qu’en fréquence, en
diminuant ou en augmentant la hauteur de la tonalité.
Les microcontrôleurs Nordic nRF52832 que nous utilisons communiquent en
faisant vibrer le champ électromagnétique. Ils émettent des micro-ondes modu-
lés en fréquences : Ils émettent d’abord une tonalité neutre, une sinusoïde dans
la plage des 2.4GHz, et transmettent un 0 en abaissant la note jouée d’un ton,

53
3 Synchronisation sans fils de réseaux maillés – 3.1 Medium sans-fil

dans notre cas en abaissant la fréquence de 250KHz. Pour transmettre un 1, ils


augmentent le ton, en augmentant la fréquence de 250KHz. Pour être plus précis,
la modulation utilisée est GFSK, pour Gaussian frequency shift-keying. Ici, "Gaus-
sien" veut simplement dire que le passage d’une fréquence à l’autre est lissé et se
fait progressivement plutôt que brutalement 1 . Pour s’assurer de la qualité d’une
réception, les microcontrôleurs nRF52832 disposent d’un registre indiquant la
puissance du signal reçu en dBm, le registre RSSI, Received Signal Strength In-
dication. Ce registre permet de savoir si la liaison est bonne ou mauvaise, mais
aussi de percevoir si des transmissions sont en cours. De plus, il fourni une es-
timation très grossière de la distance entre l’émetteur et le récepteur : plus le
signal reçu est faible, plus il est probable que l’émetteur soit loin du récepteur.

Figure 3.1 – Modulation GFSK

Figure 3.2 – Modulation GFSK

La plupart des phénomènes que l’on expérimente au quotidien en communi-


quant via les ondes sonores se retrouvent lorsque deux microcontrôleurs com-
muniquent avec des ondes radio : Si deux individus essayent de parler en même
temps à un même troisième, alors les deux signaux émis, sinusoïdaux, s’addi-
tionnent et l’individu à l’écoute n’est, soit pas capable d’en extraire l’information,
1. Passer brutalement d’une fréquence à une autre crée des émissions parasites sur d’autres
fréquences, (Harmoniques)

54
3 Synchronisation sans fils de réseaux maillés – 3.1 Medium sans-fil

soit il ne comprend que les paroles de l’interlocuteur dont le signal perçu est le
plus fort. Par contre il reste possible d’émettre deux informations différentes en
même temps et de les garder intelligibles en utilisant deux plages de fréquences
différentes. Ainsi, même dans le brouhaha d’une foule, une sirène d’alarme reste
toujours perceptible car le son émis est plus aigu.
Tout comme pour les ondes sonores, lorsqu’un signal radio se propage sur une
longue distance, celui-ci est atténué selon un rapport inversement proportionnel
au carré de la distance parcourue. Ainsi, même si de nombreux individus réunis
dans une salle partagent le même médium, deux individus suffisamment proches
peuvent toujours communiquer, car les signaux émis localement sont perçus plus
intensément que les signaux plus lointains.
Il n’est pas possible d’émettre et d’écouter sur la même plage de fréquence
en même temps, même avec plusieurs antennes. En effet, si un individu parle
en même temps que son interlocuteur, le son de sa propre voix vient masquer
sa perception de l’interlocuteur. Ainsi, si un microcontrôleur tente d’émettre sur
une antenne et recevoir sur une seconde, il sera aveuglé par sa propre émission.
À noter que même s’il n’est pas possible d’émettre en même temps des messages
différents, il est cependant possible à l’instar des chants de supporters dans un
stade de football, d’émettre en chœur un même message : En émettant les mêmes
fréquences en même temps sur le même canal, il est possible de relayer à l’unis-
son une même information. Nous utiliserons plus tard ce principe simple pour
propager le signal de synchronisation dans notre protocole de synchronisation
sans fil.
Les phénomènes d’écho et de réflexion que nous expérimentons avec les sons
impactent et perturbent aussi la propagation des ondes radio : Les ondes radio
avec une fréquence élevée, dont les 2.4GHz notamment, ont un comportement
qui converge vers celui de la lumière visible. Ces ondes rebondissent sur le sol et
les murs, créant ainsi des échos qui viennent se superposer aux signaux transmis
et les altèrent. Les ondes radio se propagent à la vitesse de la lumière, soit un mil-
lion de fois plus vite que le son. Ainsi sur de courtes distances, l’effet des échos
sur le signal reçu est légèrement différent. Avec le son, il peut y avoir jusqu’à des
secondes de retard entre la réception d’un symbole et la réception de son écho,
provoquant ainsi un mélange entre les différents symboles d’une communication.
Avec les ondes radio, le retard est de l’ordre de la longueur d’onde, ainsi, le si-
gnal reflèté contient le même symbole que le signal direct, mais les signaux ne
sont pas dans la même phase de leur oscillation. L’addition du signal et de son
reflet constitue alors une interférence constructive (signaux en phase), ou des-
tructive (signaux en opposition de phase), augmentant ou diminuant l’amplitude
du signal perçu.
Tout comme avec les communications vocales, les communications radio sont
soumises aux aléas de l’environnement : si le bruit ambiant (voitures, travaux,
sonneries, etc.) peut empêcher deux interlocuteurs de discuter correctement,
le bruit électromagnétique ambiant peut provoquer des pertes de paquets lors

55
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art

d’une transmission radio. De même, la configuration des lieux et la météo peuvent


influencer la propagation des signaux : La pluie et l’humidité ont tendance à at-
ténuer les microondes (2.4GHz), la végétation va absorber les échos alors que
les bâtiments au contraire vont les renforcer.
Le parallèle avec les communications vocales a cependant quelques limites.
En effet, les transmetteurs radio permettent généralement de choisir entre diffé-
rentes plages d’émission, plusieurs canaux radio, ce qui permet un grand nombre
de communications simultanées au même endroit : Différents groupes d’interlo-
cuteurs peuvent choisir de communiquer en modulant leurs messages sur des
fréquences de base différentes. Bien que tout le monde partage le même mé-
dium et que les amplitudes des signaux s’additionnent, les groupes sont capables
d’écouter et d’isoler uniquement les notes les concernant du reste du signal.
Pour une description plus approfondies des bases de la RF ansi que des mé-
thodes de modulation, voir (G RINI 2006).

3.1.2 Difficultés par rapport au filaire


En pratique, dans un réseau filaire, les nœuds disposent d’un canal exclusif
de communication, une paire de câbles, leur permettant de dialoguer dans les
deux sens avec chaque voisin et cela indépendamment des autres noeuds du
réseau. Le lien est robuste et est sécurisé, il n’y a pas de pertes de paquets et
personne ne peut écouter les communications sans physiquement se raccorder
sur la connexion. Dans un réseau sans fil, c’est tout le contraire : même si les
nœuds peuvent communiquer sur plusieurs fréquences différences, les canaux
sont publics, accessibles par tout le monde. De plus les liaisons sont fragiles,
soumises au bruit électromagnétique, à l’environnement, aux interférences et
aux collisions.
Ainsi, avoir une communication sans fil robuste nécessite l’utilisation de nom-
breuses techniques pratiques palliant les défauts du médium : Pour lutter contre
le bruit et garantir l’intégrité des données transmises, les communications doivent
utiliser des codes détecteurs et correcteurs d’erreurs. Pour garantir la confiden-
tialité des données, celles-ci doivent être chiffrées. Pour garantir les débits, la sta-
bilité des communications, limiter les collisions et maintenir une certaine équité,
les nœuds du réseau doivent organiser localement le partage du temps d’antenne
ainsi que la répartition des canaux. Dans la section suivante, nous allons passer
en revue les principales techniques employées par les protocoles les plus utilisés
de nos jours.

3.2 État de l’art


Nous avons vu précédemment que les communications sans fil apportent des
difficultés supplémentaires par rapport aux liaisons filaires. De nombreuses tech-

56
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art

niques ont été introduites depuis l’avènement des communications radio pour
pallier ces défauts. L’une des principales difficultés est le fait que le médium
soit partagé. Les techniques permettant le multiplexage du médium sont nom-
breuses. Parmi ces techniques, on distingue deux grands types de multiplexage :
le multiplexage temporel dans lequel les différents nœuds utilisent la même fré-
quence mais pas au même moment et où les différents interlocuteurs parlent
chacun leur tour, et le multiplexage en multiples canaux, où différents groupes
de nœuds peuvent parler en même temps en utilisant des plages de fréquences
différences.

3.2.1 Techniques de multiplexage du médium


Parmi les techniques les plus connues et les plus employées, on citera notam-
ment, TDMA, Time Division Multiple Access (FALCONER, A DACHI et G UDMUNDSON
1995), qui utilise des plages temporelles, FDMA, Frequency Division Multiple Ac-
cess, qui utilise différentes plages de fréquences, et CDMA, Code Division Mul-
tiple Access, qui utilise des techniques d’étalement de spectres comme le DSSS,
Direct Sequence Spread Spectrum, où le FHSS Frequency Hopping Spread Spec-
trum. Dit vulgairement, l’étalement de spectre consiste à transmettre en même
temps sur différentes fréquences avec une répartition propre pour chaque nœud.
À l’instar d’un spectre lumineux, certaines bandes dans le spectre radio vont cor-
respondre à un émetteur. Les bandes de plusieurs émetteurs peuvent cohabiter
dans le même spectre, permettant ainsi le partage du médium. Émettre sur plu-
sieurs bandes confère aussi une meilleure immunité face au bruit.
Mis à part les techniques de multiplexages, d’autres techniques sont couram-
ment employées afin de rendre les communications plus robustes. Un grand
nombre de réseaux utilisent CSMA, Accès multiple à Détection de Porteuse, pour
s’assurer que le médium est libre avant d’émettre, évitant ainsi une collision in-
utile si le médium est occupé. CSMA possède trois variantes principales, CSMA/CD,
CSMA/CA, CSMA/CR permettant respectivement de détecter, prévenir, et résoudre
des collisions. Une majorité de protocoles réseaux utilisent aussi le saut de ca-
naux 2 pour notamment augmenter la robustesse des liaisons vis-à-vis du bruit :
les nœuds ayant recours au saut de canaux changent sans cesse de fréquence de
transmission, ainsi, si une fréquence est bruitée ou déjà occupée, il n’y aura des
pertes de paquet que pendant la durée où les nœuds transmettent en conflit sur
cette fréquence.

3.2.2 Protocoles existants pour l’accès au médium (MAC)


Un protocole réseau sans fil est une combinaison des différentes techniques
présentées précédemment ainsi que de diverses méthodes. Il permet de pallier

2. "Channel Hopping"

57
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art

les défauts physiques du médium et fournit une abstraction au développeur final


qui n’a alors plus à se soucier de la fragilité du lien. Un protocole réseau sans fil
fournit des primitives dont la complexité et le niveau d’abstraction dépend de la
couche à laquelle on se trouve.
Au niveau le plus bas, le transmetteur radio, en fonction des modes de modula-
tion qu’il propose, impose la couche physique. À ce niveau, il est simplement pos-
sible d’envoyer et de recevoir des paquets, c’est alors à l’utilisateur de la couche
physique de faire les bons choix pour que les nœuds du réseau puissent échanger
un maximum d’informations de manière sécurisée tout en minimisant la latence
et l’utilisation des ressources, c’est-à-dire le temps de calcul et la consommation
énergétique.
Au-dessus de la couche physique, la couche liaison apporte le minimum d’abs-
traction nécessaire pour accéder au médium partagé. Il existe de nombreux pro-
tocoles pour la couche liaison. Chaque protocole d’accès au médium apporte ses
spécificités, ses contraintes, ses compromis et son paradigme (C ILFONE, D AVOLI,
B ELLI et al. 2019), (ASHW IRELESS 2014) : Certains protocoles sont orientés
basse consommation énergétique, d’autres orientés basse latence. Certains uti-
lisent des topologies hétérogènes dans lesquelles les nœuds feuilles sont basse
énergie et les nœuds centraux, chargés de relayer l’information, sont reliés au
réseau électrique et peuvent rester en écoute en permanence. Certains proto-
coles établissent une synchronisation, globale ou locale, entre les nœuds pour
établir des rendez-vous et relayer l’information rapidement, tandis que d’autres
se basent sur les probabilités pour émettre et relayer des paquets tout en évitant
les collisions. Certains protocoles supposent des réseaux denses, d’autres sont
plus efficaces sur des topologies où le degré est limité. Enfin, certains protocoles
instaurent une hiérarchie arborescente entre les nœuds centrés sur un nœud co-
ordinateur, pour faciliter certaines opérations de routage et de synchronisation,
alors que d’autres se basent entièrement sur des liens pair à pair.
Certains protocoles de liaison sont même réalisés dans l’optique d’effectuer
une tâche applicative bien précise. Il y a ainsi autant de protocoles que d’appli-
cations. Pour une application donnée, il est ainsi difficile de trouver le protocole
adapté : Un protocole trop générique sera complexe, difficile à implémenter, à
comprendre, à paramétrer et à déployer, surtout si le protocole nécessite une
infrastructure (nœuds coordinateurs, passerelles, etc.). À l’inverse, un protocole
taillé pour une application spécifique sera difficilement adaptable à un autre cas
d’usage. Il convient d’opter à chaque fois pour un bon compromis.

3.2.3 Compromis entre maillage, basse énergie, et efficacité


Parmi l’offre existante, notre idéal de couche liaison pour nos objectifs serait
un protocole simple et scalable, capable de combiner nœuds basse énergie et
topologie homogène, entièrement maillée et à maille régulière, sans pour au-
tant sacrifier les latences et les débits. Le protocole exploiterait des liens pair

58
3 Synchronisation sans fils de réseaux maillés – 3.2 État de l’art

à pair, sans structure arborescente, ni coordinateur. Un tel protocole serait adé-


quat pour élaborer, déployer et administrer des réseaux de capteurs à bas coûts,
quelques euros par nœuds, autonomes, capable de tenir plusieurs années sur
batterie CR2032, sans nécessiter une maintenance manuelle ni une lourde infra-
structure.
Le standard existant se rapprochant le plus de nos exigences nous semble être
TSCH, Time Sloted Channel Hopping. Introduit dans le cadre de l’IEEE 802.15.4e
(H ERMETO, G ALLAIS et T HEOLEYRE 2017), (M OHAMADI, D JAMAA et S ENOUCI
2020), le mode TISCH permet en théorie de créer des réseaux maillés à la fois
scalables et basse énergie. La basse énergie est permise par l’émission de balise
de temps EB dit "Enhanced Beacons". Ces balises de temps propagent la date
et l’heure provenant d’un noeud coordinateur vers le reste du réseau. Un méca-
nisme de planification a été introduit pour limiter les collisions lors du relais de
ces balises de temps. Les nœuds ainsi synchronisés sont alors capables de res-
treindre leur utilisation de la radio sur des fenêtres étroites, minimisant ainsi
l’énergie consommée. Cependant TSCH requiert la présence d’un nœud coordi-
nateur explicite, ainsi cette solution pas entièrement distribuée, et la scalabilité
de sa synchronisation est à nuancer : nous avons pu constater dans le chapitre
précédent sur la synchronisation filaire que propager directement des balises de
temps rend l’information vulnérable à l’accumulation de la gigue aléatoire. En
clair, plus une balise de temps est relayée profondément dans le réseau, plus la
valeur de celle-ci est susceptible d’être altérée aléatoirement et cumulativement.
Enfin, une autre solution connue est celle proposée par le consortium Blue-
tooth, Bluetooth Mesh (B AERT, R OSSEY, S HAHID et al. 2018). Cependant, même
si un réseau bluetooth Mesh peut contenir des nœuds basse consommation, le
maillage central du réseau assurant le relais de l’information repose lui sur des
nœuds à forte consommation, car à l’écoute en permanence.

3.2.4 Notre proposition : MeeMSyP


Ayant depuis 4 années éprouvé en pratique notre algorithme Goose Sync sur
des réseaux filaires, nous avons souhaité l’adapter aux liaisons sans-fil et ainsi
proposer un compromis, une solution certes moins élaborée que des protocoles
comme TSCH, mais permettant d’obtenir rapidement un réseau synchrone basse
énergie avec une infrastructure plus simple à mettre en oeuvre.
Pour ce faire, nous avons ajouté plusieurs mécanismes autour de Goose Sync
permettant de pallier les garanties manquantes des communications sans-fil par
rapport aux communications filaires. Nous avons baptisé le protocole résultant
de cette agglomération MeeMSyP, pour Protocole de Synchronisation de Maillage
Minimaliste et économe en énergie.
Nous verrons dans les sections suivantes que ces mécanismes impliquent des
superpositions volontaires de paquets de synchronisation : nous allons créer des
interférences entre les émissions de modules radio nRF52832 pour fournir un

59
3 Synchronisation sans fils de réseaux maillés – 3.3 Multiplexage par superposition

signal de synchronisation partagé en s’affranchissant des collisions de paquets.

3.3 Multiplexage par superposition

Signal 1
+

Signal 2
+ Signaux 2.4GHz

Signal 3

Signal Somme
46uS
(Duree TX)

Figure 3.3 – Superposition de signaux formant une salve de synchronisation. 3


noeuds émettent des porteuses sinusoïdes @2.4GHz. Un quatrième
noeud reçoit la superposition de ces trois signaux, atténués différem-
ment fonction de leur distance au récepteur.

En règle générale, il n’est pas possible d’émettre localement en même temps


sur le même canal. En effet, si deux émissions ayant lieu en même temps at-
teignent un récepteur, alors les deux signaux vont s’additionner et les données
portées par les signaux vont se mélanger.
Cependant, la simple absence ou présence d’un signal constitue 1 bit d’infor-
mation, bit perceptible par les microcontrôleurs nRF52832 en monitorant l’in-
dicateur de puissance de signal RSSI. Il est ainsi possible d’utiliser ce bit pour
signaler et relayer l’occurrence d’un évènement dans un réseau sur un même
canal radio, sans se soucier de l’ordonnancement et des collisions.
Nous avons expérimenté ce concept pour relayer un signal de synchronisation
sur un petit réseau test de nRF52832 : chaque noeud écoute en permanence
et surveille l’indicateur RRSI ; lorsqu’un noeud perçoit une salve, c’est-à-dire un
changement significatif de l’indicateur RSSI, il commute temporairement sa ra-

60
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

dio en émission et émet un signal neutre (porteuse 2.4GHz) pour relayer l’infor-
mation. De plus, les noeuds disposent d’une temporisation qui déclenche auto-
matiquement la commutation après un certain temps sans perception.
Un tel programme de test permet une synchronisation fonctionnelle, cepen-
dant, il ne constitue qu’une adaptation grossière de Goose Sync au sans-fil, dif-
ficilement exploitable en pratique. En effet, la synchronisation ne fonctionne ici
que si les noeuds sont initialement démarrés en même temps. Ainsi, il n’est pas
possible d’ajouter directement de nouveaux noeuds au réseau. De plus, garder
la radio allumée en permanence est énergivore et le réseau est très sensible aux
émissions parasites des équipements environnant partageant la même bande de
fréquence.
Nous utilisons ce principe de multiplexage des émissions par superposition
comme base du protocole de synchronisation sans fil MeeMSyP. Pour qu’il soit
exploitable, nous lui ajoutons plusieurs mécanismes simples permettant d’une
part d’amorcer la synchronisation, et d’autre part d’assurer sa robustesse vis à vis
de l’environnement.
Notons enfin que, puisque cette technique de multiplexage utilise des signaux
qui se superposent, on peut se poser la question des interférences destructives
lorsque les signaux sont en opposition de phase. Nous répondrons à cette ques-
tion plus loin dans une section dédiée. Pour le moment nous dirons simplement
que ces interférences destructives sont rares et que leurs effets sont peu percep-
tibles.

3.4 Protocole MeeMSyP


Le médium de communication sans fil, associé à la problématique de basse
énergie, nous pousse à introduire un protocole plus complexe pour mettre en
place l’exécution d’applications distribuées synchrones au tour par tour. En effet,
dans le cas d’un réseau filaire, la structure est statique et fixe, les arrêtes existent
physiquement entre les nœuds et les communications y sont fiables, ici en sans-fil,
les arêtes du réseau ne sont pas explicitées, un nœud peut virtuellement échan-
ger avec n’importe quel autre nœud du réseau si la propagation des ondes est
au rendez-vous. Ainsi, sans introduire plus de structure et plus de règles dans un
tel réseau, les nœuds peuvent se gêner mutuellement en émettant au mauvais
moment. Or, dans notre algorithme Goose Sync, tel que précédemment présenté
pour le cas filaire, c’est justement ce que nous faisons : dès qu’un nœud passe au
tour synchrone suivant, il signale ce passage à ses voisins pour les synchroniser.
Reproduire un tel schéma entraînerait dans un réseau sans fil une cacophonie,
rendant tout paquet de synchronisation inintelligible.
Dans ce chapitre, nous introduisons MeeMSyP 3 , un protocole minimaliste mais
complet qui apporte la structure nécessaire aux réseaux sans-fil pour permettre
3. Minimalistic energy- efficient Mesh Synchronisation Protocol

61
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

d’utiliser l’algorithme de synchronisation Goose Sync. Les chapitres suivant se-


ront quant à eux consacrés à l’étude des propriétés, avantages, faiblesses et ga-
ranties de MeeMSyP.

3.4.1 Organisation du protocole en 3 canaux


MeeMSyP utilise un compte à rebours ainsi que 3 canaux de communication :
un canal de synchronisation , un canal de découverte, un canal système. À chaque
canal est associé une fonctionnalité. La propagation des paquets de synchronisa-
tion s’effectue sur le canal de synchronisation, le canal de découverte ainsi que
le canal système sont là pour compenser les manquements des réseaux sans fil
par rapport aux réseaux filaires, principalement l’absence de lien permettant une
communication exclusive entre deux nœuds voisins.
Afin de simplifier la présentation du protocole, nous éviterons toute probléma-
tique de collision supplémentaire en supposant que ces 3 canaux utilisent des
bandes de fréquences différentes. Cependant, le protocole pourrait tout à fait
fonctionner en utilisant une unique fréquence, avec un multiplexage des com-
munications uniquement temporel.
Nous allons tout d’abord passer en revue les fonctionnalités de chaque canal,
puis nous donnerons une vue d’ensemble du fonctionnement de l’algorithme.

62
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

3.4.1.1 Canal de synchronisation

Figure 3.4 – Canal de synchronisation

Le cœur du protocole repose sur le canal de synchronisation : localement, tous


les nœuds y signalent le début du tour courant en émettant une salve d’ondes,
c-à-d une signal sinusoïdal très bref, sur cette fréquence.
Chaque nœud dispose d’un compte à rebours. Lorsque le compte arrive à 0, le
nœud se met en écoute, en attente de réception d’une salve. Si la salve n’arrive
pas avant b cycles d’horloge, durée maximale de l’attente pendant laquelle le
nœud écoute, alors le nœud devient meneur et émet lui-même la salve. Si une
salve est reçue avant la fin de l’attente en réception, alors le nœud propage la
salve directement. Dans tous les cas, le nœud réinitialise son compte à rebours à
la valeur p − b après l’émission, où p correspond à la période nominale en cycles
d’horloge. L’avantage d’émettre des salves plutôt que des paquets, c’est que les
salves peuvent physiquement se superposer, là où deux paquets émis en même
temps provoqueraient une collision. (cf. exemple du chant de supporters).
Cependant, pour qu’une salve de synchronisation puisse se propager depuis un
nœud, il faut impérativement que ses voisins soient en écoute, en attente de cette
salve. Cela suppose que le début d’un tour t d’un nœud est décalé d’au maximum
b cycles avec ses voisins, sans quoi les fenêtres d’émissions n’intersectent pas les
fenêtres de réception. Or, comme nous l’avons vu dans le cas filaire, si l’algo-
rithme Goose Sync est capable de maintenir statistiquement le réseau dans une
telle configuration où les fenêtres s’intersectent avec ce simple mécanisme de re-

63
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

phasage des cycles, il n’est pas capable de l’y amener en premier lieu. Pour créer
cette configuration dans laquelle les fenêtres de communication sont alignées,
on a recours au canal de découverte.

3.4.1.2 Canal de découverte

Figure 3.5 – Canal de découverte

Le canal de découverte permet d’amorcer la synchronisation et permet la réini-


tialisation du nœud lors d’avaries de synchronisation. Chaque nœud va périodi-
quement y déclarer son identité (ID), l’identité du réseau auquel il est connecté
(ID de la racine), ainsi que son numéro de tour courant et le décalage correspon-
dant, c’est à dire le délai en nombre de cycles avant le début du prochain tour.
Ces paquets de découvertes sont émis à chaque tour avec un léger décalage choisi
aléatoirement, cela dans le but de minimiser les collisions avec les paquets du
voisinage local, ainsi que d’assurer une certaine équité dans l’accès au canal.
Pour attribuer un identifiant unique à chaque noeud, il est possible d’utiliser
le numéro de série constructeur : les micontrôleurs nRF52832 disposent d’un
registre en lecture seule DEVICEID contenant un ID unique donné par le fabricant.
Si le microcontrôleur utilisé ne possède pas un tel registre, une autre possibilité
est d’utiliser le périphérique générateur de nombre aléatoire non déterministe.
De tels générateurs utilisent le bruit d’un capteur thermique interne
Lorsque un nœud démarre, avant d’émettre périodiquement ses salves de syn-
chronisation, il collecte pendant plusieurs périodes p les informations provenant

64
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

du canal de découverte. Le nœud peut alors connaître les identifiants de ses voi-
sins, les réseaux dans lesquels ses voisins se trouvent, ainsi que l’emplacement
temporel, c-à-d le déphasage, des salves périodiques sur lesquelles les voisins se
synchronisent. Le nœud choisit de se synchroniser, de recaler le début de sa pé-
riode sur la salve du nœud se trouvant dans le réseau ayant l’identifiant le plus
élevé. Si deux nœuds ont le même identifiant de réseau, alors la synchronisation
se fera sur le nœud ayant le numéro de tour le plus élevé.
L’identifiant de réseau correspond à l’identifiant du nœud le plus grand dans le
réseau. Ce mécanisme de nœud racine aide à garantir l’unicité et la connexité du
réseau : deux îlots indépendants ne peuvent pas se créer et grandir au même en-
droit, les nœuds fraîchement démarrés rejoindront systématiquement l’îlot pos-
sédant le nœud dont l’identifiant est le plus élevé.
Cependant, même si l’initialisation utilisant le canal de découverte garantit
que deux îlots de noeuds ne peuvent pas coexister localement, cela n’empêche
pas deux îlots distants de se former et de grandir tout en ayant des numéros
de tour différents, ainsi que des salves de synchronisations incompatibles car dé-
phasées. L’algorithme n’est alors pas capable de fusionner deux réseaux ayant
une frontière proche, car les nœuds n’ont pas l’information qu’un autre réseau
existe. Pour acquérir cette information, les nœuds doivent périodiquement partir
en reconnaissance et écouter le canal de découverte à la recherche de nœuds
étrangers provenant d’un réseau concurrent. Une telle opération est très coû-
teuse en énergie. Ainsi, une fois la synchronisation amorcée, cette opération sera
réalisée de façon sporadique dans le réseau, suivant un tirage aléatoire avec une
faible probabilité d’occurrence, ce qui malheureusement réduit très fortement la
vitesse à laquelle deux réseaux vont fusionner.
Pour accélérer la fusion d’îlots contigus, ainsi que pour maintenir la connexité
du réseau en cas d’avarie de synchronisation, nous avons recours à un troisième
canal sur lequel les nœuds éclaireurs partis en reconnaissance pourrons propager
rapidement l’information : le canal système.

65
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

3.4.1.3 Canal système

Figure 3.6 – Canal système

Contrairement au canal de découverte, les communications du canal système


sont synchronisées : les nœuds échanges sur le canal système dans une fenêtre de
temps étroite située juste après l’émission de la salve de synchronisation. Grâce
à la salve de synchronisation, les nœuds savent exactement quand écouter et
quand émettre, la consommation énergétique est alors minimisée.
Tous les nœuds écoutent à chaque tour le canal système et relayent si besoin
les informations qui s’y trouvent au tour suivant. Tout comme pour le canal de
découverte, les paquets sont jetés aléatoirement dans une fenêtre de temps par-
tagée par les nœuds voisins pour limiter la probabilité de collision.

Nœuds Éclaireurs Lorsqu’un nœud détecte, en écoutant le canal de découverte,


un îlot de synchronisation étranger ayant un identifiant de réseau plus élevé, ce
dernier le signale sur le canal système à ses voisins directs, juste après avoir émis
la salve de synchronisation sur le canal de synchronisation. Ce signalement in-
dique aux nœuds voisins de se tenir à l’affût : des changements sont en cours
dans le réseau, les voisins directs doivent se remettre à écouter le canal de dé-
couverte en prévention.
Après quelques tours, le nœud ayant découvert un nouveau réseau se redé-
marre. Il indiquera le nouvel identifiant réseau dans son paquet émis sur le canal

66
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

de découverte, paquet découvert quelques cycles plus tard par ses voisins directs
(à l’affût), voisins qui eux mêmes propageront l’information à leurs voisins et
redémarreront à leur tour. Ces redémarrages en cascade provoquent ainsi l’ex-
tinction de l’îlot ayant l’identifiant le plus petit, les nœuds de ce précédent îlot
rejoignent alors progressivement l’îlot ayant le numéro de tour le plus avancé.

Liens vers le nœud racine Afin de détecter toute perte de connexité dans le
réseau, les nœuds gardent un lien vers le nœud racine, c’est-à-dire le nœud pos-
sédant l’identifiant le plus élevé, identifiant identique à l’identifiant réseau. Ce
lien prend la forme d’un flot ininterrompu de paquets émis sur le canal système
par le nœud racine, flot relayé en permanence par les nœuds du réseau.
Les paquets provenant de la racine sont numérotés et font office de fil d’Ariane.
Ainsi, lorsque un nœud s’aperçoit que son fil d’Ariane est rompu, c’est-à-dire que
le flot a cessé de lui parvenir et que le numéro de paquet a cessé de progres-
ser, il redémarre pour réamorcer la synchronisation. Ce mécanisme est auto-
stabilisant : Si un nœud racine tombe en panne, tout le réseau redémarre en
cascade et une nouvelle racine est progressivement élue.

3.4.1.4 Vue d’ensemble


Cette sous section présente une vue d’ensemble du protocole MeeMSyP et ex-
plique son déroulement temporel étape par étape ainsi que le découpage de la
période.
Les noeuds utilisant le protocole MeeMSyP passent par plusieurs états. Il y a
tout d’abord une phase d’amorce au cours de laquelle un noeud non synchronisé
découvre ses voisins, cale sa phase sur l’un d’entre eux, et commence à émettre
ses salves de synchronisation. Il y a ensuite une phase de stabilisation où le noeud
reste à l’écoute, Puis une phase stable dans laquelle le noeud reste en mode
d’économie d’énergie. Le noeud entre ensuite périodiquement dans des courtes
phases en mode éclaireur. Enfin, et uniquement en cas d’avaries, le noeud entre
en phase de récupération avant de redémarrer.

67
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

Figure 3.7 – Découpage temporel d’un cycle

Figure 3.8 – Données échangées

Découpage temporel d’un cycle

Amorce Lorsqu’un nœud démarre ou redémarre, il récupère sur le canal de


découverte le plus grand identifiant de réseau, ainsi que la plus courte échéance

68
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

pour le tour le plus élevé pour ce réseau. Si cet identifiant réseau est plus grand
que l’identifiant du nœud, alors le nœud configure son compte à rebours pour
terminer à l’échéance récupérée. Dans le cas contraire, le nœud ne tient pas
compte de l’échéance et déclenche son compte à rebours. Dans un tel cas, le
nœud est lui-même la racine de son propre réseau.

Synchronisation La synchronisation reprend exactement le principe de Goose


Sync :
Une fois démarré, le nœud relaye périodiquement la première salve de syn-
chronisation reçue dès la fin de son compte à rebours puis réarme le compte.
Dans le cas où aucune salve n’est reçue à la fin du compte à rebours, le nœud
crée la salve de lui-même.
Il est important de noter que ces salves sont indépendantes de l’identifiant
du nœud ainsi que du nœud racine : les identifiants sont là pour structurer le
réseau en alignant une première fois les fenêtres de communication. Une fois les
fenêtres alignées, les salves seules maintiennent la synchronisation entre nœuds
voisins.

Stabilisation Après que la procédure périodique de synchronisation a commencé


son exécution, Le nœud reste attentif un certain temps aux informations transi-
tant sur le canal de découverte : Le réseau est probablement toujours en cours
de construction, le nœud est susceptible de découvrir un réseau concurrent à
l’identifiant plus élevé. Une fois le réseau stable, c’est-à-dire sans modification de
la topologie pendant suffisamment longtemps (paramètre empirique), le nœud
économise son énergie en ne prêtant attention au canal de découverte que très
rarement.

Découverte d’un nouveau réseau et fusion Lorsqu’un nœud découvre un nou-


veau réseau dont l’identifiant est supérieur à l’identifiant de son réseau actuel,
alors le premier réseau doit fusionner avec le second.
Le nœud alerte ses voisins concernant sa découverte sur le canal système et re-
démarre. À son redémarrage, les voisins demeurent encore alertes pour plusieurs
cycles, ils écoutent le canal de découverte et prennent à leur tour connaissance
du nouveau réseau et redémarrent. Ainsi, l’ancien réseau se déconstruit petit à
petit et les nœuds rejoignent en cascade le nouveau réseau.

Déconnexion du graphe Le nœud racine propage en permanence un signal au


travers du réseau. Dans le cas où un nœud perd pendant plusieurs cycles le signal
de sa racine, le fil d’Ariane est rompu, cela signifie que le graphe est possiblement
déconnecté. Le nœud redémarre et réactive le processus de découverte.
Contrairement à la découverte d’un nouveau réseau, le nœud ne signale pas
une telle avarie de déconnexion du graphe sur le canal système. En effet, ce

69
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

signalement est implicite : lorsqu’un nœud redémarre, cela fait perdre en cascade
et rapidement le lien vers la racine pour les autres noeuds. Dans le cas de la
découverte d’un nouveau réseau, cet effet de cascade est lent pour économiser
de l’énergie, ce qui oblige à expliciter ce signalement.

3.4.2 Pseudo-code exhaustif


Cette sous section présente le pseudo-code du protocole MeeMSyP. Ce pseudo-
code, écrit dans un mélange de C et de javascript, est exhaustif et permet d’im-
plémenter facilement le protocole sur n’importe quel microcontrôleur.
Il est cependant nécessaire de disposer au préalable de certaines fonctions
utilitaires :
— primitive de configuration de la radio en réception sur un canal,
— primitive de configuration de la radio en émission sur un canal,
— gestionnaires d’interruptions pour un réveil périodique basse consomma-
tion,
— primitive de lecture de la valeur RSSI.
pour configurer la radio en envois et en réception sur les bons canaux, de ges-
tionnaires d’interruptions, d’une fonction de veille de l’indicateur de puissance
de signal RSSI, ainsi que d’un compteur.
La section suivante sera consacrée à l’étude des garanties de MeeMSyP en
termes d’énergie, de fiabilité et de scalabilité.

//Minimalistic energy-efficient Mesh Sychronisation Protocol

3.4.2.1 Constantes paramètres


Ci-dessous sont listées les constantes ajustant divers paramètres, tels que la
période et les délais d’attente.

//Paramètres: constantes
//Les durées sont exprimés en microsecondes.

//ID:
const identifiant //Identifiant unique du noeud.

//Synchronisation:
const periode = 10^6 //Durée entre deux salves (1 seconde).
const salve_rx = 120 //Fenêtre de réception des salve.
const salve_tx = 80 //Fenêtre d'émission d'une salve.

//Système:
const système_rxtx = 530 //Fenêtre des communications système.
const système_tx = 140 //Fenêtre d'émission des paquets système.

70
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

//Découverte/Économie d'énergie:

const stabilitéRequise = 10 //la découverte est inhibée si


//stabilité > stabilitéRequise.
const chanceÉclaireur = 1/7200 //un noeud part sporadiquement en
//reconnaissance avec cette probabilité.

//Fiabilité et latences:

const filArianeMax = 10 //Le noeud redémarre si la valeur de la variable


//filAriane dépasse le seuil filArianeMax.
const delaisAvantSaut = 3 //Nombre de tours avant un saut,
//pour permettre d'informer les
//voisins au préalable.

//Largeur totale de la fenêtre des communications découverte:


//(Le reste du temps disponible dans le cycle)

const découverte_rxtx = periode - salve_rx - salve_tx - système_rxtx


const découverte_tx = 140 //Fenêtre d'émission en découverte.

3.4.2.2 Variables
Ci dessous sont listés les variables constituant l’état courant du noeud.

//État: variables
var racine = identifiant //Numéro de la racine/id réseau.
var tour = 0 //Numéro de tour courant.
var compteurRacine = 0 //Compteur pour le fil d'Ariane.

//Logique de découverte:
var stabilité = 0 //Compteur de stabilité du réseau,
//incrémenté à chaque tour,
//réinitialisé lors d'avarie.
var inhiberDécouverte = 0 //Permet de désactiver la découverte
// au tour courant (basse énergie).
var racineDécouverte = 0 //Booléen alertant de la présence
//potentielle d'un nouveau réseau.

//Logique de fil d'Ariane (garant de la connexité du réseau):


var filAriane = 0 //Nombre de tours sans nouvelles
//De la racine.

//Logique de saut de tours (recalage de phase):


var saut = -1 //Saute si saut > délaisAvantSaut.

71
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

var nouvelleRacine = 0 //No de racine à utiliser après saut,


var nouveauTour = 0 //No de tour à utiliser après saut,
var nouveauDécalage = 0 //Décalage temporel en cas de saut.

//Positions temporelles (en cycles):


var système_txpos //Position Fenêtre émission paquets système.
var découverte_txpos //Position Fenêtre émission paquets découverte.

var temps = 0 //Compteur de cycles d'horloge.


var paquet //Variable temporaire, dernier paquet reçu.

3.4.2.3 Boucle principale


Ci dessous est présentée la boucle principale. Chaque itération de boucle cor-
respond à un tour synchrone.
La boucle principale appelle dans cet ordre le processus de synchronisation,
puis le processus système et enfin le processus de découverte.

//Boucle principale

function MeeMSyP()
{
écouter_canal_synchro(salve_rx)

mise_à_jour() //Le compteur temps est réinitialisé ici.

émettre_impulsion_synchro(salve_tx)

écouter_canal_système(système_txpos)
émettre_données_système(système_tx)
écouter_canal_système(système_rxtx - système_txpos)

écouter_canal_découverte(découverte_txpos)
émettre_canal_découverte(découverte_tx)
écouter_canal_découverte(découverte_rxtx - découverte_txpos)

attendre(periode)
}

3.4.2.4 Attente
Ci-dessous est présenté la routine d’attente basse consommation.

//Sous-Routines

function attendre(échéance)

72
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

{
while(temps < échéance)
{
mode_basse_conso() //Spécifique au µC, attente d'interruptions.
}
}

3.4.2.5 Mise à jour


Ci-dessous est présentée la fonction de transition du noeud mettant à jour
l’état interne constitué de plusieurs compteurs.

//Mise à jour de l'état du noeud:


function mise_à_jour()
{
temps.reinitialiser()
stabilité++
filAriane++

if(saut > 0) //Si un saut est programmé, faire progresser le décompte:


saut++

if(saut > delaisAvantSaut) //Si un saut arrive à échéance, sauter:


sauter()

if(filAriane > filArianeMax) //Si le fil d'Ariane est brisé:


{
//Alors le noeud deviendra sa propre racine dans quelques tours:
préparer_saut(identiant, 0, 0)
}

//Tirage aléatoire pour limiter les collisions entre émissions:


système_txpos = aléatoire(0,système_rxtx - système_tx)
découverte_txpos = aléatoire(0,découverte_rxtx - découverte_tx)

//Si le réseau est stable, et si le noeud n'est


//pas éclaireur au tour courant inhiber la découverte:
if(stabilité > stabilitéMax && aléatoire(0,1) > chanceEclaireur)
inhiberDécouverte = 1
else
inhiberDécouverte = 0
}

73
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

3.4.2.6 Canal synchronisation


function écouter_canal_synchro(durée)
{
canal_synchro_rx() //Paramètre la radio pour le canal synchro

//Si une impulsion est reçue, terminer l'attente prématurément (recalage),


//Sinon, attendre la fin de la fenêtre d'écoute:
while(temps < durée)
{
attendre_interruption() //Met l'µC en pause, l'exécution reprend
//lorsqu'une interruption est levée (radio ou compteur).

if(impulsion_reçue())
return
else
continue
}
}

3.4.2.7 Canal système


function écouter_canal_système(durée)
{
var échéance = temps + durée

canal_système_rx() //Paramètre la radio pour le canal système

while(temps < échéance)


{
if(paquet_système_reçu())
{
//Si des nouvelles proviennent de la racine:
if(paquet.compteurRacine > compteurRacine)
{
compteurRacine = paquet.compteurRacine
filAriane = 0 //Lève l'inquiétude
}

//Si un noeud préviens qu'une racine est découverte:


if(paquet.racineDécouverte > racine)
{
//rester à l'affût et vérifier la nouvelle soit même,
// en réactivant la découverte:
stabilité = 0
}

74
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

}
}
}

function émetter_données_système(durée)
{
canal_système_tx() //Paramètre la radio pour le canal système

envoyer(racineDecouverte)
envoyer(compteurRacine)

var échéance = temps + durée


attendre(échéance)
}

3.4.2.8 Canal découverte


function écouter_canal_découverte(durée)
{
var échéance = temps + durée

if(inhiberDécouverte)
{
attendre(échéance)
return
}

canal_decouverte_rx() //Paramètre la radio pour le canal découverte

while(temps < échéance)


{
if(paquet_découverte_reçu())
{
//Si une nouvelle racine est découverte (nouveau réseau)
// ou que le numéro de tour est plus élevé:

if( paquet.racine > racine ||


(paquet.racine != identifiant &&
paquet.racine == racine && paquet.tour > tour))
{
//Transmettre l'information aux voisins direct et préparer
//le saut vers le nouveau réseau:
préparer_saut(paquet.racine, paquet.tour, paquet.temps)
racineDécouverte = paquet.racineDécouverte
}
}

75
3 Synchronisation sans fils de réseaux maillés – 3.4 Protocole MeeMSyP

}
}

function émettre_données_découverte(durée)
{
canal_decouverte_tx() //Paramètre la radio pour le canal découverte

envoyer(identifiant)
envoyer(racine)
envoyer(tour)
envoyer(temps)

var échéance = temps + durée


attendre(échéance)
}

3.4.2.9 Recalage des phases (Sauts)


//Recale le début du cycle pour qu'il coïncide avec la fenêtre de
// synchronisation du réseau ciblé:
function sauter()
{
tour = nouveauTour
racine = nouvelleRacine
filAriane = 0
stabilité = 0
compteurRacine = 0
saut = -1

attendre(nouveauDécalage)
temps = 0
}

function preparer_saut(racine, tour, tempsCible)


{
nouvelleRacine = racine
nouveauTour = 1 + tour + délaisAvantSaut
saut = 0

//Déphasage entre le cycle du noeud et la cible:


var décalage = periode -(temps - tempsCible)

//Si le décalage est supérieur à la période:


if(décalage >= période)
{
//Effectuer le saut un cycle plus tôt

76
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

//pour garder la cohérence des numéros de tours:


décalage = décalage - période
nouveauTour--
}

nouveauDécalage = décalage
}

3.5 Consommation énergétique


Dans la section précédente, nous avons décrit le fonctionnement de MeeMSyP,
un protocole minimaliste permettant l’exécution d’applications distribuées syn-
chrones sur un réseau de nœuds sans fil, tout en minimisant la consommation
énergétique de chaque participant.
Dans cette section, nous allons analyser cette consommation énergétique en
détail et calculer concrètement les valeurs de courant qu’il est possible d’at-
teindre en pratique avec des systèmes radio facilement trouvables dans le com-
merce, basé sur le microcontrôleur Nordic nRF52832.
Pour cela, nous allons d’abord passer en revue les principaux postes consom-
mateurs d’énergie au sein du nRF52832 et récupérer pour chacun les valeurs
des courants en mA ainsi que les durées nécessaires à l’allumage/extinction de
chaque poste. Ensuite, nous déterminerons les différents paramètres qui influent
sur la consommation énergétique, notamment la proportion des fenêtres d’émis-
sions et de réceptions par rapport à la durée de la période. Enfin, nous propo-
serons un jeu de paramètres que nous jugeons être un bon compromis entre
latence, débit, robustesse et consommation énergétique et nous étudierons l’au-
tonomie que cela permet dans un système comportant un panneau solaire photo-
voltaïque et un super-condensateur.
En entrant progressivement dans les détails techniques concernant la réparti-
tion du temps d’utilisation de l’antenne, nous parlerons en milliampères, milliampères-
heure ainsi qu’en microsecondes. Avant cela, il est utile de préciser deux points :
nous sommes conscients qu’il est erroné de désigner une quantité d’énergie en
mAh puisque l’Ampère est une unité de courant et non de puissance, il faudrait
parler en mWh, cependant, dans notre contexte, il est usuel de faire le raccourci
entre mW et mA, car la plage que prend la tension d’alimentation est restreinte
et connue, entre 2V et 3V. De plus, le courant consommé n’augmente pas avec
la diminution de la tension. Autre point, tous les chiffres présentés dans cette
section sont des estimations pessimistes basées sur des données réelles prove-
nant de documentations techniques, principalement celle du microcontrôleur
Nordic nrf52832 (N ORDIC -S EMICONDUCTOR 2017). Une installation réelle aura
une consommation énergétique inférieure aux résultats présentés ci-après.

77
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

3.5.1 Écouter consomme autant qu’émettre

Action Consommation
Radio Activée Rx/Tx (en permanence) ∼10mA
Radio Activée Bas rapport cyclique ( 1000
1
) ∼10µA (en moyenne)
µC en mode basse consommation (calculs rares) <10µA (en moyenne)
Réveil du crystal HF ∼0.4mA

Table 3.1 – Courants consommés par les principales actions et modes énergivores.

Le premier poste de consommation énergétique d’un nœud sans fil est l’émet-
teur -récepteur radio. Sur un microcontrôleur typique équipé d’un émetteur-
récepteur superhétérodyne 2.4Ghz comme le Nordic nRF52832, toute utilisation
de l’antenne, pour émettre ou recevoir, consomme en permanence dans l’ordre
de 10mA (milliampères). En effet, un récepteur superhétérodyne fonctionne en
mélangeant deux signaux haute fréquences, ici @2.4GHz, pour obtenir un signal
avec une fréquence plus faible capable d’être traité par le système lui même fonc-
tionnant à plus basse fréquence (ici @16Mhz). Or, en technologie CMOS, chaque
transition logique consomme, ainsi la consommation de l’oscillateur générant le
signal haute fréquence domine de la consommation énergétique du module ra-
dio, autant en réception qu’en émission.
À titre d’exemple, considérons une pile bouton CR2032, source d’énergie cou-
ramment utilisée pour de tels nœuds en raison de sa petite taille et de sa tension
directement utilisable par la plupart des microcontrôleurs. Une pile CR2032 peut
délivrer au maximum dans l’ordre de 200mAh. Si les nœuds utilisent leur antenne
en permanence, ils ne pourraient fonctionner que 20 heures avant d’être à court
d’énergie.
Sans utiliser la radio et en fonctionnant en mode économie d’énergie, c’est-à-
dire en ne faisant des calculs que très rarement, la consommation peut facilement
descendre en dessous des 10µA, soit plus de 2 années d’autonomie. Il faut donc
utiliser l’antenne avec modération, en limitant autant que possible les durées
d’émission ainsi que les durées de réception. Notre objectif est de faire tenir
cette batterie plusieurs années tout en gardant un réseau réactif.
À noter qu’il existe des récepteurs entièrement passifs, en l’occurrence, les
premières radios AM à galène fonctionnaient sans alimentation externe, en uti-
lisant l’énergie des signaux reçu. Cependant, les microcontrôleurs équipés de
récepteurs capable de surveiller les ondes en permanence sans consommer sont
encore rares et chers.

78
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

Action Durée
Allumage Tx 40µs
Extinction Tx 6µs
Allumage Rx 40µs
Extinction Rx 0µs
Transmission Entête (CRC 3 octets + ID 4 octets) 28µs
Transmission d’un octet 4µs
Réveil de l’oscillateur HF 360µs

Table 3.2 – Délais introduits par le module radio (datasheet constructeur


nRF52832 (Nordic-Semiconductor 2017))

3.5.2 Délais relatifs à l’utilisation de l’antenne


Sur le microcontrôleur nrf52832, la durée minimale d’une émission est de 46µs.
Ce laps de temps correspond uniquement aux délais nécessaires à l’allumage (40
µs) ainsi qu’à l’extinction du module radio (6 µs). Seul un signal monotone, la
porteuse, sera émis pendant ce laps de temps. La seule information perceptible
par les voisins sera la simple présence d’un signal, attestée par l’augmentation
de la valeur RSSI, l’indicateur de puissance de signal.
Lorsque l’on rajoute de l’information, il faut prendre en compte les temps de
transfert : l’émetteur va légèrement altérer la fréquence de la porteuse pour trans-
mettre des bits d’information (modulation de fréquence). Nos modules sont ca-
pables de communiquer à des débits allant jusqu’à 2Mbps, soit un bit transmis
toutes les 0, 5µs, soit 4µs par octet. Pour une question de fiabilité, une transmis-
sion ne peut pas directement contenir des données brutes, car un récepteur ne
peut pas directement faire la différence entre des données émises par un nœud
et un fort bruit électromagnétique ambiant. Ces données sont donc encapsulées
dans un paquet muni d’un en-tête reconnaissable de plusieurs octets, générale-
ment 4. Ainsi, les chances pour que du bruit soit confondu avec des données sont
minces. De plus, pour garantir l’intégrité des données transmises, les paquets
contiennent usuellement une somme de contrôle, dans notre cas, les nrf52832
utilisent des contrôles CRC sur 3 octets.
Lorsque l’on désire transmettre un octet via les ondes, 74µs sont nécessaires
(46+(3+4)·4), et il faut rajouter 4µs par octet supplémentaire. Lorsque l’on désire
activer l’antenne en réception, 40µs sont nécessaires avant de pouvoir recevoir
des paquets. Contrairement à l’émission, quitter la réception n’introduit pas de
délais supplémentaires.

79
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

3.5.3 Rapport cyclique : utiliser l’antenne avec parcimonie


Avec MeeMSyP, comme dans la plupart des protocoles radio, les nœuds ne
communiquent pas en continu, mais périodiquement. De plus, les nœuds se co-
ordonnent localement pour émettre et écouter sur une même plage temporelle.
Dit autrement, les nœuds se donnent périodiquement rendez-vous à une date
précise pour écouter ce que chacun a à dire, puis le voisinage se rendort pour
économiser l’énergie. La consommation énergétique correspond donc majoritai-
rement à la durée d’utilisation de l’antenne par rapport à la période d’un cycle
synchrone.
Pour atteindre notre objectif de faire durer la batterie CR2032 sur 1 an, ce
rapport cyclique doit être petit, la consommation moyenne de la radio doit se
confondre avec la consommation moyenne du processeur en mode basse énergie.
1
Si le rapport cyclique est de 1000 , alors la consommation de la radio passe de
10mA en utilisation continue, à 10µA, ce qui, en comptant la consommation du
processeur en mode économie d’énergie (< 10µA), permettrait de tenir 1 an tout
en restant pessimiste. Maintenant que nous avons fixé un rapport cyclique, il
nous faut définir une taille de période.

3.5.4 Période : une seconde pour rester réactif


Comme période, nous nous sommes arrêtés sur la valeur d’une seconde, et
ce, pour plusieurs raisons qui deviendront limpides en analysant, et en essayant
de satisfaire au mieux, les différentes contraintes de temps et d’énergie. Ainsi,
examinons tout d’abord le comportement du réseau si la période utilisée pour le
protocole est effectivement d’une seconde.
Avec une période d’une seconde, en considérant le rapport cyclique précédem-
1
ment décidé de 1000 , cela donne aux nœuds une milliseconde pour effectuer
toutes les communications. Avec MeeMSyP, les nœuds émettent 3 fois par cycles,
une fois pour chaque canal : canal de synchronisation, canal de découverte, canal
système.

3.5.5 Répartition du temps d’antenne par canal


Canal synchronisation Sur le canal de synchronisation, les nœuds émettent
simplement une salve dont les spectateurs (nœuds receveurs) en examineront la
force, l’amplitude via l’indicateur RSSI. Comme il n’y a pas de données à trans-
mettre, cela requiert uniquement 46µs passées en émission. De même, pour écou-
ter une telle salve, il faut rajouter au minimum 40µs pour une seule lecture de
l’indicateur RSSI. De plus, la fenêtre de réception de la salve de synchronisation
doit être suffisamment grande pour écouter et pouvoir se rendre compte qu’un
voisin commence le tour en avance et ainsi recaler le début du cycle. Si cela ar-
rive, cela signifie que le nœud est en retard, il doit alors compenser ce retard en

80
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

Synchro Système Découverte


(0 octets) (8 octets) (8 octets)
Emission Tx 46µs 102µs 102µs
Reception Rx 70µs 418µs 140µs (en moyenne)
Rx + Tx 116µs 600µs 242µs (en moyenne)

Table 3.3 – Durées d’utilisation de la radio pour chaque canal. (datasheet construc-
teur nRF52832 (Nordic-Semiconductor 2017))

arrêtant l’écoute et en commençant le tour immédiatement.


Supposons un écart de vitesse maximal entre deux nœuds de 30ppm 4 , ce qui
correspond, avec une marge de sécurité, à l’écart maximal de fréquence typique
entre deux oscillateurs à quartz provenant d’une même série (JAMES M URDOCK
2015). Ainsi, si un nœud a une période d’exactement une seconde, un nœud
peut au maximum prendre 30µs de retard. La fenêtre de synchronisation doit
alors être rallongée de 30µs pour tenir compte de ce retard hypothétique. Nous
allouons donc 116µs de temps d’antenne (46 + 40 + 30) pour le canal de synchro-
nisation.

Canal de découverte Sur le canal de découverte, les nœuds viennent émettre


leurs identités pour aiguiller les nouveaux arrivants dans le réseau, renseigner
un nœud déjà dans le réseau mais ayant des doutes (rumeur de nouvelle racine)
ou alors informer un nœud parti spontanément en reconnaissance, en quête d’un
nouveau réseau à rejoindre (réseau avec un identifiant plus élevé).
MeeMSyP nécessite que les nœuds émettent les variables suivantes : L’iden-
tifiant du réseau (nœud racine, sur 16 bits), le numéro de tour (sur 16 bits)
ainsi que la durée avant le prochain tour (en microsecondes, sur 32 bits). Les
nœuds émettent donc 8 octets, ce qui porte la durée totale de l’émission à 102 µs
(70 + 8 × 4). (Rappelons qu’un paquet de données contient nécessairement un
en-tête ainsi qu’une somme de contrôle CRC.)
Concernant la réception, lorsqu’un nœud n’utilise pas l’antenne pour d’autres
canaux, le nœud écoute le canal de découverte, mais uniquement si le réseau
n’est pas stable. Ainsi, les nœuds vont perdre beaucoup d’énergie, mais unique-
ment au démarrage du réseau. Le reste du temps, les nœuds vont, par curiosité,
écouter le canal de découverte avec une faible probabilité.
1
Nous fixons cette probabilité à 7200 , comme cela, les nœuds effectueront en
moyenne une reconnaissance toutes les deux heures. Ainsi, l’utilisation moyenne
de l’antenne en réception par le canal de découverte est de 140µs. Ainsi au total,
242µs de temps d’antenne sont allouées au canal de découverte, ce qui laisse

4. Parties par millions

81
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

642µs pour le canal système (1000 − 242 − 116).

Canal système Sur le canal système, les nœuds voisins commencent par écou-
ter, puis chacun passe en émission suivant un tirage aléatoire avant de se re-
mettre en écoute. Si les fenêtres d’émission de deux nœuds s’intersectent, alors
c’est le signal le plus fort du point de vue du récepteur qui aura le pas sur le
plus faible, occasionnant une collision. Il convient alors d’allouer une fenêtre de
réception suffisamment grande pour que les nœuds puissent partager de l’infor-
mation utile sans se gêner mutuellement.
Avec MeeMSyP, les nœuds doivent échanger les informations suivantes : un
bit permettant à un nœud de signaler qu’il a découvert une nouvelle racine 5 ,
un compteur (16 bits) pour le "fil d’Ariane", garant de la connexité du réseau.
Notons qu’à raison d’au maximum une incrémentation par période, c’est-à-dire
une incrémentation par seconde, le compteur ne débordera qu’après plusieurs
années, une fois le réseau déjà obsolète. À noter qu’il serait également possible
de compter de manière circulaire pour éviter le débordement, c’est un compro-
mis à faire entre robustesse et simplicité d’implémentation. Nous réservons aussi
quelques octets pour les communications de l’application distribuée utilisateur,
comptons alors 8 octets, l’émission système utilise alors l’antenne pendant 102µs,
tout comme pour l’émission sur le canal de découverte.
Sur une fenêtre de 600 µs, les nœuds émettront pendant 102µs et seront donc
à l’écoute pendant 418 µs (600 − 102 − 40 − 40). Pour un réseau de faible degré
max (3 à 4) cela permet d’échanger sans trop de collisions. Nous détaillerons les
probabilités dans la section concernant la robustesse du protocole 3.6.

3.5.6 Mode économie d’énergie : Un réveil difficile


Nous avons déjà évoqué les deux grands postes énergivores que sont l’utili-
sation du module radio ainsi que le fait de garder le microcontrôleur en veille.
Nous avons déjà limité le temps d’utilisation de l’antenne et nous endormons le
processeur le plus rapidement possible après la fin des transmissions radio, pour
descendre la consommation en dessous de 10µA.
Il reste un dernier poste consommant de l’énergie de manière significative, le
réveil. Pour limiter la consommation énergétique tout en conservant une réfé-
rence de temps précise, les nœuds sans fil sont en général, et c’est le cas du
nRF52832, équipés de deux oscillateurs à quartz : Le quartz principal, énergi-
vore car cadencé à une haute fréquence (16Mhz), il est nécessaire à la génération
des signaux radio. Le quartz auxiliaire, plus lent (32, 768kHz), est là pour garder
l’heure quand le processeur est en veille (Oscillateur RTC).
Lorsque le système passe en mode basse consommation, il éteint le quartz
haute fréquence. Le quartz basse fréquence reste quant à lui toujours allumé.

5. Variable "racineDécouverte" dans le pseudo code

82
3 Synchronisation sans fils de réseaux maillés – 3.5 Consommation énergétique

Lorsque le système se réveille, il doit rallumer le quartz haute fréquence avant


d’utiliser la radio, or, ce réveil prend du temps et la consommation y est plus
importante. Réveiller le quartz HF prend, d’après la documentation technique
du nrf52832, 0, 36ms, soit 360µs pendant lesquelles le système consomme 0, 4mA
supplémentaires, ce qui, au niveau de la consommation, est équivalent à laisser
allumée la radio pendant 14, 4µs. En allouant 600µs de temps d’antenne au canal
système, il nous reste en énergie l’équivalent de 42 µs d’utilisation d’antenne
(> 10mA).

3.5.7 Conclusion

Paramètre valeur unité


Période 1 s
Probabilité Éclaireur 1
7200
ratio
Rapport cyclique 1
1000
ratio
Énergie disponible 200 mAh
Max Émissions système simultanées (degré du graphe) 4
Charge utile paquets système 8 octets
Charge utile paquets découverte 8 octets

Table 3.4 – Proposition de jeu de paramètres.

En utilisant la radio uniquement une milliseconde toutes les secondes, et en


gardant le système en veille le reste du temps, la consommation électrique de
nos systèmes à base de microcontrôleurs nrf52832 descend en dessous des 20µA
lorsque le réseau est stable (nœuds synchronisés, pas de perte de lien, nombre
limité de collisions de paquets).
Une milliseconde correspond à la durée minimale requise pour que les nœuds
aient le temps de réaliser les communications nécessaires au protocole, de plus le
1
rapport cyclique de 1000 est le plus petit rapport suffisant permettant d’abaisser la
consommation énergétique moyenne de la radio au même niveau que la veille du
processeur (10µA). Une telle configuration, à condition qu’elle soit stable (sans
déconnexions intempestives), permet à un réseau sans fil de tenir en théorie plus
d’une année sur une simple pile bouton CR2032.
Dans le chapitre suivant, nous aborderons la question de la robustesse et vé-
rifierons que le réseau converge et reste dans une configuration stable basse
consommation.
Nous finirons ensuite cette grande partie sur la synchronisation sans fil avec
une ouverture sur les différents moyens d’alimenter de tels nœuds autres que la

83
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

pile CR2032, notamment l’utilisation de panneaux solaires et de super-condensateurs


dans une optique récolte d’énergie.

3.6 Stabilité, robustesse et scalabilité


Dans les sections précédentes, nous avons proposé un jeu de paramètres qui
permet au réseau de fonctionner en continu tout en ayant une consommation
moyenne de 20µA par nœud. Cette consommation moyenne s’obtient une fois
le réseau stable, c’est-à-dire une fois que le nœud arrête d’écouter activement le
canal de découverte. De plus, on suppose qu’il n’y aura pas d’avarie provoquant
la réactivation de cette écoute (perte de la racine courante, ou découverte d’une
nouvelle racine). Dans cette section, nous allons nous intéresser aux probabilités
que de tels évènements arrivent. De plus, nous étudierons le temps de conver-
gence du réseau dans un état stable en fonction du diamètre de celui-ci.

3.6.1 Synchronisation : interférences destructives


Avant le début de chaque cycle synchrone, les nœuds écoutent puis émettent
une salve de synchronisation. Ces transmissions se font toujours sur le même
canal (même fréquence) et presque en même temps, il peut donc y avoir une
interférence causant une atténuation du signal perçu si des nœuds émettent
leurs salves sinusoïdales en opposition de phase. Nous allons ici voir comment
se créent et se comportent de telles interférences.
Chaque signal émis depuis une source peut être représenté comme une sinu-
soïde avec une phase et une amplitude.
Plus on s’éloigne de la source, plus l’amplitude décroît en fonction du carré de
la distance. Deux récepteurs à distances respectives d1 et d2 de la source observe-
ront le même signal, mais avec un déphasage proportionnel à l’écart de distance
d1 − d2 . Si deux nœuds émettent en même temps, alors le signal reçu par un
troisième nœud est simplement la somme des deux signaux. Le signal perçu est
alors d’intensité maximale si les signaux provenant des nœuds sources arrivent
en phase à l’antenne du nœud récepteur. Si les deux signaux parviennent en op-
position de phase au récepteur et que les deux signaux sont de même intensité,
alors la somme s’annule, et on parle d’interférence destructive, l’information de
synchronisation est alors perdue.
En pratique, ces interférences ne sont pas problématiques, car les chances d’ob-
tenir de telles interférences destructives sont quasi nulles. Illustrons cela sur un
premier exemple avec deux nœuds, nous étudierons ensuite le comportement
général pour n nœuds.
Considérons deux noeuds émetteurs et un noeud récepteur. Le noeud récep-
teur reçoit le signal somme des deux émissions (sinusoïdes). L’amplitude du si-
gnal reçu est nulle si et seulement si les deux émissions parviennent au récepteur

84
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

en opposition de phase. Si la somme n’est pas parfaitement symétrique, c’est-à-


dire si l’un des signaux est perçu plus fort que l’autre ou si le déphasage n’est pas
exactement égal à 90°, alors le signal reçu sera seulement atténué et non détruit.
De plus, les fréquences des nœuds étant légèrement différentes, le déphasage
entre les deux signaux sources évolue dans le temps, et, bien que ce changement
soit lent, dès que le déphasage quitte le point exact où les signaux sont en op-
position de phase à 90°, l’atténuation diminue fortement et le signal redevient
perceptible.
Considérons maintenant le cas de n + 1 nœuds émetteurs et d’un nœud ré-
cepteur. L’addition des signaux provenant des n premiers émetteurs parvient au
récepteur sous la forme d’un signal sinusoïdal d’une certaine amplitude fonction
des phases des différentes composantes. En effet, la somme de fonctions sinu-
soïdes de même fréquence donne une fonction sinusoïde de même fréquence :
A1 sin(t + φ1 ) + A2 sin(t + φ2 ) = A3 sin(t + φ3 ) (P UCKETTE 2005). En fonction
de la valeur de son déphasage, le signal du dernier émetteur vient renforcer ou
détériorer le signal somme. Ces deux actions étant équiprobable, nous pouvons
en déduire la borne inférieure suivante : Tout récepteur reçoit une impulsion de
synchronisation non détériorée avec une probabilité d’au moins 12 .

3.6.2 Distinguer la salve de synchronisation du bruit ambiant


Lorsque les nœuds émettent la salve de synchronisation, ils émettent un simple
signal sinusoïdal, non modulé, sans données, sans en-tête d’identification. Ainsi,
les récepteurs sont uniquement capables de connaître la puissance reçue sur
l’antenne via le RSSI, mais ils ne sont pas capables d’identifier la source du signal.
Ils ne savent pas si le signal reçu provient d’un nœud proche ou lointain, ou si
l’émetteur est bien un appareil faisant partie du réseau. Un nœud peut même
confondre le bruit radio ambiant avec un signal.
Pour éviter une telle confusion, lorsque les nœuds démarrent l’écoute, ils me-
surent d’abord le niveau du signal reçu. Les noeuds considéreront avoir reçu la
salve de synchronisation uniquement si le niveau du signal varie significative-
ment pendant la réception (détection de fronts). De cette manière, confondre le
bruit avec une transmission devient peu probable.

85
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

3.6.3 Sécurité et robustesse vis-à-vis d’émetteurs étrangers au


réseau

Figure 3.9 – Émissions parasites durant la fenêtre de synchronisation. Les noeuds


ne sont pas capables de tarer la puissance de signal d’une émission
parasite débutant au milieu de la fenêtre.

La plage des 2.4Ghz est ouverte à tous. De nombreux appareils émettent sur
ces fréquences, notre protocole se doit d’être robuste à des émissions tierces.
Tandis que l’intégrité des données sur les canaux de découverte et système est
garantie par des codes CRC, la salve de synchronisation est quant à elle proté-
gée par l’étroitesse de la fenêtre de réception : localement, les nœuds se mettent
implicitement d’accord sur la date des prochaines transmissions de synchronisa-
tion. Les nœuds sont alors à l’écoute quasiment en même temps sur une durée
très courte, nous avons précédemment évoqué une durée de 30µs. Pour que le
signal soit pris en compte, il faut impérativement que l’émission soit initiée dans
cette fenêtre, car les nœuds sont attentifs à la variation de la puissance du signal
reçu.
Les chances pour qu’un appareil étranger au réseau non malicieux en altère
le fonctionnement par erreur sont minces. En effet, si l’appareil commence à
émettre et maintient une émission stable avant que les nœuds n’entrent en écoute,
alors les nœuds auront, comme pour une balance, effectué la tare de ce décalage
dans leurs mesures et l’ignoreront.

3.6.4 Sécurité vis-à-vis d’appareils malicieux


Il est impossible d’endiguer toute attaque de type déni de service, une per-
sonne mal intentionnée peut effectivement simplement venir brouiller les ondes
et rendre impossible toute communication radio. Il est cependant possible de
rendre de telles attaques plus difficiles ainsi que de sécuriser les échanges de
données. Voici quelques pistes.

86
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

En premier lieu, il est possible de chiffrer les paquets des canaux systèmes et
découverte. Les microcontrôleurs nRF52832 disposent d’ailleurs d’une accéléra-
tion matérielle pour le chiffrement AES-128. Si la clé est partagée uniquement
lors du déploiement du réseau, les données échangées sensibles, comme la mise-
à-jour du microgiciel (firmware), resteront secrètes, même si interceptées par un
attaquant.
Pour rendre le protocole plus robuste vis-à-vis de brouilleurs, il est possible
de changer périodiquement les fréquences associées à chaque canal (techniques
usuelles de sauts de canaux) : chaque tour synchrone correspond à une fréquence
différente pour le canal de synchronisation ainsi que le canal système. Ainsi, si
une seule fréquence est brouillée, cela ne peut pas mettre hors service le réseau
existant. Par contre, si le canal de découverte est brouillé, de nouveaux nœuds
ne pourront pas rejoindre le réseau : il n’est pas possible d’utiliser telles quelles
les techniques de sauts de canaux sur le canal de découverte. En effet, les nœuds
de réseaux différents doivent pouvoir se rencontrer, ils doivent donc se présenter
et rechercher aux mêmes endroits (même canal).

3.6.5 Avaries
Collisions de paquets et leurs effets Lorsque deux nœuds émettent des don-
nées sur le même canal en même temps, les signaux émis s’additionnent. Tout
comme pour des conversations vocales, si les signaux émis ont des intensités
différentes, alors un récepteur sera uniquement capable de comprendre les don-
nées du signal le plus fort. Si les signaux sont d’intensités similaires, alors toute
information est perdue.
Avec MeeMSyP, les collisions de paquets sont principalement néfastes lors-
qu’elles arrivent sur le canal système : en cas de collisions répétées, le comp-
teur de tour provenant du nœud racine n’est plus propagé correctement. Sans
nouvelles, les nœuds s’inquiètent et finissent par se déconnecter, pensant que
le chemin vers la racine n’existe plus et donc que le réseau n’est plus connexe.
Pour éviter qu’une seule perte de paquets ne casse le réseau, les nœuds ne com-
mencent à s’inquiéter qu’après un nombre répété de pertes. 6 La valeur choisie
pour ce paramètre est un compromis à faire entre robustesse, consommation et
latence, et est fonction du taux de perte des paquets systèmes. Une valeur trop
petite de ce paramètre induira un réseau instable avec des déconnexions intem-
pestives et une hausse de la consommation : les nœuds croiront perdre le lien
vers la racine. À l’inverse, une valeur trop grande augmentera fortement le temps
de reconstruction du réseau si le graphe implicite des connexions se brise : les
nœuds vont mettre plus de temps à réaliser qu’il n’est plus possible de communi-
quer avec la racine et qu’il faut réactiver la découverte.

6. Ce nombre constitue le paramètre du protocole que nous avons nommé filArianeMax dans
le pseudo code.

87
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

Il convient donc de trouver la plus petite valeur du paramètre filArianeMax


limitant les déconnexions intempestives, dues aux pertes de paquets, à un ni-
veau raisonnable, sans trop altérer la réactivité du réseau. (Paramètre subjectif,
à adapter en fonction des besoins.)

Probabilités de collisions/pertes de paquets Sur le canal système, les nœuds


observent les transmissions sur une fenêtre temporelle de 600µs. Sur cette fe-
nêtre, les nœuds commencent à écouter en même temps, puis choisissent aléa-
toirement de passer en émission avant de finalement revenir en écoute.
Pour minimiser les collisions, les nœuds n’émettent que lorsqu’ils détectent
que le canal est libre, cependant, sur les nRF52832, la transition réception vers
émission prend du temps, 40µs. Pendant ces 40µs où il commute en émission, le
nœud est aveugle. C’est dans ce laps de temps qu’une collision peut subvenir si
un autre nœud commence à émettre. De plus, cela prend 40µs au nœud pour
repasser en réception, ainsi il peut manquer le début d’un paquet si l’émission
d’un voisin commence directement après la fin de la sienne.

Figure 3.10 – Collision lors de la commutation RX vers TX inévitable à cause de


la zone aveugle.

Recevoir au moins un paquet lors d’une collision Lorsqu’une collision sur-


vient, toutes les données ne sont pas nécessairement perdues : Si les signaux
sont d’amplitudes sensiblement différentes, un récepteur recevra sans altération
les données provenant du signal le plus fort.
En pratique deux cas sont à distinguer suivant si le plus fort parle en premier.
Si le signal le plus fort est reçu en premier, alors l’adresse contenue dans l’en-
tête du paquet a été automatiquement décodée et le paquet sera reçu normale-
ment dans son intégralité.
Dans le second cas, le signal le plus faible est reçu en premier et la réception de
l’adresse a déclenché la réception du paquet. Le signal le plus fort vient ensuite
masquer les informations du plus faible. Il est alors techniquement possible (mais
difficile à implémenter) de sauver les données provenant du signal le plus fort :

88
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

on augmente la taille des tampons de réception pour recevoir jusqu’à 2 paquets,


on traite le paquet reçu comme un flux de bits dans lequel on viens rechercher
l’en-tête du deuxième paquet (signal le plus fort). Une fois l’en-tête repérée, il
est possible de réaligner les données en mémoire et de vérifier le CRC.

3.6.6 Simulation

Figure 3.11 – Simulateur : Lien simulateur. Comme pour les autres chapitres, le
simulateur est livré attaché au présent document PDF.

Dans cette section nous analysons qualitativement et empiriquement le com-


portement de MeeMSyP via simulations.

3.6.6.1 fonctionnement du simulateur


Il s’agit d’un simulateur codé en javascript sans dépendances externes, implé-
mentant une simulation à évènements discrets. Les collisions, la dérive des hor-
loges ainsi que la gigue aléatoire sont sont prises en compte.

3.6.6.2 Usage
Le simulateur est constitué de deux volets.

89
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

Volet de droite Le volet de droite contient des disques représentant les noeuds
du réseau et leur arrangement dans la topologie 2D. Le voisinage des noeuds
est établi en fonction d’un seuil de distance : deux noeuds suffisamment proches
à l’écran deviennent voisins. La topologie peut librement être modifiée en dé-
plaçant les noeuds via glisser-déposer et des noeuds peuvent être ajoutés via le
bouton Add node +.
Dans ce volet, la couleur d’un noeud indique l’état dans lequel le noeud se
trouve et sur quel canal il communique. La couleur est rouge pour le canal de
découverte, verte pour le canal système, et bleu pour le canal de synchronisation.
De plus, ces couleurs existent en deux niveaux, niveau clair et niveau foncé. Un
niveau clair signifie que le noeud considéré est en mode réception tandis que
foncé signifie que le noeud est en mode d’émission. Lorsque le noeud est grisé,
cela signifie que le noeud se trouve en mode de basse consommation énergétique
(<10µA). Toute autre couleur signifie que le noeud utilise sa radio en émission
ou en réception, ce qui induit une forte consommation ( 10mA).
L’anneau situé autour de chaque disque indique la position courante, c-à-d la
phase, du noeud dans le cycle. Une valeur claire indique que le noeud est au
début de son cycle. Plus le noeud avance dans le cycle, plus l’anneau devient
foncé. L’anneau peut aussi changer de forme : lorsque la ligne formant l’anneau
passe de continue à discontinue, cela signifie que le noeud s’apprête à se réini-
tialiser et à sauter pour recaler sa phase. Le moment auquel le noeud saute est
matérialisé un court instant avant par une couleur supplémentaire sur le disque,
la couleur violette.

Volet de gauche Le volet de gauche est lui même subdivisé en trois parties.
La première, Current States, décrit plus précisément l’état interne de chaque
noeud. On peut notamment y lire de gauche à droite : l’identifiant du noeud ;
l’identifiant du réseau rejoint (numéro root) ; le numéro de tour courant ; la
valeur d’horloge logique, c’est-à-dire la position estimée du noeud dans le tour
courant, valeur entre 0 et la période (ici 10000) ; le décompte avant le saut (-1
signifie pas de saut planifié) ; le voisinage ; la valeur d’inquiétude (usure du fil
d’Ariane reliant au noeud racine et qui cède une fois passé un certain seuil) ;
Le compteur du nombre de tours avant désactivation de la découverte, et la
consommation instantanée moyenne exprimée sous la forme d’un ratio (1 =
radio tout le temps allumée = 10mA).
La seconde partie, au centre, contrôle la vitesse de la simulation à évènement
discret. Le bouton d’option Nominal Speed permet de changer et de maintenir la
vitesse de simulation à un niveau désiré, tandis que les boutons poussoirs Turbo
et Hyper Turbo permettent un boost momentané pour faire avancer la simulation
à chaque clic.
Enfin, la dernière partie est un journal retraçant précisément la chronologie de
tous les évènements réseaux. Ce journal peut être désactivé pour ne pas ralentir
la simulation.

90
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

Paramètre Valeur
Période 1s
Fenêtre Sync Rx 20ms
Fenêtre Sync Tx 10ms
Fenêtre Système Tx 25ms
Fenêtre Système Rx 200ms
Chances d’être Éclaireur 1/10
Inquiétude Max 20
Compteur désactivation Découverte 5

Table 3.5 – Paramètres par défaut du simulateur MeeMSyP : rapport cyclique


élevé pour une meilleure visualisation

3.6.6.3 Validation qualitative et quantitative du comportement


Par défaut, le simulateur est configuré pour fonctionner avec un grand rapport
cyclique, pour permettre d’apprécier visuellement et de manière fluide les diffé-
rents états pris par les noeuds. En effet, un rapport cyclique plus faible rend la
fenêtre de synchronisation difficilement observable, car n’occupant qu’une faible
fraction de la période. Un tel rapport cyclique élevé impacte certes la consomma-
tion énergétique, mais la simulation reste valide pour évaluer qualitativement
le comportement du protocole et sa robustesse. (Le taux de collision n’est pas
affecté, car les durées d’émission sont aussi ajustées en conséquence.)
Ci-après une série de captures illustrant les principaux aspects du comporte-
ment de MeeMSyP, notamment la convergence du réseau vers un état stable
basse énergie :

91
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

Figure 3.12 – Après 83 périodes (secondes), le processus a convergé et le réseau


est synchronisé. En effet, tous les noeuds sont présents en même
temps sur le canal synchronisation, en émission ou en réception de
la salve.

Figure 3.13 – Juste après la salve de synchronisation, les noeuds passent sur le
canal système. Les collisions sont limitées par le fait que peu de
noeuds sont en émission en même temps (tirage aléatoire, petite
fenêtre d’émission, grande fenêtre de réception).

92
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

Figure 3.14 – Après le passage obligatoire par les canaux de synchro et système, les
noeuds passent éventuellement sur le canal découverte. Ici, puisque
la synchronisation est déjà en place depuis plusieurs tours, rares
sont les noeuds à écouter pendant une période entière le canal de
découverte. Par contre, tous les noeuds émettront un paquet par
tour. (position dans le tour tirée aléatoirement).

93
3 Synchronisation sans fils de réseaux maillés – 3.6 Stabilité, robustesse et
scalabilité

Figure 3.15 – Pour illustrer la reconstruction automatique du réseau, nous intro-


duisons une nouvelle racine, le noeud numéro 22. Sa présence sur le
canal de découverte ainsi que son ID plus élevé pousse les noeuds
voisins à se réinitialiser pour se recaler sur le noeud 22. Le noeud 7
s’est déjà recalé, il entraîne avec lui les noeuds 21 et 18 (anneau
discontinu).

Figure 3.16 – La nouvelle de la présence d’un nouveau réseau se propage, force les
noeuds à réactiver leur découverte. Une fois cette présence attestée
par un noeud, celui-ci prépare son saut, propage la rumeur à ses
voisins puis saute quelques tours plus tard.

94
3 Synchronisation sans fils de réseaux maillés – 3.7 Ouverture : récolte d’énergie
et utilisations

Figure 3.17 – Après 57 périodes (secondes), le réseau est entièrement restructuré


autour du noeud 22, et les noeuds peuvent repasser en mode basse
consommation.

3.7 Ouverture : récolte d’énergie et utilisations


Nous avons vu précédemment que MeeMSyP permet de tenir actif les nœuds
d’un réseau pendant plus d’une année en utilisant de simples piles boutons
CR2032 (capacité d’environs 200mAh). S’il est bien sûr possible d’avoir recours à
des batteries de plus grande capacité pour tenir plus longtemps, la faible consom-
mation permise par MeeMSyP rend le système compatible avec des solutions de
récolte d’énergie.
Nous allons ici discuter de la faisabilité d’utiliser notre protocole avec une
source d’énergie solaire photovoltaïque, autant en intérieur qu’en extérieur, et
en détaillant les chiffres.

3.7.1 Énergie moyenne récoltée par un panneau photovoltaïque


À l’échelle de la consommation énergétique de nos nœuds sans-fil, le soleil,
lorsque sa lumière est présente, fournit une source d’énergie virtuellement illi-
mitée : même sur une petite surface et avec un mauvais angle incident, un
panneau solaire de 10cm2 délivre aisément dans l’ordre des dizaines de mil-
liampères (pour une tension d’alimentation de 3V), largement assez d’énergie
pour que les nœuds puissent rester actifs en permanence sans passer en veille.
On pourra donc en profiter pour augmenter le temps d’utilisation de l’antenne
tout en diminuant la période pour fluidifier et accélérer le trafic sur le réseau

95
3 Synchronisation sans fils de réseaux maillés – 3.7 Ouverture : récolte d’énergie
et utilisations

(meilleure latence, meilleurs débits). À titre d’exemple, on peut trouver dans le


commerce, pour une trentaine de centimes d’euros, des panneaux solaires à cel-
lules polycristallines de taille 5.7 par 2.8 centimètres donnés pour fournir 40mA
à 5.5V.
Dans un environnement soumis majoritairement à la lumière artificielle prove-
nant d’un éclairage basse consommation (LED, tubes néons), un panneau solaire
silicium amorphe, par exemple le Amorton AM-1816 de Panasonic (PANASONIC
2018), de taille 96.7 × 56.7 centimètres est donné pour fournir continuellement
21µA à 2.6V dans de très faibles conditions de luminosité (50 lux tubes fluo-
rescents, ce qui correspond à un éclairage public de nuit), et 84µA dans des
conditions d’illumination décentes (200 lux tubes fluorescents, ce qui correspond
à l’éclairage moyen dans un bureau) (PANASONIC 2018). Dans le premier cas
de faible production, s’il n’y a pas de coupure dans l’éclairage (faible éclairage
public la nuit par exemple), les 21µA récoltés en continu par noeud dans l’envi-
ronnement permettent à eux seuls d’assurer la pérennité du réseau.
En extérieur, hors de tout éclairage public, ou, dans le cas d’un éclairage de
bureau sans fenêtres, se pose le problème de la nuit : en l’absence de lumière,
le réseau doit accumuler suffisamment d’énergie pour passer la nuit sans inter-
rompre le service.

3.7.2 Récolte et stockage de l’énergie pour passer la nuit


Le problème principal associé à la récolte d’énergie est celui du stockage de
l’excédent.
Supposons que les nœuds doivent pouvoir tenir 24 heures sans éclairage. Pour
une consommation moyenne de 20µA, Il faut donc récolter 480µAh. En extérieur
ce n’est pas un problème, à l’échelle de nos nœuds, les rayons du soleil sont une
source d’énergie sans limite, même si il y a quelques nuages. En intérieur, lorsque
l’éclairage artificiel est allumé, ce dernier fournit un excédent de 64 µA (exemple
concret du panneau solaire AM-1816). L’énergie requise pour tenir une nuit est
récoltée en 7, 5 heures.
Pour ce qui est du stockage, un super-condensateur d’au moins 3F est suffisant,
par exemple le BCAP0003 P270 S01 de Nesscap (N ESSCAP-U LTRACAPACITORS
2017) dont la durée de vie en utilisation (diminution significative de ses caracté-
ristiques) est de 10 ans et dont le courant de fuite est inférieur à 5µA 7 .
L’avantage d’un super-condensateur par rapport à une batterie est le nombre
de cycles charge-décharge : là ou une batterie rechargeable lithium (une LIR2032
par exemple, le pendant rechargeable de la CR2032) ne peut garantir qu’aux
alentours de 500 cycles en général, un super-condensateur comme le BCAP0003
P270 S01 peut supporter 500k cycles. Pour notre utilisation où chaque jour
compte comme un cycle, le super-condensateur est une solution plus pérenne.
7. Note : en fonction du modèle choisi, les courants de fuite du super-condensateurs peuvent
être importants, jusqu’à plus de 20µA.

96
3 Synchronisation sans fils de réseaux maillés – 3.8 Conclusion

3.7.3 Exploiter le surplus d’énergie


Nous avons précédemment établi une configuration (rapport cyclique, période,
etc.) permettant à notre protocole de fonctionner sur nos modules nrf52832 avec
une consommation limitée à 20µA, permettant de tenir plus d’une année sur
une batterie CR2032. Dans le cas d’une récolte d’énergie solaire, en extérieur
par exemple, nous avons un excédent d’énergie que nous pouvons utiliser afin
d’améliorer la latence et le débit dans le réseau. Voici quelques pistes pour utiliser
au mieux ce surplus.
En premier lieu, les nœuds disposant d’un excédent peuvent augmenter leur
probabilité de devenir éclaireurs, voire maintenir en permanence l’écoute sur le
canal de découverte, cela accélérera la fusion de deux réseaux aux identifiants
différents ainsi que la reconstruction du réseau en cas de perte de lien vers la
racine (dans une moindre mesure). Ensuite, l’application distribuée synchrone,
qui s’exécute dans une couche logicielle au-dessus du protocole, peut utiliser
l’antenne plus longtemps et en profiter pour communiquer, sur un canal libre, des
paquets plus longs en rognant sur le temps alloué au processus de découverte.
Enfin, si les nœuds disposent tous d’un surplus d’énergie à certains horaires,
quand le soleil est au zénith par exemple, il est concevable de réduire la période à
ces horaires. La diminution de la période augmente le ratio du temps d’utilisation
de l’antenne, ce qui augmente proportionnellement la consommation, mais cela
n’est pas un problème grâce au surplus d’énergie. En contre partie, la diminution
de la durée de la période réduit la latence, le réseau tourne ainsi plus vite, ce
qui accélère aussi la convergence vers un état stable lorsque le réseau subit une
avarie.

3.8 Conclusion
Dans ce chapitre nous avons introduit MeeMSyP, un protocole intuitif, mini-
maliste mais complet tenant sur 300 lignes de pseudo code, permettant d’implé-
menter un réseau maillé scalable de nœuds à faible consommation énergie. Ce
protocole adapte Goose Sync, notre algorithme de synchronisation filaire 2, aux
réseaux maillés sans-fils en y ajoutant les mécanismes nécessaires pour pallier
les défauts des communications sans fils. MeeMSyP apporte notamment un ca-
nal de découverte ainsi qu’une fenêtre pour des communications système. Ces
mécanismes permettent de garantir la connexité du réseau, sa reconstruction
rapide, ainsi que l’échange d’octets d’informations pour l’application utilisateur.
MeeMSyP se distingue d’autres protocoles et standards existants destinés à
l’industrie comme l’IEEE 802.15.4e et ses dérivés par son minimalisme, sa sim-
plicité d’implémentation, et sa compatibilité avec de grandes topologies entiè-
rement maillées. Il n’a cependant pas encore été éprouvé en conditions réelles,
uniquement sur simulations. Il établit une couche légère permettant l’exécution
d’applications synchrones au tour par tour avec une période d’une seconde. Les

97
3 Synchronisation sans fils de réseaux maillés – 3.8 Conclusion

applications disposent d’un tampon de 8 octets que MeeMSyP partagera automa-


tiquement avec les nœuds voisins. Pendant le reste de la période, l’application
utilisateur dispose librement du temps d’antenne. Un exemple d’utilisation serait
de créer une chaîne de communication entre deux nœuds distants et de trans-
mettre de l’information à pleine vitesse en utilisant temporairement les nœuds
le long du chemin comme relais.
Maintenant que nous disposons d’un moyen de structurer un réseau de nœuds
sans fils à bas coût, nous verrons, dans le chapitre suivant, une technique, dans la
continuité de nos travaux sur la synchronisation, permettant aux nœuds de mesu-
rer des distances dans la topologie du réseau sans utiliser de capteurs externes.
Pour cela nous détournerons les modules radio de leur utilisation première et
nous exploiterons le décalage progressif des horloges.

98
4 Mesure de délais inférieurs au
cycle d’horloge et mesure de
distances
La mesure de délais entre deux évènements est un moyen primaire pour un mi-
crocontrôleur de percevoir l’environnement physique qui l’entoure. Par exemple,
mesurer le temps de charge d’un condensateur entre deux seuils peut permettre
à un microcontrôleur de détecter un appui sur un capteur capacitif. Aussi, mesu-
rer la durée entre l’émission d’une onde ultrasonore et la perception de son écho
permet de calculer la distance à laquelle se trouve l’obstacle le plus proche.
Certaines applications nécessitent la mesure de délais très courts. Mesurer le
temps de propagation d’un signal lumineux ou d’une onde électromagnétique
sur une courte distance, par exemple pour géolocaliser les noeuds d’un réseau
en intérieur, requiert une résolution fine de l’ordre de la nanoseconde. Or, de
tels délais sont inférieurs à la période des cycles d’horloges de la plupart des
microcontrôleurs, qui, cadencés à une fréquence inférieure à 100MHz, ont une
période qui se situe dans l’ordre de la dizaine de nanosecondes. C’est pour cette
raison que les applications de mesure de distances via l’observation du délai de
propagation requièrent généralement la présence d’un circuit auxiliaire dédié
travaillant à des fréquences plus élevées, ce qui entraîne nécessairement une
augmentation du coût du système.
Après avoir introduit les bases de la mesure de délais et abordés les techniques
existantes pour la mesure de délais courts et de délais longs, nous décrivons dans
ce chapitre deux méthodes théoriques, nommées respectivement mesure de temps
de réponse et mesure de temps de vol, permettant de s’affranchir de circuits auxi-
liaires pour la mesure de délais courts. Ces méthodes on fait l’objet d’une décla-
ration d’invention auprès de la SATT sud-est (N IEBERT et B ÉRENGER 2018). Ces
deux méthodes exploitent la dérive relative des horloges de deux microcontrô-
leurs d’une même série pour mesurer des délais avec une résolution plus fine que
la période du cycle d’horloge. Après avoir décrit le principe de fonctionnement,
nous confrontons ces deux techniques à la réalité physique au travers de deux
dispositifs expérimentaux, mesurant respectivement le délai de propagation de
faisceaux infrarouges ainsi que le délai de propagation de micro-ondes 2.4Ghz.
Nous discuterons de l’impact important de la chaîne de traitement analogique,
c’est-à-dire l’ensemble des composants qui réalisent en amont le pré-traitement
du signal (filtrage, amplification, discrétisation). Nous verrons que celle-ci intro-

99
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.1 Bases
de la mesure de délais sur microcontrôleurs

Vitesses Err. relative


Médium
MCU @16MHz d= 10m
Son 343 m/s 21.44 µm/cycle 46647 cycles/m 1.5 · 10−6
Lumière 300 000 km/s 18.75 m/cycle 0.053 cycles/m 89%

Table 4.1 – Récapitulatif des vitesses des ondes et erreurs relatives de mesure.
(µC @16MHz)

duit en pratique des latences fonctions de nombreux paramètres environnemen-


taux (température, puissance du signal en entrée, tension d’alimentation) et qu’il
est nécessaire de les prendre en compte pour obtenir une mesure précise.

4.1 Bases de la mesure de délais sur


microcontrôleurs
Comme nous l’avons vu dans le chapitre introductif 1.4, un microcontrôleur
perçoit le temps de manière précise grâce aux oscillations mécaniques sinusoï-
dales très régulières d’un diapason de quartz. De ces oscillations, le microcontrô-
leur dérive un signal carré dont les fronts, montants ou descendants, servent à
cadencer l’exécution des instructions du processeur, ainsi qu’à donner le rythme
pour les modules périphériques tels que les compteurs internes au microcontrô-
leur. Ce signal carré est appelé signal d’horloge. Le délai entre deux évènements
est mesuré en comptant le nombre de fronts occurrents entre le premier évène-
ment et le second.
Nous allons ici distinguer deux cas nécessitant une résolution de mesure dif-
férente : la mesure de délais de propagation d’ultrasons, nécessitant une faible
résolution, et la mesure de délais de propagation de la lumière et des ondes
radio, nécessitant une haute résolution. La table 4.1 exprime les vitesses de pro-
pagation des ondes radio et des ondes sonores en mètres par cycle ainsi qu’en
cycles par mètre (système cadencé @16MHz).

100
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.1 Bases
de la mesure de délais sur microcontrôleurs

4.1.1 Faible résolution : ondes ultra-sonores

Haut-parleur

Microphone
Obstacle
reflecteur

Figure 4.1 – Télémètre ultrason utilisant une onde sonore pour mesurer la distance
à laquelle se trouve un obstacle réflecteur distant.

Prenons tout d’abord l’exemple d’un émetteur-récepteur d’ultrasons utilisé pour


la mesure de courtes distances. Voir figure 4.1. Les deux évènements entre les-
quels nous allons mesurer le délai sont l’émission d’une salve sonore et la
réception de son écho. Considérons aussi que le microcontrôleur employé est
cadencé à une fréquence de 16MHz.
Le microcontrôleur déclenche le premier évènement sur front du signal d’hor-
loge. En effet, rappellons ici que toutes les actions du microcontrôleur sont syn-
chronisées sur les fronts d’horloge. Lors de ce déclenchement, le microcontrôleur
initialise un compteur à zéro, compteur qui s’incrémentera à chaque nouveau
front d’horloge. Après un délai de l’ordre du million de cycles, prenons pour
l’exemple 1 000 042.25 cycles (@16Mhz), le deuxième évènement advient entre
deux fronts d’horloge, au quart du cycle courant. Puisque les actions du micro-
contrôleur sont synchronisées sur les fronts d’horloge, le microcontrôleur perçoit
ce deuxième évènement à la fin du cycle courant, soit un compte de 1 000 043
cycles.
Malgré une erreur de comptage de 34 de cycle, la captation garde une faible
erreur relative, ce qui permet d’estimer précisément la distance parcourue par
le signal ( 343m/s×1000043cycles
16Mhz
= 21m). En effet, le son se déplace suffisamment
lentement par rapport à la fréquence d’échantillonnage du microcontrôleur.

101
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art

4.1.2 Haute résolution : ondes-électromagnétiques

Diode
emettrice

Photodiode
receptrice
Obstacle
reflecteur

Figure 4.2 – Télémètre laser utilisant une onde lumineuse pour mesurer la distance
à laquelle se trouve un obstacle réflecteur distant.

Considérons maintenant l’exemple d’un transmetteur infrarouge et d’un obs-


tacle réflecteur, comme un mur ou un miroir, placés à une distance de 10 mètres
l’un de l’autre. Voir figure 4.2. Les deux évènements entre lesquels nous mesu-
rons le délai sont, dans l’ordre : le déclenchement d’une impulsion lumineuse,
ainsi que la réception sur le capteur infrarouge du faiseau lumineux réfléchi par
le miroir.
Supposons un signal d’horloge à 16Mhz. La lumière allant à approximative-
ment 300 000 000 m/s, celle-ci parcourt une distance d’environ 18.75 m par cycle
d’horloge. Le microcontrôleur recevra donc le deuxième évènement 1.06 cycles
après avoir déclenché le premier, soit tout au début du cycle courant. Or, le micro-
contrôleur, réagissant uniquement sur cycle d’horloge, ne percevra l’évènement
qu’à la fin du cycle, soit 2 cycles après le premier évènement, ce qui, pour cette
distance de 10m, engendre une erreur de mesure relative proche de 100%.
Il est important de noter que cette erreur de mesure est systématique : le pre-
mier évènement est synchrone avec le cycle d’horloge, le délai avant le déclen-
chement du second est déterministe, même avec un faible bruit sur la captation,
bruit imputable à la chaîne de traitement analogique, le compte sera toujours de
2 cycles. En suivant ce raisonnement, il est impossible de gagner en précision sur
la mesure en faisant la moyenne de plusieurs itérations. Il est donc nécessaire de
briser ce déterminisme pour diminuer l’erreur relative.

4.2 Mesure de délais courts : État de l’art


Comme nous l’avons conclu précédemment, les microcontrôleurs ne sont géné-
ralement pas suffisamment rapides pour mesurer directement des délais courts

102
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art

de l’ordre de la nanoseconde.
Si il est bien sur possible d’opter pour des microcontrôleurs plus rapide, cette
méthode à cependant un coût : le prix d’achat des composants augmente expo-
nentiellement avec la montée en gamme. Travailler avec des fréquences élevées
oblige en effet à quitter le catalogue des composants grand public produits en
masse et à cibler des solutions de niche destinées à l’expérimentation scienti-
fique. Par exemple, le constructeur ST propose des microcontrôleurs cadencés à
400MHz comme le STM32H743IIT6 ST-M ICROELECTRONICS 2019 à partir de 7.1
dollars 1 . À noter que 400MHz correspond à la fréquence du coeur exécutant les
instructions, les périphériques sont eux cadencés sur des sous-multiples de cette
fréquence.
C’est pourquoi il est en pratique difficile et coûteux de s’équiper d’un micro-
contrôleur dont la fréquence de fonctionnement des périphériques dépasse les
400MHz, et cela, pour un gain en résolution limité. Ainsi, pour être capable de
mesurer des délais de propagation d’ondes électromagnétiques, lumière infra-
rouge ou ondes radio sur de courtes distances, il faut recourir à des techniques
plus avancées. Plutôt que d’augmenter simplement la fréquence, l’état de l’art
comporte différentes méthodes analogiques, proposant des circuits auxiliaires
au microcontrôleur, pour mesurer des délais dans le cadre d’expérimentations
scientifiques.
Ces circuits permettant de mesurer des intervalles de temps sont apparus très
tôt, à une époque où l’électronique était principalement analogique. Ainsi, cer-
tains de ces circuits analogiques expriment le résultat sous forme analogique
et sont nommés Time-to-Voltage Converters. Lorsqu’il s’agit de convertir directe-
ment une durée en valeur numérique, ces circuits sont appelés Time-to-Digital
converters. Les techniques existantes sont passées en revu dans (P ORAT 1973 ;
N APOLITANO, M OSCHITTA et C ARBONE 2010).
Nous allons ici nous intéresser à quelques exemples principaux.

4.2.1 Méthode de la chaîne de portes logiques


Une astuce bien connue du folklore pour mesurer des délais courts est d’utili-
ser le délai de propagation des portes logiques pour réaliser un chronomètre. On
réalise une grande chaîne de portes Oui. Voir figure 4.3. Pour chaque porte Oui
est câblée une bascule qui surveille l’état de la sortie de la porte oui : lorsque la
sortie passe au niveau logique haut, la bascule correspondante mémorise cet état
et verrouille cette valeur. De plus, chaque bascule dispose d’une entrée d’inhibi-
tion. Une fois l’inhibition activée, la bascule ignore toute nouvelle entrée, ce qui
l’empêche de verrouiller le niveau logique haut. Toutes les entrées d’inhibition
sont connectées ensemble.
Initialement, toutes les entrées et sorties sont au niveau logique bas. Le chro-

1. Prix unitaire pour 100 pièces et plus relevé le 29/09/2020 chez le distributeur LCSC.

103
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art

nomètre est déclenché en faisant traverser un niveau logique haut dans la chaîne
de portes Oui. Ce signal électrique se propage à une vitesse proche de celle de la
lumière dans les câbles. Cependant, chaque porte logique introduit un délai pour
recopier son entrée sur sa sortie, ce qui ralentit considérablement la propagation
globale du signal. On arrête le chronomètre en activant le signal d’inhibition des
bascules. Le délai mesuré s’exprime alors en nombre de portes traversées : il
s’agit du numéro de la dernière bascule ayant verrouillé le niveau logique haut.
L’inconvénient de cette méthode est qu’elle nécessite des composants dont le
délai de propagation est connu et demeure fixe au cours du temps. En pratique,
ces délais de propagation varient d’une porte logique à l’autre, à cause de légères
différences lors de la fabrication. De plus, pour une porte donnée, ces délais de
propagation varient en fonction de facteurs environnementaux, majoritairement
avec la température, mais aussi avec les perturbations électromagnétiques am-
biantes, ainsi que la présence de capacités parasites. En conséquence, le recours
à de telles méthodes analogiques nécessite l’utilisation de composants de préci-
sion ainsi qu’une calibration prenant en compte les défauts et dérives de chaque
composant.

Porte Bascule
Oui RS
Set

Sortie

Figure 4.3 – Mesure de délais utilisant la latence introduite par une chaîne de
portes analogiques Oui. Le dispositif mesure le délai écoulé entre
l’activation de la ligne Set et l’activation de la ligne Inhibition. Le
résultat se lit sur les sorties des bascules RS : le nombre de sorties
activées est proportionnel au délai.

104
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art

4.2.2 Méthode de l’échelle de Vernier à deux oscillateurs


Une autre méthode pour chronométrer des délais très courts entre deux évè-
nements utilise le principe de l’échelle de Vernier, en se servant de deux oscil-
lateurs pilotables et démarrables indépendamment. Cette méthode est évoquée
dans deux brevets de 1979 (C URTICE 1979) (C HU 1979).

Figure 4.4 – Dispositif Vernier à deux oscillateurs

Le fonctionnement est analogue à ce qu’il se passe lorsque l’on utilise un pied


à coulisse pour mesurer des longueurs inférieures au millimètre, voir figure 4.4 :
deux échelles graduées légèrement différentes coulissent l’une par rapport à
l’autre. On fait glisser les deux parties du pied pour l’ajuster à la longueur à me-
surer. Le résultat se lit à l’endroit où les graduations des deux échelles s’alignent.
Avec deux oscillateurs à quartz, les graduations sont les fronts d’horloges de
chaque signal. Tout comme avec le pied à coulisse, les oscillateurs ont une pé-
riode d’oscillation plus grande que le délai que l’on souhaite mesurer. Il est en-
suite possible de démarrer chaque oscillateur indépendamment, ce qui permet
d’établir le déphasage entre les signaux via deux évènements. En conservant
l’analogie, choisir le déphasage correspond à ajuster les échelles du pied à cou-
lisse à la dimension que l’on veut mesurer.

105
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.2
Mesure de délais courts : État de l’art

Ces deux oscillateurs constituent ainsi un chronomètre : Pour démarrer le


chronomètre, on déclenche les oscillations du premier oscillateur. Pour arrêter
le chronomètre, on déclenche les oscillations du deuxième oscillateur. Une fois
le chronomètre arrêté, les oscillateurs continuent de produire périodiquement
leurs fronts d’horloge. Lors de l’arrêt du chronomètre, les fronts d’horloge pro-
duits par les oscillateurs sont déphasés d’une durée égale au délai très court que
l’on souhaite mesurer. Les oscillateurs sont volontairement choisis avec des vi-
tesses légèrement différentes et cette différence de fréquence est connue. Grâce
à cette différence de fréquence, le déphasage entre les fronts d’horloge des deux
oscillateurs va progressivement se réduire. Cette longue durée, necéssaire aux
oscillateurs pour se mettre en phase, est directement proportionnelle au court
délai entre les démarrages respectifs des oscillateurs. Ainsi, pour lire la valeur
du chronomètre, on compte simplement le nombre de cycles nécessaires pour
que les deux oscillateurs arrivent en phase. Du point de vue électronique, le dis-
positif détecte que les deux oscillateurs sont en phase à l’aide d’une simple porte
et.
À noter que ce principe d’échelle de Vernier peut être aussi combiné avec la
technique de la chaîne de porte logique pour former un dispositif hybride, la
Vernier Delay Line (D UDEK, S ZCZEPANSKI et H ATFIELD 2000).

4.2.3 Circuits intégrés ToF


D’autres méthodes analogiques capables de chronométrer des délais très courts
existent. Certains dispositifs physiques sont capables de mesurer une différence
de phase entre deux signaux. Des circuits intégrés de télémétrie laser, capables
de mesurer le temps de vol, intègrent une chaîne analogique dédiée, conçue et
calibrée spécialement pour ce type de télémétrie. A titre d’exemple, la gamme
des télémètres lasers pour la détection de proximité VL53L0X du constructeur
ST, très largement utilisée actuellement 2 permet une mesure précise au mm
près avec une portée jusqu’à 2m. Il repose sur une technologie brevetée, dénom-
mée commercialement FlightSense. Le constructeur n’indique pas directement
quel brevet correspond à cette technologie, il est cependant possible d’accéder
à plusieurs brevets détenus par ST décrivant différentes techniques de mesure
de temps de vols, électronique mélangeant mesures analogiques et compteurs
numériques : (M ELLOT 2020), (D ELLA R OCCA et D UTTON 2020).
L’achat d’un tel télémètre est un investissement dont le coût est non négli-
geable : 2, 4$ (@1000 pièces) 3 . À titre de comparaison, c’est plus cher que le
microcontrôleur nrf52832, (1.75$ pièce 4 ). Ce qui accentue l’intérêt de disposer

2. En témoigne la forte disponibilité chez les principaux fournisseurs de composants, > 6000
unités du modèle VL53L0CXV0DH/1 chez LCSC ELectronics (relevé le 05/08/2020).
3. LCSC ELectronics, prix relevé le 05/08/2020.
4. Modèle NRF52832-QFAA-R, LCSC ELectronics, prix à 1000 pièces, relevé le 05/08/2020.

106
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.3
Protocoles sous un modèle idéalisé

d’une solution entièrement logicielle pour la mesure de distances entre micro-


contrôleurs d’un même réseau.
La société DecaWave offre quant-à-elle une solution de transmetteurs radio
l’Ultra Large Bande capable de mesures de temps de vol de signaux échangés
entre deux émetteurs. La documentation technique du circuit intégré DW1000
revendique une localisation à 10cm près. La documentation technique fait aussi
mention , pour un compteur destiné à l’horodatage de paquets, d’une base de
temps cadencée à 64GHz, via une multiplication par 128 d’une fréquence de base
de 499.2MHz. À titre d’indication, un tel transmetteur radio coûte actuellement
6.85$ par pièce 5 .

4.3 Protocoles sous un modèle idéalisé


Dans ce chapitre, nous décrivons nos protocoles pour la mesure de délais in-
férieurs au cycle d’horloge dans des conditions idéalisées. Nous étudierons deux
types de mesures différentes, la mesure de temps de réponse ainsi que la mesure
de temps de vol.
La mesure de temps de réponse , porte sur le temps que met un capteur à ré-
pondre suite à un évènement. Par exemple, dans le cas d’un capteur de proximité,
un faisceau lumineux émis par une diode est projeté sur un obstacle réfléchissant.
Le signal est ensuite reflété et capté par une photodiode. Le système mesure le
temps entre l’action et sa réponse. Le système est ici contenu dans un seul et
même boîtier physique.
La mesure de temps de vol consiste à mesurer des délais de propagation d’ondes
(lumière ou ondes radio) échangées entre deux systèmes, chacun piloté par son
microcontrôleur. Contrairement à la mesure de temps de réponse, la mesure de
temps de vol requiert deux boîtiers physiques distants.
Ces deux études seront réalisées dans des conditions idéalisées, on utilisera no-
tamment un modèle simplifié dans lequel les horloges sont idéales et disposent
d’une fréquence fixe dans le temps, et sans gigue sur les fronts d’horloge. Nous
discuterons des limites de ce modèle et des problèmes que pose la réalité phy-
sique dans les sections qui suivront. Nous étudierons tout d’abord le protocole
utilisé pour la mesure de temps de réponse. Cette étude facilitera l’appréhension
du protocole utilisé pour la mesure de temps de vol.

4.4 Mesure de temps de réponse


Dans cette section, nous considérons la problématique de la mesure de temps
de réponse : un microcontrôleur déclenche un capteur (capteur de proximité

5. Modèle DecaWave DW1000-ITR7, LCSC ELectronics, prix à 1000 pièces, relevé le


05/08/2020.

107
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

infrarouge par exemple) qui effectue une mesure. Ce capteur communique en


émettant une impulsion, après un délai plus ou moins long, sur une entrée du
microcontrôleur. Ainsi, pour lire la valeur renvoyée par le capteur, le microcon-
trôleur doit mesurer le délai entre le déclenchement du capteur et la réception
de sa réponse.
Suivant le type de capteur employé, le temps de réponse peut-être très court :
Dans le cas d’un capteur de proximité utilisant la lumière, une DEL émet un fais-
ceau lumineux infrarouge, ce faisceau est réfléchi par un obstacle vers une photo-
diode qui va émettre une réponse électrique à destination du microcontrôleur. Si
l’obstacle se trouve à quelques centimètres,la lumière ne met que quelques pico-
secondes pour effectuer le trajet aller-retour. Du point de vue du microcontrôleur,
cette réaction est toujours observée au cycle suivant, sans aucune variation, voir
figure 4.5.

Figure 4.5 – Microcontrôleur effectuant une mesure de délais naïve.

Pour résoudre ce problème sans avoir recours à un matériel utilisant des hor-
loges plus précises, et donc onéreuses, nous proposons dans cette section un
protocole utilisant la coopération entre deux microcontrôleurs pour mesurer très
précisément des temps de réponse inférieurs au cycle d’horloge. Ce protocole ex-
ploite la légère différence de fréquences entre deux microcontrôleurs, fréquences
nominalement identiques, pour réaliser des mesures à différents déphasages.
Après une description plus détaillée de la problématique et de ses enjeux, nous
décrirons notre protocole de mesure et expliquerons de manière intuitive com-
ment celui-ci permet d’augmenter significativement la résolution de la mesure.

108
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Nous terminerons par une partie plus formelle détaillant les calculs des délais, et
appuyant la correction du protocole.

4.4.1 Description et intuitions


Dans cette section nous décrivons le protocole théorique que nous avons éla-
boré pour la mesure de temps de réponse. Ce protocole permet la mesure précise
de délais entre n’importe quel couple d’évènements,du moment que ces évène-
ments peuvent être déclenchés de manière répétée et contrôlée. Nous verrons
que ce protocole repose sur l’utilisation de deux horloges pilotées par deux mi-
crocontrôleurs différents, une horloge pour la perception des évènements, et
une horloge pour le déclenchement des évènements. L’utilisation de deux hor-
loges différentes rend possible l’agrégation d’un ensemble de mesures. En effet,
ces horloges n’ayant pas exactement la même fréquence, chaque nouvelle me-
sure est effectuée sous un déphasage différent entre les horloges. Ce déphasage
modifie le nombre de cycles observés entre les deux évènements.
Pour faciliter l’explication, nous considèrerons ici la mesure du temps de ré-
ponse d’un capteur de proximité infrarouge au fonctionnement idéalisé. Nous
ferons abstraction de toutes considérations analogiques telles que le bruit, les
temps de montée des fronts des signaux, des amplitudes, etc. Le capteur est
constitué d’une DEL, capable d’émettre un faisceau infrarouge, ainsi que d’une
photodiode qui produit une réponse lorsqu’elle reçoit le reflet du faisceau émis
par la DEL.
Un microcontrôleur déclenche une mesure en activant la DEL. Le faisceau pro-
duit par la DEL voyage jusqu’à l’obstacle le plus proche, puis est réfléchi et enfin
capté par la photodiode. La valeur mesurée est la durée entre l’émission et la
réception. On considèrera ici que l’obstacle est suffisament proche pour que le
temps de voyage du faisceau soit inférieur à la durée d’un cycle d’horloge, c’est
à dire < 9m, voir figure 4.6.

109
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Figure 4.6 – Dispositif de mesure de temps de réponse. Deux microcontrôleurs


coopèrent pour effectuer une mesure précise : le déclencheur µD
actionne la DEL émettrice, l’observateur µO observe le délai entre
l’émission de la DEL et la réception de la réponse sur la photodiode.

4.4.1.1 Deux microcontrôleurs à la dérive


Notre protocole implique l’utilisation de deux microcontrôleurs, chacun dispo-
sant de sa propre horloge. Ces horloges, bien que similaires, ont des fréquences
légèrement différentes, ce qui va nous permettre d’observer les évènements sous
deux points de vue différents. C’est en comparant ces points de vue que nous
allons pouvoir situer précisément l’évènement de réception sur la photodiode
dans le cycle d’horloge : un premier microcontrôleur que nous appellerons Dé-
clencheur, µD, pilote la DEL. De plus, µD est responsable du déclenchement de
la mesure ; le deuxième microcontrôleur, que nous appellerons Observateur, µO,
pilote la photodiode ; il observe la réponse du capteur. En outre, une des entrées
de µO est reliée à la DEL. De ce fait, µO sait à quel moment son acolyte µD
déclenche une nouvelle mesure, voir figure 4.6.
La différence de fréquence entre les horloges de µO et de µD fait que les cycles
d’horloges des microcontrôleurs dérivent l’un par rapport à l’autre : Si l’on re-
présente sur une frise chronologique la position des fronts d’horloge respectifs
de µO et µD dans le temps, on constate une rotation périodique de la position,
c’est-à-dire du déphasage, des fronts de µD par rapport aux fronts de µO, voir
figure 4.8.

110
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Figure 4.7 – Diagrammes de temps obtenus avec le dispositif de mesure de temps


de réponse.

Retraçons ci-dessous le déroulé d’une prise de mesure (chronogramme corres-


pondant sur la figure 4.7 :
1. µD active la DEL (Tx),
2. µO prend connaissance de l’activation de la DEL (Tx’),
3. La photodiode reçoit le reflet (Rx),
4. µO prend connaissance de la réception (Rx’)
Il est important de remarquer ici que, suivant le déphasage entre les fronts de
µD et µO, les actions peuvent s’effectuer dans un autre ordre. Retraçons un tel
ordre alternatif :
1. µD active la DEL (Tx)
2. La photodiode reçoit le reflet (Rx)
3. µO prend connaissance de l’activation de la DEL (Tx’) et µO prend connais-
sance de la réception (Rx’)
Dans le premier cas, la perception de l’activation de la DEL (Tx’) et la per-
ception de la réception (Rx’) ont un cycle d’écart, alors que dans le deuxième
cas, µO perçoit les deux évènements sur le même front d’horloge. Ainsi, si l’on

111
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

effectue deux prises de mesures consécutives, et donc avec un léger changement


dans le déphasage des fronts entre µO et µD, et que l’ordre des évènements n’est
pas le même entre les deux prises, alors cela indique que les fronts de µO et de
µD sont actuellement déphasés d’une durée proche du temps de réponse que l’on
souhaite mesurer. Et si, dans une seule prise de mesure, les évènements Tx’ et Rx’
ne sont pas perçus au même cycle par µO, alors cela signifie que le déphasage
entre µO et µD est inférieur au temps de réponse que l’on veut mesurer.

Figure 4.8 – Exemple de déphasage progressif entre l’µC déclencheur et l’µC


observateur. À chaque nouveau cycle d’horloge, les fronts de µD
(représentés en bleu), se décalent légèrement par rapport aux fronts
d’horloge de µO. Après un grand nombre de cycles fonction de la
différence entre les fréquences effectives des deux µC, le déphasage
effectue un tour complet et les fronts sont à nouveau en phase.

En définitive, en connaissant la vitesse à laquelle les horloges des microcon-


trôleurs se déphasent, vitesse supposée constante dans notre modèle idéalisé, on
peut mesurer la proportion du temps pendant laquelle le déphasage entre µO et
µD est inférieur au temps de réponse. En multipliant par la durée d’un cycle, le
calcul nous donne le temps de réponse.
La sous-section suivante présente le protocole de mesure de temps de réponse
sous la forme d’un pseudo-code intuitif. Le protocole sera formalisé et les détails

112
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

calculatoires seront donnés dans les sections qui suivront.

4.4.1.2 Pseudo-code
//Protocole temps de réponse ///////////////////////////////////////////

function horodater()
{
return numéro_cycle_courant; //Utilise un compteur du µC
}

//Code Déclencheur µD //////////////////////////////////////////////////

function prise_échantillon()
{
activer_DEL();
var r = recevoir();
return r;
}

function nettoyer_séquence(prises)
{
//La première séquence de 1 est potentiellement plus courte,
// car on a pu commencer la mesure en plein milieu, donc on la jette:
prises = supprimer_plus_grande_sous_séquence_de_1(prises);

prises = conserver_plus_grande_sous-séquence_de_1_et_de_0(prises);
// (expression régulière: 1*0*) en partant du début.

return prises;
}

function agréger_échantillons()
{
var prises = new Liste();

for(var i=0;i<N;i++)
prises.ajouter( prise_échantillon() );

prises = nettoyer_sequence(prises);

var cpt = compter_nombre_de_1(prises);


return cpt / prises.longueur();
}

//Code Observateur µO //////////////////////////////////////////////////

113
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

function loop()
{
attendre_déclenchement_DEL();
var Txp = horodater();
attendre_réponse_photodiode();
var Rxp = horodater();
envoyer(Rxp - Txp); //Envoie 0 ou 1.
//(pour simplifier, on enlève les délais fixes connus de l'horodatage).
}

4.4.1.3 Exemple d’exécution


Ci-dessous une séquence constituée de 40 échantillons (figure 4.9) :

Dephasage Delai

Figure 4.9 – Séquences d’échantillons récoltés lors d’une mesure de temps de


réponse. Chaque chiffre correspond à un échantillon. Le chiffre 1 est
observé lorsque le déphasage p est inférieur à la partie fractionnaire
du délai mesuré d. Le chiffre 0 est observé dans le cas contraire où
p > d.

L’algorithme enlève les premiers échantillons et conserve une sous-séquence


d’échantillons correspondant à une rotation complète du cycle de µD par rapport
au cycle de µO. Le nombre de 1 est proportionnel au temps de réponse que l’on
souhaite mesurer. La précision de la mesure dépend simplement de la taille de
la séquence (qui elle même dépend de la vitesse de déphasage).
Faire la moyenne d’un grand nombre d’échantillons n’apporte aucune garantie
si on ne considère pas la période de rotation du déphasage. En effet, la mesure

114
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

peut être faussée si les échantillons ne couvrent pas certaines valeurs prises par
le déphasage.
Considérons par exemple la mesure effectuée sur la figure 4.9. Lorsque l’on ef-
fectue la moyenne naïve de la séquence, c’est à dire lorsque l’on divise le nombre
de 1 présents dans la séquence par le nombre d’échantillons, ici 40, la moyenne
se retrouve biaisée par les prises provenant de rotations incomplètes. Considérer
un cadre plus grand ne suffit pas à rendre le résultat de la moyenne plus précis,
car il est possible de conserver les même proportions et donc le même biais sur
une séquence plus longue.

4.4.2 Calcul de délais : description formelle


Nous avons dans les sections précédentes illustré l’idée générale du protocole
pour la mesure de temps de réponse.
Dans cette section, nous allons formaliser l’ensemble des calculs de délais.
Nous verrons que la résolution de mesure est fonction de deux facteurs : la diffé-
rence de fréquence entre les oscillateurs des deux microcontrôleurs (µD Déclen-
cheur et µO Observateur), et de la période d’échantillonnage.

4.4.2.1 Notation partie fractionnaire {x}


Dans ce document, nous utilisons l’opérateur unaire accolades {x} pour dési-
gner la partie factionnaire d’un réel : {x} = x − bxc.

4.4.2.2 Évènements de déclenchement et d’observation


Soit deux microcontrôleurs nommés respectivement Déclencheur µD et Obser-
vateur µO. µO et µD sont dotés d’horloges de même fréquence nominale. On
considère ici un modèle d’horloge idéal, sans dérive.
µD contrôle un actionneur. Sur front d’horloge, il déclenche une action que
nous nommerons évènement de début Tx. Cette action produit une réponse en re-
tour qui sera entendue par un capteur, nous nommerons cette action de réponse,
évènement de fin Rx’. µO contrôle le capteur. Sur front d’horloge, µO perçoit les
évènements déclenchés par µD.
Voici la chronologie des différents évènements occurrant lors d’une prise de
mesure : µD déclenche l’actionneur et génère l’évènement de début Tx. Cet évè-
nement Tx est perçu par µO sur son prochain front d’horloge, après un délai
(1 − p) où p, pour phase, est égal au déphasage relatif entre les deux horloges.
On notera Tx’ cet évènement de perception. L’action de l’actionneur produit une
réponse du capteur qui, après un délai d, génère l’évènement de fin Rx. Cet évè-
nement Rx est perçu par µO sur son prochain front d’horloge. On notera Rx’
cette réception telle que perçue par µO.

115
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Lemme 1. Pour un délai d fixé, la perception de µO varie en fonction de la valeur


du déphasage p :

si {d} < (1 − p)
(
bdc
délai observé par µO =
bdc + 1, sinon

4.4.2.3 Mesures périodiques et agrégation, δ petit

Figure 4.10 – Diagramme de temps lors d’une prise de mesure de temps de réponse,
Cas {δ} < (1 − p)

Figure 4.11 – Diagramme de temps lors d’une prise de mesure de temps de réponse,
Cas {δ} > (1 − p)

116
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Les microcontrôleurs, régis par le protocole, réalisent des mesures à intervalles


réguliers. µD déclenche périodiquement l’actionneur et, à chaque captation de la
réponse, µO observe et mémorise le délai entre les évènements Tx’ et Rx’, délai
fonction du déphasage p. Étant donné que µD et µO sont dotés d’horloges ayant
des fréquences effectives légèrement différentes, ce déphasage p est modifié à
chaque nouvel échantillon d’un faible delta δ, positif ou négatif, delta dépendant
de la période entre chaque nouvel échantillon et de la différence de fréquences
entre les microcontrôleurs. p = {p + δ}.
Supposons, sans pertes de généralités que ce delta δ est positif. Le déphasage
p varie en dents de scie entre 0 et 1. Lorsque p = 0, nous avons {d} < (1 − p),
µO observe alors un délai bdc + 0 entre Tx’ et Rx’. Voir figure 4.10. Lorsque
p devient supérieur à 1 − {d}, l’observation de µO change et devient bdc + 1 .
Voir figure 4.11. Notons cet évènement e1. Lorsque p fait un tour complet et
revient à 0, l’observation de µO change à nouveau et redevient bdc + 0. Notons
cet évènement e0.
On remarque que si delta est petit, alors le rapport entre le nombre de prises
entre les évènements e1 et e0, dans cet ordre (séquence de prises où µO observe
un délai de bdc + 1) et le nombre de prises durant une rotation complète de p
(nombre de prises entre deux observations consécutives de l’évènement e1). est
égal à {d}, c’est à dire la partie fractionnaire du délai entre Tx et Rx. Ainsi ce
rapport nous donne la partie fractionnaire du temps de réponse que l’on sou-
haite mesurer. En effet, grâce à l’observation de µO, on peut comparer la partie
fractionnaire du délai avec le déphasage entre les deux microcontrôleurs : lors
d’une prise de mesure, l’observation de µO permet de comparer la valeur complé-
mentaire au déphasage avec la partie fractionnaire du délai et de déduire quelle
valeur est la plus grande. De plus, puisque par hypothèse, le déphasage évolue
linéairement, les différentes prises d’échantillons sont réparties uniformément
dans le cycle.
En résumé, µO estime le délai entre Tx et Rx en comptant, durant un balayage
complet de p (deux observations consécutives de e1 ), le nombre d’échantillons
mesurés avec un délai de bdc + 0. ainsi que le nombre d’échantillons mesurés
avec un délai de bdc + 1. Notons respectivement S0 et S1 ces deux ensembles
d’échantillons. Notons aussi S = S0 ∪ S1 . µO obtient la partie fractionnaire du
délai d en faisant le ratio : {d} = |S|S|1 | .
Une fois ces calculs préliminaires effectués, µO est à même de calculer le délai,
d = bdc + {d}. La résolution de la mesure est |S| 1
. Puisque |S| = 1δ , la résolution
de la mesure est simplement δ.
Dans cette section, nous avons détaillé les calculs de délais à partir d’une sé-
quence d’échantillon. De plus, nous avons explicité la résolution de mesure δ.
Cependant, nous avons supposé ici δ petit, bien inférieur à la durée d’un cycle.
Or, c’est ce δ petit qui confère une grande résolution. Dans la section suivante,
nous détaillons une approche permettant de travailler avec une valeur de δ plus
grande tout en gardant une résolution élevée.

117
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

4.4.3 Multiples balayages : δ grand


Dans la section précédente, nous avons montré que la résolution de la mesure
de temps de réponse obtenu avec notre protocole est égale à δ, c’est à dire la
variation du déphasage entre deux prises consécutives. Cette valeur s’exprime
en nombre de cycles d’horloge du microcontrôleur. Si δ est petit, égal à une
fraction de cycle d’horloge, alors il est possible, avec le protocole tel que décrit
précédemment, de mesurer directement des délais inférieurs au cycle d’horloge.
Dans le cas où la valeur δ est supérieure à la durée du cycle, les calculs expo-
sés dans les sections précédentes ne sont plus valables. Ainsi, dans cette section,
nous décrivons une approche permettant de conserver une résolution de mesure
élevée lorsque δ est grand. Dans cette approche, nous allons combiner les ob-
servations de µO sur plusieurs rotations complètes du déphasage p. Cela nous
permettra de considérer un meta-balayage pôur lequel la valeur de δ sera plus
petite.

4.4.3.1 Moyenne naïve de plusieurs balayages


Une approche naïve serait de collecter suffisamment d’échantillons pour obser-
ver plusieurs rotations complètes de p, puis de simplement faire la moyenne des
délais déduits par µO sur chaque rotation.
Une telle moyenne ne garantit pas nécessairement une augmentation de la
résolution de mesure. En effet, si la durée du cycle est un multiple de δ, alors
toutes les rotations observent les mêmes déphasages. µO effectue alors le même
calcul à chaque rotation.
Dans le cas général, si la durée du cycle n’est pas un multiple de δ, alors les
prises correspondantes à chaque rotation complète sont potentiellement diffé-
rentes, puisque les déphasages pourront être différents d’une rotation à l’autre.
En faisant la moyenne de toutes ces rotations différentes, on gagne nécessaire-
ment en précision. La question est alors de connaître le gain en précision apporté
par une telle moyenne.

4.4.3.2 Moyenne intelligente de plusieurs balayages


Prenons comme hypothèse que la vitesse de déphasage δ est grande par rap-
port à la durée d’un cycle. On considère un grand nombre de prises, de manière
à observer plusieurs rotations complètes du déphasage p.
La valeur de δ détermine le nombre de prises dans une rotation complète. En
effet, p progresse linéairement entre 0 et 1, p = {p + δ}, il faut donc b 1δ c prises
pour observer une rotation complète.
Si δ ne divise pas la durée du cycle, alors il y aura un reste, un méta-δ, que
nous nommerons δ2 , qui décale le déphasage des prises de la prochaine rotation.
Exemple : pour chaque rotation complète, on représente sur une frise les dif-
férents déphasages observés (déphasage entre 0 et 1), voir figure 4.12.

118
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Figure 4.12 – Valeurs des déphasages lors d’échantillonnages successifs. Les valeurs
sont représentés sur plusieurs frises circulaires, une frise pour chaque
rotation complète du déphasage. Le déphasage progresse de δ à
chaque nouvel échantillon. La projection d’un grand nombre de
rotations sur une même frise s’apparente à une rotation dont le
déphasage progresserait avec un pas δ2 .

En projetant tous les déphasages sur la même frise on peut abstraire le rai-
sonnement et considérer plusieurs rotations comme une seule et unique rotation
avec une vitesse de déphasage plus faible, ici δ2 . Voyons cela en détail dans la
section suivante.

4.4.3.3 Méta rotations récursives


On effectue un grand nombre de mesures. On note pk le déphasage lors de la
kième mesure. δ est l’incrément du déphasage entre deux mesures consécutives :
pk+1 = pk + δ.
On représente les valeurs possibles pour le déphasage p sur un ruban circulaire.
Notons qu’ici nous normalisons tous les angles de rotation entre 0 et 1, plutôt que
de parler en radian ou en degrés. Ainsi, par abus de langage, nous pourrons être
amenés à écrire mod 1 à la place de mod 2π.
Un ensemble de prises couvrant un balayage de complet p de 0 à 1 constituent
une échelle graduée sur le cercle. En posant m = d 1δ e, il y a m − 1 graduations
principales sur l’échelle espacées d’une distance δ (ici, δ < 1). Voir figure 4.13.

119
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

Figure 4.13 – Frise circulaire montrant la progression du déphasage entre chaque


nouvel échantillon.

Considérons deux graduations consécutives ayant pour déphasages respectifs


pk et pk+1 .
L’ensemble des mesures pk + j · m, avec j entier subdivise l’intervalle [pk , pk + 1]
avec des graduations secondaires. En effet, pk + j · m = {pk + j · δ2 } avec δ2 =
δ · m − 1.
En posant m2 = d δδ2 e, il y a m2 − 1 graduations secondaires espacées d’une
distance δ2 entre deux graduations principales. Voir figure 4.14.

Figure 4.14 – Graduations secondaires obtenues sur la frises circulaire des dépha-
sages après chaque tour complet du déphasage.

Cette subdivision de l’échelle graduée se poursuit récursivement. Itérons une


dernière fois pour l’exemple : prenons deux graduations secondaires consécu-
tives avec pour déphasage pk et pk+m . Soit l un entier, l’ensemble des mesures

120
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.4
Mesure de temps de réponse

pk + l · m · m2 subdivise l’intervalle [pk , pk + m] avec des graduations tertiaires. En


effet : p(k+l·m·m2 ) = {(pk + l · δ3 } avec δ3 = δ2 · m2 − δ. En posant m3 = d δδ23 e, il y a
m3 − 1 graduations tertiaires espacées d’une distance δ3 entre deux graduations
secondaires. Voir figure 4.15

Numero
Echantillon

Figure 4.15 – Graduations tertiaires obtenues sur la frises circulaire des dépha-
sages.

Le calcul se généralise à n’importe quelle profondeur de graduation. Notons n


la profondeur :

δ0 = 1
δ1 = δ
(4.1)
mn = dδn−1 /δn e
δn = δn−1 · mn−1 − δn−2
mn correspond au nombre de graduations +1 à la profondeur n. À la pro-
fondeur n, le nombre de mesures requises pour que l’échelle soit complète est
(mn − 1) · mn−1 · mn−2 . . . m2 · m1 .
La résolution de mesure à la profondeur n est δ1n . On remarque que celle-ci
croît exponentiellement à chaque palier de profondeur franchi, ce qui nécessite
également un nombre exponentiel de prises. La récursion s’arrête à la profondeur
k pour laquelle δk divise δk−1 . Tous les déphasages observables ont été observés,
les nouvelles prises répèteront la même séquence de déphasage que les premières
prises (p0 , p1 , p2 . . . ).
Si δ est un irrationnel, alors une telle profondeur n’existe pas, la résolution at-
teignable est donc limitée uniquement par le nombre d’échantillons. En pratique,
la dérive des horloge imputable à l’environnement est le premier facteur limitant
les gains apportés par cette technique de méta-rotations.

121
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

4.5 Mesure de temps de vol


Dans cette section, nous considérons la problématique de la mesure de temps
de vol qui porte sur la mesure de délais de propagation de signaux échangés
entre deux balises, balises qui communiquent via ondes radio ou infrarouges à
plusieurs mètres de distance. Voir figure 4.16. Les visées d’une telle mesure sont
de synchroniser les actions des balises en compensant les temps de parcours des
signaux, ou d’estimer la distance entre les deux systèmes.
Effectuer une mesure précise de temps de vol est difficile, car, tout comme
avec la problématique du temps de réponse, on considère des délais très courts.
En effet, les signaux lumineux ou les ondes radio se déplacent à la vitesse de la
lumière, et sur de courtes distances (< 10m), le temps de trajet d’une balise à
l’autre est inférieur à la durée d’un cycle d’horloge. La faible résolution d’échan-
tillonage rend une mesure de délai aller-retour prise par deux balises à quelques
cm l’une de l’autre indifférenciable d’une mesure prise à plusieurs mètres de
distance.
Pour résoudre ce problème, nous proposons dans cette section un protocole
théorique exploitant la dérive des horloges entre les deux balises pour augmenter
considérablement la résolution de la mesure en compilant les informations d’un
grand nombre de d’échanges.

Figure 4.16 – Dispositif de mesure de temps de vol : deux balises distantes


échangent des paquets et observent la durée aller-retour.

122
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

4.5.1 Protocole de mesure de temps de vol : description et


intuitions
Dans cette section, nous décrivons de manière intuitive un protocole de me-
sure de temps de vol entre deux microcontrôleurs. Il permet en théorie de me-
surer précisément des délais de propagation aller-retour très courts de signaux,
lumière ou radio, que s’échangent deux microcontrôleurs équipés d’émetteurs-
récepteurs. Ce protocole nécessite que les échanges soient répétables à l’iden-
tique dans le temps. La précision de la mesure s’obtient en analysant l’agrégat
de mesures effectuées sur un nombre déterminé d’allers-retours. Nous verrons
aussi que, tout comme avec la problématique de mesure de temps de réponse,
effectuer une moyenne naïve sur un cadre ne garantit pas une augmentation de
la résolution de la mesure.

4.5.1.1 Exemple fil rouge : Télémètre optique

Figure 4.17 – Dispositif optique pour la mesure de temps de vol.

Pour illustrer le protocole, prenons l’exemple concret d’un télémètre optique,


voir figure 4.17 : deux balises sont équipées d’émetteurs-récepteurs optiques,
DEL et photodiodes, pilotés par deux microcontrôleurs, un dans chaque balise.
Les balises sont éloignées de quelques mètres l’une de l’autre. La première balise
émet un faisceau lumineux au travers de sa DEL , un ping à destination de la
deuxième balise. Le faisceau est capté par la photodiode de la deuxième balise
qui répond directement en émettant un pong, une réponse lumineuse à destina-
tion de la première balise.
Le microcontrôleur de la première balise garde en mémoire le délai qu’il a
observé entre le ping et le pong. Les deux balises étant suffisamment proches, on
considérera pour la suite du raisonnement que le délai aller-retour est inférieur
au cycle d’horloge des deux balises. Le cas général sera considéré dans la section
suivante.

123
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

4.5.1.2 Principe de fonctionnement

Figure 4.18 – Diagrammes de temps obtenus avec le dispositif de mesure de temps


de vol.

Le protocole exploite la légère différence de fréquence entre les microcontrô-


leurs des deux balises. Appelons le microcontrôleur de la première balise micro-
contrôleur Emetteur (µE) et celui de la deuxième balise microcontrôleur Renvoyeur
µR. Nous garderons cette mnémonique : µE émet un signal et µR joue le rôle d’un
miroir en renvoyant un écho. Le chronogramme d’un tel échange est présenté sur
la figure 4.18
À tout instant, il existe un délai entre le moment où un front d’horloge a lieu
sur µE et le moment où un front d’horloge a lieu sur µR. Grâce à la différence
de fréquence, ce déphasage, cycle périodiquement entre 0 et 1 : il est égal à 0
quand les fronts ont lieu en même temps (on dira alors qu’ils sont en phase), il
est égal à 0.5 quand les fronts sont éloignés au maximum. Nous choisissons ici
de normaliser le décalage de phase avec une valeur entre 0 et 1 plutôt que de
l’exprimer sous la forme d’un angle en degrés ou en radians.
La valeur du déphasage change la valeur du délai observé par µE : En effet, si
le déphasage des fronts de µR par rapport à ceux de µE est légèrement plus grand

124
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

que la durée d’un trajet aller du faisceau lumineux, alors µE peut déclencher une
émission sur un front d’horloge et recevoir la réponse de µR au prochain cycle.
Dans le cas contraire, si le déphasage est trop important ou trop faible, alors µE
recevra la réponse de µR deux cycles après avoir émis le signal ping.
Lorsque le délai observé par µE n’est pas le même pour deux prises consécu-
tives, alors cela signifie que le déphasage est proche de la durée d’un trajet aller
du faisceau lumineux. En particulier, si le délai observé par µE est de 1 cycle,
alors cela signifie que la valeur absolue du déphasage , comprise entre 0 et 0.5
cycle, est inférieure à la durée d’un trajet aller du faisceau lumineux. En connais-
sant la vitesse à laquelle les horloges des microcontrôleurs se déphasent , vitesse
supposée constante, on peut mesurer la proportion du temps pendant laquelle
le déphasage entre µE et µR est inférieur à la durée d’un trajet aller. On obtient
alors le temps de vol en multipliant la valeur par la durée d’un cycle.
La partie suivante décrit le pseudo-code simplifié du protocole. Ce dernier sera
étudié plus formellement dans les sections qui suivront.

4.5.1.3 Pseudo-code et exemples

//Protocole temps de vol ///////////////////////////////////////////////

function horodater()
{
return numéro_cycle_courant; //Utilise un compteur du µC.
}

//Code Émetteur µE /////////////////////////////////////////////////////

function prise_échantillon()
{
var Tx0 = horodater();
activer_DEL();
var r = attendre_reponse_photodiode();
var Rx1p = horodater();
return (Rx1p - Tx0); //Durée ping-pong.
}

function nettoyer_séquence(prises)
{
//La première séquence de 1 est potentiellement plus courte,
// car on a pu commencer au milieu de la séquence, donc on ne
//la prend pas en compte jette:
prises = supprimer_plus_grande_sous_séquence_de_1(prises);

prises = conserver_plus_grande_sous-séquence_de_1_et_de_0(prises);

125
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

// (expression régulière: 1*0*) en partant du début.

return prises;
}

function agréger_échantillons()
{
var prises = new Liste();

for(var i=0;i<N;i++)
prises.ajouter( prise_échantillon() );

prise = nettoyer_sequence(prises);

var cpt = compter_nombre_de_1(prises);


return cpt / prises.longueur();
}

//Code Renvoyeur µR ////////////////////////////////////////////////////

function loop()
{
var r = attendre_reponse_photodiode();
var Rx0p = horodater();
activer_DEL();

Ci-dessous un exemple de mesure suivant l’algorithme :

Ensemble de prises:
111111000000000000000000011111111000000000000000000011111111000000000000

On enlève les premiers échantillons et on conserve une sous-séquence


de prises correspondant à une rotation complète du cycle de µD par
rapport au cycle de µO.

résultat:

111111110000000000000000000

La proportion de 1 est proportionnelle au temps de vol que l’on souhaite me-


surer. La précision de la mesure dépend de la taille de la séquence, taille qui elle
même dépend de la vitesse de déphasage.

126
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

Dans les sections suivantes, nous formaliserons le protocole et nous entrerons


dans les détails calculatoires.

4.5.2 Calculs de délais : description formelle


Dans la partie précédente, nous avons décrit de manière intuitive le protocole
que nous proposons pour la mesure précise de temps de vol. L’intuition a en
outre été donnée sur un exemple simplifié. Dans cette partie, nous décrivons le
protocole dans le cas général et détaillons les calculs des différents délais.
Pour rappel, notre solution consiste en une agrégation intelligente d’un en-
semble de mesures prises à intervalles réguliers : les horloges des microcontrô-
leurs étant légèrement différentes, chaque nouvelle mesure est prise sous un
déphasage d’horloge différent. Le délai observé entre la date de réception et la
date d’envoi change en fonction du déphasage et du temps de vol. Une analyse
de ces observations permet d’estimer le temps de vol réel avec une granularité
fonction du nombre de mesures.

4.5.2.1 Évènements d’émission et de réception


Soit deux microcontrôleurs nommés respectivement émetteur µE et renvoyeur
µR. µE émet un signal, µR le renvoie, l’émetteur observe le délai entre la date
d’envoi et la date de réception. µE et µR sont dotés d’horloges de même fréquence
nominale. On considère un modèle d’horloge idéal sans dérive.
µE et µR contrôlent chacun un émetteur-récepteur. Sur front d’horloge, µE
émet un signal à destination de µR. L’émission de ce signal constitue un évène-
ment de début Tx0. Lorsque le transcepteur de µR reçoit le signal, cette reception
constitue un évènement Rx0 perçu par uR sur son prochain front d’horloge. Sur
perception de Rx0, µR répond en émettant un signal à destination de µE. La ré-
ception de ce signal par le transcepteur de µE constitue un évènement de fin
Rx1.
Prenons l’horloge de µE comme référence de temps, et le cycle d’horloge de
µE comme unité dans ce référentiel pour étudier la chronologie des évènements
lors d’un échange aller-retour.

Lemme 2. Lorsque le récepteur de µR reçoit le signal émis par µE (après un délai


d), la durée entre l’évènement de réception Rx0 et sa perception par µR varie en
fonction de la valeur du déphasage p :

si {d} < p
(
p − {d}
délai avant perception par µR =
1 − ({d} − p), sinon
Lemme 3. Sur réception du ping, µR émet sa réponse. Celle-ci arrive sur le
récepteur de µE après un délai d et est perçu par µE sur son prochain front
d’horloge, soit après un délai fonction du déphasage p :

127
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

(1 − p) − {d} si {d} < (1 − p)


(
délai avant perception par µE =
1 − ({d} − (1 − p)), sinon

En fonction du délai de propagation d et du déphasage p, µE observe l’un des


3 délais suivants entre l’évènement d’émission Tx0 et l’évènement de réception
Rx1 :
— (2bdc + 1),
— (2bdc + 2),
— (2bdc + 3).
Nous allons ici étudier la répartition temporelle de ces valeurs et montrer que
l’on peut en déduire la partie fractionnaire du délai d.

4.5.2.2 Disjonction de cas d’une prise, d < 0.5


Lemme 4. Dans le cas où {d} < 0.5 :

2bdc + 1 si {d} < p et {d} < 1 − p


(
délai observé par µE =
2bdc + 2 sinon

Démonstration. Parmis toutes les configurations, la configuration {d} > p, {d} >
1−p n’est pas possible, car nous sommes sous l’hypothèse {d} < 0.5 et p+(1−p) = 1.
Nous réalisons la suite de la preuve graphiquement, en étudiant ci-après les 3
configurations restantes. Voir figures 4.19,4.20,4.21.

Figure 4.19 – Diagramme de temps pour la configuration {d} < 0.5, {d} < p,
{d} < 1 − p.

128
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

Figure 4.20 – Diagramme de temps pour la configuration {d} < 0.5, {d} > p,
{d} < 1 − p.

Figure 4.21 – Diagramme de temps pour la configuration {d} < 0.5, {d} < p,
{d} > 1 − p.

4.5.2.3 Disjonction de cas d’une prise, d > 0.5


Lemme 5. Dans le cas où {d} > 0.5 :

2bdc + 3 si {d} > p et {d} > 1 − p


(
délai observé par µE =
2bdc + 2 sinon

Démonstration. Parmis toutes les configurations, la configuration {d} < p, {d} <
1−p n’est pas possible, car nous sommes sous l’hypothèse {d} > 0.5 et p+(1−p) = 1.
Nous réalisons la suite de la preuve graphiquement, en étudiant ci-après les 3
configurations restantes. Voir figures 4.22,4.23,4.24.

129
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

Figure 4.22 – Diagramme de temps pour la configuration {d} > 0.5, {d} > p,
{d} > 1 − p.

Figure 4.23 – Diagramme de temps pour la configuration {d} > 0.5, {d} > p,
{d} < 1 − p.

Figure 4.24 – Diagramme de temps pour la configuration {d} > 0.5, {d} < p,
{d} > 1 − p.

130
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

4.5.2.4 Mesures périodiques et agrégation


Dans le cadre du protocole, les microcontrôleurs effectuent des prises d’échan-
tillons à intervalles réguliers. On considère une grande séquence de délais ob-
servés par µE. Cette séquence est une suite de nombres alternant entre 2bdc + 1
et 2bdc + 2 (on considère sans pertes de généralités que {d} < 0.5 ). Le plus
petit nombre dans cette séquence (2bdc + 1) moins 1 correspond à la partie en-
tière du temps de vol aller-retour, durée exprimée en nombre cycle. Le rapport
cyclique de cette séquence correspond à la partie fractionnaire du délai. En effet,
le lemme 4, donne une inégalité entre le délai et le déphasage, déphasage qui
évolue linéaireent.
Pour une analyse plus détaillée, se référer à l’analyse faite précédemment pour
la mesure de temps de réponse 4.4.2, le raisonnement y est analogue.

4.5.3 Simulation

Figure 4.25 – Simulateur : Lien simulateur.

Nous avons réalisé un simulateur de mesure de temps de vol. Il permet de


visualiser à la manière d’un oscilloscope les fronts d’horloge ainsi que la chrono-
logie des évènements d’émission et de renvois entre deux microcontrôleurs.
Le simulateur est livré attaché au présent document PDF.

4.5.3.1 fonctionnement
Le simulateur de mesure de temps de vol utilise les équations des sections
précédentes.

131
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

Le signal carré rouge est le signal d’horloge du microcontrôleur émetteur. Le


signal carré bleu est le signal d’horloge du microcontrôleur renvoyeur.
L’émetteur émet un ping. Ce ping est reçu par le renvoyeur et perçu sur front
d’horloge. L’évènement de perception du ping est matérialisé par le trait jaune.
Après un délai d’attente arbitraire de 3 cycles d’horloge, le renvoyeur envoie
le pong. Ce pong est reçu par l’émetteur et est perçu sur front d’horloge. L’évè-
nement de perception du pong est matérialisé par le trait cyan.
Le trajet du signal est matérialisé par la courbe magenta : les fronts descen-
dants du signal matérialisent la propagation des émissions ping de µE, les fronts
montants du signal matérialisent la propagation des émissions pong de µR.
Enfin, la courbe verte indique la parité de la valeur du délai observé par
µE entre l’émission et la réception : les fronts de la courbe verte indiquent un
changement du délai observé par µE. La fréquence de ce changement correspond
à la différence de fréquence entre les horloges de µE et µR. Le rapport cyclique
de cette alternance de la parité dépend quand à lui directement de la distance
séparant µE et µR.

Usage Les fréquences des microcontrôleurs ainsi que la distance les séparant
sont paramétrables en cliquant sur les périodes notées T1 et T2 et ainsi qu’en
cliquant sur la distance d.
Le curseur tscale permet de choisir la vitesse de la simulation. 1s/1s signifie
temps réel. Par défaut, l’échelle est à 2ms/s ce qui permet d’observer la progres-
sion du déphasage.
Les échelles horizontales et verticales sont modifiables en gardant le clic en-
foncé et en faisant glisser le curseur sur la surface d’affichage.

132
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.5
Mesure de temps de vol

4.5.3.2 Captures

Ping Pong

Figure 4.26 – Changement de parité du nombre de cycles observé entre émission


du ping et perception du pong par µE : le trait cyan indiquant
l’évènement de perception du pong se décale sur un autre front
d’horloge de µE et la courbe verte change de position. µE et µR
sont placées à 12m de distance.

133
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

Figure 4.27 – Changement périodique de la parité du nombre de cycles observé


entre émission du ping et perception du pong. Le rapport cyclique
de la courbe verte diffère en fonction de la distance entre µE et
µR : pour 12m ce rapport est proche de 1/4, tandis que pour une
distance de 16m, le rapport est proche de 3/4. Ce rapport cyclique
correspond à la partie fractionnaire du délai exprimé en cycles
d’horloge.

4.6 Confrontation avec la réalité physique


Dans les sections précédentes, nous avons présenté deux protocoles théoriques
permettant d’effectuer des mesures de délais très précises, dont la résolution ne
dépend virtuellement que du nombre d’échantillons réalisés. Ces protocoles de
mesure de temps de vol et de temps de réponse on été décrits sous un modèle
simplifié, faisant abstraction de facteurs tel que le bruit analogique sur la cap-
tation, la gigue sur les fronts d’horloges, ainsi que la dérive de la vitesse des
horloges en fonction de l’environnement. Pour réduire les erreurs de mesure en
pratique, il est nécessaire de prendre en compte ces considérations.
Ainsi dans cette section, nous confrontons les protocoles de mesure de temps
de vol et de mesure de temps de réponse à la réalité physique. Nous exposerons

134
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

d’abord les principaux défauts de nos modèles simplifiés, puis nous étofferons
ces modèles pour augmenter la robustesse des protocoles en conditions réelles.
Enfin, nous ferons part de résultats expérimentaux obtenus au travers deux dis-
positifs prototypes, communicant en utilisant respectivement des faisceaux lumi-
neux infrarouges ainsi que des ondes radio 2.4GHz.

4.6.1 Dérive des vitesses des horloges


Dans les sections précédentes, nous avons supposé que les vitesses des micro-
contrôleurs étaient constantes au cours du temps. Sous une telle hypothèse, un
microcontrôleur est capable d’estimer très précisément la vitesse relative d’un
autre microcontrôleur, en lui réclamant deux horodatages espacés d’une longue
durée. En pratique, la fréquence d’un microcontrôleur évolue en permanence,
principalement à cause de la température. L’amplitude maximale de cette va-
riation est exprimée en ppm (parties par millions) dans les documentations
constructeur. Cette faible dérive suffit à restreindre les techniques décrites dans
les sections précédentes à des fenêtres de temps réduites : Si, grâce à la rela-
tive lenteur de l’évolution de la température, la variation de fréquence peut être
négligée sur de petits intervalles de temps, cette dernière distord les résultats
mesurés lorsque l’on considère des durées de plusieurs secondes.
Considérons par exemple une mesure de temps de réponse. Lors d’une mesure
de temps de réponse, deux microcontrôleurs coopèrent, un premier microcon-
trôleur déclenche un capteur périodiquement, et un second microcontrôleur ob-
serve le délai entre le déclenchement du capteur et la réponse du capteur. Ce
délai observé alterne entre deux valeurs que l’on note ici 0 et 1 6 .
Sous l’hypothèse que le déphasage progresse linéairement sur l’ensemble des
prises, il est possible d’estimer la partie fractionnaire du temps de réponse, en
comptant la proportion de symboles 1 occurant sur une rotation complète. Si la
fréquence des microcontrôleurs change tout au long de la séquence de prises,
cela implique que la vitesse du déphasage change aussi. Ainsi, la frise des sym-
boles 0 et 1 observés se distord suivant ces changements de la vitesse de dépha-
sage :

prises: 0111111100000000000000111111100000000000000111111100000000000000

|<----------------->|
Rotation complète du déphasage (p)
entre les horloges des µC

Figure 4.28 – Mesure sous un modèle simplifié, horloges idéales avec des fréquences
fixes

6. On enlève sans perte de généralités tout délai statique de l’équation.

135
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

prises: 0111111100000000000000111111111111000000000000001111111000000000

Vitesse
de déphasage : _______________ ___________________________________
|____|

|<--->| |<-------->|
Séquence de '1' Séquence de '1'
Normale distordue

Figure 4.29 – Mesure sous un modèle réaliste, avec des fréquences variables dans
le temps

4.6.1.1 Résolution limitée des balayages multiples

prises: 0001110000000111000000011100000001110000000111000000011100000001

Rotations
Complètes: |<------>||<------>||<------>||<------>||<------>||<------>|

Figure 4.30 – Ensemble de prises couvrant plusieurs rotations du déphasage.

Nous avons utilisé précédemment les informations acquises sur plusieurs ro-
tations complètes pour augmenter la résolution des mesures de temps de vol
et de temps de réponse. Cette technique requiert une connaissance précise de
la vitesse de déphasage δ, pour calculer le nombre d’échantillons à prendre en
compte. En effet, pour éviter tout biais dans l’estimation, il est nécessaire de
garder uniquement un cadre correspondant à une rotation (ou méta-rotation)
complète. Or si la vitesse de déphasage n’est pas uniforme sur l’ensemble des
prises, cette condition n’est pas respectée. Il est ainsi nécessaire en pratique de
monitorer la stabilité de la vitesse de déphasage pour s’assurer que la valeur
mesurée n’est pas altérée.
Sous un modèle idéal, la méthode du balayage multiple permet de calculer un
nombre de prises à prendre en compte pour obtenir une résolution δn , avec n la
profondeur du méta-balayage considéré. On se base sur une bonne estimation de
δ, la vitesse de déphasage, que l’on intègre pour calculer la valeur du déphasage
pk lors de chaque nouvelle prise d’échantillon. Si l’estimation de δ est correcte,
alors les valeurs estimées du déphasage le sont aussi. Puisque les délais observés
sont soit 0, soit 1, en fonction d’un seuil sur la valeur du déphasage, alors la
séquence triée suivant la valeur du déphasage contient une unique transition de
1à0:

136
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

Séquence brute:
1111000000111100000011110000001111000000111100000011110000001111000000

Même séquence, réordonnée suivant la valeur du déphasage prédite:


1111111111111111111111111111000000000000000000000000000000000000000000

Si l’estimation de la vitesse de déphasage δ est fausse, alors la séquence ne


sera pas alignée correctement, et il y aura plusieurs transitions de 0 à 1. L’idée
est donc de vérifier la qualité de l’estimation en analysant les transitions de
la séquence d’observations triées suivant la valeur du déphasage : tant que la
séquence d’échantillons considérée comporte des erreurs, on lui retire autant
d’échantillons que nécessaire en bout de chaîne. Lorsque la séquence comporte
une unique transition de 0 à 1 (ou de 1 à 0), alors cela signifie que l’estimation de
la vitesse δ est bonne, il est alors possible de calculer la résolution de la mesure.

4.6.2 Impact de la chaîne analogique


Un microcontrôleur commande des actionneurs et analyse la réponse de cap-
teurs. Le microcontrôleur produit et lit des signaux numériques, tandis que les
actionneurs et les capteurs travaillent avec des signaux analogiques. Pour réali-
ser l’interface entre ces deux mondes, des chaînes de traitement analogique et de
conversion sont employées entre les deux extrémités. Par exemple, un microcon-
trôleur ne peut pas lire directement la réponse d’une photodiode à une impulsion
lumineuse, car le signal est trop faible. Ainsi, le signal est d’abord amplifié, puis
discrétisé à l’aide d’un comparateur avant d’être transmis au microcontrôleur, qui
lira des valeurs binaires. De même, un microcontrôleur ne peut pas actionner di-
rectement une DEL infrarouge de puissance, car il n’est pas capable de fournir
un courant suffisament important, il pilote la DEL indirectement à l’aide d’un
transistor.
Dans le contexte de la mesure de délais, de temps de réponse ou bien de temps
de vol, la chaîne de traitements analogiques introduit des délais supplémentaires
non négligeables sujets à des variations fonctions de facteurs environnementaux
tels que la température ou encore l’amplitude des signaux traités. Dans cette sec-
tion nous allons décrire le fonctionnement général d’une chaîne de traitement
analogique, énumérer les différents délais qu’elle apporte et comment ces délais
varient en fonction de l’environnement. Dans les sections qui suivront, nous dé-
taillerons deux chaînes de traitement que nous avons réalisées sur mesure, l’une
utilisant des émetteurs récepteurs infrarouges et l’autre employant des émetteurs
récepteurs radio 2.4Ghz nRF52832.

137
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

4.6.2.1 Délai de propagation


Tout composant électronique disposant d’une entrée et d’une sortie introduit
un délai de propagation lorsqu’un signal le traverse. Ce délai est largement supé-
rieur au seul délai de propagation du signal électrique dans les pistes en cuivre
du circuit, car un signal électrique se propage à un fort pourcentage de la vitesse
de la lumière. Ce délai de propagation est spécifique au composant considéré.
Un circuit intégré complexe, rassemblant des dizaines de composants de base
aura un délai de propagation plus important qu’un composant simple, mais ce
délai dépend aussi de la construction du composant et des choix du fabricant en
fonction champ applicatif visé. Il existe notamment des composants optimisés
pour la haute fréquence, avec des délais faibles.
Un composant essentiel de toute chaîne de traitement analogique est l’amplifi-
cateur opérationnel. C’est un composant multiusage permettant d’amplifier un si-
gnal ainsi que de comparer un signal à un seuil. C’est ce composant qui introduit
généralement les plus fortes variations de délai dans la chaîne de traitement. En
plus d’être sensible à la température, Les temps de réponses d’un amplificateur
opérationnel sont fonction de l’amplitude du signal d’entrée : plus l’amplitude
du signal d’entrée est grande, plus les basculements du signal de sortie sont nets
et rapides. Les amplificateurs opérationnels exhibent aussi un temps de récupé-
ration lorsqu’il sont soumis à saturation. En effet, lorsque l’amplitude du signal
d’entrée est trop importante, la sortie se fige un certain temps lorsque le signal
atteint les limites du rail d’alimentation.
À titre d’exemple, voici les courbes caractérisitques de l’amplificateur opéra-
tionnel haute fréquence THS4304 que nous avons utilisé dans nos prototypes.

138
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

Figure 4.31 – Extrait de la documentation technique de l’amplificateur opération-


nel THS4304 (Texas-Instruments 2004). Le "Slew Rate" indique
la vitesse du basculement de la sortie en fonction de la tension.
Pour simplifier, plus le signal d’entrée est fort, plus le basculement
est rapide. La "Transient Response" montre un exemple de sortie
amplifiée d’un signal d’entrée. Enfin, "Overdrive Recovery Time"
montre le temps de récupération lorsque le signal d’entrée sort de
la plage de fonctionnement. L’asymétrie entre les fronts montants
et descendants de la courbe output témoigne de l’introduction d’un
délai supplémentaire.

4.6.3 Propotype mesure de temps de vol d’infrarouges


Nous avons réalisé un dispositif preuve de concept de la mesure de temps
de vol de signaux infrarouges. Ce dispositif valide notre approche et montre les
limites de nos protocoles lorsque ceux-ci sont confrontés au bruit, à la gigue, à
la dérive des horloges et aux autre effets parasites de la chaîne de traitement
analogique.
Dans cette section nous allons décrire le dispositif expérimental et ses compo-
sants, puis nous détaillerons l’implémentation du protocole sur microcontrôleurs
Cypress PSOC (C YPRESS 2019) et nous analyserons les résultats pratiques obte-
nus.

139
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

4.6.3.1 Carte électronique

Figure 4.32 – Carte fabriquée sur mesure (version alpha), équipée d’un micro-
contrôleur PSOC, d’une chaîne analogique, d’une DEL et d’une
photodiode.

Nos avons conçu et assemblé deux modules identiques. Chaque module dis-
pose d’un microcontrôleur Cypress PSOC CY8C5267AXI-LP051 pilotant une diode
émettrice d’infrarouge haute puissance TSAL6100 et monitorant une photodiode
PIN haute fréquence BPV10NF. Le microcontrôleur active la DEL émettrice grâce
à un transistor rapide, ce qui permet de produire des salves d’infrarouge très
courtes, mais très puissantes pour être perçues distinctement plusieurs mètres
plus loin par la photodiode du second module.
Le signal de la photodiode est amplifié et filtré par une chaîne analogique
complexe avant d’arriver au microcontrôleur. En effet, la photodiode produit
un courant très faible, proportionnel au rayonnement lumineux qui la frappe.
De plus, bien que la photodiode dispose d’un filtre infrarouge, elle demeure en
partie sensible à la lumière ambiante. Le rôle de la chaîne analogique est alors
double : la chaîne doit amplifier le signal tout en filtrant la composante du signal
provenant de la lumière ambiante. En bout de chaine, le signal filtré et amplifié
est discrétisé avant de parvenir au microcontrôleur.

140
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

4.6.3.2 Chaine analogique

Figure 4.33 – Schéma électrique de la chaîne analogique du prototype. Au cours


de nos expérimentations, nous avons observé de meilleurs résultats
en court-circuitant le premier étage d’amplification pour utiliser
directement le détecteur de pic.

Le microcontrôleur émetteur émet un signal carré sur la base du transistor qui


active la DEL. La DEL émet alors un signal lumineux légèrement déformé par
rapport au signal de commande : Les fronts initialement très raides deviennent
arrondis.
La photodiode capte l’impulsion lumineuse et empire la déformation du signal.
En effet, la photodiode a une capacitance parasite qui contribue à ralentir et à
lisser les montées et déscentes du signal. Les fronts ne sont alors plus raides, et
le signal prend la forme d’un aileron de requin, forme caractéristique du trait
exponentiel de la charge/décharge d’un condensateur. De plus, une partie de la
lumière ambiante est captée par sa photodiode, ce qui rajoute un décalage à la
valeur du signal. Nous filtrons du signal cette composante continue imputée à la
lumière ambiante à l’aide d’un filtre passe haut, un condensateur placé en série,
qui laisse passer les impulsions courtes de la DEL infrarouge, mais bloque les
signaux basse fréquence du soleil et de l’éclairage artificiel.
Ensuite, le signal provenant de la photodiode est amplifié par un amplifica-
teur opérationnel THS4304 (T EXAS -I NSTRUMENTS 2004) monté en détecteur de
pic. Le fonctionnement du détecteur de pic est le suivant : tant que le signal
provenant de la photodiode est croissant, le détecteur de pic suis et amplifie le

141
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

signal ; lorsque le signal provenant de la photodiode atteint son pic, l’amplifica-


teur produit un front descendant très raide, et reste à un niveau bas le temps de
la décharge d’un condensateur, avant de recommencer à suivre le signal de la
photodiode.
Enfin,le signal analogique amplifié produit par le montage détecteur de pic est
passé à un comparateur TLV3501AQDBVRQ1. Ce comparateur réalise une opéra-
tion de seuillage sur le signal pour le transformer en signal numérique binaire
pouvant être lu par le microcontrôleur. Il adapte les niveaux de tensions pour
que ceux-ci correspondent aux niveaux logiques acceptés par le microcontrôleur.

4.6.3.3 Délais introduits par la chaine analogique


La principale source de délais variables est l’amplificateur opérationnel monté
en détecteur de pic. L’amplificateur analyse le signal d’entrée provenant de la
photodiode et réagit en produisant un front descendant lorsque la dérivée du
signal devient négative. Cette réaction est d’autant plus rapide que la dérivée
est prononcée, ceci afin d’être robuste et d’éviter de faux déclenchement sur de
faibles variations dues au bruit. Ainsi, la décroissance du signal doit être suffi-
samment importante pour que l’amplificateur déclenche sa réaction, ce qui peut
être problématique, car la forme du signal provenant de la photodiode dépend
du rayonnement lumineux reçu. Aussi, lorsque le signal capté est trop fort, si
l’émetteur et trop proche du récepteur par exemple, l’amplificateur sature et in-
troduit un délai de récupération.
L’amplitude de la sortie du montage détecteur de pic influe aussi les délais du
montage comparateur, montage utilisant lui aussi un amplificateur opérationnel :
si l’amplitude du signal à l’entrée du comparateur est trop grande, il faut prendre
en compte le temps de récupération du comparateur ; à l’inverse, si l’amplitude
est trop faible et si le signal est trop proche du seuil du comparateur, alors la
réaction du comparateur sera fortement ralentie.
Pour ces raisons, la chaîne analogique a un fort impact sur la mesure de délais
(temps de vol), surtout si elle a pour vocation d’être employée pour mesurer des
distances : le délai de propagation des faisceaux infrarouges varie en fonction
de la distance entre les modules, mais, en même temps, la distance et l’angle
modifient l’amplitude du signal reçu, ce qui change le délai des traitement dans
la chaîne analogique. Or, le délai perçu est l’addition du délais de propagation
ainsi que des délais de traitement, ce qui nécessite d’introduire un mécanisme
de compensation pour obtenir une mesure sans déformation.

4.6.3.4 Code embarqué


Les microcontrôleurs que nous avons utilisés sont des PSOCs CY8C5267AXI-
LP051 du constructeur Cypress. Ces microcontrôleurs ont la particularité d’in-
tégrer une partie logique programmable qui permet de câbler en dur les trai-

142
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

tements critiques nécessitant une précision au cycle près. Les microcontrôleurs


sont ici cadencés à leur fréquence maximale, 64MHz.
Le dispositif de mesure est composé de deux modules, un module configuré
en tant que module émetteur, et l’autre configuré en tant que module renvoyeur.

Module Renvoyeur Le module renvoyeur est configuré pour attendre une ré-
ception sur sa photodiode. Lorsqu’une impulsion est reçue sur la photodiode, la
chaine analogique qui suit la photodiode génère un front correspondant à l’ex-
tinction de la DEL de l’émetteur. Lorsque ce front est perçu par le microcontrô-
leur (sur son front d’horloge), ce dernier déclenche l’émission d’une impulsion
lumineuse sur sa DEL. Il déclenche aussi une minuterie inhibant toute réception
avant qu’un certain délai se soit écoulé, ceci pour but d’éviter tout déclenchement
intempestif en cas d’erreur ou de fausse détection.

Modulé Émetteur L’émetteur dispose d’une temporisation configurée pour émettre


une impulsion sur sa DEL à intervalle régulier. Lors du déclenchement de l’im-
pulsion, l’émetteur déclenche un chronomètre qu’il arretera sur réception d’une
réponse du module renvoyeur.
Quelques microsecondes plus tard, la photodiode capte la réponse du ren-
voyeur. La chaine analogique, identique entre émetteur et renvoyeur, génère
alors un front perçu par le microcontrôleur qui stoppe le chronomètre sur front
d’horloge. La valeur en cycles indiquée par le chronomètre correspond au résul-
tat d’une prise. Le microcontrôleur du module émetteur analyse ensuite un grand
nombre de prises et produit une mesure précise de délais.

143
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

Figure 4.34 – Rapport cyclique observé par le dispositif en fonction de la distance

Observations et résultats Lors de nos expérimentations, nous avons observé


une précision de mesure de l’ordre de 10cm, ce qui est inférieur à 4.68m, la
distance parcourue en 1 cycle @64Mhz, ce qui tend à prouver que le dispositif
fonctionne. Il reste cependant difficile de quantifier l’influence de la puissance
du signal reçu sur ces mesures. On peut aussi noter que la mesure est faiblement
bruitée et facilement filtrable. Nous verrons que cela contraste avec le second
prototype utilisant les ondes radio 2.4GHz.

4.6.4 Dispositif de mesure de temps de vols d’ondes radio


Dans la section précédente, nous avons réalisé un dispositif permettant de
mesurer les temps de vols de faisceaux infrarouges avec pour but applicatif la
mesure de distances (télémètre optique).
Dans cette section, nous réalisons un dispositif similaire dans lequel nous rem-
plaçons les faisceaux lumineux par des ondes radio produites par des microcon-
trôleurs nordic nRF52832, équipés de transmetteurs compatibles Bluetooth 4
(micro-ondes 2.4Ghz).
Nous verrons que les liaisons radio posent de nouveaux problèmes venant
bruiter les captations, en particulier les interférences multi-chemin. De plus,
pour ce dispositif expérimental, nous exploitons les radios des microcontrôleurs
au delà du cadre prévu par le constructeur, de ce fait, la documentation tech-
nique fournie n’est plus suffisament détaillée pour nos usages, nous obligeant
à avancer à l’aveugle, nous en profiterons donc pour exposer notre compréhen-
sion/assomptions actuelles concernant le fonctionnement interne (caché) de ces
microcontrôleurs et comment cela interfère avec nos prises de mesures.

144
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

4.6.4.1 Modules nRF52832

Figure 4.35 – Modules BT832F utilisés pour le prototype. Comporte un micro-


contrôleur nrf52832, un oscillateur à quartz et une alimentation
DC-DC 3V.

Pour nos expérimentations sur les ondes radio, nous utilisons des modules ra-
dio BT832F du constructeur Fanstel, modules équipés de microcontrôleurs Nor-
dic nrf52832. Ces microcontrôleurs ont la particularité d’exposer une API permet-
tant de contrôler le périphérique radio à un très bas niveau au travers de registres.
La documentation technique (N ORDIC -S EMICONDUCTOR 2017) est précise dans
la description des délais radio. De plus, les microcontrôleurs nRF52832 disposent
d’un système d’évènements automatisant les interactions entre périphériques au
cycle près. Il est par exemple possible de déclencher l’envoi d’un paquet radio
sur l’évènement de fin d’une minuterie. De même, il est possible de stopper un
chronomètre sur réception d’un paquet pour effectuer un horodatage.
Ces particularités du nRF52832 nous permettent d’implémenter des protocoles
radios propriétaires 7 précis au cycle près, précision requise pour l’application à
la mesure de temps de vol.

4.6.4.2 Chaine analogique et puissance du signal


Puisque nous utilisons des modules trouvables dans le commerce et que nous
les employons au delà des limites prévues par le constructeur, nous ne dispo-
sons pas d’un descriptif détaillé de la chaine analogique. Néanmoins, grâce à
des indices disséminés dans la documentation ainsi qu’en connaissant le fonc-
tionnement général d’une telle chaîne, nous avons émis des hypothèses sur sa
constitution.
7. Terme employé dans la documentation technique pour désigner un protocole personnalisé,
par opposition à protocole standard comme bluetooth BLE.

145
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

Le récepteur radio reçoit un signal très faible sur son antenne, signal que le
récepteur filtre et amplifie. La documentation technique évoque brièvement trois
étages d’amplifications, respectivement en début, milieu et fin de chaîne. Tout
comme notre chaîne analogique avec les faisceaux infrarouge, nous pensons que
l’amplitude du signal radio en entrée influe les délais de traitement, ce qui serait
cohérent avec nos observations.

4.6.4.3 Interférences multi-chemin


À haute fréquence, les ondes radio ont un comportement similaire à celui de
la lumière. Plutôt que de traverser des obstacles, les micro-ondes à 2.4Ghz vont
se réfléchir sur le sol et les murs. Ainsi, pour effectuer une mesure de distance
à partir des délais de propagation, il faut tenir compte de l’impact de ces reflets.
En effet, même si la distance parcourue par le signal reflété est plus grande que
la distance en ligne de vue, si le signal reflété est perçu plus fort que le signal en
ligne droite, alors le délai mesuré est celui du reflet (dans le cas où les antennes
sont mal orientées, la configuration de leurs lobes d’émissions peut faire que le
signal en ligne droite soit atténué et soit perçu moins fort que le signal reflété).
De plus, ces reflets interfèrent avec le signal en ligne directe : Chaque signal est
une onde sinusoïdale à une certaine amplitude, le signal perçu par le récepteur
est la somme de ces sinusoïdes ; Ces sinusoïdes arrivent déphasés sur le récepteur
en fonction de la différence de distance parcourue ; Si les deux sinusoïdes sont
en phase, alors l’amplitude du signal perçu est amplifiée, à l’inverse, si les deux
sinusoïdes sont en opposition de phase, alors le signal perçu est affaibli. Cela crée
donc une variation de l’amplitude du signal perçu. L’amplitude du signal perçu
n’est donc plus simplement influencée par la distance entre émetteur et récepteur.
Or on l’a vu précédemment, l’amplitude des signaux modifie les délais de la
chaine de traitement, ce qui obligera à compenser le délai observé en fonction
de l’amplitude.

4.6.5 Conditions d’expérimentation et résultats


Nous avons expérimenté le protocole de mesures de temps de vol avec des
conditions environnementales avantageuses. En effet, nous avons installé deux
modules nRF52832, un module émetteur et un module renvoyeur, sur des piliers
en bois à 1.80m du sol. La zone d’expérimentation est située aux abords du canal
de Provence, voir figure 4.36. Il s’agit d’un lieu dégagé sans obstacles dans un
rayon de 20m.

146
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

Figure 4.36 – Zone d’expérimentation dégagée, aux abords du canal de Provence,


43°30’36.7"N 5°45’11.0"E.

Figure 4.37 – Piliers radio, portant les modules nRF52832 à 1.80m du sol pour
limiter l’impact des reflets. (Photo illustrative prise à posteriori,
sur un terrain différent de la zone d’expérimentation.)

Nous avons réalisé une dizaine d’expérimentations sur une plage de distances

147
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.6
Confrontation avec la réalité physique

allant de 3 à 42m. Malheureusement, nos résultats sont mitigés. Si on observe


bien une corrélation entre le rapport cyclique observé et la distance, on observe
surtout une corrélation entre le rapport cyclique et la valeur du RSSI. De plus,
si la valeur observée du rapport cyclique varie en fonction de la distance et du
RSSI, la corrélation n’est ni linéaire, ni monotone. Ce phénomène est observable
sur la figure 4.38 qui retrace une expérience représentative. Les paramètres
de cette expérience sont les suivants : les noeuds sont placés à une distance
fixe de 12m. Seule l’orientation des antennes est modifiée. Chaque point sur le
graphe de gauche correspond à une mesure de délais, mesure obtenue par agré-
gation de 2048 échantillons avec une période d’échantillonnage de 12288 cycles
(@16MHz). Cette mesure, exprimée en nombre de cycles machine (@16MHz),
constitue une estimation du délai total aller-retour entre µE et µR. Elle contient
notamment plusieurs délais statiques nécessaires à la réception du paquet en-
trant, la création du paquet de réponse et le basculement de la radio du mode
réception vers le mode émission. Alors que la distance ne varie pas, on observe
une variation de la mesure d’amplitude 2 cycles, ce qui correspond à une erreur
de mesure de 37.5m. Le graphe de droite présente les valeurs de RSSI moyen
observés pour chaque mesure. Les variations du RSSI correspondent à un chan-
gement d’orientation des antennes effectué périodiquement toutes les 5 minutes.
On observe que la corrélation entre le délai mesuré et le RSSI n’est pas monotone.
Nous conjecturons que cette non-linéarité est à imputer au système d’auto-gain
de la chaine de traitement interne au nRF52832 : nous supposons qu’en fonction
de la puissance du signal, un coefficient d’amplification différent est appliqué,
introduisant un délai spécifique dans la chaîne de traitement.

Figure 4.38 – Graphe de gauche : délai aller-retour µE-µR mesurés par µE dans
le temps. Un point correspond à l’agrégation d’une séquence de
2048 échantillons (environs 1.5 secondes). Graphe de droite : valeurs
moyennes de l’indicateur RSSI lors des différentes mesures (un point
par groupe de 2048 échantillons).

Notons qu’afin de limiter l’impact des interférences multi-chemins, nous avons


réalisé l’expérience sur différents canaux radio (2407MHz, 2442MHz, 2473MHz)

148
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.7
Conclusion

pour varier la longueur d’onde utilisée. Cela n’a pas apporté d’amélioration signi-
ficative.

4.7 Conclusion
Nous nous sommes intéressés dans ce chapitre à la mesure de délais très courts,
comme le délai de propagation d’une onde radio sur quelques mètres. La diffi-
culté principale était de surpasser la faible résolution de mesure imposée par le
cycle d’horloge. En effet, puisque tout horodatage donné par un microcontrôleur
est arrondi au numéro de cycle d’horloge supérieur, le délai entre deux évène-
ments est lui aussi projeté sur l’entier supérieur lors de la mesure.
Pour pallier cette faiblesse, nous avons exploité les connaissances sur la dérive
des horloges acquises lors des précédents travaux sur la synchronisation. Nous
avons vu précédemment que deux systèmes, équipés chacun de sa propre hor-
loge, se déphasent inévitablement, de plus, ce déphasage est observable et est
mesurable. En effet, l’entier sur lequel est projeté le délai mesuré dépend de
la valeur du déphasage. Nous augmentons ainsi la résolution de la mesure en
prenant une série d’échantillons couvrant les différentes valeurs du déphasages
et en analysant les délais projetés : nous avons prouvé que le rapport cyclique
des valeurs prises par les projetés correspond à la partie fractionnaire du délai
mesuré.
Nous avons considéré deux configurations différentes que nous avons nom-
mées respectivement mesure de temps de réponse et mesure de temps de vol. Dans
la configuration mesure de temps de réponse, les deux microcontrôleurs contri-
buant à la mesure sont placés sur un même circuit et communiquent directe-
ment. Le microcontrôleur déclencheur µD déclenche une action, et le microcon-
trôleur observateur µO observe la durée de l’action. Dans la configuration mesure
de temps de vol, les deux microcontrôleurs sont à l’inverse éloignés l’un de l’autre
et s’échangent des paquets de données via les ondes. Le microcontrôleur émet-
teur µE émet un paquet ping, puis le microcontrôleur récepteur µR reçoit le ping
et répond avec un paquet pong.
Nous avons donné pour chacune de ces configurations les équations donnant la
résolution de mesure, théoriquement illimitée, croissant en fonction du nombre
d’échantillons pris, puis nous avons nuancé le discours en abordant l’impact po-
tentiel de l’environnement en situation réelle : plus la durée de la récolte d’échan-
tillon est grande, plus les fréquences des microcontrôleurs dérivent, affectées
notamment par les changements de la température ambiante, ce qui altère la
mesure.
Nous avons de plus, comme dans chaque chapitre, proposé un simulateur per-
mettant de visualiser interactivement l’impact des différents paramètres sur la
prise de mesure. Enfin, nous avons expérimenté la configuration mesure de temps
de vol en situation réelle via deux dispositifs distincts réalisés sur mesure : nous

149
4 Mesure de délais inférieurs au cycle d’horloge et mesure de distances – 4.7
Conclusion

avons d’une part mesuré le délai de propagation de salves d’infrarouges sur plu-
sieurs dizaines de centimètres, ceci avec deux cartes électroniques jumelles com-
portant DEL et photodiode infrarouge ainsi qu’une chaîne d’amplification ana-
logique pilotée par un microcontrôleur Cypress PSOC ; D’autre part, nous avons
mesuré le délai de propagation d’ondes radio 2.4GHz émis par deux modules
équipés de microcontrôleurs nRF52832. Les résultats obtenus avec ces deux dis-
positifs constituent une preuve de concept, cependant ils soulignent le très fort
impact de l’environnement physique ainsi que la sensibilité de la chaîne ana-
logique. Notamment, pour de futures expériences, nous porterons un soin tout
particulier à éviter les interférences multi-chemin, par exemple en utilisant des
fréquences autres que les 2.4Ghz ayant moins tendance à rebondir comme les
27MHz, ainsi qu’à paramétrer le plus finement possible la chaîne analogique afin
de prévenir tout impact négatif de mécanismes comme l’auto-gain.

150
5 Localisation par interférence et
observation de l’onde stationnaire
Lorsque, dans un milieu, deux ondes de fréquences et d’amplitudes identiques
se propagent dans des direction opposées, elles interfèrent pour former une onde
stationnaire. C’est un phénomène que l’on peu facilement observer en agitant
une corde attachée à son autre extrémité : l’onde se propage jusqu’à l’autre ex-
trémitée où elle est réverbérée. Lorsque l’onde et sa réverbération s’additionnent,
le mouvement de la corde change. On observe alors un mouvement vertical avec
des points fixes à la place d’un mouvement de propagation longitudinal.

Figure 5.1 – Simulateur d’interférences Lien simulateur.

Sous l’effet de cette onde stationnaire, l’amplitude de l’oscillation du champ


en un point de l’espace devient fonction : de la position de ce point dans l’espace,
de la longueur d’onde, et du déphasage initial entre les deux ondes. Ainsi, en
connaissant la longueur d’onde, et en mesurant l’amplitude de l’oscillation du
milieu en deux points de l’espace, on peut déduire la distance séparant ces deux

151
5 Localisation par interférence et observation de l’onde stationnaire – 5.1 Etat de
l’art

points 1 .
Dans ce chapitre, nous détaillons comment exploiter ce principe physique pour
mesurer des distances entre des modules radio. Nous provoquons volontairement
l’interférence entre les émissions de deux balises distantes, afin de former l’onde
stationnaire. Nous plaçons ensuite deux modules sur le segment délimité par
ces balises. Ces modules écoutent et mesurent l’amplitude du signal résultant de
l’interférence. En comparant leurs relevés d’indicateur de force de signal RSSI,
ils estiment la distance qui les sépare.
Les mesures de la force du signal étant imprécises car bruitées et peu réso-
lues, nous exploitons le lent déplacement de l’onde stationnaire induit par le
déphasage progressif des oscillateurs des balises, pour renforcer la mesure. En
effet, en connaissant d’une part la vitesse de déplacement de l’onde stationnaire,
et d’autre part en mesurant le délai entre l’observation d’un extrémum par un
module, puis l’observation du même extrémum par l’autre module. Finalement,
nous verrons comment généraliser la technique pour localiser des modules dans
le plan ou dans l’espace, et mesurer des distances au delà de la demi longueur
d’onde. Ces travaux ont fait l’objet d’une déclaration d’invention auprès de la
SATT Sud-Est (N IEBERT et B ÉRENGER 2019).

5.1 Etat de l’art


Nos travaux permettent une mesure de distance en observant indirectement
le déphasage entre les signaux de balises dont les positions sont connues. Se
servir du déphasage entre deux signaux pour mesurer une distance est une tech-
nique utilisée depuis les débuts de la radionavigation. Avant l’avènement du GPS,
dont le principe de fonctionnement se base en partie sur l’observation des dépha-
sages entres les signaux émis par plusieurs satellites, le système DECCA (brevet
US3158863A) a largement été utilisé pour la radionavigation maritime depuis la
seconde guerre mondiale.
Le système DECCA repose sur l’utilisation de 3 stations radio émettant un même
signal sinusoïdal en continu. Les émissions de ces 3 tours radio sont synchroni-
sées sur le signal d’une 4ème tour maîtresse. Le recepteur DECCA mesure les
déphasages entre les signaux des 3 tours. Chacune des 3 valeurs de déphasage
correspond à une hyperbole sur la carte. Il est alors possible de se localiser sur
la carte au point d’intersection de ces 3 hyperboles.
Le systeme LORAN utilise un principe similaire. La différence se situe au niveau
de l’émission : au lieu d’émettre en continu, les tours émettent périodiquement
des impulsions.
Ces systèmes de radionavigation comme DECCA ou LORAN disposent de mé-
canismes de multiplexage pour éviter les interférences. Par exemple, les signaux

1. Nous verrons que la mesure est relative : la distance mesurée est modulo le quart de la
longueur d’onde

152
5 Localisation par interférence et observation de l’onde stationnaire – 5.2 Modèle

synchronisés émis par les tours du système DECCA utilisent des fréquences har-
moniques, ce qui permet aux signaux de voyager superposés dans le médium.
Quand au GPS, il utilise un codage à étalement de spectre.
L’originalité de notre approche réside dans le fait de créer volontairement des
interférences, et d’utiliser les écarts de fréquences entre les balises, pour mesu-
rer le déphasage sans utiliser de matériel spécifique. Les récepteurs traditionnels,
GPS par exemple, utilisent au contraire une chaîne de traitement analogique très
précise, et coûteuse, pour mesurer le déphasage entre deux signaux. De plus,
les balises émettrices doivent être synchronisées entre elles pour compenser les
écarts de fréquence, ce qui nécessite une infrastructure plus lourde, les satellites
GPS emploient généralement des horloges atomiques au césium. Créer des inter-
férences affecte la puissance du signal perçue en fonction du déphasage. Ainsi
nous pouvons mesurer indirectement le déphasage, en observant la valeur de
l’indicateur de puissance du signal. La plupart des récepteurs radio trouvables
dans le commerce sont équipés d’un tel indicateur RSSI.

5.2 Modèle
Nous considérons un champ (électromagnétique) dans un espace unidimen-
sionnel. Nous noterons f (x, t), la valeur du champ associée au point situé à la
coordonnée x de l’espace au temps t. Nous modélisons l’amplitude d’une onde
électromagnétique par une fonction sinusoïdale comme suit :
t x
f (x, t) = A sin(2π − 2π + φ)
T λ
A désigne l’amplitude, T la période, λ la longueur d’onde, et φ la phase de
l’onde. À noter que pour une onde électromagnétique, période et longueur d’onde
sont liées par la constante de célérité : λ = c · T avec c la vitesse de la lumière
pour le milieu de propagation considéré.
Soient f1 et f2 , deux ondes sinusoïdales de même longueur d’onde, de même
période, mais de directions opposées :
t x
f1 (x, t) = A sin(2π − 2π + φ1 )
T λ
t x
f2 (x, t) = A sin(2π + 2π + φ2 )
T λ
Nous notons f , l’onde stationnaire interférence entre f1 et f2 :

f (x, t) = f1 (x, t) + f2 (x, t)


Ce modèle simple nous permet d’approximer empiriquement l’amplitude de
l’oscillation du champ pour chaque point de l’espace. Inversement, il permet de
retrouver les points de l’espace qui correspondent aux amplitudes observées. Les

153
5 Localisation par interférence et observation de l’onde stationnaire – 5.3
Simulation interférences 1D

points fixes de l’onde stationnaire sont espacés d’une demi-longueur d’onde et


leur position dépend du déphasage entre les deux ondes f1 et f2 :
φ2 − φ1 λk
∀t ∈ R, f (x, t) = 0 ⇔ x = λ · +
4π 2
Considérons maintenant deux ondes f1 et f2 de fréquences légèrement diffé-
rentes, suivant un ratio r = (1 + ) proche de 1 :
t x
f1 (x, t) = A sin(2π − 2π + φ1 )
T λ
t x
f2 (x, t) = A sin(r · 2π + r · 2π + φ2 )
T λ
Pour  petit, nous pouvons simplifier le raisonnement en considérant que f1 et
f2 sont de période et de longueur d’onde identiques, mais que le déphasage φ3 (t)
entre les deux sinusoides progresse au cours du temps :
t x
f2 (x, t) = A sin(2π + 2π + φ3 (t))
T c·T
avec
t x
φ3 (t) = 2π
+ 2π + φ2
T λ
Ce déphasage progressif déplace lentement les points fixes de l’onde station-
naire dans l’espace :

φ3 (t) − φ1 λk
∀t ∈ R, f (x, t) = 0 ⇔ x = λ · +
4π 2
La vitesse de ce déplacement dépend de la différence de fréquence entre les
deux ondes. Plus l’écart de fréquence est faible, plus le déplacement de l’onde
stationnaire est lent.

5.3 Simulation interférences 1D


Nous embarquons dans ce document un simulateur permettant d’expérimenter
empiriquement et visuellement avec le modèle décrit précédemment.

154
5 Localisation par interférence et observation de l’onde stationnaire – 5.3
Simulation interférences 1D

Figure 5.2 – Simulateur d’interférences Lien simulateur.

5.3.1 Usage
Initialement, deux sources émettent deux ondes identiques de directions de
propagation opposées. La somme des deux sinusoïdes forme une onde station-
naire. Activer l’option de rémanence permet d’observer le changement d’ampli-
tude de l’oscillation du champ en fonction de la position dans l’espace. Modifier
les variables de déphasage φ1 et φ2 translate l’onde stationnaire. Modifier légè-
rement la période de l’une des deux ondes engendre un déplacement lent et
continu de l’onde stationnaire. La vitesse de ce déplacement est proportionnelle
à la différence de fréquence entre les deux ondes. La distance entre deux points
de l’espace s’obtient en mesurant le temps de parcours d’un même point fixe de
l’onde stationnaire entre ces deux points : d = vt. Il est possible de modifier l’am-
plitude de l’une des deux sinusoides pour observer l’effet d’une asymétrie entre
les deux ondes sources sur l’onde stationnaire : les points fixes restent percep-
tibles.

5.3.2 Captures 1D
Lorsque les périodes T1 et T2 sont différentes de quelques ppm et lorsque l’on
augmente l’échelle de temps vers 1µs/s, on observe l’onde stationnaire se dépla-
cer lentement à vitesse constante. Un noeud se trouvant entre les deux balises
émettant les signaux rouges et bleus est capable d’observer le déplacement de

155
5 Localisation par interférence et observation de l’onde stationnaire – 5.4
Réalisation pratique

ce motif unidimensionnel via les relevés RSSI. Il peut ainsi calculer position et
vitesse à l’instar d’une souris optique glissant sur son tapis.

Figure 5.3 – Onde stationnaire, interférence entre les émissions du signal rouge
et signal bleu.

5.4 Réalisation pratique


Nous avons expérimenté le principe en utilisant quatres modules radio basés
sur le microcontrôleur nordic nRF52832. Deux modules servent de balises et
sont programmés pour garder leurs radio allumées en émission : ces modules
émettent un signal sinusoïdal non modulé de fréquence fixe. Ces balises sont
placées à trois mètres l’une de l’autre et les expériences se font dans un lieu
dégagé, suffisamment loin de tout obstacle qui pourrait interférer.
Les deux autres modules écoutent périodiquement ce signal et échangent pé-
riodiquement, sur un autre canal radio, leurs relevés de l’indicateur de puissance
du signal RSSI. Chaque module calcule la vitesse v de déplacement de l’onde sta-
tionnaire, en observant la période t0 entre les passages succéssifs des points fixes,
c-à-d les dates pour lesquelles la mesure du RSSI est minimale. Deux points
consécutifs fixes sont à une demi-longueur d’onde de distance. Les modules
connaissent la longueur d’onde, car elle correspond à la fréquence du canal radio
sur lequel ils écoutent. Ainsi v = 2tλ0 et λ = fc avec f la fréquence. Les modules
calculent finalement la distance d qui les sépare par un produit en croix, en utili-
sant le temps t mis par un même point fixe pour se déplacer de la position d’un
module à l’autre d = vt.

156
5 Localisation par interférence et observation de l’onde stationnaire – 5.5
Résultats et limites

5.5 Résultats et limites


Notre dispositif preuve de concept fonctionne et donne des résultats qualita-
tivement satisfaisants. En effet, dans un environnement contrôlé, il est possible
d’avoir une mesure au centimètre près et peu bruitée. Néanmoins, l’utilisation
de modules radio utilisant une fréquence aussi élevée que les 2.4GHz pose deux
limitations principales. La première limitation est la grandeur maximale mesu-
rable : la demi longueur d’onde n’étant que de 6.12 cm, la mesure se fait modulo
6.12 cm, ce qui restreint les cas d’usage de la technique à des dispositifs de loca-
lisation relatifs, et non absolus.
Le second défaut de l’approche est lié aux interférences multi-chemin : les
ondes dont les fréquences se rapprochent du spectre visible comme les 2.4Ghz
ont un comportement qui converge vers celui de la lumière visible. Ainsi, ces
ondes vont se refléter sur les obstacles plutôt que de les traverser, et un signal
reflété peut venir se superposer et masquer le signal émis en ligne droite, ce qui
déforme les distances.
Une contre-mesure serait d’utiliser des fréquences beaucoup plus basses, ce qui
pourrait grandement renforcer la robustesse et ouvrir à d’autres types d’applica-
tion. Avec une fréquence de 27M hz, les effets des interférences multi-chemin
seraient limités. De plus, la demi longueur d’onde étant de 5.5m, la technique
pourrait servir à la cartographie de réseaux maillés.

5.6 Généralisation au plan et à l’espace


Nous avons précédemment détaillé comment exploiter les déplacements des
points fixes d’une onde stationnaire pour mesurer des distances dans un espace
à une dimension. Tous les modules utilisés étaient disposés sur la même ligne.
Ici nous allons voir ce qu’il advient lorsque les modules ne sont plus situés sur le
segment délimité par les balises (source des ondes formant l’onde stationnaire).
Si la distance entre les balises émettrices est grande devant l’éloignement des
modules par rapport au segment, alors cet éloignement peut être négligé et la
distance mesurée est celle du projeté orthogonal sur le segment. Si l’éloignement
n’est pas négligeable, les distances mesurées sont toujours celles du projeté or-
thogonal, mais celles-ci sont déformées suivant des hyperboles : étant donné
deux sources émettrices ainsi qu’un déphasage φ, l’ensemble des points du plan
pour lesquels la valeur observée du déphasage φ entre les deux signaux décrit un
ensemble d’hyperboles. Un récepteur observant ce déphasage ne connaît sa posi-
tion que de manière relative, il sait qu’il se situe sur l’une des hyperboles, mais
ne sait pas laquelle. Pour connaître la position du récepteur sur une hyperbole,
on utilise le signal provenant d’une troisième source émettrice. Grace à elle, on
obtient deux nouveaux ensembles d’hyperboles.
Le récepteur se situe sur l’une des intersections entre ces hyperboles. Comme

157
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace

précédemment nous fournissons au lecteur un simulateur pour visualiser ce phé-


nomène et expérimenter empiriquement. Avec un seul couple de balises, nous
obtenons des coordonnées dans la direction du segment formé par les balises.
Avec deux couples de balises placés orthogonalement, si l’éloignement des mo-
dules est négligeable, alors nous obtenons des coordonnées cartésiennes dans un
repère orthonormé.

5.6.1 Interférences 2D
Nous fournissons en complément du simulateur 1D, un simulateur 2D permet-
tant de visualiser les interférences dans le plan euclidien. Dans ce simulateur, cli-
quer sur les disques colorés représentant les balises permet d’activer/désactiver
l’émission associée.

Figure 5.4 – Simulateur d’interférences 2D Lien simulateur.

5.6.2 Captures 2D
Tout comme pour le cas 1D, lorsque les périodes T1 et T2 sont différentes de
quelques ppm et que lorsque l’on augmente l’échelle de temps vers 1µs/s, on
observe l’onde stationnaire se déplacer lentement à vitesse constante. Ici, c’est
un motif hyperbolique 2D qui coulisse lentement dans l’espace. Ce motif 2D est
observable par tout noeud via l’indicateur RSSI. Un noeud peut alors estimer sa
position et sa vitesse dans le plan.

158
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace

Figure 5.5 – Onde stationnaire, l’interférence entre les émissions du noeud rouge
et du noeud bleu fournit un motif qui, en glissant permet d’estimer
les distances sur un axe horizontal.

Figure 5.6 – Onde stationnaire, l’interférence entre les émissions du noeud rouge
et du noeud vert fournit un motif qui, en glissant, permet d’estimer
les distances sur un axe vertical.

159
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace

Figure 5.7 – Onde stationnaire, interférence entre les émissions du noeud vert et
du noeud bleu.

Figure 5.8 – Onde stationnaire, l’interférence entre les émissions des 3 noeuds,
rouge, vert et bleu, sur un même canal fournit un motif 2D coulissant
dans le plan suivant 2 axes. En pratique, on préférera simplifier
l’étude en considérant les interférences entre rouge et vert d’une part,
et vert et bleu d’autre part, sur des plages de fréquences différentes.

5.6.3 Conclusion, perspectives et applications


Dans ce chapitre nous avons introduit une méthode à bas coût permettant de
localiser précisément un récepteur dans l’espace grâce aux signaux émis par plu-
sieurs balises, méthode compatible avec la plupart des modules radio disponibles

160
5 Localisation par interférence et observation de l’onde stationnaire – 5.6
Généralisation au plan et à l’espace

dans le commerce car ne nécessitant pas une temporisation précise au cycle près.
Cette méthode repose sur l’observation indirecte du déphasage entre plusieurs
sources, en utilisant la mesure de la puissance du signal résultant d’interférences
volontaires. De plus, nous exploitons les écarts de fréquences entres les sources
émettrices et le glissement du déphasage que cela engendre pour consolider la
mesure et compenser l’affaiblissement du signal, affaiblissement imputé à la dis-
tance ou à un défaut de fabrication.
Nous avons fourni un simulateur pour expérimenter empiriquement, ainsi que
des résultats expérimentaux qualitatifs sur des modules radio 2.4GHz nRF52832.
Les applications potentielles de cette méthode dépendent des fréquences utilisés.
En effet, les distances mesurées sont modulo la demi longueur d’onde. Ainsi
lorsque la longueur d’onde est petite, le positionnement ne peut se faire qu’en
relatif. De plus lors de nos expériences, nous avons constaté le fort impact des
interférences multi-chemin avec les ondes 2.4GHz. Ainsi, avec des fréquences
élevées comme le 2.4Ghz, il serait envisageable de faire des dispositifs de poin-
tage 3D, pour des casques de réalité virtuelle par exemple, ou encore faire du
suivi de mouvement, pour compenser la dérive d’un accéléromètre par exemple.
Enfin, nous n’avons pas encore expérimenté avec des fréquences basses, cepen-
dant celles-ci permettraient de faire des systèmes de localisations en intérieur à
l’échelle d’un bâtiment pour des réseaux de capteurs.

161
6 Partitionnement équilibré de
grilles non-pondérées en zones
connexes
6.1 Introduction
6.1.1 Motivation initiale
Nous avons expliqué dans les chapitres précédents que nos travaux sur la syn-
chronisation filaire ont été motivés initialement par la nécessité de fournir une
base de temps permettant l’exécution d’applications synchrones dans le cadre du
produit Led’sChat Mozaïk. Il s’agit de dalles lumineuses LEDs interconnectables
bords à bord pour former une large surface d’affichage. L’affichage s’y fait de
manière distribuée. En effet, chaque dalle est équipée d’un microcontrôleur, et
leur assemblage constitue un réseau maillé scalable dans lequel l’information
s’échange de pair à pair.
Une des premières applications synchrones réalisées pour le produit Mozaïk
fut une application de diffusion de flux vidéo, permettant de distribuer en temps
réel aux dalles des images provenant d’un ordinateur connecté à l’un des bord
du réseau. Par essence, une telle interface entre un ordinateur d’une part, où
l’information est centralisée, et un réseau maillé d’autre part, où l’information
est distribuée entre les différents noeuds, ne passe pas à l’échelle. Se pose alors
naturellement le problème de la bande passante, du débit ainsi que de la latence
lorsque la taille du réseau augmente : plus le réseau contient de noeuds, plus la
latence augmente et plus le nombre d’images diffusées par seconde et par dalle
diminue.
Ainsi, pour maintenir en pratique le taux de rafraîchissement, il est nécessaire
d’augmenter le débit au niveau du goulot d’étranglement, dans ce cas précis le
débit de la liaison entre le bord du réseau et l’ordinateur. Pour cela, la seule
possibilité 1 est de rajouter de nouveaux liens entre l’ordinateur et d’autres bords
du réseau, ce qui pose un problème théorique : celui de la répartition des flux
provenant de différentes sources sur les noeuds du réseau. C’est pour résoudre ce
problème pratique que dans ce chapitre, nous allons nous intéresser au problème
de partitionnement de grilles carrées en zones connexes : en découpant le réseau

1. On considère que l’information est déjà compressée.

162
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.1
Introduction

en parties de taille égales, le routage devient trivial au moyen de simples arbres


couvrants. Ces travaux ont fait l’objet d’une publication d’article présenté à la
conférence MFCS 2018 (B ÉRENGER, N IEBERT et P ERROT 2018).

6.1.2 Énoncé du problème de partitionnement et variantes


Nous considérons une grille finie (un rectangle) ainsi qu’un sous-ensemble de
carrés (figure 6.1). Les carrés sont les sommets d’un graphe pour lequel les arêtes
sont induites par la relation d’adjacence. Le problème est de colorer/partitionner
la grille avec q couleurs, de sorte que les sous-graphes induits par chaque cou-
leur soient connexes et que la partition soit équilibrée, c’est-à-dire que les dif-
férentes parties constituant la partition possèdent le même nombre de nœuds.
Dans l’exemple de la figure 6.1, nous utilisons trois couleurs. La troisième image
montre une coloration satisfaisant les deux contraintes, de connexité et d’équi-
libre.

Figure 6.1 – Graphe grille et exemple de coloration connexe. Les nœuds de la


grille sont représentés comme les cases d’un motif damier.

Figure 6.2 – Graphe grille et coloration connexe enracinée. La coloration proposée


est aussi une solution acceptable pour la variante non-enracinée.

163
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.1
Introduction

Figure 6.3 – Variante enracinée du problème : trois couleurs sont en conflit pour
accéder à un couloir de largeur 2. Seulement deux couleurs peuvent
rejoindre la grande zone de droite sans déconnecter l’une des trois
parties. Dans une telle situation, aucun partitionnement connexe
équilibré n’est possible.

Dans la variante enracinée du problème, nous spécifions pour chaque couleur


un nœud racine qui prendra nécessairement cette couleur (voir figure 6.2). La
motivation pratique de ce problème concerne la diffusion d’un flux dans des ré-
seaux physiques pour des applications multimédia (où chaque carré est une dalle
vidéo et où le réseau peut contenir des trous et des bordures irrégulières), mais
aussi le problème du routage dans les NoC (M URALI et D E M ICHELI 2004) (net-
work on a chip) disposant de liens de communication horizontaux et verticaux
ainsi que des nœuds défectueux (problèmes lors de la fabrication).
Pour ces systèmes, la bande passante limitée des liens peut être compensée
en partitionnant le réseau et en injectant les données depuis plusieurs "racines"
(sources d’information). Chaque racine est ainsi responsable d’un sous-ensemble
de sommets, et la diffusion des messages provenant de racines différentes ne se
croise pas.
Dans le cas général, nous montrons que trouver une partition connexe équili-
brée est un problème NP-Complet, à la fois avec et sans nœuds racines (Théo-
rèmes 1, 2). Nous obtenons le résultat de NP-difficulté par réduction depuis le
problème du circuit Hamiltonien sur les grilles hexagonales (I SLAM, M EIJER, R O -
DRIGUEZ et al. 2007). Intuitivement, garantir la connexité de chaque zone colo-
rée crée des conflits lorsqu’il y a moins de connexions (arêtes) que de couleurs à
faire traverser. Dans notre réduction, nous exploitons cela en forçant des conflits
binaires en créant des passages qui ne peuvent être empruntés que par une seule
couleur. Au delà des conflits binaires, en imageant notre grille comme un laby-
rinthe, plusieurs lignes parallèles adjacentes de nœuds forment un couloir dont
la capacité de passage des couleurs est limitée (voir figure 6.3).
Afin de définir des sous-classes de graphes simples que nous appellerons graphes
q-carré connexes, nous formaliserons l’idée d’un labyrinthe dont tous les couloirs,
que ceux-ci prennent la forme de lignes droites ou de diagonales (zig-zags), sont
suffisamment larges pour permettre à toutes les couleurs de passer. La condition
de q-carré connexité peut être vérifiée localement sur des fenêtres bornées du
graphe et ainsi être décidée en temps linéaire. Cette condition garantit qu’une
solution existe. En effet, nous donnons un algorithme glouton en temps poly-
nomial pour le cas non-enraciné qui trouve toujours une solution sur de telles

164
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.2
Travaux liés

topologies (Théorème 3). Nous conjecturons aussi que ce simple algorithme glou-
ton peut être étendu au cas enraciné et être amélioré pour calculer une solution
en temps linéaire (pour tout entier q fixé). La définition de q-carré connexité,
bien qu’intuitivement similaire mais non équivalente à la définition classique de
k-connexité d’un graphe, n’est pas triviale et est le résultat d’un ajustement mi-
nutieux des conditions afin d’obtenir une preuve de correction. Cependant, cette
notion reste intuitive et elle peut présenter un intérêt en tant que tel.
Nous avons aussi implémenté l’algorithme et effectué des simulations dans
lesquelles l’algorithme s’est bien comporté. Les parties générées lors de nos simu-
lations peuvent être couvertes par des arbres peu profonds (latence faible).

6.1.3 Plan
Ce chapitre est structuré comme suit : la section 6.2 est une section d’état
de l’art présentant les travaux clés. La section 6.3 formalise le modèle ainsi que
l’énoncé du problème. Dans la section 6.4 , nous rappelons l’énoncé du problème
du circuit Hamiltonien pour les grilles hexagonales et nous développons la réduc-
tion depuis ce problème pour montrer la NP-Difficulté du problème général. La
même réduction à quelques détails près peut être utilisée à la fois pour traiter
le cas non-enraciné ainsi que le cas enraciné. La NP-Complétude en découle tri-
vialement, puisqu’il est facile de vérifier une solution en utilisant un algorithme
linéaire. Dans la Section 6.5, nous définissons la sous-classe des graphes q-carré
connexes via deux définitions alternatives (une plus intuitive, l’autre utile à des
fins algorithmiques) et nous montrons leur équivalence. Nous définissons ensuite
un algorithme glouton basé sur des règles pour colorer un graphe une couleur
après l’autre pour le cas non-enraciné. Nous démontrons la terminaison ainsi que
la correction de l’algorithme. Nous argumenterons ensuite sur comment étendre
l’algorithme pour traiter le cas enraciné. La section 6.6 aborde une autre classe
de graphe ( classe des grilles x2 ) pour laquelle nous donnons un algorithme de
partitionnement extrêmement simple (variante non-enracinée). Finalement dans
la section 6.7, nous concluons et nous donnons quelques pistes pour de futurs
travaux.

6.2 Travaux liés


À notre connaissance, la difficulté du problème que nous étudions ici ainsi que
les sous-classes simples et l’algorithme glouton, sont inconnus de la littérature.
Dans le très étudié problème du partitionnement équilibré en q zones connexes
(Balanced Connected q-Partition Problem, alias BCPq ), il s’agit de partitionner
un graphe pondéré G = (V, E) en q sous-graphes connexes de taille/poids simi-
laire. Dans nos travaux, nous restreignons ce problème aux grilles non-pondérées.
Il a été montré que la version non-pondérée du BCPq est NP-difficile sur les

165
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.3
Modèle

graphes biparties pour q ≥ 2 (D YER et F RIEZE 1985), cependant le résultat ne


couvre pas les grilles. Il a aussi été prouvé dans (B ECKER, L ARI, L UCERTINI et al.
1998) que le BCPq est NP-Difficile dans les grilles Gm×n pour tout n ≥ 3, mais
ce résultat requiert une pondération sur les sommets. Ces travaux donnent aussi
des algorithmes d’approximation considérant l’erreur relative sous certaines hy-
pothèses. Dans (C HLEBIKOVA 1996), il est montré que trouver une solution avec
une erreur absolue plus petite que |V |1− est NP-Difficile, même dans le cas
de la variante non-pondérée du BCPq , mais seulement pour des graphes gé-
néraux. Notre preuve d’NP-Difficulté nécessite de nouvelles idées ainsi qu’une
construction différente des travaux existants. Dans (L OVASZ 1977 ; J. M A et S. M A
1994), des algorithmes polynomiaux sont donnés pour le BCPq sur les graphes
non pondérés q-connexes. Cependant les grilles sont uniquement 2-connexes. Il
existe aussi des approximations polynomiales sous certaines restrictions. Dans
(C HLEBIKOVA 1996), il est montré qu’un algorithme existe pour obtenir une 43 -
approximation sur le BCP2 sans d’autres suppositions. Plus récemment, (W U
2010) donne un algorithme en temps polynomial donnant une 67 approximation
pour le BCP2 dans les grilles. Dans (C HATAIGNER, S ALGADO et WAKABAYASHI
2007), il est montré qu’il ne peut pas y avoir d’algorithme d’approximation avec
un ratio plus petit que 65 pour des graphes arbitraires. Le même article montre
aussi que le BCPq est fortement NP-Difficile, même sur des graphes q-connexes
pondérés, ainsi qu’un résultat d’inapproximabilité pour le (BCP2 ). Au travers
de motivations concernant la conception de circuits VLSI, de nombreux travaux
se concentrent sur la minimisation du nombre d’arêtes transversales entre les
parties, sans forcement ce soucier de garder les parties connexes, (Andreas E
F ELDMANN 2012 ; Andreas Emil F ELDMANN 2013).

6.3 Modèle
Nous formalisons ici les notions de grilles carrées ainsi que de problèmes de
partitionnement. Nous simplifions l’énoncé en supposant que toutes les grilles
carrées sont plongées dans le plan des couples d’entiers.
Une grille carrée GV = (V, E) est un graphe tel que :
— V ⊂ Z2
— E = {((x1 , y1 ), (x2 , y2 )) ∈ V × V : |x2 − x1 | + |y2 − y1 | = 1}
Chaque sommet est désigné par ses coordonnées dans le plan euclidien, il y
a une arête entre deux sommets soit si la différences des abscisses est 1, soit si
la différence des ordonnées est 1, mais pas les deux en même temps (voisinage
haut-bas-gauche-droite). Nous noterons |GV | = |V | la taille d’une grille carrée.
Par souci de simplicité, nous parlerons simplement de "grille" pour désigner
un graphe grille carrée (nous préciserons par exemple "grille hexagonale" pour
désigner un autre type de grille).
Nous représenterons les graphes grilles ainsi que les sous-graphes induits par

166
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.3
Modèle

des matrices 2D colorés, voir Figure 6.1. Le "rectangle englobant" R(V ) d’une
grille GV est défini comme suit : R(V ) = {(x, y) ∈ V : x1 − 1 ≤ x ≤ x2 + 1 et y3 −
1 ≤ y ≤ y4 + 1} avec (x1 , y1 ), (x2 , y2 ), (x3 , y3 ), (x4 , y4 ) ∈ V , c’est à dire une matrice
pleine contenant V ainsi qu’une bordure extérieure d’épaisseur 1. Le rectangle
englobant permet une représentation matricielle des grilles.
Étant donné un sous ensemble de sommets V 0 ⊆ V d’un graphe (grille) GV =
(V, E), le graphe (V 0 , E 0 ) avec E 0 = E ∩ (V 0 × V 0 ) est le sous-graphe induit de
GV par l’ensemble de sommets V 0 . Évidemment, étant donné une grille GV =
(V, E) ainsi qu’un sous-ensemble de sommets V 0 , le sous-graphe induit (V 0 , E 0 )
est équivalent à la grille GV 0 .
Un graphe (V, E) est connexe si pour chaque couple u, v ∈ V il existe un che-
min les reliant, c’est-à-dire si il existe une séquence de sommets u = v0 , v1 , . . . , vl =
v pour un l ≥ 0 et (vi , vi+1 ) ∈ E pour tout 0 ≤ i < l.
Une partie connexe GV 0 d’une grille GV est un sous-graphe induit connexe de
GV . Une q-partition P d’une grille GV est un ensemble de q parties GVi avec
1 ≤ i ≤ q tel que : V = GV 0 ∈P V 0 et pour tout GVi , GVj ∈ P nous avons que
S

i=6 j =⇒ Vi ∩ Vj = ∅. Nous dirons qu’une partition est connexe si toutes ses


parties sont connexes.
Étant donné un sous-ensemble de sommets racines R = {r1 , . . . , rq } ⊆ V d’une
grille VG , une partition R-enracinée de GV est une partition GVi , . . . , GVq telle que
pour tout i, ri ∈ Vi .
Une partition P d’une grille G est parfaitement équilibrée si et seulement si
pour tout GVi ∈ P, |Vi | = |V |
|P|
. De plus, étant donné une partition P d’une grille
G, nous dirons qu’une partie GVi ∈ P est parfaitement saturée si elle remplit les
conditions pour que P soit parfaitement équilibrée, c’est-à-dire |Vi | = |V |
|P|
. Si |Vi |
est en-dessous/au dessus du seuil de saturation |V |
|P|
, nous dirons respectivement
que la partie est sous/sur-saturée.
Un équilibre parfait peut souvent s’avérer être une condition restrictive non
désirable lorsqu’il s’agit d’équilibrer une charge dans des réseaux. Pour relâcher
cette contrainte, nous pouvons spécifier un taux de tolérance à l’erreur 0 ≤ r ≤ 1.
L’équilibre parfait est atteint pour r = 0. Pour 0 ≤ r ≤ 1 nous dirons qu’une q-
partition P d’une grille GV est r-équilibrée si et seulement si pour chaque partie
GVi ∈ P nous avons :

|GV | |GV |
× (1 − r) ≤ |GVi | ≤ × (1 + r)
q q
De la même manière, nous dirons qu’une partie GVi d’une q-partition P d’une
grille GV est r-saturée si et seulement si |GqV | × (1 − r) ≤ |GVi | ≤ |GqV | × (1 + r). Si
|Vi | se trouve en dehors de l’intervalle de saturation [ |GqV | × (1 − r), |GqV | × (1 + r)],
nous dirons respectivement que la partie est (sous/sur)-r-saturée. Lorsqu’il est
clair dans le contexte que nous acceptons les écarts avec un taux de tolérance r,
nous dirons simplement qu’une partie est équilibrée au lieu de dire r-équilibrée,

167
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

nous dirons aussi qu’une partie est (sous/sur)-saturée au lieu de dire (sous/sur)-
r-saturée. De même, nous emploierons le terme de "zone" comme synonyme de
"partie".
Le problème du partitionnement r-équilibré en zones connexes (rBCP) est le
problème de trouver, étant donné une grille GV et un nombre q, une partition
r-équilibrée avec q parties connexes. Le problème du partitionnement enraciné r-
équilibré en zones connexes (RrBCP) est le problème de trouver, étant donné une
grille GV et un ensemble de racines R ⊆ V , une partition connexe r-équilibrée,
R-enracinée.

6.4 NP-Difficulté
Dans cette section nous présentons une réduction polynomiale du problème
du cycle Hamiltonien (HCP) sur les grilles hexagonales vers le problème du par-
titionnement enracinés r-équilibrés en zones connexes (rRBCP) sur les grilles
carrées, pour r ≤ 71 . Nous argumenterons ensuite que cette réduction s’applique
aussi à la variante non enracinée du problème (rBCP).
Pour tout ensemble fini de sommets V ⊂ Z2 , nous construisons la grille hexago-
nale HV = (V, E) avec l’ensemble induit d’arêtes E = {((x1 , y1 ), (x2 , y2 )) ∈ V ×V :
(|x2 − x1 | = 1 et |y2 − y1 | = 0) ou (x2 − x1 = 0 et y2 − y1 = 1 et x1 + y1 = 0 mod. 2}.
Nous noterons |HV | := |V | la taille de la grille hexagonale. Un exemple est donné
sur la figure 6.4.

Figure 6.4 – Un graphe grille hexagonale, avec un cycle Hamiltonien en vert.

Le problème du cycle Hamiltonien (HCP) est le problème de décision suivant.


Étant donné un graphe G, existe-t-il un cycle contenant exactement une fois tous
les sommets de G ? Il est NP-Complet lorsque l’on considère des graphes arbi-
traires, il fait partie des problèmes classiques utilisés comme outils de complexité
pour effectuer des réductions polynomiales. (KARP 1972). Il a été démontré que

168
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

ce problème est NP-complet lorsque on le restreint aux grilles hexagonales (I S -


LAM , M EIJER , R ODRIGUEZ et al. 2007). Étant donné une grille hexagonale pour
le HCP, nous construirons une grille carrée ainsi qu’un ensemble de racines pour
le rRBCP.
Cette section est découpée en quatre sous-sections. Dans la première sous-
section nous donnons des intuitions sur quelques instances simples du rRBCP.
Nous décrivons ensuite dans la deuxième sous-section la réduction ainsi que les
concepts en jeu. Puis, dans la troisième sous-section, nous démontrons la correc-
tion de la réduction. Finalement, dans la dernière sous-section nous expliquons
comment appliquer la même idée pour effectuer une réduction vers la variante
non-enracinée du problème (rBCP).

6.4.1 Intuitions de la construction

Figure 6.5 – Intuitions pour la construction : interactions entre les réservoirs et


les racines (couleurs)

Nous allons introduire ici, étape par étape, quelques-unes des astuces utilisées
dans la réduction.

Considérons une grande région connexe d’une grille carrée, non colorée et
accessible seulement via un seul sommet ou un seul chemin. Une telle région ne
possédera qu’une seule couleur. Un exemple est donné sur la figure 6.5 (en haut
à gauche) : un partitionnement doit nécessairement attribuer une même couleur
à chacune des trois grandes régions extérieures (potentiellement trois couleurs
différentes, mais la même pour chaque). Nous appellerons de telles régions des
réservoirs. À l’inverse, nous appellerons des lignes de sommets de largeur 1 des
chemins.

169
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

L’une des bases de la construction est de connecter les réservoirs entre eux en
utilisant des chemins, et de choisir les tailles de ces réservoirs de sorte que le
nombre total de sommets utilisés dans les chemins soit négligeable par rapport à
la taille d’un seul réservoir. Si le taux de tolérance ainsi que la taille des réservoirs
sont choisis judicieusement, alors colorer un réservoir provoquera la saturation
de la partie correspondant à cette couleur, c’est-à-dire qu’une couleur liée à un
réservoir ne peut pas colorer d’autres réservoirs sans sur-saturer sa partie. Par
exemple, sur la figure 6.5 (en bas à gauche), la racine rouge doit nécessairement
colorer le grand réservoir sur la gauche dans tout partitionnement valide, ce qui
amène la couleur proche du seuil de saturation. Par conséquent, le rouge ne peut
pas posséder l’un des deux réservoirs du bas sans sur-saturer.

Certaines instances peuvent piéger des parties/couleurs à l’intérieur d’une


zone restreinte. Sur la figure 6.5 (au milieu), Le bleu est lié à un grand réser-
voir et doit le colorer, ce qui sature presque entièrement cette couleur (pour un
taux adapté r). Cependant, le bleu ne peut pas atteindre l’anneau extérieur, car
il serait autrement forcé de couvrir au moins l’un des trois réservoirs internes et
ainsi serait contraint de sur-saturer.

Une couleur peut empêcher une autre couleur de former un embranchement.


Sur la figure 6.5 (à droite), le grand rectangle de chemins a trois points de sortie
(par la gauche, par la droite, par le bas). Le vert doit colorer le réservoir du bas.
De plus, nous supposons qu’ajouter l’un des trois réservoirs intérieurs sursature-
rait le vert. De l’autre côté, le rouge doit posséder les trois réservoirs internes
pour atteindre le seuil de saturation. Supposons que le vert soit connecté par
des chemins aux deux points de sortie à gauche et à droite. Qu’importent les
chemins empruntés, le rouge n’est plus capable d’atteindre les trois réservoirs in-
ternes. En d’autres termes, cette construction force le vert à choisir entre la sortie
de gauche et la sortie de droite. Ce "gadget" sera utilisé comme une macrocellule
représentant un sommet de la grille hexagonale, et la couleur verte peut seule-
ment connecter deux sorties parmi les trois de chaque macrocellule pour que la
partition soit équilibrée, forçant ainsi le vert à occuper un chemin Hamiltonien.

170
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

6.4.2 Réduction : de la construction jusqu’aux calculs

Figure 6.6 – Macrocellules et nœuds racine correspondant aux parties rouges

Figure 6.7 – Macrocellules et nœuds racine correspondant à la partie verte

171
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

Figure 6.8 – Construction émulant la grille hexagonale avec une grille carrée

Étant donnée une grille hexagonale (instance du problème HCP), nous construi-
sons une grille carrée ainsi qu’un ensemble de racines (instance du problème
rRBCP). Cette instance du rBCP admettra une solution si et seulement si l’ins-
tance du HCP admet une solution : la grille carrée reproduit la structure de la
grille hexagonale. Une partie avec une couleur spécifique devra correspondre
à un cycle Hamiltonien de la grille hexagonale si il en existe un. Dans le cas
contraire, aucun partitionnement r-équilibré n’existe. Notre construction sera
composée exclusivement de réservoirs et de chemins.
Considérons une macrocellule comme celle de la figure 6.6 (à gauche), une
telle construction est similaire à celle de la figure 6.5 (à droite) avec l’ajout
d’un réservoir supplémentaire au centre. Puisque les dimensions des réservoirs
dépendront des dimensions de la grille hexagonale ainsi que du taux de tolérance
r, il est crucial de pouvoir faire grandir les macrocellules en conséquence. Soit
T × T la taille du rectangle pouvant contenir de telles macrocellules (de telle
sorte que les trois chemins permettant d’entrer soient au centre des côtés du
rectangle), soit ti , tc les dimensions respectives des trois réservoirs internes et
du réservoir central, et soit p le nombre total de sommets dans les chemins (en
dehors des réservoirs) dans une seule macrocellule. Il est simple d’agrandir une
macrocellule de sorte que le nombre de sommets dans les chemins deviennent
négligeable : p croît linéairement avec T , tandis que les dimensions ti , tc croissent

172
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

de manière quadratique.
Nous distinguerons un sommet de degré deux dans la grille hexagonale que
nous appellerons racine primaire (il en existe toujours un). En utilisant des co-
pies directes ou en miroir de cette macrocellule pour chaque sommet distinct
de la racine primaire, nous pouvons imiter/ reproduire l’agencement de la grille
hexagonale, comme montré dans la figure 6.8.
Soit m le nombre de sommets dans la grille hexagonale, nous appellerons
famille rouge l’ensemble des m couleurs utilisées pour les racines dans ces macro-
cellules.
Pour ce qui est de la racine primaire (sommet de degré deux dans la grille
hexagonale), nous le remplaçons par une macrocellule spéciale contenant (voir
figure 6.7) : Sur un chemin d’entrée, un réservoir de taille tg ≈ 3 × ( 56 ) × ti appelé
réservoir vert avec une racine verte qui lui est attachée, et, sur l’autre chemin
ti
d’entrée, un réservoir de taille tc ≈ 6m . L’idée pricipale ici est qu’il manque à la
racine verte approximativement 3· 61 ·ti sommets pour être équilibrée (par rapport
à la famille rouge, dans laquelle chaque couleur prend trois réservoirs de taille
ti ), et devra collecter les réservoirs centraux de taille tc de toutes les macrocellules
(m × tc ) pour entrer dans l’intervalle de saturation et devenir r-équilibré, créant
par conséquent un chemin Hamiltonien.
Une construction complète est montrée sur la figure 6.8. Elle correspond à la
grille hexagonale de la figure 6.4.

6.4.3 Correction de la réduction et calculs

Figure 6.9 – Si une autre couleur traverse la macrocellule, alors la couleur rouge
force cette couleur a prendre exactement deux chemins d’entrée
parmi les trois. Dans tous les cas, le rouge prendra les trois réservoirs
internes. L’image sur la gauche est un schéma détaillé d’une première
possibilité, les schémas sur la droite représentent de manière simplifiée
les 8 possibilités.

173
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

Rappelons que r < 17 . Nous allons maintenant aborder la correction d’une série
d’assertions qui nous permettront de montrer la correction de la réduction.
La figure 6.9 montre une disjonction de cas complète concernant le fait que
les macrocellules appartenant aux couleurs de la famille rouge empêchent la
couleur verte de créer des embranchements (cela correspond aux sommets de
degré 3). Elle démontre le fait suivant.

Lemme 6. Si la couleur verte traverse une macrocellule, alors elle doit occuper
exactement deux des chemins d’entrée.

Dit autrement, la partie verte est contrainte par la famille rouge, qui joue le
rôle d’adversaire, à suivre un chemin Hamiltonien.
Maintenant, montrons comment calculer la taille des réservoirs et des macro-
cellules de sorte que le nombre de sommets dans les chemins soit négligeable
par rapport à la taille d’un seul réservoir, ainsi que le fait que la couleur verte
doive exactement prendre la totalité des réservoirs centraux de taille tc de toutes
les macrocellules (et ainsi traverser chaque macrocellule au moins une fois).
Nous introduisons ici des variables pour spécifier précisément la construction :
— m : Nombre total de sommets de la grille hexagonale,
— n : Nombre total de sommets dans la grille carrée,
— k : facteur d’agrandissement des macrocellules,
— ti : Taille de chacun des trois réservoirs internes de chaque macrocellule,
— tc : Taille du réservoir central de chaque macrocellule (ainsi que celui de la
macrocellule de la racine primaire),
— tg : taille du réservoir attaché à la racine verte dans la macrocellule de la
racine primaire,
— p : Nombre de sommets dans les chemins (sommets non situés dans un
réservoir) pour une macrocellule.
— s= m n
: Seuil de saturation parfaite.
Par définition, nous avons l’intervalle de saturation Is = [s · (1 − r), s · (1 + r)].
Nous disposons de deux sortes de racines (les racines de la famille rouge ainsi
que la racine verte), et de quatre sortes de sommets (les chemins ainsi que les
sommets contenus dans les réservoirs ti , tc , tg ). Cela nous donne trois groupes
d’inéquations à considérer. Rappelons que tg ≈ 3 · ( 56 ) × ti , et que tc ≈ 6m
ti
.

6.4.3.1 Nœuds dans les chemins


La macrocellule unitaire montrée dans la figure 6.6 permet des réservoirs de
taille maximale ct avec un minimum de cp sommets dans les chemins. En mul-
tipliant les dimensions de la macrocellule unitaire par un facteur entier k (en
omettant la largueur des chemins), nous obtenons une macrocellule k-agrandie
permettant d’accueillir des réservoirs de taille maximale k 2 ·ct avec moins de k ·cp
nœuds dans les chemins (La longueur des chemins nécessaire pour relier tous les

174
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

réservoirs entre eux grandit linéairement avec le facteur k tandis que la surface
des réservoirs croît quadratiquement).

∃k ∈ N : p ≥ k · cp et ti , tc ≤ k 2 · ct avec cp = 639 et ct = 256 (6.1)


(Note : les constantes magiques 639 et 256 ont été obtenues par construc-
tion graphiques, tâtonnement et vérifications successives. Elle ne sont pas mi-
nimales.)
Nous voulons que les chemins soient négligeables et dominés par les réser-
voirs pour l’équilibre, c’est-à-dire que modifier le nombre de sommets dans les
chemins sans modifier le nombre de réservoirs d’une partie n’a pas d’impact sur
la saturation de cette partie. Le nombre total de sommets dans les chemins est
mp .

6.4.3.2 Famille rouge et réservoirs internes


Nous voulons que chaque racine de la famille rouge atteigne l’intervalle de sa-
turation en occupant exactement les trois réservoirs internes de sa macrocellule,
c’est-à-dire :

2 · ti + m · p < s · (1 − r) < 3 · ti et 3 · ti + m · p < s · (1 + r) < 4 · ti (6.2)

6.4.3.3 Famille rouge et réservoir vert


Dans tout partitionnement valide, les racines de la famille rouge ne peuvent
pas occuper le réservoir vert car la racine verte bloque le passage.

6.4.3.4 La couleur verte et tous les réservoirs


La partie/couleur verte occupe toujours le réservoir vert, et nous voulons que
la racine verte atteigne l’intervalle de saturation en occupant exactement le ré-
servoir vert ainsi que l’intégralité des m réservoirs centraux, c’est-à-dire :

tg +(m−1)·tc +mp < s·(1−r) ≤ tg +m·tc et tg +m·tc +m·p < s·(1−r) < tg +ti
(6.3)

6.4.3.5 La famille rouge et les réservoirs centraux


Comme nous contraignons la partie verte à occuper tous les réservoirs cen-
traux, les parties rouges ne peuvent pas occuper de réservoir central.

Lemme 7. Pour tout taux rationnel r = a


b
< 1
7
et pour tout m > 3 ∈ N, si :
— tg = 65 · s

175
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.4
NP-Difficulté

s·( 16 − ab )
— tc = m
(−1+12m2 +12m·(−1+ ab )+6· ab )·s
— ti = ms − (tg + m(tc + p)) = 36·(m−1)·m
s( 1 − a )
— p = 2mtc
= 2m 6
2
b

— s = 36 · 71 · 106 · b · (m − 1) · m3
1
− ab
— k = cpp = s · 2·639·m
6
2

alors tout partitionnement connexe r-équilibré doit prendre l’intégralité des m


réservoirs centraux (un dans chaque macrocellule plus celui de la macrocellule de la
racine primaire).

Démonstration. L’assertion satisfait les relations (6.1,6.2,6.3, ce qui implique le


résultat. Voici les idées principales derrière les formules et nombres magiques de la
solution donnée.
Dans le lemme 7, nous donnons un ensemble de dimensions de macrocellules
pour construire une instance grille carrée qui satisfait les relations 6.1 , 6.2 6.3 pour
des valeurs données du taux de tolérance r ainsi que le nombre de macrocellules m.
Nous allons maintenant présenter le raisonnement derrière ces valeurs.
Puisque la surface cumulée des trois réservoirs internes sera choisie proche du
seuil de saturation s, nous choisissons en premier lieu la taille du réservoir vert
tg = 56 s, de manière à ce que la couleur verte ne puisse prendre les réservoirs
internes (Relation 6.3, à droite)
Nous choisissons ensuite la taille des réservoirs centraux de manière à ce que la
couleur verte puisse entrer exactement dans l’intervalle de saturation en couvrant le
réservoir vert ainsi que tous les réservoirs centraux : tg + m · tc = s · (1 − r) (Relation
6.3, à gauche). Nous choisissons maintenant la longueur cumulée de l’ensemble
chemins de façon à ce que celle-ci soit négligeable devant la surface occupée par
les réservoirs : mp = t2c , ainsi, collecter la totalité des nœuds sur les chemins de
la topologie compte moins que collecter un seul réservoir central (mp dans les
relations 6.2,6.3).
Les réservoirs internes récupèrent tous les nœuds restant : m · ti = m · s − tg −
m · (tc + p) (Relation 6.2).
Finalement, la dernière dimension à spécifier est le seuil de saturation s. Comme
toutes les dimensions spécifiées précédemment doivent être des entiers et sont des
multiples de s, nous choisissons s pour être un multiple de tous les dénominateurs.
Enfin, nous choisissons aussi s suffisamment grand pour qu’il existe k = cpp tel que
p ≥ k × cp , c’est-à-dire tel qu’il y ait suffisamment de nœuds sur les chemins pour
relier tous les réservoirs (Relation 6.1).

Théorème 1. rRBCP est NP-difficile pour tout taux rationnel r < 17 .

Démonstration. Nous effectuons dans les deux sens les réductions polynomiales
entre le problème du HCP et le problème de partitionnement r-équilibré.
Tout partitionnement r-équilibré fournit un cycle Hamiltonien pour l’instance
correspondante du HCP. En effet, la racine verte doit traverser chaque macrocellule

176
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

(lemme 7), et elle effectue sa traversée en empruntant un "macrochemin" connexe


de degré deux le long des m macrocellules (lemme 6).
Dans l’autre sens, tout cycle Hamiltonien de l’instance du HCP fournit une
solution à la racine verte pour effectuer sa traversée. En effet, puisque chaque racine
de la famille rouge doit systématiquement posséder les trois réservoirs internes de sa
macrocellule, il est possible de déduire un partitionnement en temps polynomial : il
suffit de choisir un sommet de degré 2 comme point de départ pour la racine verte et
faire correspondre chaque sommet de la grille hexagonale avec sa macrocellule.

6.4.4 Partitionnement r-équilibré en zones connexes (rBCP)


La construction décrite précédemment s’applique aussi à la variante non-enracinée
du problème, rBCP. En effet, il suffit de s’apercevoir que lorsque les racines sont
enlevées, alors il n’y a pas d’autres solutions aux instances du rBCP que celles
des instances du rRBCP. Le raisonnement est assez direct. La partie qui possède
le réservoir vert, que nous appellerons ici la partie jaune) doit se comporter
exactement comme la partie verte et doit prendre tous les réservoirs centraux
(la partie jaune vérifie l’assertion 2 7. Puis, étant donné que la partie jaune ne
doit pas posséder de réservoir interne (c’est la relation 6.3), ces réservoirs in-
ternes doivent être possédés par d’autres couleurs (précédemment il s’agissait
de la famille rouge, ici nous allons appeler ces parties la famille orange). Il suffit
maintenant de remarquer que chaque partie de la famille orange doit systéma-
tiquement prendre les trois réservoirs internes appartenant à une même macro-
cellule : puisque la couleur verte/jaune traverse chaque macrocellule pour ré-
cupérer tous les réservoirs centraux, il ne reste dans chaque macrocellule qu’un
unique chemin permettant d’y entrer. Pour cette raison, les réservoirs centraux
d’une même macrocellule ne peuvent pas être partagés entre deux couleurs de la
famille orange sans laisser au moins l’une des couleurs sous-saturée (inégalités
6.2). Par conséquent, le lemme 6 tient encore et nous avons le résultat suivant :

Théorème 2. rBCP est NP-difficile pour tout taux rationnel r < 17 .

6.5 Partitionnement de grilles q-carré connexe


Intuitivement, la difficulté du partitionnement équilibré en zones connexes est
une conséquence des conflits : Si de larges zones sont accessibles par un nombre
très limité de chemins, nous devons choisir prudemment quelle partie couvrira
quelle zone pour éviter qu’une partie ne bloque un accès stratégique. Nous pour-
rions considérer comme solution d’enlever de tels conflits en s’assurant qu’il y ait
toujours des chemins distincts permettant à toute partie d’accéder à n’importe
quelle zone, cependant la notion de k-connexité utilisée habituellement en théo-
rie des graphes ne s’adapte pas bien à nos grilles carrés où le dégré des sommets

177
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

est limité à 4 en général et qui incluent toujours des sommets de degré inférieur
ou égal à 2 (les coins par exemple). De plus, la k-connexité est une propriété glo-
bale d’un graphe qui est difficile à vérifier localement. D’où le besoin d’étudier
une définition alternative.
Dans ce qui suit, nous définissons pour tout q une sous classe des grilles que
nous appelons grilles q-carrés connexes, sous classe pour laquelle il est facile de
vérifier l’appartenance d’une instance et pour laquelle une q-partition équilibrée
en zones connexes existe toujours et est facile à calculer. L’idée est d’avoir des
couloirs suffisamment larges pour que toutes les couleurs puissent traverser. Un
algorithme glouton peut ainsi étendre une partie connexe (depuis une racine)
jusqu’à saturation de celle-ci (possession de |GqV | sommets), tout en maintenant
(q − 1)-carré connexe le graphe de nœuds restant à colorier. Cependant, tandis
qu’il semble évident d’utiliser la notion de "largeur" pour les zones de la grille
formant des "couloirs" rectilignes, les choses sont moins simples pour ce qui est
des angles et des embranchements.

6.5.1 q-carrée connexité : définition globale


Nous représentons un "carré" d’une longueur donnée par son coin inférieur
gauche : pour (x, y) ∈ Z2 et q > 0, nous noterons sq(x, y, q) = {(x + i, y + j) : 0 ≤
i, j < q} le q-carré à la coordonnée (x, y). Nous dirons qu’un graphe grille GV
contient sq(x, y, q) si et seulement si sq(x, y, q) ⊆ V . Une grille GV est couverte
par des q-carrés si pour chaque (x, y) ∈ V il existe x0 , y 0 tel que sq(x0 , y 0 , q) est
contenu dans GV et (x, y) ∈ sq(x0 , y 0 , q).
Deux q-carrés sq(x, y, q) et sq(x0 , y 0 , q) sont adjacents si et seulement si |x −
x0 | + |y − y 0 | = 1. Pour un ensemble V ⊆ Z2 , nous noterons Sq(V, q) = (V 0 , E 0 ),
avec V 0 l’ensemble des q-carrés dans V et E 0 l’ensemble des couples adjacents
de q-carrés dans V , le graphe induit des q-carrés. La distance entre deux q-carrés
sq(x, y, q), sq(x0 , y 0 , q) ∈ Sq(V, q) est notée dist((x, y), (x0 , y 0 ), V, q) est est égale à
la longueur du plus court chemin entre les coins inférieurs gauche.
Une grille GV couverte par des q-carrés est q-connexe si pour tout couple
(sq(x, y, q), sq(x0 , y 0 , q)) dans Sq(V, q) tel que max{|x−x0 |, |y−y 0 | ≤ q} et min{|x−
x0 |, |y − y 0 |} < q nous avons dist((x, y), (x0 , y 0 ), V, q) = dist((x, y), (x0 , y 0 ), Z2 , q) =
|x − x0 | + |y − y 0 |. La condition de q-connexion s’applique sur des carrés qui se
chevauchent (l’intersection est non-vide) ou qui se touchent (au moins un som-
met d’un carré est adjacent à un sommet se trouvant dans un carré voisin). La
condition requiert pour de tels carrés l’existence d’un chemin de carrés qui d’une
certaine manière "zig-zague" d’un carré à l’autre sans changer de direction sur
un axe.

Lemme 8. Soit une grille connexe GV , q-connexe et couverte par des q-carrés avec
q > 1. Alors GV est aussi (q − 1)-connexe.

178
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

Pour démontrer cette propriété, nous démontrons en premier lieu certaines


observations auxiliaires.

Lemme 9. Soit une grille connexe et q-connexe GV couverte par des q-carrés.
Alors le graphe induit Sq (V, q) est aussi connexe.

Démonstration. Nous montrons que pour tout couple de carrés sq(x1 , y1, q) et
sq(x2 , y2 , q) dans GV il existe un chemin dans Sq(V, q). La preuve utilise une
induction sur la plus courte distance d entre les paires de sommets (x01 , y10 ) ∈
sq(x1 , y1 , q) et (x02 , y20 ) ∈ sq(x2 , y2 , q) : Si cette distance est nulle, alors les carrés
s’intersectent et la propriété de q-connexion implique qu’il y ait un chemin entre
les deux carrés. Dans le cas contraire, il y a un premier sommet (x03 , y30 ) sur le plus
court chemin allant de (x01 , y10 ) vers (x02 , y20 ) qui n’est pas dans sq(x1 , y1 , q). Puisque
GV est q-carré couverte, il existe sq(x3 , y3 , q) dans VG avec (x03 , y30 ) ∈ sq(x3 , y3 , q).
De plus, à cause de la q-connexité, il existe un chemin allant de sq(x1 , y1 , q) vers
sq(x3 , y3 , q) dans Sq(V, q). D’un autre côté, la distance entre (x03 , y30 ) et (x02 , y20 )
est inférieure à d, ainsi par induction, il existe un chemin allant de sq(x3 , y3 , q)
vers sq(x2 , y2 , q) dans Sq(V, q) et les deux chemins joints connectent sq(x1 , y1 , q) et
sq(x2, y2, q) comme désiré.

Lemme 10. Soit une grille connexe GV couverte par des q-carrés et q−connexe
avec q > 1. Alors chaque (q − 1)-carré dans GV est contenu dans un q-carré de GV .

Démonstration. Schéma : soit sq(x, y, q − 1) un (q − 1)-carré. Pour démontrer


l’existence d’un q-carré dans GV le contenant, nous démontrons en premier lieu
qu’il existe un q-carré contenant une ou plusieurs lignes provenant d’un côté du
(q − 1)-carré, à partir de là nous montrons par induction qu’il existe un q-carré
contenant l’ensemble des (q − 1) lignes de ce côté. La preuve utilise nécessairement
la propriété de q-connexion.
Démonstration du Lemme 8. Supposons que deux (q − 1)-carrés se touchent ou
s’intersectent. Tous les couples de q-carrés les contenant se touchent ou s’intersectent
aussi. Nous considérons deux q-carrés les contenant et étant à distance minimale.
Nous considérons un chemin entre les deux q-carrés conteneurs. Un tel chemin peut
être vu comme un ensemble de pas dans les directions haut, bas, gauche, droite ne
contenant jamais en même temps deux pas dans la direction opposée, c’est à dire
jamais haut, bas d’une part et gauche, droite d’autre part. Un (q − 1)-carré peut
imiter les mêmes directions et toujours être inclus dans le q-carré d’un chemin,
cependant, il peut finir sur le "mauvais" carré parmi les 4 (q − 1)-squares dans le
q-carré final et cela requiert une correction. Cependant, il est aisé de voir que cette
correction peut soit être effectuée en sautant/passant un pas du chemin q-carré
(déplacement relatif dans la direction opposée), ou en ajoutant une étape dans le
q-carré final, et nous arrivons ainsi avec un chemin de la distance désirée.

179
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

6.5.2 q-carée connexité : définition locale

Figure 6.10 – Contrainte de q-largeur (en haut) et de q-complétion (en bas)

Nous considérons maintenant une définition alternative équivalente qui, bien


que moins intuitive, sied mieux pour décrire un algorithme de vérification de la
q-carrée connexité.
Une grille GV est q-large si et seulement si pour tout v = (x, y) ∈ V il existe
x, y 0 tel que 0 ≤ x − x0 < q, 0 ≤ y − y 0 < q, et pour tout 0 ≤ i < q nous avons
(x0 + i, y), (x, y 0 + i) ∈ V , c’est-à-dire que chaque sommet fait partie d’un segment
horizontal ainsi que d’un segment vertical de q sommets.
Une grille GV satisfait la propriété de q-complétion si et seulement si pour
chaque (x, y) ∈ V , a, b ∈ {−1, 1} et c ∈ {0, 1} tel que (x + i · a, y + j · b) ∈ V avec
i = 1 et 1 ≤ j < q ou j = 1 et 1 ≤ i < q ainsi que (x + c · a, y + (1 − c) · b) ∈ V ,
aussi (x, y + j) ∈ V pour tout 1 ≤ j ≤ q ou (x + i, y) ∈ V pour tout 1 ≤ i ≤ q.
Les propriétés de q-largeur et de q-complétion sont illustrées sur la figure 6.10.

Lemme 11. : Étant donné une grille connexe GV , les deux conditions qui suivent
sont équivalentes :
— GV est q-carré couverte et q-connexe. (1)
— GV est q-large et satisfait la propriété de q-completion. (2)

Le fait qu’une grille q-carrée connexe puisse contenir des trous requiert une
définition de connexité plus subtile : deux sommets u, v ∈ / V sont proches si et
seulement si leurs distances dans Z2 est au plus 2. Par exemple, deux sommets
sur des positions diagonales sont proches. Un sous-ensemble H ⊆ Z2 \ V est
clos par proximité si et seulement si pour un sommet v ∈ H et un sommet v 0 ∈
Z2 \ V proche de v, alors v 0 ∈ H. L’unique sous-ensemble maximal clos par
proximité H ⊆ Z2 \ V est infini et nous l’appelons l’extérieur de GV . Tout autre

180
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

sous-ensemble H clos par proximité est appelé un trous de GV (H pour "hole" en


anglais).
Notons que les trous ainsi que l’extérieur ne sont pas connectés suivant le
voisinage usuel des grilles carrées (ici les diagonales comptent). Une grille GV
ne contenant pas de trous non-vides est dite solide.
Un segment est une ligne droite de sommets : pour (x, y) ∈ Z2 , a ∈ {0, 1} et k >
0, le segment S((x, y), a, k) désigne l’ensemble des sommets {(x + a · i, y + (1 −
a) · i)|0 ≤ i < k}.
Démonstration du Lemme 11, (1) =⇒ (2). La q-largeur s’obtient trivialement à
partir de la q-carrée couverture. Supposons une constellation (x, y) et a, b, c
concernant la propriété de q-completion. Sans perte de généralité nous suppo-
sons a = b = c = 1, les autres cas sont très similaires. En supposant que la
propriété ne tienne plus pour cette instance de paramètres, il existe alors des
sommets (x + i, y), (x, y + j)notinV avec 1 ≤ i, j ≤ q. Nous supposons i,j minimaux,
c’est-à-dire que pour tout 1 ≤ i0 < i, nous avons (x + i0 , y) ∈ V et (x, y + j 0 ) ∈ V .
Nous montrons l’existence de q-carrés dans GV qui se touchent ou qui se che-
vauchent, ce qui viole la propriété de q-connexité à cause des obstacles représentés
par (x + i, y), (x, y + j). Nous supposons tout d’abord que j = 1, alors le seul q-carré
contenant (x + 1, y + 1) ne peut être que sq(x + 1, y + 1, q). Ce q-carré touche le
q-carré contenant (x+1,y), encore un chemin direct vers le q-carré commençant sur
le carré sq(x + 1, y + 1, q) aurait dû commencer soit en bas, soit à gauche, mais il
n’y a pas d’arêtes dans cette direction, il y a donc contradiction. Par conséquent,
j > 1. Considérons maintenant les q-carrés contenant les sommets (x + i0 , y + 1)
avec 0 ≤ i0 ≤ i, appartenant tous à GV . Certains d’entre eux (comme ((x, y + 1))
doivent être en dessous de l’ordonnée y + j 0 − q + 1, d’autres au-dessus de y + 1 et
par conséquent il doit exister un i0 tel que (x + i0 , y + 1) se situe dans un q-carré
en-dessous de y + j 0 − q + 1 et le sommet (x + i0 + 1, y + 1) se trouve dans un
q-carré au dessus de y + 1 et ces q-carrés se touchent ou s’intersectent, il n’y a
alors aucun chemin direct entre eux à cause des deux sommets obstacles. Encore
une contradiction. Par conséquent, nous ne pouvons pas avoir en même temps
(x + i, y), (x, y + j) ∈/ V , par conséquent, la constellation satisfait la propriété de
q-complétion.
(Démonstartion du Lemme 11, (2) =⇒ (1)). Nous montrons d’abord que la grille
est q-carré couverte. Nous faisons cela en construisant la coloration d’une partie
des sommets du graphe incrémentalement de manière à ce que la zone colorée soit
invariablement une union de q-carrés. Nous montrons que ce procédé peut être
poursuivi jusqu’à ce que tous les sommets soient colorés. La construction commence
par le choix d’un sommet (x, y) avec x minimal. Puisque le graphe est q-large
cela nous donne q sommets (x, y1 ) . . . (x, yq ) avec y = yi , tous avec l’abscisse x
minimale. À nouveau à cause de la q-largeur, il s’ensuit que sq(x, y1 , q) ⊆ V et il
s’agit du premier carré que nous colorons. Nous supposons maintenant qu’il reste
des sommets à colorier. Puisque le graphe est connexe, au moins l’un des sommets

181
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

non-coloriés est adjacent à un sommet colorié. Sans perte de généralité, supposons


que sq(x, y + 1, q) soit entièrement colorié et que (x + i, y) avec 0 ≤ i < q ne le soit
pas encore. À cause de la q-largeur, il existe x0 tel que x0 + k = x + i avec 0 ≤ k < q
et pour tout 0 ≤ l < q nous avons (x0 + l, y) ∈ V . Nous supposons de plus que
x, y, i, x0 sont choisis avec ces conditions tels que |x − x0 | soit minimal. Alors soit
x = x0 , mais alors sq(x, y, q) ⊆ V et nous pouvons colorer (x, y) . . . (x + q − 1, y)
et continuer. Ou bien x 6= x0 et supposons que x0 < x. Alors les prérequis pour la
q-completion sont satisfaits pour (x − 1, y) et a = b = c = 1 et toute complétion
contredit l’assomption d’avoir choisi x, y, i, x0 de sorte que |x−x0 | soit minimal. Nous
voulons maintenant montrer que GV est q-connexe. Supposons qu’il ne l’est pas, il
y a alors deux q-carrés sq(x, y, q) et sq(x0 , y 0 , q) tels que max{|x − x0 |, |y − y 0 |} ≤ q
et min|x − x0 |, |y − y 0 | < q mais leur distance dans Sq(V, q) est plus grande que
|x − x0 |, |y − y 0 |. Supposons |x − x0 | + |y − y 0 | minimal pour une telle paire de
q-carrés. Évidemment, min{|x − x0 |, |y − y 0 |} > 0, autrement un chemin droit
entre deux q-carrés existerait et contredirait les suppositions. Les contacts et les
chevauchements non-triviaux donnent lieu à une contradiction de la propriété de
q-complétion qui à son tour produit un troisième carré à distance 1 à partir de
l’un des deux carrés et 1 unité plus proche de l’autre carré. Puisque nous avions
supposé |x − x0 | + |y − y 0 | minimal, il en résulte un q-carré intermédiaire sur un
chemin de longueur |x − x0 | + |y − y 0 | entre les q-carrés originaux, ce qui contredit
les hypothèses.

6.5.3 Un algorithme pour la variante non enracinée


Nous décrivons ici un algorithme pour résoudre le problème du partitionne-
ment équilibré non enraciné en zones connexes dans le cas des grilles q-carrés
connexes.
L’algorithme colore récursivement une zone connexe de mq sommets, laissant
m·(q−1)
q
nœuds formant un sous-graphe (q − 1)-carré connexe. Nous passons alors
à la couleur suivante et répétons le processus, laissant un (q − 2)-carré connexe
non coloré et ainsi de suite. Ce processus peut intuitivement être comparé à la
coloration des bords d’un graphe avec des couloirs de largeur q laissant ainsi des
couloirs de largeur q −1, ce qui conserve un accès suffisamment large pour (q −1)
couleurs.
Pour un q donné, la phase de coloriage de l’algorithme préserve un invariant
complexe, la q-conformité : une coloration q-conforme de GV est un sous ensemble
C ⊂ V tel que GC est connexe, GV \C est (q −1)-carré-couvert et (q −1)-connexe,
et tel qu’il existe un sommet v à l’extérieur de GV avec un voisin dans C (la
coloration C "touche un bord").
L’algorithme est plus simple à comprendre sur des grilles solides, puisque les
trous dans la grille introduisent des problèmes supplémentaires. Nous invitons
par conséquent le lecteur à d’abord comprendre le fonctionnement de l’algo-

182
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

rithme en ignorant les trous, puis relire le texte à nouveau en prenant en compte
la façon dont nous traitons les trous : nous les coupons. Un trou H dans une
grille GV est coupé par la coloration C s’il existe un sommet v ∈ H avec un voisin
dans C. Les sommets d’un trou coupé sont considérés comme en dehors de GV
par rapport à C.
La phase de coloriage commence par un des coins extérieurs (un sommet
v ∈ V possédant deux voisins en dehors de GV ), puis étend une coloration q-
conforme par le biais de trois opérations :
1. Ajouter un sommet v à C, tel que v ∈ V \ C et tel que v dispose d’un voisin
dans C.
2. Ajouter un segment S = S((x, y), a, k) ⊆ V \ C tel que k < q, (x, y) a un
voisin dans C et :
a) soient tous les sommets dans (x + ai, y + (1 − a)i) ont un voisins dans
C ou à l’extérieur de VG et en particulier, S se termine par (x + ak, y +
(1 − a)k) ∈
/ V \ C,
b) soit k = q − 1, et (x + a · k, y + (1 − a) · k) ∈ H pour un trous non coupé
H.

Data: graphe GV q-carré connexe


Result: partition P q-équilibrée de GV
Initialisation :;
Soit P = {}, une partition;
Soit H, l’ensemble des trous non coupés du graphe;
Soit V , l’ensemble des nœuds du graphe;
for i allant de q à 1 do
Soit v un coin externe de GV ;
Et P = {v} une partie;
while P n’est pas équilibrée do
Étendre P avec une extension simple S qui conserve la i-conformité 2 ;
Mettre à jour H en retirant les trous coupés lors de l’extension;
Mettre à jour V en retirant les nœuds pris par l’extension;
end
Compléter la partition P en rajoutant P ;
end
Algorithm 1: Algorithme de partitionnement (simplifié)

183
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

Figure 6.11 – Exemple illustratif de trace d’exécution de l’algorithme glouton sur


une grille 4-carré-connexe. Lire de gauche à droite et de haut en
bas.

Nous appelons une extension S satisfaisant l’une de ces trois conditions une
extension simple. Notre algorithme décrit précédemment calcule de manière in-
crémentale de telles colorations pour construire une partie. Voir l’algo 1 pour un
pseudo code détaillé. Le simulateur fournit dans la section 6.5.4 constitue une
implémentation de cet algorithme, et il permet de l’expérimenter interactivement
sur différentes topologies. En outre, le simulateur permet de se familiariser avec
les règles de q-carré connexité. En effet, il vérifie en temps réel que la topolo-
gie éditée par l’utilisateur suit les règles. Aussi, à défaut de pouvoir exécuter le
simulateur, une trace d’exécution illustrative est proposée dans la figure 6.11.

Lemme 12 (Lemme d’extension). Dans l’algorithme 1, le lemme 6 tient toujours,


c’est-à-dire pour une coloration q − conf orme C d’un graphe GV tel que |C| < |Vq |
il existe une extension simple S tel que C ∩ S est q-conforme.

6.5.3.1 Preuve du lemme d’extension


La preuve du lemme d’extension est basée sur une analyse récursive (construc-
tive) d’une coloration q-conforme : elle est basée sur l’identification de possibles
points d’extensions, et si ces derniers induisent un conflit avec la q-conformité,
alors il y a une façon de subdiviser la zone des points d’extension jusqu’à at-
teindre une zone trop petite pour abriter un conflit. Pour formaliser la zone de
recherche, nous introduisons la notion de bordure de la coloration comme étant
le bord entre l’extérieur de la partie colorée de VG d’une part, et la partie non-
colorée de VG d’autre part : Visuellement, cette bordure siège entre les sommets
et nous la formalisons comme un ensemble de couples : soit (u, v) une paire de
sommets voisins tels que v ∈ V \ C et u ∈ C ou u ∈ H pour un trou coupé de
VG ou tel que u est en dehors de VG candidat à la frontière de la coloration. Si

184
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

u ∈ C, nous appellerons cela une arête colorée, dans le cas où u ∈ H, nous ap-
pellerons cela une arête non-colorée. Les candidats à la frontière de la coloration
(u, v), (u0 , v 0 ) sont connectés si et seulement si u est un voisin de u0 et v est un
voisin de v 0 ou u = u0 et v = (x, y), v 0 = (x0 , y 0 ) satisfont |x − x0 | + |y − y 0 | = 2,
c’est-à-dire qu’ils sont sur des positions diagonales, ou inversement v = v 0 et
u, u0 sont sur des positions diagonales. Graphiquement, des candidats connectés
dans la frontière de la coloration peuvent êtres dessinés sans lever le stylo et
partagent un point commun. Un point d’extension est un candidat à la frontière
colorée (u, v) avec u ∈ C et v le premier sommet d’une extension simple S. Une
frontière colorée est un ensemble connexe de candidats à la frontière colorée. Une
frontière colorée B est prometteuse si :
— elle contient des segments colorés,
— pour toute extension simple S(x, y, a, k) avec (x, y) ayant un voisin coloré
sur la frontière,soit son ajout à C préserve la q-conformité soit il cause un
conflit avec un trou non-coupé ou avec une arête colorée qui est soit sur la
frontière colorée, soit directement connecté à elle.
— Nous sommes alors dans un de ces cas :
1. Elle contient des segments non-colorés S(x, y, a, q − 1) tels que tous les
sommets sont connectés à des candidats à la bordure colorée et tels que
(x − a, y − (1 − a)), (x + a(q − 1), y + (1 − a)(q − 1)) ∈
/ V \ C.
2. Elle ne satisfait pas 6.1, il existe un sommet v ∈ V \ C ayant un voisin
v1 ∈ C et un autre voisin v2 ∈ Z2 \V (un coin avec un côté coloré, l’autre
en dehors de V ), avec (v, v1 ) dans la frontière colorée.
3. Elle ne satisfait pas 6.1 ou 6.2, mais elle contient des arêtes (v, v 0 ) avec
v 0 ∈ Z2 \ V .
4. Elle ne satisfait pas 6.1 ou 6.2 ou 6.3, mais elle contient deux "coins co-
lorés", c’est-à-dire des paires d’arêtes (vi , vi0 ) et (vi , vi00 ), tels que vi ∈ V \C
et vi0 , vi00 ∈ C (coins concaves avec de la couleur sur chaque côté), et tels
qu’il n’existe pas de coins convexes (avec le la couleur sur chaque coté)
entre eux. (De telles paires de coins concaves contiennent naturellement
un segment le long des arêtes entre les deux coins).

185
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

Figure 6.12 – Frontière prometteuse de la coloration et recherche d’extensions

Démonstration du Lemme d’extension 12. Par induction, nous affirmons qu’une


frontière prometteuse de la coloration contient une extension qui est q−conforme.
Alors, puisque la totalité de la frontière du graphe partiellement colorée est triviale-
ment prometteuse, le résultat s’ensuit. Maintenant, soit B une frontière prometteuse
de la coloration. Nous examinons les cas et montrons que pour chaque cas, soit une
extension simple q-conforme peut être identifiée, soit une frontière prometteuse
plus petite peut être identifiée. Le cas 1 permet une coloration immédiate, puisque
un tel segment ne peut pas casser la (q − 1)-complétion et que la seule façon ou
cela pourrait casser la (q − 1)-largeur serait si |V \ C| = (q − 1)2 , ce qui contredit
les hypothèses |C| < |Vq | .
Supposons que nous sommes dans le cas 2 : ajouter un seul sommet dans le
coin ne peut pas casser la (q − 1)-largeur, parce-que cela entre en contradiction
avec le fait que le cas 1 n’est pas satisfait. Sans pertes de généralités, assumons
que v = (x, y) tel que (x − 1, y) ∈ C et (x, y − 1) ∈ / V (les autres cas sont
symétriques). Pour générer un conflit avec la (q − 1)-completion, nous devons avoir
(x+q−1, y), (x+q−2, y) . . . (x+q−2, y+q−1) ∈ V \C mais ce (x0 , y 0 ) ∈ / V \C pour un
(x , y ) ∈ {(x+q −1, y +1), . . . , (x+q −1, y +q −1)}. Puisque VG est q-carré connexe,
0 0

il n’est pas difficile de voir que (x + q − 1, y + 1), . . . , (x + q − 1, y + q − 1) ∈ V ,


par conséquent (x0 , y 0 ) ∈ C. Avec (x0 − 1, y 0 ) ∈ V \ C cela forme une frontière de
la coloration candidate et puisque la frontière est prometteuse, elle est connectée
à un coin. En considérant le plus court chemin entre le coin et l’arête en conflit,
alors en enlevant l’arête liant le coin au sommet coloré, nous obtenons une nouvelle
frontière de la coloration. Nous affirmons que celle-ci est prometteuse : elle contient
des coins concaves à cause de l’orientation des arêtes de ces deux sommets, et de
plus, si une extension de n’importe quel type sur cette sous-frontière contient des
conflits, ceux-ci doivent avoir lieu dans la sous-frontière.
Pour le cas 3, supposons que (les autres cas sont symétriques) v = (x, y), (x +
1, y) ∈ V \C et de plus (x, y −1) ∈ C et (x+1, y −1) ∈ / V . Si l’ajout de v produit un

186
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

conflit avec la q-conformité, il s’agit soit d’un conflit avec la (q − 1)-largeur ou avec
la (q − 1)-complétion. Considérons d’abord le cas d’un conflit avec la (q − 1)-largeur.
Un tel conflit peut concerner les sommets (x, y + q − 2) , (x − k, y) ou (x + k, y)
pour 1 < k < q − 1. Dans le premier cas, puisque GV est q-carré connexe, il est
facile de voir que (x, y + q − 2) ∈ V , et par conséquent, il est dans C. En enlevant
les arêtes ((x, y), (x, y − 1)) et ((x, y + q − 2), (x, y + q − 3)) de la frontière de la
coloration et en conservant un chemin reliant ces deux arêtes et contenant des
arêtes colorés, nous obtenons une frontière de taille réduite et nous affirmons que
celle-ci est prometteuse : par exemple, les deux arêtes retirés sont parallèles et le
chemin effectuant la liaison contient nécessairement des coins concaves (autrement,
nous finirions sur une contradiction avec l’hypothèse 1 qui ne tiendrais plus), et
finalement, étant donné que le reste de la frontière de la coloration est "presque
fermé", un conflit relatif à un point d’extension ne peut se trouver au-delà des deux
arêtes retirés.
Dans le second cas, nous considérons l’extension simple (x − k + 1, y). Celle-ci
ne peut avoir de conflits avec la (q − 1)-largeur, (Autrement nous aurions 1, mais
nous supposons ici que ce n’est pas le cas) et à cause du fait que (x + 1, y − 1) ∈ /
V , nous trouvons qu’un sommet en conflit avec la (q − 1)-complétion doit être
(x − k + q − 1, y + q − 2) ∈ C, nous employons un raisonnement analogue à celui
ci-dessus pour identifier une sous-frontière de la coloration.
Finalement, dans le troisième cas (et en excluant le second cas), le segment
{(x, y), . . . , (x + k − 1, y)} est une extension simple qui ne peut pas introduire un
conflit sur la (q − 1)-largeur et comme avant, si il y a un conflit avec la (q − 1)-
complétion, ce conflit se situera entre l’arête en-dessous (x, y) et une arête colorée.
Là encore, nous effectuons une réduction de la frontière de la coloration.
Dans tous les cas, soit l’extension préserve la q-conformité, soit la frontière réduite
de la coloration est prometteuse et contient par induction une extension préservant
la q-conformité, ce qui s’étend évidemment à la frontière tout entière.
Pour le cas 4, nous supposons (à symétrie près) que les coins (x, y), (x + k, y)
avec (x − 1, y), (x + k + 1, y) ∈ C et (x, y − 1), . . . , (x + k, y − 1) ∈ C. Si ajouter
à C provoque un conflit, cela peut être à cause d’un nœud coloré, dans ce cas
nous utilisons l’induction ci-dessus. Si d’un autre côté, il existe un nœud conflictuel
/ V , alors ce nœud ne peut être dans la frontière de la coloration (hypothèse
v0 ∈
du cas 4), par conséquent il doit faire partie d’un trou non-coupé à la position
(x + q − 1, y + q − 1).
L’extension simple S = (x + q − 1, y), . . . , (x + q − 1, y + q − 2) préserve la q-
conformité. En premier lieu, elle ne peut pas introduire de conflit avec la (q − 1)-
complétion, ni un conflit avec la (q − 1)-width. Observons aussi qu’un trou coupé
est encerclé par un chemin fermé dans V \ C, le couper ne peut pas déconnecter
V \ (C ∪ S). Ce raisonnement récursif de la preuve est illustré dans la figure 6.12
pour le cas q = 4, de gauche à droite : (a) Une coloration partielle et une frontière
prometteuse de la coloration (initialement le contour interne) sont données et une
extension simple possible (cas 3) est montrée en jaune, mais cela induit un conflit

187
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

concernant la (q − 1)-largeur, les arêtes coupées sont marquées en rouge, nous


gardons le chemin connectant ces arêtes à droite. Une deuxième tentative de cas
3 est montrée dans la deuxième image. Dans la troisième image, il n’y a plus
d’arêtes non-colorées (cas 4) dans la frontière de la coloration, nous essayons donc
un coin concave, mais il y a un conflit avec un trou non-coupé, nous le coupons
donc à la place, ce qui conclut la recherche d’extension. La dernière image montre
l’application du cas 1.

6.5.3.2 Preuve de correction de l’algorithme


Théorème 3. Pour une grille q-carré connexe GV , l’algorithme 1 termine et
calcule (jusqu’à q − 2 sommets par partie) un q-partitionnement équilibré connexe
en temps 3 O(|R||V |q 2 ), où R est le plus petit rectangle contenant V , ou en temps
O(|V |3 × q 2 ).

Démonstration. Le lemme d’extension stipule que le cas de la ligne dans la revendi-


cation 6 est toujours possible. L’invariant assure que chaque itération de la boucle
extérieure travaille sur un coloriage q-conforme. La condition de terminaison de la
boucle interne garantit qu’après la boucle : |V |/q ≤ |C| < m/q + q − 1. L’algorithme
est simplifié, et peut, sous de mauvaises circonstances, produire un partitionnement
final dans lequel (q − 1)2 sont manquants, cependant il est simple d’améliorer cela
jusqu’à (q − 1) nœuds en équilibrant la frontière lorsque l’on passe d’une itération
à l’autre de la boucle externe. De plus, une simple amélioration de l’algorithme
pourrait être de redistribuer le dernier segment attribué à une partie dans la boucle
interne entre la partie courante et la prochaine partie, limitant ainsi la déviation
maximale, passant de |V |/q nœuds à au plus 1, voir 0, l’équilibre parfait, dans le
cas où |V | est un multiple de q. Pour les considérations concernant la complexité,
nous supposons une représentation matricielle de l’entrée V comme sous ensemble
d’un rectangle R. Ce rectangle peut bien sûr être calculé en O(|R|) et |R| ≤ |V |2
puisque V est connexe. À des fins pratiques, le problème peut être formulé de
telle sorte que |R| soit une mesure de la taille de l’entrée, mais concernant la
question de la complexité de l’algorithme 1, à savoir si l’algorithme est polynomial
ou non, ce détail est sans conséquence. Les fonctions computeUncutHoles ainsi que
updateUncutHoles calculent des ensembles atteignables, par exemple en effectuant
un parcours en profondeur d’abord, en temps linéaire. De plus, puisque la fonction
updateUncutHoles supprime les sommets de l’ensemble des trous non-coupés et
qu’elle enlève chaque sommet au plus une fois, la durée totale du calcul pour
updateUncutHoles est linéaire en |R|. Puisque chaque itération de la boucle interne
incrémente C et que chaque itération de la boucle externe réduit V par C, le nombre
total d’itérations de la boucle interne est limité par |V |. Dans chaque itération
de la boucle interne, en principe, tous les nœuds de V \ C doivent être examinés

3. Nous négligeons les temps d’accès non-constants à la matrice R, ce qui n’a aucune consé-
quence en pratique.

188
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

pour une possible extension simple. Examiner si oui ou non l’extension viole la
q-conformité est cependant une opération locale autour du point d’extension et
peut être réalisée 4 en O(q 2 ). Il faut noter aussi qu’il n’y a aucunement besoin de
tester la connexité de la partie non-colorée après une extension : en effet, chaque
chemin qui traverse l’extension peut être remplacé par un autre chemin qui l’évite :
les contraintes sur les largeurs impliquent cela pour les extensions de type 1,2a,
tandis qu’un trou non-coupé est entouré par un chemin cyclique qui permet aussi
de contourner le segment coupé.

6.5.4 Simulation

Figure 6.13 – Simulateur : Lien simulateur.

Nous avons réalisé un simulateur intuitif permettant d’expérimenter intéracti-


vement avec l’algorithme de partitionnement pour les grilles qCarré-connexes. Il
est livré attaché au présent document PDF.

6.5.4.1 Usage
Le simulateur permet de tester l’algorithme de partitionnement de grille q-
carré connexes sur des topologies générées aléatoirement ou éditées manuelle-
ment via l’interface.
4. Tandis que les extensions faites par un seul sommet peuvent produire une violation de la
q-largeur ou de la q-complétion, les extensions par un segment S peuvent seulement produire une
violation de la q-largeur.

189
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.5
Partitionnement de grilles q-carré connexe

Le simulateur vérifie en temps réel que la topologie générée ou éditée respecte


les règles de q-carré connexion pour le nombre q de parties choisi. Si une règle
est violée, alors l’interface signalera la zone de la topologie qui cause l’erreur et
rappellera la règle à suivre en rouge. Les topologies générées aléatoirement par
le simulateur sont toujours q-carré connexes.

6.5.4.2 Captures
Nous proposons dans la figure 6.14 un exemple de partition réalisée avec le
simulateur sur une topologie q-carrée connexe.

Figure 6.14 – Partition en 7 parties d’une topologie q-carré connexe de 60 par 40


tuiles.

190
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.6
Famille des grilles ×2

6.6 Famille des grilles ×2

Figure 6.15 – Exemple de partitionnement d’une grille ×2

Dans cette section nous évoquons une famille de grilles pour laquelle il est
extrêmement simple de calculer un q-partitionnement en temps linéaire. Nous
appellerons cette famille de grilles carrées la famille des grilles ×2 (prononcer
"grilles fois 2").
Une grille carrée GV fait partie de la famille des grilles ×2 si elle peut être vue
comme un "agrandissement" d’une grille GV 0 avec un facteur 2 : chaque nœud
de V 0 est remplacé dans V par un carré de 2 × 2 nœuds. Nous appellerons GV 0 la
grille ×1 (grille fois 1) associée à GV .
Énoncé plus formellement, GV est une grille ×2 si et seulement si il existe une
grille carré GV 0 telle que :
V = {(x, y) : x = (2x0 ou 2x0 + 1), y = (2y 0 ou 2y 0 + 1) et (x0 , y 0 ) ∈ V 0 }.
Un exemple d’une telle grille est donné dans la figure 6.15.
L’idée pour calculer un q-partitionnement d’une grille ×2 GV , est de d’abord
calculer un arbre couvrant quelconque de GV 0 , la grille ×1 associée à GV . Nous
notons ET0 les arêtes de cet arbre.
Le pourtour de l’arbre couvrant de GV 0 nous indique un cycle Hamiltonien
dans GV . Vu sous un autre angle, les arêtes ET0 ⊆ E 0 de l’arbre couvrant nous
indiquent les arêtes ET ⊆ E à retirer pour ne garder qu’un cycle Hamiltonien.
ET = {(u, v) ∈ E} où :
— u = (2x1 + a(x2 − x1 ), 2y1 + a(y2 − y1 ))
— v = (2x1 + a(x2 − x1 ) + |y2 − y1 |, 2y1 + a(y2 − y1 ) + |x2 − x1 |)
— u0 = (x1 , y1 ), v 0 = (x2 , y2 ), (u0 , v 0 ) ∈ ET0 et a ∈ {1, 2}
Connaissant un cycle Hamiltonien, le partitionnement en q-parties équilibrés
devient trivial : il suffit de découper le cycle séquentiellement en q parties de

191
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.6
Famille des grilles ×2

tailles égales (modulo le reste de la division entière). Le cycle Hamiltonien est


constitué des nœuds de V ainsi que de l’ensemble des arêtes EH = E \ ET .

Figure 6.16 – Toutes les tuiles possibles (modulo rotation) pour obtenir un cycle
Hamiltonien à partir de l’arbre couvrant.

Lemme 13. L’ensemble des arrêtes EH décrit un cycle Hamiltonien.

Démonstration. Nous allons par construction graphique réaliser un pavage. À


chaque configuration possible des nœuds de l’arbre couvrant de GV 0 , nous allons
associer une tuile (voir figure 6.16). Chaque tuile comporte des dessins correspondant
aux arêtes de l’arbre (en jaune) ainsi qu’aux arêtes du possible cycle Hamiltonien
(pistes en bleu). Deux tuiles correspondant à deux nœuds adjacents de l’arbre
sont toujours raccords. (par disjonction de cas). Lorsque la piste bleue mène
vers l’extérieur d’une tuile, alors il y a une arête de l’arbre dans la direction
correspondante et la piste se poursuit sur la tuile suivante.
Les arêtes de la piste bleue sur les tuiles correspondant aux feuilles de l’arbre
forment un "U". Ainsi, pour tout arbre couvrant donné, il découle un pavage dans
lequel les pistes bleues se poursuivent localement, indépendamment de la tuile
considérée (pas de culs-de-sacs). Par récurrence l’ensemble des tracés bleus forment
un cycle. Et puisque sur chaque tuile, chaque nœud est une extrémité d’une arête
(bleue), le tracé forme un cycle qui passe par l’ensemble des nœuds de GV : nous
avons bien un cycle Hamiltonien.

192
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.6
Famille des grilles ×2

6.6.1 Simulation

Figure 6.17 – Simulateur : Lien simulateur.

Nous avons réalisé un simulateur intuitif permettant d’expérimenter intérac-


tivement avec l’algorithme de partitionnement pour les grilles ×2. Il est livré
attaché au présent document PDF.

6.6.2 Usage
Le simulateur permet de tester l’algorithme de partitionnement de grilles ×2
connexes sur des topologies générées aléatoirement ou éditées manuellement
via l’interface.
Contrairement au simulateur de topologies q-carrés connexes, ici l’utilisateur
ne peut pas violer de règles. L’ajout de tuile s’effectue par méta-tuiles de 2 × 2.

6.6.2.1 Captures
Nous proposons dans la figure 6.18 un exemple de partition réalisée avec le
simulateur sur une grille ×2.

193
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.7
Perspectives et travaux futurs

Figure 6.18 – Partition en 7 parties d’une grille ×2 de 150 par 100 tuiles.

6.7 Perspectives et travaux futurs


6.7.1 Optimisations de l’algorithme
Nous avons précédemment établi la complexité de l’algorithme 1 en O(|R|·|V |·
q ) ou en O(|R|2 · q 2 ). La complexité est quadratique en |R| à cause du balayage
2

à l’aveugle de R à la recherche de la prochaine extension à chaque itération.


Plusieurs options permettent d’améliorer cela, par exemple, en traquant en
parallèle C et en créant une liste doublement chaînée répertoriant les exten-
sions simples possibles en connexion avec R, nous pouvons toujours prendre la
première extension de la liste et mettre à jour la liste dans chaque itération en
temps O(q 3 ), puisque l’impact sur les autres extensions est local.
Couper des trous peut temporairement nécessiter des mises-à-jour plus lentes,
mais leur impact global reste linéaire en |R|. D’un autre côté, donner une priorité
plus forte aux extensions simples pourrait permettre de borner l’ensemble des ex-
tensions a tout moment de l’exécution de l’algorithme, ramenant probablement
la complexité à O(|R|q 2 ).

194
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.7
Perspectives et travaux futurs

6.7.2 Vers un algorithme pour le problème enraciné

Figure 6.19 – Exemples de conflits binaires (rouge et vert à gauche) et quaternaire


(rouge, vert, bleue, jaune à droite)

Nous conjecturons que l’algorithme 1 peut être modifié pour résoudre la va-
riante enracinée du BCP comme suit. Dans la variante enracinée, nous commen-
çons avec une grille G ainsi qu’un ensemble de q sommets déjà colorés avec
des couleurs distinctes : ∀1 < i ≤ n, Ci = {vi }, où les Ci désignent les parties
que nous construisons. Ici, nous ne pouvons pas étendre les couleurs l’une après
l’autre de manière gloutonne tout en gardant la q-connexité du sous-graphe res-
tant non-coloriée G \ Ci . En effet, lorsqu’une partie Ci n’est pas saturée, cette
S

partie doit garder au moins un accès à la partie non-coloriée du graphe, c’est-


à-dire ∃(u, v), u ∈ Ci , v ∈ G \ Ci . Cela restreint grandement les possibilités
S

d’extensions si nous ne considérons qu’une seule couleur à chaque fois.


Au lieu d’étendre une seule couleur jusqu’à ce que la partie correspondante soit
saturée, nous pouvons chercher les extensions possibles, peu importe la couleur,
qui gardent des chemins entre les parties non-saturées et le graphe non-coloré,
c’est-à-dire nous recherchons un ensemble S de maximum q − 1 sommets v1 . . . vq
que nous ajouterons à une partie colorée Ci , tels que G \ Ci est (q − 1)-connexe
S

et que ∀0 < i < q, ∃(u, v), u ∈ Ci , v ∈ G \ Ci .


S

Lorsqu’une partie colorée Ci devient saturée, nous pouvons l’enlever puis consi-
dérer récursivement les sous-problèmes sur le sous-graphe G \ Ci , avec les q − 1
parties non-saturées restant toujours connectées au sous-graphe non-coloré qui
lui est (q − 2)-connexe.
Une difficulté importante introduite par le problème enraciné est la possible
émergence de conflits d’accès qui empêcheront de poursuivre le partitionne-
ment. Si ces conflits ne sont pas évités en amont, alors l’algorithme glouton peut
échouer. Comme exemple de conflit simple, il suffit de considérer deux parties
non-saturées Ci et Cj qui toutes les deux ont accès à la partie non colorée du
graphe via le même sommet. Évidemment, une telle coloration ne peut pas être
complétée (voir le conflit entre la couleur rouge et la couleur verte sur l’image
de gauche sur la figure 6.19). Des cas plus généraux peuvent impliquer jusqu’à q
parties lorsque les k parties ont leur unique accès au sous-graphe non-coloré qui

195
6 Partitionnement équilibré de grilles non-pondérées en zones connexes – 6.7
Perspectives et travaux futurs

se trouve dans le même carré de dimensions (k − 1)par (k − 1) : dans la figure


6.19 (à droite), étendre n’importe laquelle des couleurs rouge, verte, bleue ou
jaune créera récursivement un conflit (q − 1)-aire entre les couleurs restantes.
Nous conjecturons que le lemme d’extension peut être modifié pour prendre
en compte de tels conflits q-aires et les éviter, au prix d’un léger déséquilibre
lorsque l’on approche de la saturation de l’ensemble des couleurs. Dans le futur,
nous essaierons d’étendre l’algorithme 1 avec ce raisonnement.

196
7 Conclusion et perspectives
Dans cette thèse, nous nous sommes intéressés aux grands réseaux de micro-
contrôleurs. Nous nous sommes efforcés de proposer des solutions simples et mi-
nimalistes, tant sur le plan énergétique que sur l’effort d’implémentation, pour
construire, gérer et exploiter de tels grands réseaux. Afin de retranscrire fidèle-
ment cet effort, nous avons suivi pour le manuscrit la même approche intuitive,
visuelle et interactive, axée majoritairement sur la simulation et l’expérimenta-
tion. Nous avons pour cela donné de nombreuses illustrations ainsi qu’un simu-
lateur graphique pour chaque thème abordé.
Le thème central fut celui de la synchronisation, tache primordiale nécessaire
à l’instauration de communications périodiques basse énergie et basse latence.
Pour cela, nous avons proposé Goose Sync, un algorithme minimaliste de syn-
chronisation d’horloges, inspiré du vol en formation des oies sauvages, et ayant
comme propriété de bien passer à l’échelle, en garantissant statistiquement à tout
instant un faible déphasage entre les débuts de périodes de chaque couple de
noeuds voisins. Goose Sync s’est révélé particulièrement utile et robuste au sein
du réseau de dalles lumineuses LED’sChat, entreprise startup issue d’un transfert
de technologies depuis ’Aix-Marseille Université et dans laquelle j’ai contribué ac-
tivement au développement du produit (code embarqué bas niveau, applications
graphiques distribuées). Nous avons étudié Goose Sync à la fois empiriquement
et analytiquement ; cependant une conjecture centrale, bien que validée maintes
fois par l’expérimentation et la simulation, reste à être démontrée pour clôturer
l’analyse théorique.
Nous avons ensuite considéré la problématique du sans-fil. Nous avons fait
fonctionner Goose Sync en sans-fil, et ce malgré les fortes contraintes introduites
par ce médium, en lui ajoutant un cadre nécessaire, le protocole MeeMSyP. Avec
MeeMSyP, nous avons utilisé le phénomène physique d’interférence pour per-
mettre aux noeuds voisins dans le réseaux d’émettre à l’unisson un signal de
synchronisation. De plus, nous y avons adjoint des mécanismes basse énergie de
découverte, de redémarrage et de fusion d’îlots isolés, ce qui fait de MeeMSyP,
une méthode complète et simple pour implémenter des réseaux sans-fil scalables.
Enfin, nous avons étudié la consommation énergétique de MeeMSyP et donnons
un jeu de paramètres permettant d’atteindre un courant moyen de 10µA par
noeud, ce qui permet d’obtenir plusieurs années d’autonomie sur batteries ou en-
core de fonctionner sur cellules solaires, aussi bien en extérieur qu’en intérieur.
L’étude de MeeMSyP a été en grande partie menée sur simulateurs, cependant
nous avons fourni un pseudo-code détaillé permettant une implémentation ra-

197
7 Conclusion et perspectives

pide du protocole et ainsi accélérer et simplifier de futures expérimentations sur


des réseaux matériels.
Dans la continuité de nos travaux sur la synchronisation, nous nous sommes
intéressés aux causes physiques de nos problèmes : le déphasage progressif des
horloges dû aux infimes différences de fréquences entre les noeuds. Nous avons
détourné et exploité ce phénomène pour mesurer des délais très courts, infé-
rieurs à la durée d’un cycle d’horloge, principalement les délais de propagation
d’ondes radio. Pour cela, nous avons en premier lieu montré que la valeur du
déphasage entre les horloges influence le nombre de cycles entre l’émission d’un
signal, et la perception de son écho. Ensuite, nous avons montré que le motif
de cette variation dépend linéairement du délais de propagation. Ainsi, nous
avons conclu que mesurer le rapport cyclique du nombre de cycles perçus entre
émission et réception permet d’obtenir la partie fractionnaire du délais de propa-
gation. Cette étude nous donne par conséquent un outil de mesure, entièrement
logiciel, pour faire la géolocalisation des noeuds du réseau.
Suite aux expérimentations pratiques de la mesure de délais, nous avons ob-
servé à plusieurs reprises le phénomène de battement de la puissance du signal
lorsque plusieurs radios émettent en même temps, ce qui nous a donné l’idée
de détourner cet autre phénomène en proposant une méthode alternative pour
mesurer des distances, sans requérir une précision de mesure au cycle d’horloge
près. Dans cette méthode alternative, les noeuds observent le lent déplacement
spatial de l’onde stationnaire que constitue le battement et s’en servent de réfé-
rence pour estimer position et vitesse, exactement comme une souris d’ordina-
teur observe le déplacement de son tapis pour estimer sa propre position. Nous
avons expérimenté et validé le procédé avec des modules radios 2.4GHz. Durant
ces expérimentations, nous avons constaté plusieurs limitations des usages in-
duites par l’utilisation d’ondes aussi courtes, ce qui pour la suite nous encourage
à refaire de nouveaux tests sur des plages de fréquences plus basses.
Enfin, une fois les méthodes à notre disposition pour construire de grands
réseaux de microcontrôleurs, nous avons ouvert sur les possibilités d’interface
entre nos réseaux maillés distribués, et le monde centralisé. Nous avons ainsi
étudié le problème du partitionnement équilibré en zones connexes, problème
dont la résolution permet d’équilibrer la bande passante vers plusieurs points
d’entrés diffusant de l’information provenant d’un serveur central. Nous avons
prouvé par construction la NP-difficulté de trouver une solution dans le cas gé-
néral, puis nous avons proposé deux familles de topologies de grilles carrés in-
tuitives pour lesquelles une partition équilibrée se calcule en temps polynomial.
La première famille introduit une notion de q-connexité spécifique aux grille car-
rées, tandis que la seconde famille garantit la présence d’un cycle Hamiltonien.
Les algorithmes que nous avons proposés dans ce document ne permettent pas
de construire des partitions autour de points d’entrée donnés comme paramètres.
Cependant nous conjecturons dans ce document qu’il est possible de modifier nos
algorithmes pour tenir compte d’une liste de points d’entrée et nous donnons des

198
7 Conclusion et perspectives

pistes à suivre.
Ce dernier paragraphe clôt cet ouvrage. Nous espérons, à défaut d’introduire
des méthodes aux caractéristiques théoriques révolutionnaires, avoir proposé des
solutions utiles aux réalisations concrètes de futurs projets inter-connectant des
milliers de microcontrôleurs.

199
Bibliographie générale
[ASH14] ASHWireless. Choosing between a standard and proprietary wireless
protocol. Rapp. tech. ASHWireless, 2014 (cf. p. 58).
[Bae+18] Mathias Baert, Jen Rossey, Adnan Shahid et al. « The Bluetooth
mesh standard : An overview and experimental evaluation ». In : Sensors
18.8 (2018), p. 2409 (cf. p. 59).
[Bec+98] Ronald Becker, Isabella Lari, Mario Lucertini et al. « Max-min
partitioning of grid graphs into connected components ». In : Networks :
An International Journal 32.2 (1998), p. 115-125 (cf. p. 166).
[CSW07] Frédéric Chataigner, Liliane RB Salgado et Yoshiko Wakabayashi.
« Approximation and inapproximability results on balanced connected
partitions of graphs ». In : (2007) (cf. p. 166).
[Chl96] Janka Chlebikova. « Approximating the maximally balanced connec-
ted partition problem in graphs ». In : Information Processing Letters
60.5 (1996), p. 225-230 (cf. p. 166).
[Chu79] David C Chu. Double vernier time interval measurement using triggered
phase-locked oscillators. US Patent 4,164,648. Août 1979 (cf. p. 105).
[Cil+19] Antonio Cilfone, Luca Davoli, Laura Belli et al. « Wireless mesh
networking : An IoT-oriented perspective survey on relevant technolo-
gies ». In : Future Internet 11.4 (2019), p. 99 (cf. p. 58).
[Cur79] Walter R Curtice. Time interval measurement. US Patent 4,165,459.
Août 1979 (cf. p. 105).
[Cyp19] Cypress. CY8C52LP Family Datasheet, 001-84933. Rapp. tech. Cy-
press, 2019 (cf. p. 139).
[DD20] Francescopaolo Mattioli Della Rocca et Neale Dutton. Method and
apparatus for measuring time of flight. US Patent 10,598,787. Mar. 2020
(cf. p. 106).
[DSH00] Piotr Dudek, Stanislaw Szczepanski et John V Hatfield. « A high-
resolution CMOS time-to-digital converter utilizing a Vernier delay
line ». In : IEEE Journal of Solid-State Circuits 35.2 (2000), p. 240-247
(cf. p. 106).
[DF85] Martin E Dyer et Alan M Frieze. « On the complexity of partitioning
graphs into connected subgraphs ». In : Discrete Applied Mathematics
10.2 (1985), p. 139-153 (cf. p. 166).

200
Bibliographie générale

[Eps14] Epson-Device. Comparison of Crystal Oscillator and Si-MEMS Os-


cillators. Rapp. tech. Epson, 2014 (cf. p. 17).
[FAG95] David D Falconer, Fumiyuki Adachi et Bjorn Gudmundson. « Time
division multiple access methods for wireless personal communications ».
In : IEEE Communications Magazine 33.1 (1995), p. 50-57 (cf. p. 57).
[FL06] Rui Fan et Nancy Lynch. « Gradient clock synchronization ». In :
Distributed Computing 18.4 (2006), p. 255-266 (cf. p. 30).
[Fel12] Andreas E Feldmann. « Balanced partitioning of grids and related
graphs ». In : Diss., Eidgenössische Technische Hochschule ETH Zürich
20371 (2012), p. 2012 (cf. p. 166).
[Fel13] Andreas Emil Feldmann. « Fast balanced partitioning is hard even on
grids and trees ». In : Theoretical Computer Science 485 (2013), p. 61-68
(cf. p. 166).
[Gri06] Dag Grini. « RF basics, RF for non-RF engineers ». In : MSP430
Advanced Technical Conference. 2006 (cf. p. 56).
[Hal27] Philip Hall. « The distribution of means for samples of size n drawn
from a population in which the variate takes values between 0 and 1, all
such values being equally probable ». In : Biometrika (1927), p. 240-245
(cf. p. 32).
[HGT17] Rodrigo Teles Hermeto, Antoine Gallais et Fabrice Theoleyre.
« Scheduling for IEEE802. 15.4-TSCH and slow channel hopping MAC
in low power industrial wireless networks : A survey ». In : Computer
Communications 114 (2017), p. 84-105 (cf. p. 59).
[Isl+07] Kamrul Islam, Henk Meijer, Yurai Nunez Rodriguez et al. « Ha-
milton Circuits in Hexagonal Grid Graphs. » In : CCCG. 2007, p. 85-88
(cf. p. 164, 169).
[Jam15] Danielle Griffith James Murdock. CrystalOscillator and CrystalSelec-
tion for the CC26xx and CC13xx Family of Wireless MCUs. Rapp. tech.
Texas Instruments, 2015 (cf. p. 20-22, 81).
[Kar72] Richard M Karp. « Reducibility among combinatorial problems ». In :
Complexity of computer computations. Springer, 1972, p. 85-103 (cf.
p. 168).
[Lam19] Leslie Lamport. « Time, clocks, and the ordering of events in a distri-
buted system ». In : Concurrency : the Works of Leslie Lamport. 2019,
p. 179-196 (cf. p. 30).
[LLW08] Christoph Lenzen, Thomas Locher et Roger Wattenhofer. « Clock
synchronization with bounded global and local skew ». In : 2008 49th
Annual IEEE Symposium on Foundations of Computer Science. IEEE.
2008, p. 509-518 (cf. p. 30).

201
Bibliographie générale

[LLW10] Christoph Lenzen, Thomas Locher et Roger Wattenhofer. « Tight


bounds for clock synchronization ». In : Journal of the ACM (JACM)
57.2 (2010), p. 1-42 (cf. p. 30).
[LSW09] Christoph Lenzen, Philipp Sommer et Roger Wattenhofer. « Opti-
mal clock synchronization in networks ». In : Proceedings of the 7th ACM
Conference on Embedded Networked Sensor Systems. 2009, p. 225-238
(cf. p. 30, 32).
[Lin15] Linear-Technology. SmartMesh WirelessHART User’s Guide. Rapp.
tech. Linear Technology, 2015 (cf. p. 52).
[Lov77] László Lovasz. « A homology theory for spanning trees of a graph ».
In : Acta Mathematica Hungarica 30.3-4 (1977), p. 241-251 (cf. p. 166).
[Lyn96] Nancy A Lynch. Distributed algorithms. Elsevier, 1996 (cf. p. 30).
[MM94] Jun Ma et Shaohan Ma. « An O(k 2 n2 ) algorithm to find ak-partition in
ak-connected graph ». In : Journal of Computer Science and Technology
9.1 (1994), p. 86-91 (cf. p. 166).
[Mel20] Pascal Mellot. Method for measuring a time of flight. US Patent
10,551,486. Fév. 2020 (cf. p. 106).
[STM19] ST-Microelectronics. Datasheet DS12556 STM32H750VB STM32H750IB
STM32H750XB. Rapp. tech. ST Microelectronics, 2019 (cf. p. 103).
[Mil91] David L Mills. « Internet time synchronization : the network time
protocol ». In : IEEE Transactions on communications 39.10 (1991),
p. 1482-1493 (cf. p. 30).
[MDS20] Mohamed Mohamadi, Badis Djamaa et Mustapha Reda Senouci.
« Industrial internet of things over IEEE 802.15. 4 TSCH networks :
design and challenges ». In : International Journal of Internet Technology
and Secured Transactions 10.1-2 (2020), p. 61-80 (cf. p. 59).
[MD04] Srinivasan Murali et Giovanni De Micheli. « Bandwidth-constrained
mapping of cores onto NoC architectures ». In : Proceedings Design,
Automation and Test in Europe Conference and Exhibition. T. 2. IEEE.
2004, p. 896-901 (cf. p. 164).
[NMC10] Pasquale Napolitano, Antonio Moschitta et Paolo Carbone. « A
survey on time interval measurement techniques and testing methods ».
In : 2010 IEEE Instrumentation & Measurement Technology Conference
Proceedings. IEEE. 2010, p. 181-186 (cf. p. 103).
[Nes17] Nesscap-Ultracapacitors. BCAP0003 P270 S01 (2.7V 3F) Data-
sheet 3001957. Rapp. tech. Maxwell Technologies, 2017 (cf. p. 96).

202
Bibliographie générale

[NC14] Peter Niebert et Mathieu Caralp. « Cellular Programming ». In :


Theory and Practice of Natural Computing. Sous la dir. d’Adrian-Horia
Dediu, Manuel Lozano et Carlos Martín-Vide. Cham : Springer
International Publishing, 2014, p. 11-22. isbn : 978-3-319-13749-0 (cf.
p. 26).
[Nor17] Nordic-Semiconductor. nRF52832 Product Specification v1.4. Rapp.
tech. Nordic Semiconductor, 2017 (cf. p. 15, 77, 79, 81, 145).
[Pan18] Panasonic. Amorphous Silicon Solar Cells Amorphous Photosensors
General Catalog of Specifications for Lighting Levels lndoors and Out-
doors. Rapp. tech. Panasonic, 2018 (cf. p. 96).
[Por73] Dan I Porat. « Review of sub-nanosecond time-interval measure-
ments ». In : IEEE Transactions on Nuclear Science 20.5 (1973), p. 36-51
(cf. p. 103).
[Puc05] Miller Puckette. « Theory and Techniques of Electronic Music ». In :
(2005) (cf. p. 85).
[RN10] Prakash Ranganathan et Kendall Nygard. « Time synchronization
in wireless sensor networks : a survey ». In : International journal of
ubicomp 1.2 (2010), p. 92-102 (cf. p. 30).
[Sil18] Silicon-Labs. Selecting the appropriate wireless mesh network techno-
logy. Rapp. tech. Silicon Labs, 2018 (cf. p. 52).
[SH15] Amulya Ratna Swain et RC Hansdah. « A model for the classification
and survey of clock synchronization protocols in WSNs ». In : Ad Hoc
Networks 27 (2015), p. 219-241 (cf. p. 30).
[Tex04] Texas-Instruments. THS4304 Wideband Operational Amplifier Da-
tasheet. Rapp. tech. Texas Instruments, 2004 (cf. p. 139, 141).
[Tex19] Texas-Instruments. SWAT016, Wireless Connectivity Technology
Selection Guide. Rapp. tech. Texas Instruments, 2019 (cf. p. 52).
[Wu10] Bang Ye Wu. « A 7/6-approximation algorithm for the max-min connec-
ted bipartition problem on grid graphs ». In : International Conference
on Computational Geometry, Graphs and Applications. Springer. 2010,
p. 188-194 (cf. p. 166).

203
Bibliographie personnelle
[BNP18] Cédric Bérenger, Peter Niebert et Kévin Perrot. « Balanced
Connected Partitioning of Unweighted Grid Graphs ». In : 43rd Inter-
national Symposium on Mathematical Foundations of Computer Science
(MFCS 2018). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. 2018
(cf. p. 163).
[NB18] Peter Niebert et Cédric Bérenger. Déclaration d’invention auprès
de la SATT Sud-Est : mesure précise de délais exploitant le déphasage
entre deux microcontrôleurs. 2018 (cf. p. 99).
[NB19] Peter Niebert et Cédric Bérenger. Déclaration d’invention auprès de
la SATT Sud-Est : localisation exploitant l’onde stationnaire résultant
d’une interférence volontaire entre deux émetteurs 2.4GHz. 2019 (cf.
p. 152).

204

Vous aimerez peut-être aussi