Ping-Pong-Ping
Mesure symétrique de distance par échange acoustique 3-way — DS-TWR (Double-Sided Two-Way Ranging)
Le problème
En USBL classique, deux modes coexistent pour mesurer la distance entre deux transducteurs immergés :
- Horloges pré-synchronisées — chaque appareil horodate l'émission et la réception. Précis mais nécessite une synchro fine (drift d'horloge à compenser).
- Mode transpondeur — le maître envoie un ping, l'esclave répond. Le maître mesure le temps aller-retour. Seul le maître connaît la distance.
Si les deux appareils doivent connaître la distance simultanément (ex : deux véhicules autonomes coopératifs, swarm BlueROV, balise mobile/mobile), le mode transpondeur classique est asymétrique.
Le principe — 3 transmissions, 2 mesures identiques
On échange trois messages au lieu de deux. Chaque appareil mesure son propre turnaround local (le temps entre réception d'un message et émission du suivant), puis l'encode dans la trame renvoyée. Les deux côtés peuvent alors retirer ce délai du round-trip qu'ils observent → ils calculent le même TOF (Time of Flight) sans avoir jamais synchronisé leurs horloges.
Séquence
| # | Émetteur | Contenu | Mesure côté récepteur |
|---|---|---|---|
| 1 | A → B | Ping (id session) | B note T1B |
| 2 | B → A | Pong + turnaround_B | A note T2A, calcule TOF |
| 3 | A → B | Ping2 + turnaround_A | B note T3B, calcule TOF |
Formule
turnaround_B = T_send_pong_B − T_recv_ping1_B (mesuré par B, encodé dans pong) turnaround_A = T_send_ping2_A − T_recv_pong_A (mesuré par A, encodé dans ping2) round_trip_A = T_recv_pong_A − T_send_ping1_A (mesuré par A localement) round_trip_B = T_recv_ping2_B − T_send_pong_B (mesuré par B localement) TOF_A = (round_trip_A − turnaround_B) / 2 TOF_B = (round_trip_B − turnaround_A) / 2 distance = TOF · c avec c ≈ 1500 m/s en eau de mer
Animation continue — B mobile
B oscille en distance par rapport à A (fixe). Les cycles ping-pong-ping s'enchaînent en boucle ; chaque cycle complet ajoute un point de mesure au plot. La distance vraie (rouge pointillé) est comparée aux distances mesurées côté A (cyan) et côté B (orange).
Ce qu'il faut observer
- Concordance A et B — les deux mesures suivent la courbe vraie. C'est le bénéfice principal du 3-way : deux observateurs, une seule vérité.
- Petit retard de phase — chaque mesure est ancrée au début de cycle (instant du
ping1). Quand B se déplace vite, la mesure publiée correspond à la position de B il y a~3·TOF + turnaroundssecondes (jusqu'à 6 s à 3 km). Visible quand la période d'oscillation est courte. - Biais lié au mouvement de B : négligeable en pratique — pour un AUV à 1 kt (≈ 0,5 m/s) et c = 1500 m/s, B se déplace ~1 m pendant un TOF de 2 s à 3 km. Très en-dessous du bruit USBL natif (typiquement 0,5–2 % de la slant range, soit 15–60 m à 3 km). Même à 5 kt c'est ~5 m, encore noyé dans le bruit. Donc en ops AUV typiques (1–3 kt), oublier ce biais ; il ne devient significatif qu'au-delà de ~10 kt sur des cibles très éloignées.
Multi-AUV — adressage séquentiel + écoute passive
Cas d'école standard : un USV de surface (master, équipé GPS) interroge ses AUVs en plongée (slaves) un par un. L'USV envoie un ping ciblé sur l'ID d'un AUV ; seul l'AUV adressé répond avec son pong. Pas de ping2 : seul l'USV a besoin de la distance (il pilote la trilatération depuis la surface), donc SS-TWR suffit.
Bonus : écoute passive (OWR). Le médium est partagé — quand l'USV émet le ping, tous les AUVs l'entendent, pas que la cible. Les AUVs non adressés ne répondent pas (silence radio), mais ils peuvent extraire leur propre TOF à condition de partager une référence temporelle avec l'USV (horloges disciplinées GPS / AOA pré-mission, ou ping qui embarque T_send dans sa trame). Chacun calcule : distance = (T_recv_local − T_send_USV) · c. C'est de la one-way ranging (OWR), comme GPS.
Conséquence : 1 ping → N mesures de distance USV↔AUV (1 active TWR pour la cible, N−1 passives OWR pour les autres). Le médium reste libre, et l'USV peut maintenir un fix sur tout le swarm en parallèle. Visible dans l'anim : tous les AUVs affichent 📡 passive OWR ou ✓ active TWR à chaque cycle, et tous les points apparaissent dans le plot.
Exemple chiffré (cas statique)
Distance vraie : 3000 m. Célérité : 1500 m/s → TOF unidirectionnel = 2.000 s.
A envoie ping1 à T_A = 0.000 s B reçoit ping1 à T_B = 2.000 s (TOF = 2 s, mais B ignore T_A) B envoie pong à T_B = 2.050 s → turnaround_B = 50 ms encodé dans pong A reçoit pong à T_A = 4.050 s → round_trip_A = 4.050 s → TOF_A = (4.050 − 0.050) / 2 = 2.000 s ✓ → distance = 2.000 × 1500 = 3000 m ✓ A envoie ping2 à T_A = 4.130 s → turnaround_A = 80 ms encodé dans ping2 B reçoit ping2 à T_B = 6.130 s → round_trip_B = 6.130 − 2.050 = 4.080 s → TOF_B = (4.080 − 0.080) / 2 = 2.000 s ✓ → distance = 3000 m ✓
Cas d'usage
- Swarm sous-marin — flottille d'AUV / BlueROV qui doivent maintenir une formation. Chacun connaît sa distance aux voisins en parallèle.
- Mobile-mobile — deux plongeurs ou deux balises mobiles, sans station fixe maître.
- Redondance / cross-check — deux mesures TOF indépendantes (côté A et côté B) doivent être identiques. Un écart trahit un bruit ou un multipath.
- Synchro douce — l'échange permet aussi d'estimer le drift relatif des horloges et d'éviter une vraie synchro hardware.
Limites
- Latence du DS-TWR — 3 transmissions au lieu de 2 = ~50 % de cycle en plus. À 3 km, ~6 s par mesure (DS-TWR symétrique) vs ~4 s pour SS-TWR. Inadapté à un tracking rapide haut débit ; pour du multi-cible, raccourcir la portée ou utiliser SS-TWR si seul un côté a besoin de la distance.
- Bande passante — il faut encoder
turnarounddans la trame acoustique (typiquement 16 ou 32 bits). Coût négligeable mais non nul. - Drift d'horloge non-linéaire — sur des séquences longues (>10 s) ou des oscillateurs très bas de gamme, l'hypothèse de linéarité casse. DS-TWR le mitige beaucoup mieux que SS-TWR mais ne l'élimine pas.
- Pas de TDOA — ce mode donne la distance, pas l'angle. Il complète un USBL (qui mesure l'azimut) mais ne le remplace pas.
Référence terrestre — DecaWave UWB
Ce schéma est exactement celui qu'utilisent les puces UWB DecaWave DW1000 / DW3000 (Apple AirTag, Qorvo, etc.) sous le nom DS-TWR. La transposition acoustique change uniquement l'échelle : célérité 1500 m/s vs 3·10⁸ m/s, et turnaround mesuré en ms plutôt qu'en ns. La logique de calcul est identique.