El posicionamiento indoor sigue siendo una de las aplicaciones de mayor valor para balizas Bluetooth. Las señales GPS se atenúan bajo techos de hormigón, dejando a los sistemas basados en balizas como la principal alternativa indoor. Este artículo compara los dos algoritmos de posicionamiento dominantes — trilateración RSSI y fingerprinting — con datos de precisión real y trade-offs de despliegue.

RSSI y Path Loss

Todo el posicionamiento por baliza se basa en Received Signal Strength Indicator (RSSI), medido en dBm. La relación fundamental entre RSSI y distancia sigue un modelo de path loss log-normal:

RSSI(d) = A - 10 * n * log10(d)

Donde:

  • A: RSSI a 1 metro de distancia de referencia (típicamente -60 a -70 dBm para balizas con CR2032)
  • n: exponente de path loss (2.0 en espacio libre, 2.7–3.5 en oficinas, 4.0+ en espacios industriales)
  • d: distancia en metros

Despejando la distancia:

d = 10 ^ ((A - RSSI) / (10 * n))

El desafío: el RSSI fluctúa ±5–8 dBm en entornos indoor debido a desvanecimiento multitrayecto, absorción corporal y orientación de antena. Un error de 6 dBm a 5 metros se traduce en un error de distancia del 40–60%, haciendo poco fiable la medición cruda de baliza única.

Enfoque 1: Trilateración

La trilateración estima la posición intersectando círculos de distancia de al menos tres balizas. Cada baliza proporciona una estimación de distancia mediante la ecuación de path loss anterior.

Algoritmo

  1. Recopilar RSSI de cada baliza visible (promediar 5–10 muestras para reducir ruido)
  2. Convertir RSSI a distancia usando el modelo de path loss calibrado
  3. Resolver la intersección por mínimos cuadrados de los círculos de distancia

Para balizas en posiciones (xi, yi) con distancias estimadas di, la posición objetivo (x, y) minimiza:

F(x,y) = Σ [(x - xi)² + (y - yi)² - di²]²

Este problema de mínimos cuadrados no lineal se resuelve típicamente mediante iteración Gauss-Newton. La estimación inicial puede usar el centroide de las posiciones de baliza.

Benchmarks de Precisión

Medido en oficina de 12m × 8m con 6 balizas de techo, alimentadas con CR2032, transmitiendo a 0 dBm cada 100 ms:

Escenario Balizas Visibles Error Mediano Percentil 90
Oficina abierta 4–5 1.8 m 3.5 m
Área de cubículos 3–4 2.6 m 5.1 m
Pasillo 2–3 3.2 m 6.8 m
Con sombra corporal 3–4 4.1 m 8.3 m

La precisión se degrada significativamente cuando menos de 3 balizas son visibles o cuando el cuerpo del usuario bloquea la línea de visión.

Requisitos de Calibración

La trilateración requiere calibración por baliza de los parámetros de path loss (A, n). Procedimiento práctico:

  1. Colocar receptor de referencia a 1 m de cada baliza, registrar 100 muestras RSSI, calcular mediana → valor A
  2. Medir RSSI a 2 m, 5 m, 10 m a lo largo de trayectoria despejada
  3. Ajustar n mediante regresión lineal sobre log10(d) vs RSSI
  4. Recalibrar trimestralmente — la caída de voltaje de batería desplaza la potencia TX 1–3 dBm durante el ciclo de vida

Enfoque 2: Fingerprinting

El fingerprinting omite el paso de estimación de distancia. En su lugar, construye un mapa de radio del espacio durante una fase de survey offline, luego compara observaciones RSSI en vivo contra este mapa.

Fase Offline (Survey)

  1. Dividir el plano en cuadrícula (espaciado típico: 1–2 metros)
  2. En cada punto de cuadrícula, recopilar RSSI de todas las balizas visibles durante 10–30 segundos
  3. Almacenar el vector RSSI y lista de IDs de baliza como fingerprint

Una planta de 1000 m² con espaciado de 1 m produce ~1000 fingerprints. Cada fingerprint contiene 5–15 valores RSSI de baliza más metadatos (timestamp, orientación).

Fase Online (Posicionamiento)

El algoritmo de matching más común es Weighted K-Nearest Neighbors (WKNN):

  1. Recopilar vector RSSI en vivo de balizas visibles (ventana de 2–5 segundos)
  2. Calcular similitud (distancia Euclidiana o coeficiente Tanimoto) con todos los fingerprints
  3. Seleccionar los K fingerprints más cercanos (K = 3–5 típico)
  4. Ponderar cada uno por distancia inversa, calcular centroide ponderado de sus posiciones

