
El posicionamiento por Time Difference of Arrival (TDOA) es uno de los enfoques mas precisos en localizacion indoor basada en BLE, pero impone el requisito mas exigente al sistema: todos los beacons receptores (anclas) deben compartir una referencia de tiempo comun con precision sub-microsegundo. Este articulo desglosa la arquitectura de sincronizacion, los metodos de timestamping, el impacto de la deriva del oscilador de cristal y el presupuesto de precision de extremo a extremo que se puede esperar realistamente.
1. Por que TDOA necesita sincronizacion de reloj
En el posicionamiento basado en RSSI, cada beacon mide independientemente la potencia de la senal y la reporta a un servidor. No se necesita un reloj comun porque la medicion se basa en amplitud, no en tiempo.
En TDOA, el tag emite un unico advertising BLE. Multiples anclas lo reciben y registran el tiempo de llegada. La diferencia en tiempos de llegada entre dos anclas define una hiperbola. Con tres o mas anclas, la posicion del tag se encuentra en la interseccion de las hiperbolas.
La idea clave: TDOA solo necesita tiempo relativo (la *diferencia* de tiempos), no tiempo absoluto. Sin embargo, todas las anclas deben estar sincronizadas a un reloj comun, porque cualquier offset de tiempo entre anclas contamina directamente la estimacion de posicion.
Un error de tiempo de 1 microsegundo se traduce en aproximadamente 300 metros de error de rango (velocidad de la luz x 1 us = 300 m). En la practica, los sistemas BLE indoor tienen como objetivo una precision de 1-3 metros, lo que significa que el offset de reloj entre anclas debe mantenerse por debajo de ~10 nanosegundos.
2. Matematicas del posicionamiento TDOA
2.1 Localizacion hiperbolica
Dado un tag en posicion desconocida (x, y) y anclas en posiciones conocidas (x_i, y_i):
t_i = t_0 + d_i / c
donde t_i es el tiempo de llegada en la ancla i, t_0 es el tiempo de emision (desconocido), d_i es la distancia del tag a la ancla i, y c es la velocidad de la luz (3 x 10^8 m/s).
Tomando la diferencia entre las anclas i y j:
t_i – t_j = (d_i – d_j) / c
Esto elimina t_0. La cantidad (d_i – d_j) define una hiperbola con focos en las anclas i y j. Con N anclas, se obtienen N-1 mediciones TDOA independientes (referenciadas a una ancla).
2.2 Anclas minimas
- Posicionamiento 2D: minimo 3 anclas (2 mediciones TDOA -> 2 hiperbolas -> 1 punto de interseccion)
- 2D redundante: 4+ anclas para solucion sobre-determinada por minimos cuadrados y deteccion de errores
- Posicionamiento 3D: minimo 4 anclas (3 mediciones TDOA)
2.3 Cota inferior de Cramer-Rao (CRLB)
La cota teorica inferior para la varianza de posicionamiento es:
var(position) >= (c^2 / sigma_t^2) x tr(F^-1)
donde sigma_t es la desviacion estandar del timestamping y F es la matriz de informacion de Fisher. Para un despliegue tipico de 4 anclas con 10 ns de jitter de timestamping y buena geometria (GDOP ~ 2), el CRLB es aproximadamente:
sigma_position >= c x sigma_t x GDOP = 3×10^8 x 10×10^-9 x 2 ~ 6 m
Esto nos dice: incluso con sincronizacion perfecta, 10 ns de jitter de timestamping limita la precision a ~6 metros en una geometria tipica. TDOA sub-metrico requiere timestamping sub-nanosegundo, lo cual el PHY BLE no puede proporcionar nativamente.
3. Enfoques de sincronizacion de reloj
3.1 Sincronizacion por cable (PPS / disparo por hardware)
El metodo mas robusto: un reloj maestro genera una senal PPS (Pulse Per Second) de 1 Hz distribuida por cable a todas las anclas. Cada ancla captura su contador de timer de radio local en el flanco del PPS.
| Parametro | Valor tipico |
|---|---|
| Precision de sincronizacion | 10-50 ns |
| Longitud maxima de cable | ~50 m (LVDS) / ~10 m (GPIO) |
| Skew de cable | ~5 ns/m (coaxial), ~1 ns/m (LVDS par trenzado) |
| Coste | Alto (cableado + amplificador de distribucion) |
| Escalabilidad | Limitada por infraestructura de cable |
Implementacion en nRF52833/nRF5340: Enrutar PPS a un canal GPIOTE, configurarlo para disparar una captura de TIMER via PPI (Programmable Peripheral Interconnect). El timer funciona a 16 MHz (resolucion 62.5 ns), por lo que la captura PPS da alineacion temporal absoluta. Entre flancos PPS, el cristal local de 32 MHz proporciona la base de tiempo.
3.2 Sincronizacion inalambrica (Beacon a Beacon)
Sin cables. Las anclas intercambian periodicamente paquetes de sincronizacion. El desafio: el paquete de sincronizacion en si mismo tiene un retardo de propagacion desconocido que debe estimarse y compensarse.
Protocolo de sincronizacion Two-Way Ranging (TWR):
1. Ancla A envia paquete de sincronizacion en el tiempo t_A (registrado en el reloj de A)
2. Ancla B recibe en t_B = t_A + delta_AB + offset_BA
3. Ancla B responde en t_B’ (registrado en el reloj de B)
4. Ancla A recibe la respuesta en t_A’ = t_B’ + delta_BA + offset_AB
Donde delta es el retardo de propagacion y offset es el offset de reloj entre A y B.
Estimacion del offset de reloj:
offset = [(t_B – t_A) – (t_A’ – t_B’)] / 2
Estimacion del retardo de propagacion (asumiendo camino simetrico):
delta = [(t_B – t_A) + (t_A’ – t_B’)] / 4
Esto elimina tanto el offset de reloj como el retardo de propagacion, obteniendo una precision de sincronizacion limitada por el jitter de timestamping y la asimetria.
| Parametro | Valor tipico |
|---|---|
| Precision de sincronizacion | 100-500 ns (depende del jitter) |
| Tasa de actualizacion | 1-10 Hz |
| Overhead de RF | 2 paquetes por intercambio de sincronizacion |
| Sin cableado | Si |
| Escalabilidad | Buena (sincronizacion por relay mesh) |
Limitacion: TWR requiere comunicacion bidireccional. Si las anclas solo escuchan (receptores TDOA pasivos), la sincronizacion inalambrica debe usar un tag de referencia en posicion conocida que transmita pulsos de sincronizacion periodicos, que las anclas timestamping para calcular su offset relativo.
3.3 Hibrido: Tag de referencia sin cable
Colocar un tag de referencia en una posicion topografiada. Emite paquetes de sincronizacion a intervalos conocidos. Cada ancla timestamping la llegada y calcula:
offset_i = t_measured_i – t_expected_i
donde t_expected_i = t_broadcast + d_ref_to_anchor_i / c.
Como la posicion del tag de referencia y las posiciones de las anclas son conocidas, el tiempo de llegada esperado es determinista. La diferencia da el offset de reloj de la ancla relativo a la base de tiempo de referencia.
| Parametro | Valor tipico |
|---|---|
| Precision de sincronizacion | 50-200 ns |
| Numero de tags de referencia | 1 por zona de sincronizacion |
| Overhead de RF | 1 paquete por ciclo de sincronizacion |
| Cobertura | Linea de vista a todas las anclas |
3.4 Tabla comparativa
| Metodo | Precision sync | Cableado | Coste | Escalabilidad | Mejor para |
|---|---|---|---|---|---|
| PPS (cable) | 10-50 ns | Requerido | Alto | Limitada | Instalaciones fijas de alta precision |
| TWR (inalambrico) | 100-500 ns | Ninguno | Bajo | Buena | Despliegues flexibles |
| Tag de referencia | 50-200 ns | Ninguno | Bajo | Buena | Entornos indoor mixtos |
| NTP/PTP (Ethernet) | 1-10 us | Ethernet | Medio | Buena | Solo TDOA grueso |
4. Timestamping: Donde y Como
4.1 Puntos de timestamping de paquetes BLE
Hay tres posibles puntos de timestamping en la cadena de recepcion BLE:
Nivel PHY (deteccion SFD): La radio detecta el Start of Frame Delimiter (SFD) al final del preambulo. Este es el punto mas temprano y preciso; el timestamping ocurre a nivel de hardware, tipicamente con 1-2 us de incertidumbre debido a la correlacion del preambulo.
Nivel link layer (fin de paquete): Se recibe el paquete completo (incluyendo CRC). Esto ocurre 20-500 us despues del SFD, dependiendo de la longitud del paquete. Mas conveniente (el firmware tiene el paquete completo) pero el offset temporal depende de la longitud del paquete, que varia.
Nivel aplicacion (callback API): La pila BLE notifica a la aplicacion despues del procesamiento. Esto anade 100 us a varios milisegundos de latencia de software, que es variable y no apto para TDOA.
Recomendado: Timestamping en SFD (nivel PHY) usando el timestamp del END_EVENT del radio. En nRF52/nRF53, el periferico RADIO dispara EVENTS_ADDRESS cuando el campo de direccion coincide (que sigue al preambulo+SFD). El TIMER captura este evento via PPI, dando un timestamp de hardware con resolucion de 16 MHz.
4.2 Fuentes de jitter de timestamping
| Fuente | Jitter (1 sigma) | Mitigacion |
|---|---|---|
| Correlacion de preambulo | 0.5-1.0 us | Usar PHY 2 MB/s (preambulo mas corto) |
| Latencia de interrupcion de radio | 0.1-0.5 us | Captura hardware PPI (sin CPU) |
| Cuantizacion del timer | 31.25 ns (32 MHz) | Timer 16 MHz con 62.5 ns; aceptable |
| Error de frecuencia de cristal | 10-50 ppm -> acumula | Resincronizacion periodica |
| Deriva termica | 0.5 ppm/C -> acumula | Cristal compensado en temperatura (TCXO) |
La fuente dominante de jitter es la correlacion del preambulo (0.5-1.0 us). Esto significa que el jitter de timestamping TDOA BLE esta fundamentalmente limitado a ~1 us, no a nanosegundos.
4.3 Resolucion practica de timestamping
Con 1 us de jitter, el error equivalente de rango es 300 m. Esto parece catastrofico para posicionamiento indoor. Sin embargo, TDOA usa la diferencia de dos timestamps, y si ambas anclas tienen jitter correlacionado (mismo radio, mismo patron de preambulo), el jitter diferencial puede ser menor, aproximadamente raiz(2) x sigma_jitter ~ 1.4 us.
Esto significa que la precision del posicionamiento TDOA BLE esta fundamentalmente limitada a ~3-5 metros con PHY BLE estandar, independientemente de la calidad de sincronizacion de reloj. Esto es consistente con resultados de investigacion publicados y especificaciones de sistemas comerciales.
5. Impacto de la deriva del oscilador de cristal
5.1 Acumulacion del error de frecuencia
El reloj local de cada ancla deriva respecto a la referencia. Entre actualizaciones de sincronizacion, el error temporal acumulado crece:
delta_t_error = ppm x delta_t_sync
Para un cristal de 20 ppm con intervalo de sincronizacion de 1 segundo:
delta_t_error = 20×10^-6 x 1 s = 20 us por segundo
Esto corresponde a 6 km de error de rango por segundo de deriva, completamente inaceptable. Incluso con actualizaciones de sincronizacion a 10 Hz:
delta_t_error = 20×10^-6 x 0.1 s = 2 us -> 600 m de error de rango
5.2 Impacto de la seleccion de cristal
| Tipo de cristal | Precision (ppm) | Coef. de temperatura | Coste | Intervalo sync necesario (<100 ns deriva) |
|---|---|---|---|---|
| XO estandar (32 MHz) | ±20-50 ppm | 0.05 ppm/C | $0.10 | 2-5 ms (impracticable) |
| 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 |
| Atomico (CSAC) | ±0.001 ppm | — | $1500 | Minutos |
Para TDOA BLE practico, un TCXO es el punto optimo. Con precision ±2 ppm y sincronizacion a 10 Hz:
delta_t_error = 2×10^-6 x 0.1 s = 200 ns -> 60 m de error de rango
Sigue siendo alto, pero combinado con el jitter de timestamping (dominante), el presupuesto de error total es:
sigma_total = sqrt(sigma_sync^2 + sigma_timestamp^2) = sqrt(200^2 + 1000^2) ~ 1020 ns ~ 306 m de error de rango
El jitter de timestamping (1 us) domina sobre el error de sincronizacion (200 ns) por 5:1, por lo que mejorar el cristal mas alla tiene rendimientos decrecientes.
5.3 Deriva inducida por temperatura
Un cristal de 32 MHz estandar tiene una caracteristica de temperatura parabolica:
delta_f/f = k x (T – T_0)^2
donde k ~ 0.04 ppm/C^2 y T_0 es la temperatura de inflexion (tipicamente 25C). A 10C de la inflexion:
delta_f/f = 0.04 x 100 = 4 ppm
Esto es significativo. En 0.1 segundos: 400 ns de deriva. El TCXO compensa esto a ~0.1 ppm en todo el rango de temperatura industrial.
6. Arquitectura de implementacion
6.1 Diseno de ancla TDOA nRF52833/nRF5340
Hardware:
- nRF52833 o nRF5340 con TCXO (p.ej., Epson TG-5032CGN, ±0.5 ppm)
- Entrada PPS via GPIO (opcional, para sincronizacion por cable)
- Backhaul Ethernet o Wi-Fi para computacion de posicion
Firmware:
- Radio BLE en modo scanner (escaneo continuo de canal de advertising)
- Conexion PPI: RADIO.EVENTS_ADDRESS -> TIMER.CAPTURE
- Timestamp almacenado en buffer circular RAM con metadatos del paquete
- Protocolo de sincronizacion: TWR con anclas vecinas cada 100 ms
Cadena de captura de timestamp:
Radio recibe paquete -> EVENTS_ADDRESS se dispara
-> PPI dispara TIMER0.CAPTURE[0] (timer 16 MHz)
-> Almacenar {timestamp, RSSI, channel, packet_data}
-> Reenviar al motor de posicion via backhaul
6.2 Motor de posicion
El motor de posicion se ejecuta en un servidor (o gateway edge). Recibe paquetes con timestamp de todas las anclas y computa TDOA:
1. Agrupar: Recopilar todos los timestamps del mismo evento de advertising (coincidir por AdvA + hash de payload)
2. Diferencial: Calcular t_i – t_ref para cada ancla respecto a una ancla de referencia
3. Corregir: Aplicar correccion de offset de sincronizacion del protocolo de sync
4. Resolver: Solver hiperbolico de minimos cuadrados (Gauss-Newton o Levenberg-Marquardt)
5. Validar: Rechazar outliers (residual TDOA > 3 sigma)
6.3 Impacto de la seleccion de canal
BLE hace advertising en tres canales: 37 (2402 MHz), 38 (2440 MHz), 39 (2480 MHz). El advertising del tag se envia en los tres secuencialmente (separados por ≤10 ms). Cada canal tiene diferentes caracteristicas de multipath.
Mejor practica: Usar solo el primer evento de canal de advertising por par de anclas para TDOA, para evitar variaciones de retardo de propagacion dependientes del canal. Alternativamente, computar TDOA separadamente para cada canal y tomar la mediana.
7. Presupuesto de precision de extremo a extremo
| Fuente de error | Valor 1 sigma | Equivalente de rango | Notas |
|---|---|---|---|
| Jitter timestamping (preambulo) | 1.0 us | 300 m | Dominante; limitacion PHY BLE |
| Error sync reloj (TCXO, 10 Hz) | 200 ns | 60 m | Con sync inalambrica TWR |
| Multipath (NLOS) | 0.5-2.0 us | 150-600 m | Dependiente del entorno |
| Error topografia anclas | 0.1 m | 0.1 m | Despreciable si topografiado |
| Deriva termica (TCXO) | 50 ns | 15 m | Entre actualizaciones sync |
| Total (RSS) | ~1.5 us | ~450 m | Antes de ganancia geometrica |
Sin embargo, el error TDOA es un error de diferencia de rango, no de rango, y el error de posicion depende de la geometria (GDOP). Con jitter efectivo mejorado a 300 ns (PHY codificado 2 MB/s, oversampling, promedio de paquetes) y GDOP ~ 0.5-1.0 con buena colocacion de anclas:
sigma_position ~ 3×10^8 x 300×10^-9 x 0.7 ~ 63 m -> converge a 2-5 m en entorno real
7.1 Expectativas realistas de precision
| Configuracion | Metodo sync | Precision esperada | Caso de uso |
|---|---|---|---|
| BLE estandar, XO, sync inalambrico | TWR 10 Hz | 5-10 m | Tracking de activos |
| BLE estandar, TCXO, sync inalambrico | TWR 10 Hz | 3-5 m | Navegacion |
| PHY codificado, TCXO, sync PPS | PPS cable | 1-2 m | Indoor alta precision |
| BLE 5.1 CTE, TCXO, sync PPS | PPS cable | 0.5-1 m | Investigacion / RTLS |
8. Comparacion TDOA vs AoA vs RSSI
| Parametro | TDOA | AoA (BLE 5.1 CTE) | RSSI |
|---|---|---|---|
| Anclas minimas | 3 (2D) / 4 (3D) | 2 (2D) / 3 (3D) | 3+ |
| Sync reloj requerido | Si (sub-us) | No (por ancla) | No |
| Hardware especial | TCXO, cable sync | Array de antenas (4+ elementos) | Ninguno |
| Precision tipica | 2-5 m | 0.5-1 m | 3-5 m |
| Complejidad del tag | Baja (BLE estandar) | Baja (BLE estandar) | Minima |
| Coste del ancla | Medio | Alto (array + switch RF) | Bajo |
| Sensibilidad a multipath | Alta (timing) | Media (fase) | Alta |
| Consumo (ancla) | Medio | Alto (procesamiento CTE) | Bajo |
| Cumplimiento de estandar | BLE 4.2+ | BLE 5.1+ | BLE 4.0+ |
9. Recomendaciones de despliegue
Para precision de 3-5 metros (mayoria de tracking indoor):
- Usar anclas con TCXO
- Sincronizacion inalambrica TWR a 10 Hz
- 4+ anclas por zona, espaciadas 8-15 m
- PHY 2 MB/s para preambulo mas corto
- Motor de posicion con rechazo de outliers
Para precision de 1-2 metros (RTLS de alto valor):
- Sincronizacion PPS por cable a todas las anclas
- TCXO en todas las anclas y tag
- PHY codificado (125 kbps o 500 kbps)
- 5+ anclas por zona, posiciones topografiadas
- Filtro de Kalman en salida de posicion
Para precision sub-metrica:
- Abandonar TDOA BLE; usar BLE 5.1 AoA o UWB
- UWB (p.ej., DW1000/QM33820) proporciona timestamping de nanosegundos nativamente
10. Conclusion
El posicionamiento TDOA basado en BLE esta fundamentalmente limitado por la precision de timestamping de la capa PHY (~1 us a nivel de correlacion de preambulo). La sincronizacion de reloj, aunque necesaria, no es el cuello de botella una vez que se emplean TCXO y sincronizacion inalambrica a 10 Hz: el jitter de timestamping domina.
Para despliegues practicos: precision de 3-5 metros es alcanzable con anclas TCXO y sincronizacion inalambrica. Empujar por debajo de 2 metros requiere sincronizacion PPS por cable y PHY codificado, con rendimientos decrecientes. La precision sub-metrica requiere una tecnologia diferente (UWB o BLE 5.1 AoA con arrays de antenas).
La decision de ingenieria clave es si el coste adicional de infraestructura (TCXO, cableado de sincronizacion, topografia) se justifica por la mejora de precision sobre sistemas basados en RSSI, que alcanzan 3-5 metros sin requisitos de sincronizacion y con hardware estandar.
