
Le positionnement par Time Difference of Arrival (TDOA) est l’une des approches les plus precisees en localisation interieure basee sur BLE, mais il impose l’exigence la plus stricte au systeme : tous les beacons recepteurs (ancres) doivent partager une reference de temps commune avec une precision sub-microseconde. Cet article decompose l’architecture de synchronisation, les methodes d’horodatage, l’impact de la derive de l’oscillateur a quartz et le budget de precision de bout en bout que l’on peut realistiquement attendre.
1. Pourquoi le TDOA a besoin de synchronisation d’horloge
Dans le positionnement base sur RSSI, chaque beacon mesure independamment la puissance du signal et la rapporte a un serveur. Aucune horloge commune n’est necessaire car la mesure est basee sur l’amplitude, pas sur le temps.
En TDOA, le tag emet une seule publicite BLE. Plusieurs ancres la recoivent et enregistrent le temps d’arrivee. La difference des temps d’arrivee entre deux ancres definit une hyperbole. Avec trois ancres ou plus, la position du tag se trouve a l’intersection des hyperboles.
L’idee cle : le TDOA n’a besoin que du temps relatif (les *differences* de temps), pas du temps absolu. Cependant, toutes les ancres doivent etre synchronisees sur une horloge commune, car tout decalage temporel entre ancres contamine directement l’estimation de position.
Une erreur de temps de 1 microseconde se traduit par environ 300 metres d’erreur de distance (vitesse de la lumiere x 1 us = 300 m). En pratique, les systems BLE interieurs visent une precision de 1-3 metres, ce qui signifie que le decalage d’horloge entre ancres doit etre maintenu en dessous de ~10 nanosecondes.
2. Mathematiques du positionnement TDOA
2.1 Localisation hyperbolique
Etant donne un tag a une position inconnue (x, y) et des ancres a des positions connues (x_i, y_i) :
t_i = t_0 + d_i / c
ou t_i est le temps d’arrivee a l’ancre i, t_0 est le temps d’emission (inconnu), d_i est la distance du tag a l’ancre i, et c est la vitesse de la lumiere (3 x 10^8 m/s).
En prenant la difference entre les ancres i et j :
t_i – t_j = (d_i – d_j) / c
Cela elimine t_0. La quantite (d_i – d_j) definit une hyperbole avec les foyers aux ancres i et j. Avec N ancres, on obtient N-1 mesures TDOA independantes (referencees a une ancre).
2.2 Nombre minimum d’ancres
- Positionnement 2D : minimum 3 ancres (2 mesures TDOA -> 2 hyperboles -> 1 point d’intersection)
- 2D redondant : 4+ ancres pour une solution sur-determinee par moindres carres et detection d’erreurs
- Positionnement 3D : minimum 4 ancres (3 mesures TDOA)
2.3 Borne inferieure de Cramer-Rao (CRLB)
La borne theorique inferieure pour la variance de positionnement est :
var(position) >= (c^2 / sigma_t^2) x tr(F^-1)
ou sigma_t est l’ecart type de l’horodatage et F est la matrice d’information de Fisher. Pour un deploiement typique de 4 ancres avec 10 ns de gigue d’horodatage et une bonne geometrie (GDOP ~ 2), le CRLB est environ :
sigma_position >= c x sigma_t x GDOP = 3×10^8 x 10×10^-9 x 2 ~ 6 m
Cela nous dit : meme avec une synchronisation parfaite, 10 ns de gigue d’horodatage limite la precision a ~6 metres dans une geometrie typique. Le TDOA sub-metrique necessite un horodatage sub-nanoseconde, ce que le PHY BLE ne peut pas fournir nativement.
3. Approches de synchronisation d’horloge
3.1 Synchronisation cablee (PPS / declencheur materiel)
La methode la plus robuste : une horloge maitre genere un signal PPS (Pulse Per Second) de 1 Hz distribue par cable a toutes les ancres. Chaque ancre capture son compteur de timer radio local sur le front du PPS.
| Parametre | Valeur typique |
|---|---|
| Precision de synchronisation | 10-50 ns |
| Longueur max de cable | ~50 m (LVDS) / ~10 m (GPIO) |
| Skew de cable | ~5 ns/m (coaxial), ~1 ns/m (LVDS paire torsadee) |
| Cout | Eleve (cablage + amplificateur de distribution) |
| Evolutivite | Limitee par l’infrastructure de cable |
Implementation sur nRF52833/nRF5340 : Router le PPS vers un canal GPIOTE, le configurer pour declencher une capture de TIMER via PPI (Programmable Peripheral Interconnect). Le timer fonctionne a 16 MHz (resolution 62,5 ns), donc la capture PPS donne un alignement temporel absolu. Entre les fronts PPS, le quartz local de 32 MHz fournit la base de temps.
3.2 Synchronisation sans fil (Beacon a Beacon)
Pas de cable. Les ancres echangent periodiquement des paquets de synchronisation. Le defi : le paquet de synchronisation lui-meme a un delai de propagation inconnu qui doit etre estime et compense.
Protocole de synchronisation Two-Way Ranging (TWR) :
1. Ancre A envoie un paquet de sync au temps t_A (enregistre dans l’horloge de A)
2. Ancre B recoit a t_B = t_A + delta_AB + offset_BA
3. Ancre B repond au temps t_B’ (enregistre dans l’horloge de B)
4. Ancre A recoit la reponse a t_A’ = t_B’ + delta_BA + offset_AB
Ou delta est le delai de propagation et offset est le decalage d’horloge entre A et B.
Estimation du decalage d’horloge :
offset = [(t_B – t_A) – (t_A’ – t_B’)] / 2
Estimation du delai de propagation (en supposant un chemin symetrique) :
delta = [(t_B – t_A) + (t_A’ – t_B’)] / 4
Cela elimine a la fois le decalage d’horloge et le delai de propagation, obtenant une precision de synchronisation limitee par la gigue d’horodatage et l’asymetrie.
| Parametre | Valeur typique |
|---|---|
| Precision de synchronisation | 100-500 ns (depend de la gigue) |
| Taux de mise a jour | 1-10 Hz |
| Overhead RF | 2 paquets par echange de sync |
| Sans cablage | Oui |
| Evolutivite | Bonne (synchronisation par relay mesh) |
Limitation : TWR necessite une communication bidirectionnelle. Si les ancres ne font qu’ecouter (recepteurs TDOA passifs), la synchronisation sans fil doit utiliser un tag de reference a position connue diffusant des impulsions de sync periodiques, que les ancres horodatent pour calculer leur decalage relatif.
3.3 Hybride : Tag de reference sans fil
Placer un tag de reference a une position topographiee. Il emet des paquets de sync a intervalles connus. Chaque ancre horodate l’arrivee et calcule :
offset_i = t_measured_i – t_expected_i
ou t_expected_i = t_broadcast + d_ref_to_anchor_i / c.
Comme la position du tag de reference et les positions des ancres sont connues, le temps d’arrivee attendu est deterministe. La difference donne le decalage d’horloge de l’ancre par rapport a la base de temps de reference.
| Parametre | Valeur typique |
|---|---|
| Precision de synchronisation | 50-200 ns |
| Nombre de tags de reference | 1 par zone de sync |
| Overhead RF | 1 paquet par cycle de sync |
| Couverture | Ligne de vue vers toutes les ancres |
3.4 Tableau comparatif
| Methode | Precision sync | Cablage | Cout | Evolutivite | Optimal pour |
|---|---|---|---|---|---|
| PPS (cable) | 10-50 ns | Requis | Eleve | Limitee | Installations fixes haute precision |
| TWR (sans fil) | 100-500 ns | Aucun | Faible | Bonne | Deploiements flexibles |
| Tag de reference | 50-200 ns | Aucun | Faible | Bonne | Environnements interieurs mixtes |
| NTP/PTP (Ethernet) | 1-10 us | Ethernet | Moyen | Bonne | TDOA grossier uniquement |
4. Horodatage : Ou et Comment
4.1 Points d’horodatage des paquets BLE
Il y a trois points d’horodatage possibles dans la chaine de reception BLE :
Niveau PHY (detection SFD) : La radio detecte le Start of Frame Delimiter (SFD) a la fin du preambule. C’est le point le plus tot et le plus precis ; l’horodatage se fait au niveau materiel, generalement avec 1-2 us d’incertitude due a la correlation du preambule.
Niveau couche liaison (fin de paquet) : Le paquet complet (y compris CRC) est recu. Cela se produit 20-500 us apres le SFD, selon la longueur du paquet. Plus pratique (le firmware a le paquet complet) mais le decalage temporel depend de la longueur du paquet, qui varie.
Niveau application (callback API) : La pile BLE notifie l’application apres traitement. Cela ajoute 100 us a plusieurs millisecondes de latence logicielle, qui est variable et inadaptee au TDOA.
Recommande : Horodatage au SFD (niveau PHY) en utilisant l’horodatage du END_EVENT de la radio. Sur nRF52/nRF53, le peripherique RADIO declenche EVENTS_ADDRESS lorsque le champ d’adresse correspond (qui suit le preambule+SFD). Le TIMER capture cet evenement via PPI, donnant un horodatage materiel avec une resolution de 16 MHz.
4.2 Sources de gigue d’horodatage
| Source | Gigue (1 sigma) | Mitigation |
|---|---|---|
| Correlation de preambule | 0,5-1,0 us | Utiliser PHY 2 MB/s (preambule plus court) |
| Latence d’interruption radio | 0,1-0,5 us | Capture materielle PPI (sans CPU) |
| Quantification du timer | 31,25 ns (32 MHz) | Timer 16 MHz avec 62,5 ns ; acceptable |
| Erreur de frequence du quartz | 10-50 ppm -> accumule | Resynchronisation periodique |
| Derive thermique | 0,5 ppm/C -> accumule | Quartz compense en temperature (TCXO) |
La source dominante de gigue est la correlation du preambule (0,5-1,0 us). Cela signifie que la gigue d’horodatage TDOA BLE est fondamentalement limitee a ~1 us, pas a des nanosecondes.
4.3 Resolution pratique d’horodatage
Avec 1 us de gigue, l’erreur equivalente de distance est de 300 m. Cela semble catastrophique pour le positionnement interieur. Cependant, le TDOA utilise la difference de deux horodatages, et si les deux ancres ont une gigue corrolee (meme radio, meme modele de preambule), la gigue differentielle peut etre inferieure, environ racine(2) x sigma_gigue ~ 1,4 us.
Cela signifie que la precision du positionnement TDOA BLE est fondamentalement limitee a ~3-5 metres avec le PHY BLE standard, independamment de la qualite de synchronisation d’horloge. Cela est coherent avec les resultats de recherche publies et les specifications de systemes commerciaux.
5. Impact de la derive de l’oscillateur a quartz
5.1 Accumulation de l’erreur de frequence
L’horloge locale de chaque ancre derive par rapport a la reference. Entre les mises a jour de sync, l’erreur temporelle accumulee augmente :
delta_t_error = ppm x delta_t_sync
Pour un quartz de 20 ppm avec un intervalle de sync de 1 seconde :
delta_t_error = 20×10^-6 x 1 s = 20 us par seconde
Cela correspond a 6 km d’erreur de distance par seconde de derive, totalement inacceptable. Memes avec des mises a jour de sync a 10 Hz :
delta_t_error = 20×10^-6 x 0,1 s = 2 us -> 600 m d’erreur de distance
5.2 Impact du choix du quartz
| Type de quartz | Precision (ppm) | Coef. de temperature | Cout | Intervalle sync necessaire (<100 ns derive) |
|---|---|---|---|---|
| XO standard (32 MHz) | ±20-50 ppm | 0,05 ppm/C | $0,10 | 2-5 ms (impraticable) |
| TCXO | ±0,5-2 ppm | 0,01 ppm/C | $0,80 | 50-200 ms |
| OCXO | ±0,01 ppm | 0,001 ppm/C | $5+ | 5-10 s |
| Atomique (CSAC) | ±0,001 ppm | — | $1500 | Minutes |
Pour le TDOA BLE pratique, un TCXO est le compromis optimal. Avec une precision de ±2 ppm et une sync a 10 Hz :
delta_t_error = 2×10^-6 x 0,1 s = 200 ns -> 60 m d’erreur de distance
Encore eleve, mais combine avec la gigue d’horodatage (dominante), le budget d’erreur total est :
sigma_total = sqrt(sigma_sync^2 + sigma_timestamp^2) = sqrt(200^2 + 1000^2) ~ 1020 ns ~ 306 m d’erreur de distance
La gigue d’horodatage (1 us) domine sur l’erreur de sync (200 ns) par 5:1, donc ameliorer davantage le quartz donne des rendements decroissants.
5.3 Derive induite par la temperature
Un quartz standard de 32 MHz a une caracteristique de temperature parabolique :
delta_f/f = k x (T – T_0)^2
ou k ~ 0,04 ppm/C^2 et T_0 est la temperature de retournement (generalement 25C). A 10C du retournement :
delta_f/f = 0,04 x 100 = 4 ppm
C’est significatif. Sur 0,1 secondes : 400 ns de derive. Le TCXO compense cela a ~0,1 ppm sur toute la plage de temperature industrielle.
6. Architecture d’implementation
6.1 Conception d’ancre TDOA nRF52833/nRF5340
Materiel :
- nRF52833 ou nRF5340 avec TCXO (par ex. Epson TG-5032CGN, ±0,5 ppm)
- Entree PPS via GPIO (optionnel, pour sync cablee)
- Backhaul Ethernet ou Wi-Fi pour le calcul de position
Firmware :
- Radio BLE en mode scanner (scan continu du canal de publicite)
- Connexion PPI : RADIO.EVENTS_ADDRESS -> TIMER.CAPTURE
- Horodatage stocke dans un tampon circulaire RAM avec les metadonnees du paquet
- Protocole de sync : TWR avec ancres voisines toutes les 100 ms
Chaine de capture d’horodatage :
Radio recoit paquet -> EVENTS_ADDRESS se declenche
-> PPI declenche TIMER0.CAPTURE[0] (timer 16 MHz)
-> Stocker {timestamp, RSSI, channel, packet_data}
-> Transferer au moteur de position via backhaul
6.2 Moteur de position
Le moteur de position s’execute sur un serveur (ou passerelle edge). Il recoit des paquets horodates de toutes les ancres et calcule le TDOA :
1. Regrouper : Collecter tous les horodatages pour le meme evenement de publicite (correspondance par AdvA + hachage de charge utile)
2. Differentiel : Calculer t_i – t_ref pour chaque ancre par rapport a une ancre de reference
3. Corriger : Appliquer la correction de decalage de sync du protocole de sync
4. Resoudre : Solveur hyperbolique des moindres carres (Gauss-Newton ou Levenberg-Marquardt)
5. Valider : Rejeter les valeurs aberrantes (residuel TDOA > 3 sigma)
6.3 Impact du choix de canal
BLE fait de la publicite sur trois canaux : 37 (2402 MHz), 38 (2440 MHz), 39 (2480 MHz). La publicite du tag est envoyee sur les trois sequentiellement (chacun separe de ≤10 ms). Chaque canal a des caracteristiques de trajets multiples differentes.
Meilleure pratique : Pour le TDOA, utiliser uniquement le premier evenement de canal de publicite par paire d’ancres, pour eviter les variations de delai de propagation dependantes du canal. Alternativement, calculer le TDOA separement pour chaque canal et prendre la mediane.
7. Budget de precision de bout en bout
| Source d’erreur | Valeur 1 sigma | Equivalent distance | Notes |
|---|---|---|---|
| Gigue horodatage (preambule) | 1,0 us | 300 m | Dominant ; limitation PHY BLE |
| Erreur sync horloge (TCXO, 10 Hz) | 200 ns | 60 m | Avec sync sans fil TWR |
| Trajets multiples (NLOS) | 0,5-2,0 us | 150-600 m | Dependant de l’environnement |
| Erreur topographie ancres | 0,1 m | 0,1 m | Negligeable si topographiee |
| Derive thermique (TCXO) | 50 ns | 15 m | Entre mises a jour sync |
| Total (RSS) | ~1,5 us | ~450 m | Avant gain geometrique |
Cependant, l’erreur TDOA est une erreur de difference de distance, pas de distance, et l’erreur de position depend de la geometrie (GDOP). Avec une gigue effective amelioree a 300 ns (PHY code 2 MB/s, surechantillonnage, moyenne de paquets) et GDOP ~ 0,5-1,0 avec un bon placement des ancres :
sigma_position ~ 3×10^8 x 300×10^-9 x 0,7 ~ 63 m -> converge vers 2-5 m en environnement reel
7.1 Attentes realistes de precision
| Configuration | Methode sync | Precision attendue | Cas d’usage |
|---|---|---|---|
| BLE standard, XO, sync sans fil | TWR 10 Hz | 5-10 m | Suivi d’actifs |
| BLE standard, TCXO, sync sans fil | TWR 10 Hz | 3-5 m | Navigation |
| PHY code, TCXO, sync PPS | PPS cable | 1-2 m | Interieur haute precision |
| BLE 5.1 CTE, TCXO, sync PPS | PPS cable | 0,5-1 m | Recherche / RTLS |
8. Comparaison TDOA vs AoA vs RSSI
| Parametre | TDOA | AoA (BLE 5.1 CTE) | RSSI |
|---|---|---|---|
| Ancres minimum | 3 (2D) / 4 (3D) | 2 (2D) / 3 (3D) | 3+ |
| Sync horloge requise | Oui (sub-us) | Non (par ancre) | Non |
| Materiel special | TCXO, cable sync | Reseau d’antennes (4+ elements) | Aucun |
| Precision typique | 2-5 m | 0,5-1 m | 3-5 m |
| Complexite du tag | Faible (BLE standard) | Faible (BLE standard) | Minimale |
| Cout de l’ancre | Moyen | Eleve (reseau + switch RF) | Faible |
| Sensibilite aux trajets multiples | Elevee (timing) | Moyenne (phase) | Elevee |
| Consommation (ancre) | Moyenne | Elevee (traitement CTE) | Faible |
| Conformite norme | BLE 4.2+ | BLE 5.1+ | BLE 4.0+ |
9. Recommandations de deploiement
Pour une precision de 3-5 metres (majorite du suivi interieur) :
- Utiliser des ancres equipees de TCXO
- Synchronisation sans fil TWR a 10 Hz
- 4+ ancres par zone, espacees de 8-15 m
- PHY 2 MB/s pour un preambule plus court
- Moteur de position avec rejet des valeurs aberrantes
Pour une precision de 1-2 metres (RTLS haute valeur) :
- Synchronisation PPS cablee vers toutes les ancres
- TCXO sur toutes les ancres et le tag
- PHY code (125 kbps ou 500 kbps)
- 5+ ancres par zone, positions topographiees
- Filtre de Kalman sur la sortie de position
Pour une precision sub-metrique :
- Abandonner le TDOA BLE ; utiliser BLE 5.1 AoA ou UWB
- L’UWB (par ex. DW1000/QM33820) fournit nativement l’horodatage nanoseconde
10. Conclusion
Le positionnement TDOA base sur BLE est fondamentalement limite par la precision d’horodatage de la couche PHY (~1 us au niveau de correlation du preambule). La synchronisation d’horloge, bien que necessaire, n’est pas le goulot d’etranglement une fois que le TCXO et la synchronisation sans fil a 10 Hz sont employes : la gigue d’horodatage domine.
Pour les deploiements pratiques : une precision de 3-5 metres est realisable avec des ancres TCXO et une synchronisation sans fil. Pousser sous les 2 metres necessite une synchronisation PPS cablee et un PHY code, avec des rendements decroissants. La precision sub-metrique necessite une technologie differente (UWB ou BLE 5.1 AoA avec reseaux d’antennes).
La decision d’ingenierie cle est de savoir si le cout d’infrastructure supplementaire (TCXO, cablage de sync, topographie) est justifie par l’amelioration de precision par rapport aux systemes bases sur RSSI, qui atteignent 3-5 metres sans exigences de synchronisation et avec du materiel standard.