Benchmarks de Precisión

Mismo espacio de oficina 12m × 8m, 6 balizas, espaciado 1 m, WKNN con K=4:

Escenario Error Mediano Percentil 90 Tiempo Survey
Oficina abierta 1.1 m 2.3 m 2.5 horas
Área de cubículos 1.5 m 3.0 m 3.0 horas
Pasillo 1.3 m 2.8 m 1.5 horas
Con sombra corporal 2.0 m 4.2 m

El fingerprinting supera consistentemente a la trilateración en 30–50% en error mediano, especialmente en entornos con clutter donde el multitrayecto domina. El mapa de radio captura implícitamente patrones multitrayecto que los modelos de path loss no pueden modelar.

Comparación Directa

Factor Trilateración Fingerprinting
Precisión (mediana) 1.8–4.1 m 1.1–2.0 m
Tiempo setup ~30 min por baliza 2–4 horas por planta
Reubicación baliza Recalibrar A,n Re-survey completo
Cambios ambientales Degrada gradualmente Requiere re-survey
Coste computacional Bajo (resolver matriz) Moderado (búsqueda KNN)
Escalabilidad Excelente BD crece linealmente
Min balizas 3 4+ recomendadas

Enfoque Híbrido

Los sistemas de producción a menudo combinan ambas técnicas. Pipeline híbrido común:

  1. Usar trilateración para estimación gruesa (3–5 m de precisión)
  2. Restringir matching de fingerprints a radio de 5 m alrededor de la estimación trilaterada
  3. Aplicar WKNN dentro de este espacio reducido

Esto reduce la búsqueda en BD de ~1000 entradas a ~50, cortando tiempo de cómputo en 80% manteniendo precisión de fingerprinting.

Densidad y Colocación de Balizas

La precisión depende en gran medida de la geometría de balizas. Directrices clave:

  • Densidad: 1 baliza por 25–50 m² para 1–2 m de precisión; 1 por 100 m² para 3–5 m
  • Altura: montaje en techo a 2.5–3.0 m proporciona mejor uniformidad de cobertura
  • Geometría: evitar arreglos lineales. Teselación triangular/hexagonal minimiza dilución geométrica de precisión (GDOP)
  • Potencia TX: +4 a 0 dBm para posicionamiento indoor. Mayor potencia aumenta interferencia; menor reduce el rango por debajo de umbrales útiles
  • Intervalo advertising: 100 ms para tracking en tiempo real, 300–500 ms para monitoreo periódico. Intervalos <100 ms drenan CR2032 en 2–3 meses

Filtrado y Suavizado

Las estimaciones crudas de posicionamiento fluctúan significativamente. Un filtro de Kalman o de partículas suaviza trayectorias:

  • Filtro de Kalman: modela movimiento del usuario como velocidad constante. Reduce el error en percentil 90 en 20–30% con cálculo mínimo. Vector de estado: [x, y, vx, vy].
  • Filtro de partículas: maneja mejor movimiento no lineal y distribuciones multimodales. 500–1000 partículas proporcionan tracking suave a 5 Hz.
  • Restricciones de mapa: fijar posiciones filtradas a áreas transitables (excluyendo paredes, obstáculos) elimina saltos imposibles. Reduce error mediano 10–15% adicional.

Errores Comunes de Despliegue

  • Insuficientes balizas: desplegar solo 2–3 balizas por zona. La trilateración necesita 3+ visibles; el fingerprinting se beneficia de 4+.
  • Ignorar orientación: el cuerpo humano atenúa señales 2.4 GHz en 10–20 dB. Recopilar fingerprints en una sola orientación produce sesgo sistemático cuando los usuarios miran otras direcciones.
  • Fingerprints obsoletos: reorganización de mobiliario, nuevas particiones o cambios estacionales invalidan el mapa de radio. Programar re-surveys trimestrales.
  • TX sin calibrar: la potencia TX varía ±3 dBm entre unidades por tolerancia de componentes. Medir y compensar por baliza.
  • Sobre-filtrado: suavizado agresivo hace el sistema lento. Regla: la constante de tiempo del filtro no debe exceder 1 segundo para aplicaciones a velocidad de caminata.

Conclusión

Para la mayoría de despliegues de posicionamiento indoor con baliza Bluetooth, el fingerprinting con matching WKNN ofrece 30–50% mejor precisión que la trilateración, a costa de mayor tiempo de setup. El enfoque híbrido — trilateración para estimación gruesa, fingerprinting para refinamiento — ofrece el mejor balance de precisión, cómputo y mantenibilidad. Independientemente del algoritmo, la densidad, geometría y calibración individual de balizas importan más que la elección del algoritmo.