Localiser
Identifier la position d’un objet qui émet un signal à l’aide de trois balises connues
Étudiant ingénieur des télécommunications. Je partage ici mes projets, mes expérimentations et mes articles autour du signal, de la programmation et de la technologie.
INTRODUCTION
Dans de nombreux domaines de l’ingénierie — télécommunications, IoT, géolocalisation, sécurité ou robotique — ou même dans la vie courante, on est confronté au même problème fondamental : localiser un objet ou une personne, ou pour être plus technique, localiser une source inconnue à partir de capteurs placés à des positions connues.
Dans cet article, je vais montrer comment il est possible d’identifier la position d’une source de signal en 2D en utilisant trois balises fixes, dont on connaît les coordonnées, ainsi que leur distance à la source.
Nous verrons :
Comment modéliser le problème mathématiquement,
Comment l’interpréter géométriquement,
Comment le résoudre numériquement,
Une petite implémentation et visualisation avec Python.
L’objectif n’est pas seulement d’obtenir un résultat, mais de comprendre le raisonnement de bout en bout.
1. Problème posé et motivation
Imaginons la situation suivante :
Une source émet un signal (radio, sonore, ultrason, etc.) et trois balises fixes reçoivent ce signal. À partir du temps de propagation ou de l’intensité reçue, chaque balise estime sa distance à la source :
Les coordonnées des balises sont connues
La position de la source est inconnue
Question : peut-on retrouver la position exacte de la source à partir de ces informations ?
Ce type de problème apparaît par exemple dans :
La localisation GPS (principe simplifié), les réseaux de capteurs, la détection d’émetteurs radio, la géolocalisation indoor, la surveillance ou la sécurité.
2. Modélisation du problème
Données connues
On dispose de trois balises fixes :
Balise A : A(xa, ya)
Balise B : B(xb, yb)
Balise C : C(xc, yc)
Chaque balise mesure sa distance à la source :
da : distance source–A
db : distance source–B
dc : distance source–C
Inconnue
La position de la source est notée : S(xs, ys)
Notre objectif est donc de déterminer xs et ys.
3. Interprétation géométrique
C’est ici que le problème devient intuitif.
Tous les points situés à une distance da de la balise A forment un cercle centré en A
De même pour les balises B et C
Autrement dit : la source se trouve sur le cercle de centre A et de rayon da, sur le cercle de centre B et de rayon db, et sur le cercle de centre C et de rayon dc.
Intersection des cercles
1 cercle → infinité de positions possibles
2 cercles → généralement 2 solutions possibles
3 cercles → une solution unique (en théorie)
La position de la source correspond donc à l’intersection des trois cercles.
4. Mise en équations mathématiques
La distance entre deux points dans le plan est donnée par la distance euclidienne.
On peut donc écrire le système suivant :
$$\begin{cases} x_s^2-y_s^2-2x_sx_A-2y_sy_A =(t_Av)^2-x_A^2-y_A^2 \\ x_s^2-y_s^2-2x_sx_B-2y_sy_B =(t_Bv)^2-x_B^2-y_B^2 \\ x_s^2-y_s^2-2x_sx_C-2y_sy_C =(t_Cv)^2-x_C^2-y_C^2 \end{cases}$$
Il s’agit d’un système d’équations non linéaires.
En théorie, on peut le résoudre analytiquement en soustrayant les équations deux à deux, mais en pratique — surtout en présence de bruit — il est plus robuste d’utiliser une méthode numérique.
Aperçu d’un cas idéal où l’on estime qu’il n’y a pas d’erreur sur les données :
Apres quelques bidouillage mathématiques, j’ai ceci :
On obtient le système suivant :
$$\begin{cases} x_s^2-y_s^2-2x_sx_A-2y_sy_A =(t_Av)^2-x_A^2-y_A^2 \\ x_s^2-y_s^2-2x_sx_B-2y_sy_B =(t_Bv)^2-x_B^2-y_B^2 \\ x_s^2-y_s^2-2x_sx_C-2y_sy_C =(t_Cv)^2-x_C^2-y_C^2 \end{cases}$$
Sous forme linéaire :
$$\begin{cases} x_s (x_B - x_A) + y_s (y_B - y_A) = D_{AB} \\ x_s (x_C - x_A) + y_s (y_C - y_A) = D_{AC} \end{cases} $$
$$D_{AB} = \frac{(x_B^2 - x_A^2) + (y_B^2 - y_A^2) - (t_B^2 - t_A^2)v^2}{2} $$
$$D_{AC} = \frac{(x_C^2 - x_A^2) + (y_C^2 - y_A^2) - (t_C^2 - t_A^2)v^2}{2}$$
Sous forme matricielle avec le déterminant :
$$\begin{pmatrix} x_B - x_A & y_B - y_A \\ x_C - x_A & y_C - y_A \end{pmatrix} \begin{pmatrix} x_s \\ y_s \end{pmatrix} = \begin{pmatrix} D_{AB} \\ D_{AC} \end{pmatrix} $$
$$\Delta = (x_B - x_A)(y_C - y_A) - (x_C - x_A)(y_B - y_A)$$
Expressions finales de la solution :
$$x_s = \frac{D_{AB}(y_C - y_A) - D_{AC}(y_B - y_A)}{\Delta} $$
$$y_s = \frac{(x_B - xA)D{AC} - (x_C - xA)D{AB}}{\Delta}$$
Implémentation et illustration avec python :
Code et outils utilises disponible sur mon repos GitHub suivant : https://github.com/Yansahka/localize.git

On se rend compte que l’idée est là…
5. Résolution numérique (moindres carrés)
Revenons à la réalité (v-v)
L’idée est la suivante :
]On suppose une position estimée (x, y)
On calcule les distances entre ce point et les balises
On compare ces distances aux distances mesurées
On ajuste (x, y) pour minimiser l’erreur globale
On définit donc une fonction d’erreur :
$$E(x,y)= \begin{vmatrix} \sqrt{(x-x_A)^2+(y-y_A)^2} & -d_A \\ \sqrt{(x-x_B)^2+(y-y_B)^2} & -d_B \\ \sqrt{(x-x_C)^2+(y-y_C)^2} & -d_C \end{vmatrix}$$
Le but est de trouver (x, y) qui minimise cette erreur.
6. Implémentation et visualisation en Python
Voici une implémentation simple utilisant scipy.optimize.
Pour mieux comprendre, on peut représenter :
Les balises,
Les cercles de distance,
La position estimée de la source.

Cette visualisation permet de voir clairement l’intersection des cercles et la cohérence de la solution obtenue.
7. Résultats et limites
Résultats
La méthode permet de localiser correctement la source
Elle est robuste même avec de légères erreurs de mesure
Elle est facilement généralisable à plus de trois balises
Limites
Les mesures de distance sont souvent bruitées
Les balises ne doivent pas être alignées
En présence de fortes erreurs, la solution peut être approximative
9. Ce que j’ai appris
Ce projet m’a permis de comprendre :
Le lien direct entre géométrie et traitement du signal,
L’importance de la modélisation avant le code,
La différence entre une solution théorique et une solution exploitable,
L’intérêt des méthodes numériques dans des problèmes réels.
CONCLUSION
Localiser une source de signal à partir de balises connues est un problème fondamental en ingénierie. À travers cet article, nous avons vu comment passer : d’un problème réel, à une modélisation mathématique, puis à une implémentation concrète et visualisable.
Ce travail peut être étendu à :
La localisation en 3D,
L’ajout de plus de capteurs,
L’intégration de filtres pour réduire le bruit, ou des applications temps réel.