Brevet FR2952255A1 — publié le 20110506

Procédé et dispositif pour répartir, au sein d'un réseau maillé, la génération d'un mot de code, produit programme d'ordinateur et moyen de stockage correspondants 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui des codes correcteurs (ou FEC, pour « Forward Error Correction » en anglais). Plus précisément, l'invention concerne une technique pour répartir, parmi plusieurs noeuds d'un réseau de communication maillé, la génération d'un mot de code (d'un code correcteur d'erreurs) comprenant N symboles codés. On suppose dans la suite de la description que le réseau comprend un noeud source, une pluralité de noeud relais et un noeud destination. Le noeud source envoie K symboles source destinés au noeud destination. 2. ARRIÈRE-PLAN TECHNOLOGIQUE On considère à titre d'exemple un réseau de communication sans fil maillé. Le noeud source envoie au noeud destination des messages comprenant chacun une séquence de symboles. Les noeuds relais sont utilisés pour retransmettre les messages envoyés par le noeud source au noeud destination, en offrant une diversité spatiale permettant de faire face à des erreurs de transmissions altérant la communication dans le réseau. Deux types d'erreurs sont envisageables dans un tel réseau : • un premier type correspond aux erreurs dues à des masquages causés par un ou plusieurs obstacles, par exemple un individu traversant le champ de transmission. Ces erreurs sont détectables par le noeud destination en analysant par exemple le niveau de signal radio reçu (RSSI, en anglais « Received Signal Strength Indication ») ou le rapport signal sur bruit (SNR, en anglais « Signal-to- Noise Ratio ») ; • un deuxième type correspond à des erreurs aléatoires dues à la transmission radio même, provoquant des altérations aléatoires des symboles transmis à des positions inconnues. Pour faire face aux erreurs dues à des masquages, une première technique connue consiste à réaliser des transmissions multiples du même message original à travers des chemins différents par l'intermédiaire des noeuds relais. L'utilisation des noeuds relais permet de créer une diversité spatiale, la probabilité d'avoir un obstacle sur tous les chemins est ainsi fortement réduite. Dans le cas de transmissions multiples, le noeud destination reçoit plusieurs versions du même message original (on parle ainsi de « copies »), qui sont potentiellement entachées d'erreurs différentes dues à la transmission radio. A partir des ces différentes copies, le noeud destination doit récupérer le message original, sans erreurs. Pour cela, une solution est alors d'utiliser un code de répétition. Malheureusement, le code de répétition a des performances très limitées (en terme de rendement et de pouvoir de correction) par rapport aux autres codes correcteurs classiques, tels que par exemple les codes BCH (Bose-Chaudhuri-Hocquenghem) ou Reed-S alomon. Une deuxième technique connue, dite de « code correcteur de réseau », consiste à coder le message original (comprenant K symboles source) en générant des informations de redondance de façon distribuée parmi les noeuds relais, et transmettre en plusieurs parties le message codé (c'est-à-dire le mot de code résultant du codage du message original) par différents chemins (chaque partie étant générée par un noeud relais différent et empruntant un chemin différent), au lieu d'effectuer des transmissions multiples du même message. Le principal avantage de cette deuxième technique connue est que nous avons maintenant la capacité de construire n'importe quels codes correcteurs en blocs linéaires tels que le code Reed-Salomon ou le code BCH, codes correcteurs très puissants, relativement aux codes à répétition. Le concept pour les noeuds relais d'émettre un paquet résultant qui est une combinaison linéaire des paquets reçus en entrée au lieu de retransmettre un des paquets qu'ils ont reçus en entrée (fonction de routage) est appelé codage réseau (en anglais « network coding »). Il a été introduit par R. Ahlswede and co. (voir par exemple l'article suivant : R. Ahlswede, N. Cai, S-Y. R. Li, and R. W. Yeung, "Network information flow", IEEE Trans. Inform. Theory, Vol. 46, pp. 1204-1216, July 2000). Très rapidement, de nombreux articles ont démontré l'apport de ce nouveau concept, notamment en termes de gain en bande passante et en terme d'utilisation de la capacité de réseau. Inspiré du codage réseau, le concept de « code correcteur de réseau » (« network error correction » en anglais), aussi appelé « code correcteur distribué », a été introduit dans l'article suivant : N. Cai and R. W. Yeung, "Network Coding and error Correction," IEEE Information Theory Workshop, Bangalore, India, Oct 20-25, 2002. Cet article montre que les codes correcteurs appliqués à un réseau peuvent être vus comme une extension des codes correcteurs classiques point à point. Les résultats classiques de la théorie de l'information ont alors été généralisés. Utilisons la notation classique des codes correcteur en blocs point à point (N,K), où K représente le nombre de symboles source à coder et N le nombre de symboles codés par le code correcteur. Chaque mot de code du code correcteur d'erreurs comprend N symboles. Dans un codage distribué, les N symboles d'un mot de code ne sont pas générés par un unique noeud mais sont générés de manière distribuée, par un ensemble de noeuds relais. Chaque noeud relais de cet ensemble ne génère qu'une partie des symboles du mot de code, chaque symbole étant généré en combinant les K symboles sources. Chaque noeud relais transmet, dans un ou plusieurs messages destinés au noeud destination, le ou les symboles (du mot de code) qu'il a générés. Le noeud destination reçoit alors la totalité ou une partie (s'il y a eu masquage) des symboles (formant le mot de code) qui ont été transmis par les noeuds relais. Les symboles reçus par le noeud destination (et formant le mot de code) sont plus ou moins entachés d'erreurs (dues à la transmission radio). Le noeud destination utilise son décodeur pour décoder le mot de code (c'est-à-dire récupérer les symboles non reçus et les symboles erronés) et donc obtenir une estimation des K symboles source (qui ont servi à coder le mot de code). Comme indiqué ci-dessus, la technique de code correcteur distribué fait face simultanément aux erreurs suivantes : • les erreurs dues à des masquages, grâce aux multiples transmissions effectuées par les noeuds relais ; et • les erreurs dues à la transmission radio, grâce au code correcteur (distribué, en l'espèce) qui permet au noeud destination de corriger les erreurs radio. Le document de brevet US 7,380,193 décrit l'utilisation d'un code correcteur distribué dans un réseau maillé, chaque noeud relais envoyant une partie du mot de code. Mais ce document n'aborde pas la question de l'optimisation de la répartition des redondances parmi les noeuds relais. Or, il s'agit d'un problème technique réel puisque le choix de cette répartition (de la génération d'un mot de code du code correcteur parmi des noeuds relais) va avoir une influence sur les performances du code correcteur distribué face aux obstacles. En effet, si des obstacles sont présents dans la zone de couverture du réseau, ils interrompent des transmissions entre le noeud source et certains noeuds relais et/ou entre certains noeuds relais et le noeud destination. Au final, le noeud destination ne reçoit pas certains symboles du mot de code, et est donc obligé de les marquer comme symboles effacés (ou « effacements », c'est-à-dire des symboles non reçus localisés). Réussir à limiter ce nombre d'effacements permet d'utiliser le code correcteur distribué au mieux de sa capacité de correction pour les erreurs dues à la transmission radio. En effet, la capacité de correction R d'un code correcteur est telle que si la condition « 2*n + p Dans une première mise en oeuvre avantageuse, l'étape a) comprend une étape consistant à : - obtenir, à partir d'au moins une partie des noeuds relais, une liste finale d'ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même ensemble en cas de vérification d'une condition de proximité ; et l'étape b) comprend des étapes consistant à : - répartir la génération d'au moins une partie des N symboles codés parmi les ensembles de la liste obtenue, selon une première fonction de distribution déterminée, de sorte qu'un nombre déterminé, supérieur ou égal à zéro, de symbole(s) codé(s) est alloué à chaque ensemble ; - pour chaque ensemble auquel un ou plusieurs symboles codés sont alloués, répartir la génération dudit ou desdits symboles codés alloué(s) parmi le ou les noeuds relais compris dans ledit ensemble, selon une deuxième fonction de distribution déterminée. Ainsi, dans cette première mise en oeuvre, la génération de symboles codés est répartie d'abord parmi des ensembles de noeud(s) relais, puis parmi le(s) noeud(s) de chaque ensemble. Avantageusement, l'étape consistant à obtenir la liste finale comprend des étapes consistant à : - obtenir, à partir d'au moins une partie des noeuds relais, une première liste de premiers ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même premier ensemble en cas de vérification d'une première condition de proximité, fonction d'une distance angulaire entre un angle de réception a(s,i) du noeud R; pour recevoir du noeud source et un angle de réception a(s,j) du noeud Ri pour recevoir du noeud source ; - obtenir, à partir d'au moins une partie des noeuds relais, une deuxième liste de deuxièmes ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même deuxième ensemble en cas de vérification d'une deuxième condition de proximité, fonction d'une distance angulaire entre un angle de réception a(d,i) du noeud destination pour recevoir du noeud R; et un angle de réception a(d,j) du noeud destination pour recevoir du noeud Ri ; - obtenir ladite liste finale, deux noeuds relais R; et Ri appartenant à un même ensemble de ladite liste finale s'ils appartiennent à un même premier ensemble de la première liste ou à un même deuxième ensemble de la deuxième liste. Ainsi, en s'appuyant sur les distances angulaires, l'étape d'obtention de la liste finale est simple à réaliser. Selon une caractéristique avantageuse, dans le cas où le noeud destination est connecté au noeud source et où la génération des K premiers symboles codés du mot de code est allouée au noeud source, l'étape b) comprend en outre des étapes consistant à : - obtenir une troisième liste telle qu'un ensemble de la liste finale est aussi compris dans la troisième liste en cas de vérification d'une troisième condition de proximité, fonction d'une distance angulaire entre un angle de réception a(d,sel_rel;) du noeud destination pour recevoir d'un noeud sel_rel; compris dans ledit ensemble et un angle de réception a(d,$) du noeud destination pour recevoir du noeud source ; - retirer la génération de Min(K,total_redund) symboles codés à le ou aux ensembles compris dans la troisième liste, avec total_redund le nombre total cumulé de symboles codés que doivent générer le ou les ensembles compris dans la troisième liste ; - répartir la génération desdits Min(K,total_redund) symboles codés parmi les ensembles de la liste finale non compris dans troisième liste, selon ladite première fonction de distribution déterminée. Ainsi, on optimise encore la répartition. On s'appuie dans ce cas sur le fait que si un obstacle interrompt une transmission entre le noeud source et le noeud destination, cet obstacle risque de masquer aussi les noeuds relais proches du noeud source vu par le noeud destination. Donc le noeud destination risque de ne pas recevoir les symboles du mot de code générés par le noeud source, ainsi que par les noeuds relais proches du noeud source vu par le noeud destination. Avantageusement, au moins une des première et deuxième fonctions de distribution est une fonction d'équi-distribution. Avantageusement, ledit procédé comprend des étapes consistant à : c) obtenir, à partir d'au moins une partie des noeuds relais, une quatrième liste de quatrièmes ensembles de noeuds relais, deux noeuds relais R; et Ri appartenant à un même quatrième ensemble si, pour au moins un mot de code préalablement reçu par le noeud destination, le noeud destination a marqué comme effacements au moins un symbole codé que devait fournir le noeud R; et au moins un symbole codé que devait fournir le noeud Ri ; d) mettre à jour la liste finale, en fonction de la quatrième liste ; e) répartir la génération de ladite au moins une partie des N symboles codés parmi les ensembles de la liste finale mise à jour, selon ladite première fonction de distribution déterminée ; f) pour chaque ensemble de la liste finale mise à jour auquel un ou plusieurs symboles codés sont alloués, répartir la génération dudit ou desdits symboles codés alloués parmi le ou les noeuds relais compris dans ledit ensemble, selon ladite deuxième fonction de distribution déterminée. De cette façon, on peut modifier de manière dynamique, pendant le fonctionnement du réseau, la répartition de la génération du mot de code parmi les noeuds. Ceci permet notamment de prendre en compte les mouvements des obstacles, et donc le fait que les transmissions cassées ne sont pas les mêmes au cours du temps. En effet, il est dommage que deux noeuds relais restent dans un même ensemble (c'est-à-dire continuent à être considérés proches, et donc à se partager des symboles du mot de code à générer) si en pratique aucun obstacle n'affecte ces deux noeuds en même temps. La mise à jour de la liste finale permet donc de mieux répartir le mot de code et donc à la nouvelle répartition d'être plus performante (limitation du nombre maximal d'effacements générés par un obstacle). Avantageusement, l'étape d) comprend au moins une des étapes consistant à : - unifier deux ensembles de la liste finale pour obtenir un ensemble résultant identique à un quatrième ensemble compris dans la quatrième liste, si une condition d'unification est vérifiée ; - éclater un ensemble donné de la liste finale pour obtenir au moins deux ensembles résultants, comprenant chacun au moins un noeud relais dudit ensemble donné, si une condition d'éclatement est vérifiée. Ainsi, la mise à jour de la liste finale est facile à réaliser. De manière avantageuse, l'étape d'unification est effectuée si ledit quatrième ensemble est associé à nombre d'occurrences supérieur à un premier seuil déterminé, ledit nombre d'occurrences étant le nombre de mots de code préalablement reçus par le noeud destination et pour chacun desquels la condition suivante a été vérifiée pour deux noeuds relais R; et Ri appartenant audit quatrième ensemble : le noeud destination a marqué comme effacements au moins un symbole codé que devait fournir le noeud R; et au moins un symbole codé que devait fournir le noeud R~. De manière avantageuse, l'étape d'éclatement est effectuée si ledit ensemble donné est associé à une valeur de stabilité supérieure à un deuxième seuil déterminé, ladite valeur de stabilité représentant la non fluctuation dans le temps dudit ensemble donné. Dans une deuxième mise en oeuvre avantageuse, l'étape a) comprend des étapes consistant à : - trier les noeuds relais dans une séquence, selon leur position par rapport au noeud source ou au noeud destination ; - pour au moins un couple de noeuds relais r(i) et r(i+1) consécutifs au sein de ladite séquence, obtenir une valeur d'une fonction de proximité F ; et l'étape b) comprend des étapes consistant à, pour ledit au moins un couple de noeuds relais i(i) et i(i+1) consécutifs au sein de ladite séquence : - déterminer une quantité de symboles codés à générer par ledit couple de noeuds relais, en fonction d'une valeur d'une fonction de calcul de quantité, basée sur la valeur, obtenue pour ledit couple de noeuds relais, de la fonction de proximité F ; - répartir la génération de la quantité de symboles codés à générer déterminée pour ledit couple de noeuds relais, parmi les noeuds relais dudit couple, selon une fonction de distribution déterminée. Ainsi, dans cette deuxième mise en oeuvre, la génération de symboles codés est répartie d'abord parmi des couples de noeuds relais, puis parmi les noeuds de chaque couple. Avantageusement, l'étape consistant à obtenir une valeur de la fonction de proximité F, pour ledit au moins un couple de noeuds relais r(i) et r(i+1) consécutifs, comprend des étapes consistant à : - obtenir une valeur d'une fonction de proximité F1, basée sur une distance angulaire entre un angle de réception a(s,r(i)) du noeud r(i) pour recevoir du noeud source et un angle de réception a(s,r(i+1)) du noeud r(i+1) pour recevoir du noeud source ; - obtenir une valeur d'une fonction de proximité F2, basée sur une distance angulaire entre un angle de réception a(d,r(i)) du noeud destination pour recevoir du noeud i(i) et un angle de réception a(d,r(i+1)) du noeud destination pour recevoir du noeud i(i+1) ; - obtenir une valeur de la fonction de proximité F, en combinant les valeurs, obtenues pour ledit couple de noeuds relais, des fonctions de proximité F1 et F2. Ainsi, en s'appuyant sur les distances angulaires, l'étape d'obtention d'une valeur de la fonction de proximité F est simple à réaliser. Selon une caractéristique avantageuse, l'étape consistant à trier les noeuds relais dans une séquence utilise : - une première relation d'ordre telle que, pour deux noeuds relais R; et on a : R; Dans un autre mode de réalisation, l'invention concerne un produit programme d'ordinateur qui comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur. Dans un autre mode de réalisation, l'invention concerne un moyen de stockage lisible par ordinateur, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé précité (dans l'un quelconque de ses différents modes de réalisation). Dans un autre mode de réalisation, l'invention concerne un dispositif pour répartir, parmi plusieurs noeuds d'un réseau maillé, la génération d'un mot de code, d'un code correcteur d'erreurs, comprenant N symboles codés, le réseau comprenant un noeud source, une pluralité de noeud relais et un noeud destination, le noeud source envoyant K symboles source destinés au noeud destination. Ledit dispositif comprend : - des moyens d'obtenir au moins une information de proximité appartenant au groupe comprenant, pour au moins un couple de noeuds relais : * une première information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions du noeud source vers les deux noeuds relais dudit couple de noeuds relais ; * une deuxième information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions des deux noeuds relais dudit couple de noeuds relais vers le noeud destination ; - des moyens de répartir la génération d'au moins une partie des N symboles codés du mot de code parmi les noeuds relais, en prenant en compte ladite au moins une information de proximité obtenue. 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : - la figure 1 présente un exemple de réseau maillé sans fil dans lequel peut être mis en oeuvre le procédé selon l'invention ; 20 - la figure 2 présente un schéma bloc fonctionnel d'un mode de réalisation particulier de chacun des noeuds (noeud source, noeuds relais et noeud destination) apparaissant sur la figure 1 ; - la figure 3 présente un organigramme d'un mode de réalisation particulier du procédé selon l'invention, permettant de répartir, au sein d'un réseau maillé, la 25 génération d'un mot de code d'un code correcteur linéaire ; - la figure 4 décrit un exemple de structure d'une trame de contrôle indiquant les nouveaux paramètres du codage aux noeuds du réseau ; - la figure 5 présente un organigramme d'un premier mode de réalisation particulier des étapes 330 et 335 de la figure 3 (répartition de la génération du 30 mot de code parmi des noeuds) ; 10 15 - la figure 6 présente un organigramme d'un deuxième mode de réalisation particulier des étapes 330 et 335 de la figure 3 ; - la figure 7 décrit un mode de réalisation particulier d'un algorithme exécuté par un noeud à la réception d'une trame de contrôle ; - la figure 8 décrit un mode de réalisation particulier d'un algorithme exécuté par un noeud relais à la réception de données utiles provenant du noeud source ; - la figure 9 décrit un mode de réalisation particulier d'un algorithme exécuté par le noeud destination ; - la figure l0a décrit un mode de réalisation particulier d'un algorithme de remise à jour de la répartition de la génération du mot de code, durant la vie du système ; - la figure 10b présente un organigramme d'un mode de réalisation particulier de l'étape 1015 de la figure l0a (mise à jour de la liste L) ; - la figure 11 présente les résultats de chaque étape de la figure 5 appliquée au réseau de la figure 1. 6. DESCRIPTION DÉTAILLÉE La figure 1 présente un exemple de réseau maillé sans fil dans lequel peut être mis en oeuvre le procédé selon l'invention de répartition, parmi une pluralité de noeuds du réseau, de la génération d'un mot de code d'un code correcteur d'erreur. Dans cet exemple, le réseau maillé sans fil est basé sur un canal RF à 60GHz. Il est composé d'un noeud source 100 (aussi noté SRC), de six noeuds relais 105, 110, 115, 120, 125 et 130 (aussi notés RI à R6) et d'un noeud destination 150 (aussi noté DEST). Le protocole d'accès au medium est un protocole d'accès multiple à répartition dans le temps, dit TDMA (pour « Time Division Multiplexing Access » en anglais), où durant une période fixe, appelée supertrame, chaque noeud du réseau a un accès unique au médium durant un intervalle de temps fixe (« slot » en anglais), aussi appelé « temps de parole ». Suivant cette technique, chaque noeud est émetteur durant un intervalle de temps précis et récepteur durant tous les autres intervalles de temps. Dans un mode de réalisation particulier de l'invention, les séquences d'information envoyées dans le réseau sont dans un contenant appelé paquet, qui a une taille fixe. s bits consécutifs d'un paquet constituent un symbole sur le corps Fq avec q=2s. Par exemple, un paquet de 1400 octets contient 1400 symboles si la taille du corps est 28 ou contient 700 symboles si la taille du corps est 216. A titre d'exemple, la taille du corps choisi pour la suite de la description est 28, un symbole étant donc un octet. Les opérations d'addition, de multiplication et de division s'effectuent alors symbole par symbole dans GF(28). Dans la suite du document, pour simplifier l'explication, un paquet est constitué d'un symbole. Pour généraliser à un paquet de s symboles, il suffit d'appliquer les opérations décrites par la suite sur chacun des symboles des paquets ce qui revient à considérer ces opérations comme des opérations sur des vecteurs issus de l'espace linéaire Fqs. Illustrons par un exemple. Supposons qu'un noeud relais doive générer le quatrième symbole r4 d'un mot de code à partir de trois symboles sources, s1, s2 et s3. On a donc : 3 r4 = G4jsj 3=1 avec G=(Glu) la matrice génératrice du code. Supposons maintenant que la source génère trois paquets sources S1, S2 et S3 constitués de s symboles et que le noeud relais doit générer un paquet de redondance R4 de s symboles basé sur la quatrième ligne de la matrice génératrice. Par abus de langage, le noeud relais effectue alors la même opération au niveau paquet : 3 R4 = G4j Si 3=1 opération qui consiste en réalité à effectuer les opérations sur tous les symboles des paquets : 3 R4(i)= G4jSj(i) j =1 pour i allant de 1 à s où R4(i) représente le ième symbole du paquet R4 et Si(i) représente le ème symbole du paquet Si. A noter que les opérations d'addition et de multiplication utilisées dans les formules ci-dessus sont des opérations effectuées dans le corps de Galois P. Le noeud source 100 envoie ainsi au réseau K paquets sources, K étant égal à 3 dans notre exemple. Les noeuds relais 105, 110, 115, 120, 125 et 130, reçoivent ces paquets avec un certaine qualité dépendant notamment de la puissance radio reçue, celle-ci étant corrélée entre autres à la puissance émise, aux gains d'antenne de transmission et de réception, à l'orientation des antennes, à la distance entre les noeuds émetteur/récepteur, à la présence d'obstacle et aussi à la réflexion des ondes radios dans l'environnement. Les noeuds relais ont la capacité de combiner les paquets comme décrit ci-dessus afin de créer un code correcteur distribué. Les caractéristiques de ce code sont décrites ci-après en relation avec la figure 3. Puis les noeuds relais transmettent les paquets codés au noeud destination 150. Le noeud destination 150 reçoit ainsi les paquets du noeud source 100 et les paquets codés provenant des noeuds relais avec une certaine qualité et applique alors un décodage (symbole par symbole comme l'encodage). De plus, dans l'exemple de la figure 1, on suppose que trois obstacles 160,165 et 170 sont présents dans la zone de couverture du réseau maillé. Ces obstacles provoquent la non réception de paquets (donc de symboles). Notamment dans un système radio basé sur un canal RF à 60GHz, un obstacle coupant une transmission est très facilement détectable en mesurant la qualité de la réception et le noeud récepteur jette alors le paquet (d'où la non réception). D'un point de vue des codes correcteurs, un symbole non reçu est considéré comme un effacement, c'est-à-dire une erreur localisée. Un des noeuds du réseau est sélectionné pour être en charge de la construction du code correcteur d'erreur distribué. Ce noeud, appelé noeud central, exécute l'algorithme décrit ci-après en relation avec la figure 3. Dans un mode de réalisation particulier, le noeud choisi est le noeud destination 150. La figure 2 présente un schéma bloc fonctionnel d'un mode de réalisation particulier de chacun des noeuds du réseau maillé de la figure 1 (noeud source 100, noeuds relais 105, 110, 115, 120, 125 et 130, et noeud destination 150). En d'autres termes, la figure 2 présente un noeud générique. Ce noeud générique comprend un module applicatif 230, un module de communication 200 et un module émetteur-récepteur RF 240. Il implémente les différents algorithmes du mode de réalisation particulier de l'invention (présentés en détail par la suite avec les figures 3, 5, 6, 7, 8, 9, l0a et 10b) indifféremment comme un programme exécuté sur une machine de calcul reprogrammable (un PC, un DSP, ou un microcontrôleur) ou sur une machine de calcul dédiée (un ensemble de portes logiques comme un FPGA ou un ASIC). On présente maintenant plus en détail la structure et le fonctionnement du module de communication 200. Une unité centrale de calcul (CPU) 210 exécute le code programme implémentant les algorithmes précités. Un transmetteur de paquets radio 230 transmet les paquets en cours, stockés dans une mémoire RAM 220, au module Emetteur-Récepteur RF 240. Un récepteur de paquets radio 235 enregistre dans la mémoire RAM 220 les paquets reçus du module Emetteur-Récepteur RF 240. De plus, à chaque paquet reçu, il donne une information sur la qualité de la réception de celui-ci. Cette information est par exemple le niveau de signal radio reçu (RSSI) ou le rapport signal sur bruit (SNR). Une mémoire morte 225 stocke des variables nécessaires pour l'invention, comme par exemple une matrice génératrice d'encodage prédéterminée. Une interface homme/machine 215 est utilisée afin que l'utilisateur entre les paramètres d'entrée nécessaires à l'invention, non présents en mémoire, tels que la capacité de correction R du code distribué si la matrice génératrice n'est pas présente dans la mémoire morte 225 ou que l'utilisateur désire utiliser une autre que celle mémorisée dans la mémoire morte 225. Le module de communication 200 reçoit les données grâce à une antenne intelligente de réception directionnelle 250 et émet des données aux modules de communication des autres noeuds grâce à une antenne d'émission omnidirectionnelle 245. L'antenne intelligente de réception directionnelle 250 (aussi appelée antenne agile, ou « smart antenna » en anglais) est constituée d'un réseau d'éléments rayonnants répartis matriciellement sur un support. Ce type d'antenne permet la mise en oeuvre de la technique dite de « formation de faisceau » (ou « Beam Forming » en anglais). Selon cette technique, chaque élément rayonnant de l'antenne est contrôlé électroniquement en phase et puissance pour obtenir un faisceau d'émission et/ou de réception orientable et plus ou moins étroit. Ce type d'antenne permet par exemple d'atteindre les dix mètres requis par les applications audio/vidéo domestiques. L'orientation de l'antenne intelligente de réception directionnelle 250 est fixée par le module Emetteur-Récepteur RF 240 et est stockée dans la mémoire RAM 220. Le module de communication 200 est aussi en relation avec le module applicatif 230 de la manière suivante. Pour le noeud source 100, le module applicatif 230 fournit des données source au module de communication 200 afin que celui-ci gère leur transmission jusqu'au noeud destination 150. Pour le noeud destination 150, le module de communication 200 envoie les données reçues au module applicatif 230. Les diverses variables utilisées durant les algorithmes implémentant un mode de réalisation particulier de l'invention sont mémorisées en mémoire vive 220. Les moyens algorithmiques nécessaires sont détaillés dans les parties suivantes. La figure 3 présente un organigramme d'un mode de réalisation particulier du procédé selon l'invention, permettant de répartir, au sein d'un réseau maillé, la génération d'un mot de code d'un code correcteur linéaire. Il est réalisé principalement (excepté pour les étapes 300, 305 et 340 impliquant la participation de l'ensemble des noeuds du réseau) par un des noeuds du réseau (100, 105, 110, 115, 120, 125, 130 ou 150). Ce noeud est par la suite appelé noeud central. Dans un mode de réalisation préféré, le noeud central est le noeud destination 150. A l'étape 300, on exécute l'initialisation du système. Durant celle-ci, chaque noeud en émission émet successivement un signal de test radio pendant une durée prédéterminée. Pendant ce temps, les différents noeuds en réception effectuent un balayage d'antenne complet pour chaque noeud en émission. Lors de ce balayage d'antenne, chaque noeud en réception mesure le niveau du signal radio reçu (RSSI) pour chaque angle d'orientation de son antenne. A la fin du balayage d'antenne, chaque noeud en réception a construit et stocké une courbe représentant le niveau de signal reçu (RSSI) en fonction des différents angles d'orientation de son antenne pour le noeud émetteur courant. Chacun des noeuds en réception construit et stocke autant de courbes qu'il y a de noeuds en émission dans le réseau maillé. Plus précisément, en relation avec l'exemple de la figure 1, chacun des noeuds 100, 105, 110, 115, 120, 125, 130 et 150 accède au médium (l'un après l'autre) selon une séquence prédéterminée. Ainsi, les noeuds vont successivement émettre un signal de test sur le canal RF selon un ordonnancement défini par la séquence prédéterminée. Le signal de test comporte notamment le numéro d'identifiant du noeud émetteur courant. Par exemple, le noeud 100 est le premier dans la séquence prédéterminée. Il émet alors le signal de test sur le canal RF à 60GHz, pendant une durée prédéterminée qui est suffisante pour que chacun des noeuds en réception puisse effectuer un balayage d'antenne complet. Lors de ce balayage d'antenne, chaque noeud en réception mesure le niveau du signal radio reçu (RSSI) pour chaque angle d'orientation de son antenne 250. A la fin du balayage d'antenne, chaque noeud en réception a construit et stocké une courbe représentant le niveau de signal reçu (RSSI) en fonction des différents angles d'orientation de son antenne pour le noeud en émission. Les noeuds en réception stockent temporairement la courbe (niveau signal reçu (noeud) = f [angles d'antenne] ) respectivement dans leurs mémoires RAM 220. Ensuite, chacun des autres noeuds 105,110,115,120,125,130 et 150 émet tour à tour un signal test RF sur le réseau maillé selon la séquence prédéfinie afin que les différents noeuds en réception puissent construire et stocker dans leur mémoires RAM les différentes courbes (niveau signal reçu (noeud) = f [angles d'antenne]). Au final, chacun des noeuds en réception construit et stocke autant de courbes qu'il y a de noeuds en émission dans le réseau maillé. Chaque courbe f (niveau signal reçu = f [angles d'antenne]) est alors analysée et l'angle d'antenne qui maximise f est sélectionné. Cet angle est presque toujours l'angle d'orientation d'antenne principal, correspondant au chemin de vue directe, pour communiquer avec un noeud donné en émission, du fait que dans ce cas seule l'atténuation dans l'air affecte le niveau de signal reçu. Chaque noeud 100 à 130 et 150 poursuit la séquence d'initialisation en analysant les différentes courbes (niveau signal reçu (noeud) = f [angles d'antenne]) stockées respectivement dans la mémoire RAM 220. A l'issue de cette analyse, chaque noeud en réception enregistre dans sa table d'angles d'antenne tous les angles d'orientation d'antenne sélectionnés pour communiquer avec un noeud donné en émission, ainsi que la valeur du niveau signal reçu associé. Dans la suite du document, nous noterons aij l'angle sélectionné par le noeud Ri pour recevoir du noeud Rj. Notons Ai la table d'angles de réception du noeud Ri, stockant l'ensemble des angles sélectionnés par le noeud Ri pour chaque noeud Rj. On peut noter Ai={aij, j=1..Nb_nodes-1} pour i allant de 1 jusqu'à Nb_nodes avec Nb_nodes le nombre de noeuds dans le réseau (remarque : aii n'est pas stocké dans Ai). A l'étape 305, on exécute un protocole de diffusion d'informations par l'ensemble des noeuds du réseau, afin que le noeud central récupère l'ensemble des tables d'angles de réception Ai (avec les niveaux de signal reçu associés). Plusieurs techniques de diffusion sont connues de l'homme du métier pour diffuser des informations dans un réseau maillé (de type inondation de données dans un protocole maillé, en anglais « flooding protocol »). A la fin de cette étape 305, le noeud central stocke les tables d'angles de réception Ai et les niveaux de signal reçu associés dans sa mémoire RAM 220. A l'étape 310, on construit la topologie du réseau associé, c'est-à-dire on détermine l'ensemble des connections point à point entre deux noeuds. On considère qu'il existe une connexion point à point entre le noeud émetteur i et le noeud récepteur j si le niveau du signal reçu correspondant à l'angle aij est supérieur à un seuil radio prédéterminé S. Dans ce cas, on dit que les noeuds i et j sont connectés. A l'étape 315, on détermine parmi les noeuds relais du réseau, 105, 110, 115, 120, 125 et 130 ceux qui sont connectés à la fois au noeud source 100 et au noeud destination 150. Par la suite, ces noeuds relais sont appelés « noeud relais effectifs ». Cette opération est directe en analysant la topologie du réseau construite à l'étape 310. Notons M le nombre de relais effectifs. A l'étape 320, on construit une matrice génératrice G d'un code correcteur linéaire de longueur N et de dimension K, code noté (N,K), c'est-à-dire une matrice composée de N lignes et de K colonnes. Le code utilisé dans le mode de réalisation particulier est le code Reed-Solomon, code basé sur les corps de Galois. La taille du corps de Galois choisie est 28 et donc la taille du symbole est de 8 bits (1 octet). Les symboles générés à partir des symboles sources forment un mot de code Reed-Solomon. De plus, le codage choisi est le codage systématique, les K premier symboles du mot de code sont les symboles sources, les (N-K) autres sont appelés les symboles de redondances. Ces symboles de redondances sont générés à partir des (N-K) dernières lignes de G. La capacité de correction, est soit stockée dans mémoire 225, soit fournie par l'utilisateur grâce au module d'interface homme/machine 215. Elle est notée R et signifie d'un point de vue des codes correcteurs, que si la condition « 2*n + p Dans le cadre du code distribué, la génération d'un mot de code est effectuée non pas à la source (par le noeud source 100) mais est distribuée parmi un ensemble de noeud relais. L'étape suivante de l'algorithme est donc de déterminer cette répartition. Pour cela, à l'étape 325, on vérifie si le noeud destination est connecté au noeud source. Si oui, étape 330, sinon étape 335. Il est à noter qu'il existe une alternative à l'étape 320 consistant à stocker une matrice G dès la fabrication du système dans la mémoire RAM/ROM 225. Les paramètres N et K sont alors fixés une fois pour toute et ne sont pas modifiables par l'utilisateur. Dans ce cas, la trame de contrôle 400 (voir figure 4) utilisée pour envoyer les paramètres du code est plus petite (le champ 410 est alors inutile) et de ce fait nécessite moins de traitement au niveau du relais (étapes 705-710 de la figure 7 non nécessaires). A l'étape 330, on alloue la génération des K premiers symboles du mot de code au noeud source, et on répartit la génération des N-K symboles de redondance parmi les noeuds relais effectifs. A l'étape 335, on répartit la génération des N symboles du mot de code parmi les noeuds relais effectifs. Les deux étapes 330 et 335 diffèrent donc seulement sur le fait que la génération des K premiers symboles est fixée pour l'étape 330 et pas pour l'étape 335. De ce fait, les deux étapes 330 et 335 appellent le même algorithme de répartition, avec juste une quantité de symboles du mot de code différente à répartir : N-K pour l'étape 330 et N pour l'étape 335. Deux implémentations sont possibles pour cet algorithme de répartition, exécuté par exemple au démarrage du système et/ou sur requête de l'utilisateur : • soit la répartition est optimisée et se fonde sur les tables d'angles récupérées à l'étape 310, afin de déterminer une répartition pertinente qui permet de faire face de manière optimale aux ruptures de transmission provoquées par les obstacles. Dans ce cas, deux alternatives sont proposées pour déterminer cette répartition optimisée, la première étant décrite dans la figure 5, l'autre dans la figure 6 ; • soit la répartition est basique, comme par exemple une équi-répartition du nombre de symboles du mot de code à générer parmi les noeuds relais effectifs. Il est à noter, surtout dans le cadre de la deuxième option basée sur une répartition basique, que d'autres mécanismes sont implémentés dans un mode de réalisation particulier de l'invention, afin de remettre en cause cette répartition initiale. Puis, après les étapes 330 et 335, l'étape 340 permet de diffuser, à l'ensemble des noeuds du réseau, des informations indiquant qui sont les noeuds relais effectifs sélectionnés et pour ceux-ci quels sont les symboles du mot de code à générer. Pour cela, le noeud centralisé envoie une trame de contrôle (définie ci-après en relation avec la figure 4) suivant un protocole de diffusion (par exemple de type inondation de données dans un protocole maillé (« flooding protocol » en anglais)). Illustrons par un exemple en reprenant le schéma de la figure 1 et supposons qu'une matrice génératrice systématique d'un code Reed-Solomon G=(Glu) de dimension (12,3) est mémorisée dans la mémoire 225. A chaque envoi par le noeud source de trois symboles source, le code distribué génère un mot de code Reed-Solomon de taille 12 symboles. Représentons ce mot de code par la notation suivante : (S1,S2,S3,r1,r2,r3,r4,r5,r6,r7,r8,r9) avec sl,s2,s3 les symboles sources (du fait que le code est systématique) et r1,r2,r3,r4,r5,r6,r7,r8,r9 les symboles de redondances. Un symbole de redondance r; est calculé de la manière suivante : 3 = G(+3), s, 3=1 Supposons que les noeuds relais 105, 110, 115, 120, 125 et 130 soient effectifs. Chacun reçoit donc les trois symboles sources et est capable de générer des redondances qui seront reçues par le noeud destination. La question est de savoir quels symboles du mot de code (s1,s2,s3,r1,r2,r3,r4,r5,r6,r7,r8,r9) doivent-il générer et transmettre au noeud destination. Une distribution équi-répartie (c'est-à-dire un nombre de symboles du mot de code égal ou quasiment égal à chaque relais) donne par exemple, si le noeud destination 150 n'est pas connecté au noeud source 100 : 5 10 Noeud relais 105 1 10 1 15 120 12.5 1 30 Redondances à générer sl s3 r2 r4 r6 r8 S2 rl r3 r5 r7 r9 Cette distribution est appelée par la suite « équi-distribution sans noeud source ». Une distribution équi-répartie donne par exemple, si le noeud destination 150 est connecté au noeud source 100 : Noeud relais 105 1 10 1 15 120 125 130 Noeud source 100 Redondances à générer rl r2 r3 r4 r5 r6 SI r7 rg r9 S2 S3 Cette distribution est appelée par la suite « équi-distribution avec noeud source ». Dans cet exemple, le nombre de symboles de redondance n'est pas égal pour tous les noeuds du fait que le nombre de symboles de redondance à générer (9 dans cet exemple) n'est pas divisible par le nombre de relais (6 dans cet exemple). Dans ce cas, le reste (3 dans cet exemple) de la division entière entre le nombre de symboles de redondance à générer et le nombre de relais est réparti parmi les noeuds relais effectifs. Un exemple de « distribution optimisée » donnée par l'algorithme de la figure 5 appliqué au réseau de la figure 1 est le suivant, si le noeud destination 150 est connecté au noeud source 100 : Noeud relais 105 1 10 1 1.5 1 20 1 2.5 1 30 Noeud source 100 Redondances à générer rl r2 r4 r7 r9 SI r3 r5 r8 s2 r6 S3 La figure 4 décrit un exemple de structure d'une trame de contrôle 400 indiquant les nouveaux paramètres du codage aux noeuds du réseau, et notamment la nouvelle répartition de la génération du mot de code. Cette trame de contrôle est par exemple générée à l'initialisation du système (étape 340 de la figure 3) ou lors d'une remise à jour de la répartition (étape 1015 de la figure 10a). Cette trame de contrôle est divisée en deux parties : • une première partie 405 indiquant la nouvelle répartition ; et • une deuxième partie 410 indiquant les coefficients de codage. Cette deuxième partie 410 est utilisée seulement dans la trame de contrôle envoyée durant la phase d'initialisation et si la matrice génératrice n'est pas stockée dans la mémoire 225. La première partie 405 est composée de N champs 415, ceux-ci indiquant le noeud associé à chaque symbole de code à générer : le ième champ indique le noeud qui générera le ième symbole du mot de code. Dans le cadre de notre exemple, chaque champ 415 a une taille de 3 bits qui identifie un noeud du réseau. Par exemple, dans le réseau décrit dans la figure 1, le noeud 100 est représenté par exemple par le code identifiant 000, le noeud 105 par le code identifiant 001, le noeud 110 par le code identifiant 010, le noeud 115 par le code identifiant 011, le noeud 120 par le code identifiant 100, le noeud 125 par le code identifiant 101 et le noeud 130 par le code identifiant 110. La valeur du champ 405 est ainsi la suivante pour 1«équi-distribution avec noeud source » : 000 000 000 001 010 011 ]00 101 110 001 010 011 La partie 410 est composée de N*K champ 420 contenant l'ensemble des coefficients de la matrice génératrice G. Chaque champ 420 contient un coefficient de la matrice. Il y a N*K champs 420 du fait que la matrice G est de dimension (N,K). Chaque coefficient étant un élément du corps du Galois. Celui choisi est GF(28) dans un mode de réalisation particulier et donc chaque champ 420 a une taille de 1 octet. La figure 5 présente un organigramme d'un premier mode de réalisation particulier des étapes 330 et 335 de la figure 3 (répartition de la génération du mot de code parmi des noeuds). En parallèle, la figure 11 présente les résultats de chaque étape de la figure 5 appliquée au réseau de la figure 1. Rappelons que si l'algorithme de la figure 5 est appelé par l'étape 330 de la figure 3, le nombre de symboles du mot de code à répartir est N-K, s'il est appelé par l'étape 335 de la figure 3, le nombre de symboles du mot de code à répartir est N. Utilisons les notations suivantes : • Nb Red est le nombre de symboles du mot de code à répartir ; • les noeuds relais 105, 110, 115, 120, 125 et 130 sont identifiés par les codes suivants 1, 2, 3, 4, 5, 6 ; • le noeud source 100 est identifié par la lettre s, et • le noeud destination 150 est identifié par la lettre d. A l'étape 500, on trie les noeuds selon leur position par rapport au noeud source s. Pour cela, le noeud central analyse la table d'angle du noeud source AOj. Il exécute alors un algorithme de tri ayant la relation d'ordre suivant : Ri Cette fonction F2(d, i(i), r(i+l)) fournit une deuxième information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions des deux noeuds relais r(i), r(i+1) vers le noeud destination d. Appliqué au réseau de la figure 1, les résultats de l'étape 510 avec la fonction F2 précitée sont donnés dans les colonnes 1115 et 1120 de la figure 11. A l'étape 515, on évalue la proximité entre deux noeuds relais consécutifs vu par le noeud source et le noeud destination. Pour cela, on effectue une combinaison entre les valeurs récupérées dans les étapes 505 et 510. Plus précisément, on utilise une fonction F qui est définie à partir des fonctions F1 (de l'étape 505) et F2 (de l'étape 510), et ayant comme variable un couple de noeuds consécutifs. La fonction F utilisée dans un mode de réalisation particulier est la suivante : F(i(i),i(i+1)) = F1(s, i(i), r(i+1)) * F2(d, r(i), r(i+l)), pour i allant de 1 jusqu'à M-1. Appliqué au réseau de la figure 1, les résultats de l'étape 515 avec la fonction F précitée sont donnés dans la colonne 1125 de la figure 11. D'autres fonctions F peuvent être appliquées, telles que l'addition ou la division avec des coefficients pour pondérer l'importance de la première valeur par rapport à la deuxième valeur. A l'étape 520, on détermine la quantité de symboles (du mot de code) que doit générer chaque couple de noeuds relais consécutifs. Pour cela, une autre fonction Q prenant en compte les résultats de l'étape 515 est utilisée. La fonction Q utilisée dans un mode de réalisation particulier est la suivante : Q(i(i),i(i+l)) = Int (Nb_Red * F(r(i),r(i+l))/S), avec Int correspondant à la fonction arrondi, c'est-à-dire renvoyant l'entier le plus proche de l'argument réel. M-1 S = F(ar(i),ar(i+1)) Notons que si : M -1 1 Q(yr(i), Jr(i + 1)) ≠ Nb Red i on ajuste Q afin de vérifier cette condition, c'est-à-dire qu'on ajoute ou retranche 1 à certaine(s) valeur(s) de Q(r(i),r(i+1)). La répartition des symboles restants non M-1 attribués est la suivante. Si Nb Red û 1 Q(yr(i),yr(i + 1)) est strictement supérieur à i=1 zéro (respectivement strictement inférieur à zéro) on ajoute (respectivement retranche) en priorité un symbole à générer au(x) couple(s) de noeuds relais r(i),i(i+l) ayant la valeur de Q la plus faible (respectivement la plus forte). Puis, si deux couples ont la même valeur de Q, le couple ayant la valeur Q'(i(i),i(i+l)) = Nb_Red * F(r(i),r(i+l))/S la plus forte (respectivement faible) est sélectionné. Appliqué au réseau de la figure 1, les résultats de l'étape 520 avec la fonction Q précitée sont donnés dans la colonne 1130. Plus précisément, S est égale à 40+495+300+300+20 = 1155 Q(i(2),i(1)) = Int(40*9/1155)=Int(0.31) = 0 Q(i(3),i(2)) = Int(3.86) = 4 Q(i(4),i(3)) = Int(2.34) = 2 Q(i(5),i(4)) = 2 et Q(i(6),r(5)) =Int(0.16) = 0 M-1 On a ainsi 1Q(yr(i),yr(i + 1)) = 8 , or le nombre de symboles à générer est 9. On i doit ajouter une redondance. Premièrement, on sélectionne les deux couples ayant la valeur de Q la plus faible soit r(2),r(1) et r(6),r(5), Q étant égale à O. Puis entre les deux couples, on choisit celui qui a la valeur de Q' la plus forte, soit i(2),i(1) (Q'(r(2),r(1))=0.31 > Q'(r(6),r(5)=0.16). A l'étape 525, on détermine la quantité de symboles (du mot de code) que chaque noeud relais doit générer. Pour cela, une fonction Nb_red_rel est définie prenant en entrée les résultats de l'étape 520. La fonction Nb_red_rel utilisée dans un mode de réalisation particulier est la suivante : Nb_red_rel(i(i)) = E(Q(r(i-1),r(i))/2)+ E((Q(r(i),r(i+1))+1)/2), pour i allant de 2 à M-1 avec E la fonction mathématique partie entière Nb_red_rel(i(1)) = E((Q(r(2), r(1))+1)/2) Nb_red_rel(i(M)) = E((Q(r(M),r(M-1))/2) Appliqué au réseau de la figure 1, les résultats de ce bloc avec cette fonction précitée sont donnés dans la première colonne 1155 du tableau 1150. L'étape 530 alloue à chaque noeud relais le ou les symboles (du mot de code) qu'il doit générer, en tenant compte de la quantité de symboles qui lui a été allouée à l'étape 525. Cette allocation est par exemple basée sur le classement effectué à l'étape 500. Appliqué au réseau de la figure 1, les résultats de cette étape 530 sont donnés dans la dernière colonne 1160 du tableau 1150 de la figure 11. La figure 6 présente un organigramme d'un deuxième mode de réalisation particulier des étapes 330 et 335 de la figure 3 (répartition de la génération du mot de code parmi des noeuds). Rappelons que si l'algorithme de la figure 6 est appelé par l'étape 330 de la figure 3, le nombre de symboles du mot de code à répartir est N-K, s'il est appelé par l'étape 335 de la figure 3, le nombre de symboles du mot de code à répartir est N. Notons Nb Red ce nombre de symboles du mot de code à répartir. Outre le fait que le présent algorithme de la figure 6 alloue à chaque noeud relais un nombre de symboles du mot de code à générer, il construit aussi une liste L d'ensembles de noeuds considérés proches. Cette liste L sera mémorisée dans le composant mémoire 220 du noeud et pourra être remise en cause durant la durée de vie du système (si l'option est activée) par l'intermédiaire de l'algorithme décrit par la suite en relation avec la figure 10a. Dans la suite de la description, nous utilisons les mêmes notations que pour la description de la figure 5, à savoir : • les noeuds relais 105, 110, 115, 120, 125 et 130 sont identifiés par les codes suivants 1, 2, 3, 4, 5, 6 ; • le noeud source 100 est identifié par la lettre s, et • le noeud destination 150 est identifié par la lettre d. A l'étape 600, on initialise la liste L des ensembles de noeuds relais proches, en considérant que les noeuds relais ne sont pas proches entre eux. Appliqué au réseau de la figure 1, à la fin de cette étape 600, on a : L=({1},{2},{3},{4},{5},{6}). A l'étape 605, on détermine les noeuds relais considérés proches vu par le noeud source s. Pour cela une fonction G est définie ayant comme paramètre d'entrée deux noeuds relais i et j pour quantifier cette proximité. La fonction utilisée, dans un mode de réalisation particulier basé sur les angles, est la suivante : G(i,j) = Ia(s,i)- a(s,j)I, avec I I représentant l'opération « valeur absolue ». Mais d'autres fonctions sont utilisables telles que la distance euclidienne. On recherche alors les valeurs de G inférieures à un seuil prédéterminé src_threshold. Et si G(i,j) est inférieur à src_threshold, i et j sont considérés proches vu par le noeud source. Une liste L_src d'ensembles de noeuds relais considérés proches vu par le noeud source est alors construite. Cette fonction G(i,j) = Ia(s,i)- a(s,j)I fournit une première information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions du noeud source s vers les deux noeuds relais i et j. Appliqué au réseau de la figure 1, en utilisant les valeurs d'angle définies dans le tableau 1100 (figure 11), et avec une valeur de src_threshold égale à 5°, les noeuds relais 1 et 2 sont considérés proches du fait que Ia(s,1)- a(s,2)I = 162°-60°I = 2° est bien inférieur à 5°. Etant les seuls noeuds à vérifier la condition, la liste L_src est égale à : L_src=({1,2},{3},{4},{5},{6}). A l'étape 610, on détermine les noeuds relais considérés proches vu par le noeud destination d. Pour cela une fonction H est définie ayant comme paramètre d'entrée deux relais i et j pour quantifier cette proximité. La fonction utilisée, dans un mode de réalisation particulier basé sur les angles, est la suivante : H(i,j) = Ia(d,i)- a(d,j)I, avec 1 1 représentant l'opération « valeur absolue ». Mais d'autre fonctions sont utilisables telles que la distance euclidienne. On recherche alors les valeurs de H inférieures à un seuil dest_threshold. Et si H(i,j) est inférieur à dest_threshold, i et j sont considérés proches vu par le noeud destination. Une liste L_dest d'ensembles de noeuds relais considérés proches vu par le noeud destination est alors construite. Cette fonction H(i,j) = Ia(d,i)- a(d,j)I fournit une deuxième information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions des deux noeuds relais i et j vers le noeud destination d. Appliqué au réseau de la figure 1, en utilisant les valeurs d'angle définies dans le tableau 1100 (figure 11), et avec une valeur de dest_threshold égale à 5°, les noeuds relais 5 et 6 sont considérés proches du fait que Ia(d,5)- a(d,6)I = 1142°-140°I = 2° est bien inférieur à 5°. Etant les seuls noeuds à vérifier la condition, la liste L_dest est égale à: L_dest=({1},{2},{3},{4},{5,6}). A l'étape 615, on détermine les noeuds relais considérés proches, vu par le noeud source et le noeud destination, en regroupant les résultats des étapes 605 et 610 de la manière suivante : deux noeuds i et j sont proches s'ils appartiennent à un même ensemble soit dans L_src, soit dans L_dest. Les ensembles de noeuds relais proches ainsi construits constituent la nouvelle liste L à laquelle sont ajoutés des ensembles constitués d'un seul noeud relais pour les noeuds relais proches d'aucun autre noeud relais. Appliqué au réseau de la figure 1, la liste L est donc maintenant : L=({1,2},{3},{4},{5,6}), car les noeuds 1 et 2 sont proches vu par le noeud source, et les noeuds 5 et 6 sont proches vu par le noeud destination. Les ensembles {3} et {4} sont ajoutés à la liste L du fait que les noeuds 3 et 4 ne sont proches d'aucun noeud, vu par le noeud source ou le noeud destination. A l'étape 620, on alloue à chaque ensemble de la liste L un nombre de symboles (du mot de code) à générer. Dans un mode de réalisation particulier, la répartition choisie est une équi-répartition. On alloue à chaque ensemble le même nombre de symboles (du mot de code) à générer. Dans le cas où le nombre de symboles (du mot de code) à générer n'est pas divisible par le nombre d'ensembles de L, le reste de cette division est réparti parmi les ensembles. Appliqué au réseau de la figure 1, et en reprenant la liste L calculée à l'étape 615, on doit lors de l'étape 620 répartir 9 symboles de redondances parmi les 4 ensembles de L, on a alors la répartition suivante : Ensemble de L 6 Nombre de redondances 3 2 2 2 L'étape 625 est une étape optionnelle, pouvant être mise en oeuvre si le noeud destination est connecté au noeud source (vérification positive à l'étape 325 de la figure 3). Dans cette étape 625, on met à jour la distribution des symboles (du mot de code) à générer, en tenant compte de la proximité entre le noeud source et les noeuds relais, vu par le noeud destination. Pour chaque ensemble de noeuds L(i) de L, on choisit un noeud sel_reli, et on détermine si cet ensemble L(i) appartient à la liste L_src_rel en appliquant la règle suivante : L(i) E L_src_rel la(d, sel_reli)- a(d,$)I Illustrons par un exemple, appliqué au réseau de la figure 1, avec a(d,$) égal à 92° et opt_thre égal à 5°. La condition d'appartenance à L_src_rel est vérifiée uniquement pour l'ensemble {3} du fait que : Ia(d,3)- a(d,$)I = 195°-92°I = 3° ,6} Nombre de redondances 3 3 3 A l'étape 630, on détermine enfin les symboles (du mot de code) que doit générer chaque noeud relais. Pour chaque ensemble de la liste L (qui a pu être modifiée à l'étape 625), on alloue à chaque noeud relais de cet ensemble un nombre de symboles (du mot de code) à générer. Dans un mode de réalisation préféré, pour chaque ensemble de la liste L, la répartition du nombre de symboles alloué à cet ensemble parmi le(s) noeud(s) relais de cet ensemble est une équi-répartition : • tous les noeuds de cet ensemble vont si possible générer le même nombre de symboles ; • dans le cas où le nombre total de symboles alloué à cet ensemble n'est pas divisible par le nombre de noeuds relais de cet ensemble, le reste de cette division est réparti parmi les noeuds relais de l'ensemble (par exemple, selon leur position par rapport au noeud source). Un exemple d'alternative est de sélectionner, pour chaque ensemble de la liste L, 25 un noeud de cet ensemble qui est en charge d'envoyer tous les symboles du mot de code alloués à cet ensemble. Une fois que chaque relais s'est vu allouer un nombre de symboles à générer, on alloue les symboles du mot de code à générer. Par exemple, le même tri que celui de l'étape 500 (figure 5) est réalisé et les redondances (symboles à génerer) sont réparties parmi les noeuds relais, selon l'ordre croissant de ce tri. Appliqué au réseau de la figure 1, pour le premier ensemble {1,2}, le nombre de symboles du mot de code à générer pour cet ensemble, égal à 3, n'est pas égal au nombre de noeuds de cet ensemble, égal à 2. Le reste de la division, égal à 1, est alloué au premier noeud de cet ensemble, c'est-à-dire le noeud 1. Pour cet ensemble, on choisit donc les symboles de redondances rl et r2 pour le noeud 1, et r3 pour le noeud 2. Appliqué aux autres ensembles de L, le résultat est le suivant : Noeud relais 1 ? 4 5 6 ri r3 r4 r7 r9 Redondances à générer r2 r5 r8 r6 La figure 7 décrit un mode de réalisation particulier d'un algorithme exécuté par 10 un noeud X; à la réception d'une trame de contrôle 400 (figure 4). A la réception (étape 700) d'une trame de contrôle 400 envoyée par le noeud central, l'algorithme vérifie (étape 705) si celle-ci a été envoyée durant l'initialisation (étape 340, figure 3) ou durant une mise à jour du codage distribué (étape 1020, figure 10a). Rappelons que pour ce dernier cas, une période de temps est réservée dans la 15 supertrame au noeud central afin qu'il envoie cette trame de contrôle. De plus, il est à noter que cette étape de test 705 est nécessaire seulement si la matrice génératrice G n'est pas déjà présente dans la mémoire RAM/ROM 225 de chaque noeud. Dans le cas où la matrice est déjà présente, l'algorithme débute directement par l'étape 715. Si la trame de contrôle a été envoyée durant l'initialisation, l'étape suivante est l'étape 710 20 sinon l'étape suivante est l'étape 715. A l'étape 710, on reconstruit directement la matrice G à partir des coefficients présents dans la deuxième partie 410 de la trame de contrôle 400 et on stocke la matrice dans la mémoire 225. Puis on passe à l'étape 715. A l'étape 715, on analyse la première partie 405 de la trame de contrôle 400, et à 25 l'étape 720 on stocke ces informations dans le bloc mémoire 220. Si le noeud Xi est un noeud relais, il analyse chacun des champs 415 de la première partie 405 de la trame de contrôle 400, ces champs 415 indiquant pour chaque symbole du mot de code quel est le noeud qui le générera. A chaque fois que le noeud Xi identifie son code identifiant dans un des champs 415, il sait qu'il devra générer un symbole du mot de code. De plus, la position j du champ 415 contenant son code identifiant lui indique qu'il est en charge de générer le jème symbole du mot de code à partir des coefficients de la jème ligne de la matrice G. Le noeud relais Xi mémorise ainsi la liste des positions des symboles qu'il doit générer dans le bloc mémoire 220. Par exemple, en réutilisant l'exemple donné dans la figure 3, le noeud relais 105 du réseau de la figure 1 a le code identifiant 001. Ainsi, quand celui-ci reçoit la trame de contrôle suivante : 000 000 000 001 010 011 100 101 110 001 010 011 le noeud relais 105 conclut qu'il devra générer le quatrième symbole (noté r4) et le dixième symbole (noté rio). Si le noeud Xi est un noeud destination, il garde en mémoire l'identifiant du noeud relais associé à chaque symbole du mot de code, afin d'insérer le symbole reçu à la bonne position dans le mot de code. Par exemple, lorsqu'il reçoit un paquet du noeud relais 105, le noeud Xi sait que le premier symbole du paquet correspond au quatrième symbole du mot de code (soit r4) et que le deuxième symbole du paquet correspond au dixième symbole du mot de code (soit rio). La figure 8 décrit un mode de réalisation particulier d'un algorithme exécuté par un noeud relais Ri à la réception de données utiles provenant du noeud source. Après l'attente de la période de temps réservé au noeud source dans la supertrame (étape 800), les noeuds relais reçoivent les données utiles envoyées par ce noeud source (étape 805). Notons ces données où si représente un symbole source. Puis l'algorithme teste, dans l'étape 810, si le noeud relais Ri est impliqué dans le codage (c'est-à-dire s'il a des symboles du mot de code à générer et à envoyer). Cette information est stockée dans la mémoire 220 (l'opération de stockage ayant été réalisée à l'étape 720 de la figure 7). Le noeud relais Ri vérifie si la liste des positions de symboles qu'il doit générer est vide ou non. Si la liste n'est pas vide, Ri est un noeud relais impliqué dans le codage, et l'étape suivante est l'étape 820. Sinon, on passe directement à l'étape finale 815 de l'algorithme, du fait que le noeud relais ne doit rien générer et transmettre. A l'étape 820, on détermine si les données reçues du noeud source ont été bien reçues ou pas. Si oui, l'étape suivante est l'étape 830, sinon l'étape 825. Cette étape 820 se base par exemple sur des informations radio, tel que le rapport signal sur bruit (SNR) ou la puissance du signal reçu (RSSI). Si ces variables dépassent un seuil prédéfini, les données sont considérées bien reçues, sinon elles sont considérées mal reçues. Dans l'étape 825 (c'est-à-dire si les données ont été mal reçues), le noeud relais Ri envoie, durant son intervalle de temps, une notification d'erreur au lieu des symboles codés qu'il aurait dû envoyer. Dans un mode de réalisation particulier, le noeud relais Ri reste simplement silencieux durant son intervalle de temps dans la supertrame, ce qui est détectable par le noeud destination. Dans l'étape 830 (c'est-à-dire si les symboles s1,...'5K ont été bien reçus), le noeud relais Ri construit les symboles du mot de code qu'il doit générer, en se basant sur la liste des positions de symboles qu'il doit générer et la matrice génératrice G. Par exemple, si la liste des positions de symboles qu'il doit générer lui indique qu'il est en charge du quatrième symbole, le noeud relais Ri construit le quatrième symbole r4 du mot de code de la manière suivante : K r4 = 1 G4J 1=' avec G. représentant le symbole contenu à la mème ligne et la Hème colonne de la matrice G. Après qu'il a construit tous les symboles du mot de code qui lui ont été alloués, le noeud Ri les envoie durant son intervalle de temps (étape 835). La figure 9 décrit un mode de réalisation particulier d'un algorithme exécuté par le noeud destination. Cet algorithme se lance à la fin de la supertrame (événement de l'étape 905), lorsque tous les noeuds relais ont eu accès au médium durant la supertrame. A l'étape 910, on détermine si les données ont été bien reçues ou pas. Pour qu'une donnée soit bien reçue, elle doit respecter deux conditions : • la donnée ne doit pas contenir une notification d'erreur introduit par le noeud Xi (voir étape 825 de la figure 8) ; et • la donnée doit être bien reçue d'un point de vue transmission radio. L'appréciation de cette condition se base par exemple sur des informations radio, telles que le rapport signal sur bruit (SNR) ou la puissance du signal reçu (RSSI). Si ces variables dépassent un seuil prédéfini, les données sont considérées bien reçues d'un point de vue transmission radio, sinon elles sont considérées mal reçues. Si ces deux conditions sont respectées pour une donnée provenant d'un noeud Xi du réseau (noeud source ou un des noeuds relais), les symboles associés à cette donnée sont considérés bien reçus. Sinon, ils sont considérés mal reçus. A l'étape 915, on introduit les symboles bien reçus provenant du noeud Xi aux bonnes positions. Rappelons juste que le noeud destination a stocké les informations nécessaires pour réaliser cette étape durant l'étape 720 de la figure 7. A l'étape 920, on marque comme effacements les symboles que devaient fournir le noeud Xi aux bonnes positions. Par exemple, appliqué au réseau de la figure 1, avec la distribution optimisée, qu'on rappelle ci-dessous : Noeud relais l0.5 l l0 l l_5 l?0 l?_5 130 Noeud source 100 Redondances à générer ri r2 r4 r7 r9 SI r3 r5 r8 s2 r6 S3 Si le noeud destination 150 ne reçoit pas du noeud relais 105, le noeud destination marque comme effacement le premier symbole du mot de code. Supposons que le noeud destination reçoive tous les autres symboles correctement, le noeud destination enverra à l'étape de décodage (930) le mot de code suivant : (sl,s2,s3,?,r2,r3,r4,r5,r6,r7,r8,r9), avec « ? » signifiant un effacement, c'est-à-dire une erreur localisée. Puis, à l'étape 925, on met à jour des statistiques de proximité en analysant les effacements corrélés. Cette étape est optionnelle et n'est utilisée que si le système ou l'utilisateur désire remettre en cause la répartition de la génération du mot de code, cette répartition étant une répartition par défaut ou ayant été construite préalablement (par exemple à l'initialisation du système, en se basant sur l'algorithme de la figure 6). Pour chaque effacement, on mémorise le noeud associé. A la fin de ce processus, si les effacements proviennent d'au moins deux noeuds, ces noeuds sont considérés corrélés. Appelons S l'ensemble de ces noeuds considérés corrélés. Un compteur d'occurrence, associé à l'ensemble S précité, est incrémenté de 1 à la fin de la supertrame. Plus généralement, un compteur d'occurrence est utilisé pour chacun des ensembles possibles de noeuds, et pour chaque mot de code reçu par le noeud destination, si les effacements proviennent d'au moins deux noeuds, l'un des ensembles possibles est incrémenté de 1. Illustrons ceci avec le réseau décrit dans la figure 1. On suppose à titre d'exemple qu'arrivé à cette étape 925, le mot de code reçu est le suivant : (?,?,?,rl,r2,r3,r4,r5,r6,r7,r8,r9), et que la distribution courante des symboles du mot de code est la répartition équi-distribution sans noeud source : Noeud relais l05 l l0 l l_5 120 l5 l30 sl s3 r2 r4 r6 r8 Redondances à générer s2 rl r3 r5 r7 r9 Les deux premiers effacements correspondent au noeud relais 105, et le troisième effacement correspond au noeud relais 110, donc le compteur d'occurrence de l'ensemble {105,110} est incrémenté de 1. A l'étape 930, on exécute le décodage Reed-Solomon, technique bien connue de l'homme du métier basée par exemple sur les trois algorithmes clés suivants : l'algorithme de Berlekamp-Massey pour déterminer le polynôme localisateur d'erreurs, l'algorithme de recherche de Chien pour déterminer la position des erreurs et la formule de Forney pour calculer la valeur des erreurs. De plus, ce décodage doit prendre en compte les effacements introduits par l'étape 920. A partir du mot de code décodé à l'étape 930, les K premiers symboles (sl,s2,...sK) sont envoyés à l'application (étape 935). La figure l0a décrit un mode de réalisation particulier d'un algorithme de remise à jour de la répartition de la génération du mot de code, durant la vie du système. Cet algorithme est exécuté par le noeud central. Il est basé sur les statistiques réalisées par le noeud destination à l'étape 925 de la figure 9, dans laquelle le noeud destination analyse les effacements du mot de code reçu dans la supertrame courante. Il peut être appliqué : • soit en combinaison avec l'algorithme de la figure 6. Dans ce cas, il a pour but de mettre en cause la liste L (des ensembles de noeuds relais proches) qui résulte de l'exécution de l'algorithme de la figure 6. On notera que l'algorithme de la figure 5 ne permet pas de construire une telle liste L ; • soit seul. Dans ce cas, il a pour but de mettre en cause une liste L (des ensembles de noeuds relais proches) par défaut, utilisée lors de l'initialisation du système (sans résulter de l'exécution de l'algorithme de la figure 6). Dans le contexte de la figure 1, et avec les notations précitées pour les noeuds relais, une telle liste L par défaut est par exemple : L=({1},{2},{3},{4},{5},{6}), si on suppose initialement que les noeuds relais ne sont pas proches. De manière périodique (sur détection d'un événement à l'étape 1000), le noeud central récupère des statistiques envoyées par le noeud destination durant son intervalle 15 de temps réservé dans la supertrame (étape 1005). Ces statistiques sont collectées par le noeud destination à l'étape 925. A l'étape 1010, le noeud central met à jour la liste L (celle par défaut ou celle résultant de l'exécution de l'algorithme de la figure 6) à partir des statistiques récupérées durant l'étape précédente 1005. Un mode de réalisation particulier de cette étape 1010 20 est décrit en détail ci-dessous, en relation avec la figure 10b. A l'étape 1015, le noeud central construit, à partir de la liste L mise à jour, la nouvelle répartition de la génération du mot de code. Cette étape 1015 est identique aux étapes 620 et 630 (et optionnellement 625) de la figure 6. A l'étape 1020, le noeud central envoie une trame de contrôle 400 indiquant les 25 nouveaux paramètres du codage aux noeuds relais. Cette étape 1020 est identique à l'étape 340 de la figure 3. La figure 10b présente un organigramme d'un mode de réalisation particulier de l'étape 1015 de la figure l0a (mise à jour de la liste L à partir des statistiques collectées par le noeud destination). Rappelons que ces statistiques indiquent une liste Po 30 d'ensembles de noeuds relais corrélés, et pour chacun de ces ensembles, indiquent un compteur d'occurrences. 10 Afin de faire une sélection pertinente de certains ensembles de la liste Po, un seuil est fixé qui permet de décider si un ensemble donné de la liste Po doit remettre ou pas en cause la liste L, et donc être introduit ou non dans une liste P. Ainsi, dans une étape 1025, si le compteur d'occurrences d'un ensemble donné de la liste Po est supérieur à un seuil, appelé corr_threshold, alors cet ensemble nécessite une remise à jour de la liste L et est introduit dans la liste P, sinon cet ensemble n'est pas pris en compte (et n'est pas introduit dans la liste P). La liste P est donc une sous-liste de la liste Po, contenant les ensembles pertinents de la liste Po. Illustrons par un exemple basé sur le réseau de la figure 1. Supposons que les statistiques s'effectuent toutes les 100 supertrames et que durant ces 100 supertrames, le noeud destination a collecté les statistiques suivantes, avec Po=({105,110},{125,130}, {105,110,115},{105,125,130}) Ensemble Compteur d'occurrences {105,110} 30 { 125,130} 40 {105,110,115} 5 {105,125,130} 5 Si le seuil corr_threshold est égal à 25 (représentant dans cet exemple 25%), les ensembles {105,110} et {125,130} sont retenus et sont mémorisés dans la liste P. A l'étape 1030, on initialise un compteur i à 1, pour analyser le premier ensemble de la liste P, noté P(1). Puis, à l'étape 1035, on vérifie si le ième ensemble de la liste P (noté P(i)) est inclus dans un ensemble de la liste L. L'opération inclusion est l'opération basique utilisée pour les ensembles (V x (x E A ' x E B)). Dans l'affirmative, l'étape suivante est l'étape 1045, sinon c'est l'étape 1040. A l'étape 1040, on met à jour la liste L, en unifiant des ensembles de L, de telle manière que P(i) soit inclus dans L. Cette étape est basée sur l'opération union, notée U, définie pour les ensembles mathématiques. Elle peut être décrite de la manière suivante : • partant de l'ensemble vide G, pour chaque noeud x de P(i), on cherche l'ensemble S de la liste L contenant x, et on met à jour G de la manière suivante : G=GUS; 20 25 • une fois parcouru tous les noeuds de P(i), on ajoute G à L et on enlève de L tous les ensembles S qui ont servi à construire G. Illustrons par un exemple. Supposons que : L=({105,110},{115},{120},{125,30}). Supposons également qu'un ensemble de P soit {105,110,115}. Cet ensemble n'est contenu dans aucun ensemble de L. Lançons l'opération d'unification. Au départ G est l'ensemble vide. Puis le noeud 105 est contenu dans l'ensemble {105,110}, donc G est égal à {105,110}. Puis le noeud 110 est contenu dans l'ensemble {105,110}, donc G est toujours égal à {105,110}. Puis le noeud 115 est contenu dans {115}, donc G est égal à {105,110,115}. Après cette étape, la liste L est égale à ({105,110,115},{120},{125,30}). L'ensemble {105,110,115}, qui résulte de la fusion des ensembles {105,110} et {115}, a été ajouté à la liste L. Les ensembles {105,110} et {115} ont été retirés de la liste L. Puis, à l'étape 1045, on vérifie si tous les ensembles de la liste P ont été analysés. Dans l'affirmative, la prochaine étape est l'étape 1055, sinon c'est l'étape 1050, dans laquelle on incrémente le compteur i, puis on retourne à l'étape 1030. A l'étape 1055, on incrémente de 1 la variable de stabilité de chaque élément de L non modifié par les étapes 1030 à1050, et on réinitialise à zéro cette variable de stabilité pour les nouveaux ensembles de L. La variable de stabilité associée à chaque ensemble de L représente la non fluctuation de cet ensemble. Cette variable est initialisée à zéro à l'initialisation. A l'étape 1060, on initialise un compteur j à 1 pour analyser le premier ensemble de la liste L. Puis à l'étape 1065, on vérifie si la variable de stabilité du jème ensemble de L, noté L(j), a dépassé un seuil appelé stability_threshold. Dans l'affirmative, l'étape suivante est l'étape 1070, sinon c'est l'étape 1075. A l'étape 1070, on met à jour la liste L en séparant tous les noeuds de l'ensemble L(j) (opération réalisée si le nombre de noeuds est strictement supérieur à 1). Pour les nouveaux ensembles créés, la variable de stabilité est initialisée à zéro. Par exemple, si la liste L est égale à ({105,110,115},{120},{125,30}) et si la variable de stabilité associée à l'ensemble L(1) dépasse le seuil stability_threshold, alors l'ensemble L(1) est divisé en trois ensembles {105}, {110} et {115}, et la liste L est égale, après cette opération d'éclatement, à ({105},{110},{115},{120},{125,30}). Puis, à l'étape 1075, on vérifie si tous les ensembles de L ont été analysés. Dans l'affirmative, on passe à l'étape finale 1085 de l'algorithme, sinon le compteur j est incrémenté de 1, à l'étape 1080, puis l'algorithme retourne à l'étape 1065. REVENDICATIONS1. Procédé pour répartir, parmi plusieurs noeuds d'un réseau maillé, la génération d'un mot de code, d'un code correcteur d'erreurs, comprenant N symboles codés, le réseau comprenant un noeud source, une pluralité de noeud relais et un noeud destination, le noeud source envoyant K symboles source destinés au noeud destination, ledit procédé étant caractérisé en ce qu'il comprend des étapes consistant à : a) obtenir (500 à 515 ; 600 à 615) au moins une information de proximité appartenant au groupe comprenant, pour au moins un couple de noeuds relais : * une première information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions du noeud source vers les deux noeuds relais dudit couple de noeuds relais ; * une deuxième information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions des deux noeuds relais dudit couple de noeuds relais vers le noeud destination ; b) répartir (520 à 530 ; 620 à 630) la génération d'au moins une partie des N symboles codés du mot de code parmi les noeuds relais, en prenant en compte ladite au moins une information de proximité obtenue. 2. Procédé selon la revendication 1, caractérisé en ce que l'étape a) comprend une étape consistant à : - obtenir (600 à 615), à partir d'au moins une partie des noeuds relais, une liste finale (L) d'ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même ensemble en cas de vérification d'une condition de proximité ; et en ce que l'étape b) comprend des étapes consistant à : - répartir (620) la génération d'au moins une partie des N symboles codés parmi les ensembles de la liste obtenue, selon une première fonction de distribution déterminée, de sorte qu'un nombre déterminé, supérieur ou égal à zéro, de symbole(s) codé(s) est alloué à chaque ensemble ; - pour chaque ensemble auquel un ou plusieurs symboles codés sont alloués, répartir (630) la génération dudit ou desdits symboles codés alloué(s) parmi le ou les noeuds relais compris dans ledit ensemble, selon une deuxième fonction de distribution déterminée. 30 3. Procédé selon la revendication 2, caractérisé en ce que l'étape consistant à obtenir la liste finale (L) comprend des étapes consistant à : - obtenir (605), à partir d'au moins une partie des noeuds relais, une première liste (L_src) de premiers ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même premier ensemble en cas de vérification d'une première condition de proximité, fonction d'une distance angulaire entre un angle de réception a(s,i) du noeud R; pour recevoir du noeud source et un angle de réception a(s,j) du noeud Ri pour recevoir du noeud source ; - obtenir (610), à partir d'au moins une partie des noeuds relais, une deuxième liste (L_dest) de deuxièmes ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même deuxième ensemble en cas de vérification d'une deuxième condition de proximité, fonction d'une distance angulaire entre un angle de réception a(d,i) du noeud destination pour recevoir du noeud R; et un angle de réception a(d,j) du noeud destination pour recevoir du noeud R~ ; - obtenir (615) ladite liste finale (L), deux noeuds relais R; et Ri appartenant à un même ensemble de ladite liste finale s'ils appartiennent à un même premier ensemble de la première liste ou à un même deuxième ensemble de la deuxième liste. 4. Procédé selon l'une quelconque des revendications 2 et 3, caractérisé en ce que, dans le cas où le noeud destination est connecté au noeud source et où la génération des K premiers symboles codés du mot de code est allouée au noeud source, l'étape b) comprend en outre des étapes (625) consistant à : - obtenir une troisième liste (L_src_rel) telle qu'un ensemble de la liste finale (L) est aussi compris dans la troisième liste en cas de vérification d'une troisième condition de proximité, fonction d'une distance angulaire entre un angle de réception a(d,sel_rel;) du noeud destination pour recevoir d'un noeud sel_rel; compris dans ledit ensemble et un angle de réception a(d,$) du noeud destination pour recevoir du noeud source ; - retirer la génération de Min(K,total_redund) symboles codés à le ou aux ensembles compris dans la troisième liste, avec total_redund le nombre total 30cumulé de symboles codés que doivent générer le ou les ensembles compris dans la troisième liste ; - répartir la génération desdits Min(K,total_redund) symboles codés parmi les ensembles de la liste finale non compris dans troisième liste, selon ladite première fonction de distribution déterminée. 5. Procédé selon l'une quelconque des revendications 2 à 4, caractérisé en ce qu'il comprend des étapes consistant à : c) obtenir (1005), à partir d'au moins une partie des noeuds relais, une quatrième liste (Po) de quatrièmes ensembles de noeuds relais, deux noeuds relais R; et Ri appartenant à un même quatrième ensemble si, pour au moins un mot de code préalablement reçu par le noeud destination, le noeud destination a marqué comme effacements au moins un symbole codé que devait fournir le noeud R; et au moins un symbole codé que devait fournir le noeud Ri ; d) mettre à jour (1010) la liste finale (L), en fonction de la quatrième liste ; e) répartir (1015) la génération de ladite au moins une partie des N symboles codés parmi les ensembles de la liste finale mise à jour, selon ladite première fonction de distribution déterminée ; f) pour chaque ensemble de la liste finale mise à jour auquel un ou plusieurs symboles codés sont alloués, répartir (1015) la génération dudit ou desdits symboles codés alloués parmi le ou les noeuds relais compris dans ledit ensemble, selon ladite deuxième fonction de distribution déterminée. 6. Procédé selon la revendication 5, caractérisé en ce que l'étape d) comprend au moins une des étapes consistant à : - unifier (1040) deux ensembles de la liste finale pour obtenir un ensemble résultant identique à un quatrième ensemble compris dans la quatrième liste, si une condition d'unification est vérifiée ; - éclater (1070) un ensemble donné de la liste finale pour obtenir au moins deux ensembles résultants, comprenant chacun au moins un noeud relais dudit ensemble donné, si une condition d'éclatement est vérifiée. 7. Procédé selon la revendication 1, caractérisé en ce que l'étape a) comprend des étapes consistant à :- trier (500) les noeuds relais dans une séquence, selon leur position par rapport au noeud source ou au noeud destination ; - pour au moins un couple de noeuds relais r(i) et r(i+1) consécutifs au sein de ladite séquence, obtenir (500 à 515) une valeur d'une fonction de proximité F ; et en ce que l'étape b) comprend des étapes consistant à, pour ledit au moins un couple de noeuds relais i(i) et i(i+1) consécutifs au sein de ladite séquence : - déterminer (520) une quantité de symboles codés à générer par ledit couple de noeuds relais, en fonction d'une valeur d'une fonction de calcul de quantité, basée sur la valeur, obtenue pour ledit couple de noeuds relais, de la fonction de proximité F ; - répartir (525, 530) la génération de la quantité de symboles codés à générer déterminée pour ledit couple de noeuds relais, parmi les noeuds relais dudit couple, selon une fonction de distribution déterminée. 8. Procédé selon la revendication 7, caractérisé en ce que l'étape consistant à obtenir une valeur de la fonction de proximité F, pour ledit au moins un couple de noeuds relais i(i) et i(i+1) consécutifs, comprend des étapes consistant à : - obtenir (505) une valeur d'une fonction de proximité F1, basée sur une distance angulaire entre un angle de réception a(s,r(i)) du noeud r(i) pour recevoir du noeud source et un angle de réception a(s,r(i+1)) du noeud r(i+1) pour recevoir du noeud source ; - obtenir (510) une valeur d'une fonction de proximité F2, basée sur une distance angulaire entre un angle de réception a(d,r(i)) du noeud destination pour recevoir du noeud i(i) et un angle de réception a(d,r(i+1)) du noeud destination pour recevoir du noeud i(i+1) ; - obtenir (515) une valeur de la fonction de proximité F, en combinant les valeurs, obtenues pour ledit couple de noeuds relais, des fonctions de proximité F1 et F2. 9. Procédé selon l'une quelconque des revendications 7 et 8, caractérisé en ce que l'étape consistant à trier les noeuds relais dans une séquence utilise : une première relation d'ordre telle que, pour deux noeuds relais R; et Ri, on a : R; 30 10. Procédé selon la revendication 1, caractérisé en ce que l'étape a) comprend des étapes consistant à : - obtenir (1005) une première liste (Po) de premiers ensembles de noeud(s) relais, deux noeuds relais R; et Ri appartenant à un même premier ensemble si, pour au moins un mot de code préalablement reçu par le noeud destination, le noeud destination a marqué comme effacements au moins un symbole codé que devait fournir le noeud R; et au moins un symbole codé que devait fournir le noeud Ri ; et en ce que l'étape b) comprend des étapes consistant à : - obtenir ou mettre à jour (1010) une liste finale (L) d'ensembles de noeud(s) relais, en fonction de la première liste ; - répartir (1015) la génération de ladite au moins une partie des N symboles codés parmi les ensembles de la liste finale, selon une première fonction de distribution déterminée, de sorte qu'un nombre déterminé, supérieur ou égal à zéro, de symbole(s) codé(s) est alloué à chaque ensemble de la liste finale ; - pour chaque ensemble de la liste finale auquel un ou plusieurs symboles codés sont alloués, répartir (1015) la génération dudit ou desdits symboles codés alloués parmi le ou les noeuds relais compris dans ledit ensemble, selon une deuxième fonction de distribution déterminée. 11. Procédé selon la revendication 10, caractérisé en ce que l'étape consistant à obtenir ou mettre à jour la liste finale comprend au moins une des étapes consistant à : - unifier (1040) deux ensembles de la liste finale pour obtenir un ensemble résultant identique à un premier ensemble compris dans la première liste, si une condition d'unification est vérifiée ;- éclater (1070) un ensemble donné de la liste finale pour obtenir au moins deux ensembles résultants, comprenant chacun au moins un noeud relais dudit ensemble donné, si une condition d'éclatement est vérifiée. 12. Procédé selon l'une quelconque des revendications 1 à 11, caractérisé en ce qu'il comprend des étapes consistant à : - obtenir une matrice génératrice systématique dudit mot de code ; - déterminer si le noeud destination est connecté au noeud source ; et en ce que, dans l'étape b), si le noeud destination est connecté au noeud source : - la génération des K premiers symboles codés du mot de code est allouée au noeud source ; - la génération des N-K derniers symboles codés du mot de code est répartie parmi les noeuds relais, en prenant en compte ladite au moins une information de proximité obtenue. 13. Procédé selon l'une quelconque des revendications 1 à 11, caractérisé en ce qu'il comprend des étapes consistant à : - obtenir une matrice génératrice systématique dudit mot de code ; - déterminer si le noeud destination est connecté au noeud source ; et en ce que, dans l'étape b), si le noeud destination n'est pas connecté au noeud source : - la génération des N symboles codés du mot de code est répartie parmi les noeuds relais, en prenant en compte ladite au moins une information de proximité obtenue ; - la génération des K premiers symboles codés du mot de code est allouée à des noeuds relais qui ne combinent pas les K premiers symboles source mais les retransmettent tels quels. 14. Produit programme d'ordinateur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 13, lorsque ledit programme est exécuté sur un ordinateur. 15. Moyen de stockage lisible par ordinateur, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur pour mettre en oeuvre le procédé selon au moins une des revendications 1 à 13. 10 15 16. Dispositif pour répartir, parmi plusieurs noeuds d'un réseau maillé, la génération d'un mot de code, d'un code correcteur d'erreurs, comprenant N symboles codés, le réseau comprenant un noeud source, une pluralité de noeud relais et un noeud destination, le noeud source envoyant K symboles source destinés au noeud destination, ledit dispositif étant caractérisé en ce qu'il comprend : des moyens d'obtenir au moins une information de proximité appartenant au groupe comprenant, pour au moins un couple de noeuds relais : * une première information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions du noeud source vers les deux noeuds relais dudit couple de noeuds relais ; * une deuxième information de proximité représentative de la probabilité qu'un obstacle interrompe simultanément des transmissions des deux noeuds relais dudit couple de noeuds relais vers le noeud destination ; des moyens de répartir la génération d'au moins une partie des N symboles codés du mot de code parmi les noeuds relais, en prenant en compte ladite au moins une information de proximité obtenue.