Navegación Integrada para Ambientes Cerrados

Transcripción

Navegación Integrada para Ambientes Cerrados
Departamento de Electrónica
Facultad de Ingenierı́a
Universidad de Buenos Aires
Tesis de Grado
Navegación Integrada para Ambientes Cerrados
David Vilaseca
<vilaseca at gmail.com>
Director de Tesis: Dr. Ing. Juan Giribet
Jurado: Dr. Ing. Leonardo Rey Vega
Jurado: Dr. Ing. Silvano Zanutto
Jurado: Dr. Ing. Claudio Estienne
Diciembre de 2012
Índice general
1. Introducción
11
1.1. Navegación en ambientes cerrados . . . . . . . . . . . . . . . . . . . . . . . .
11
1.2. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.3. Estado del Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2. Navegación usando señales WiFi
19
2.1. ¿Por qué WiFi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.2. ¿Qué se mide?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.3. Modelos estudiados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3.1. Triangulación por potencia de señal - RSSI . . . . . . . . . . . . . . .
21
2.3.2. Análisis de escenario . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.3.2.1. Método de los k vecinos más cercanos . . . . . . . . . . . . .
22
2.3.2.2. Modelo probabilı́stico . . . . . . . . . . . . . . . . . . . . . .
22
2.4. Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.4.1. Dataset - Pruebas con métodos estadı́sticos . . . . . . . . . . . . . . .
25
2.4.1.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.4.1.2. Preparación
. . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.4.1.3. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.4.1.4. Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . .
27
2.4.2. Caracterización del fingerprint . . . . . . . . . . . . . . . . . . . . . .
30
2.4.2.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.4.2.2. Preparación
. . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.4.2.3. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . .
32
2.4.2.4. Resultados obtenidos (usando el dataset real) . . . . . . . . .
33
2.4.2.5. Resultados obtenidos (usando el dataset simulado) . . . . . .
35
3. Sistema de navegación inercial - INS
40
3.1. Sistema de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.2. Ecuaciones del INS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.3. Errores de los sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
1
ÍNDICE GENERAL
2
3.4. Ensayo de los sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Plataforma de vuelo
44
49
4.1. ¿Por qué un quadrotor? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.2. Descripción general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.2.1. Principio de funcionamiento . . . . . . . . . . . . . . . . . . . . . . . .
51
4.2.2. Diagrama en bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5. Filtro de Kalman extendido - EKF
53
5.1. Ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5.2. Modelo dinámico del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5.3. Modelo del observador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
5.3.1. Ubicación más probable . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6. Implementación
59
6.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.1.1. IMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.1.1.1. Acelerómetro . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
6.1.1.2. Giróscopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
6.1.2. Computadora de bajo nivel (LLC) . . . . . . . . . . . . . . . . . . . .
62
6.1.3. Computadora de abrodo (OBC)
. . . . . . . . . . . . . . . . . . . . .
63
6.1.4. WiFi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
6.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
6.2.1. C++ - Boost - GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
6.2.1.1. Operaciones con matrices . . . . . . . . . . . . . . . . . . . .
67
6.2.1.2. Cuaterniones . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
6.2.1.3. Generación de VV.AA . . . . . . . . . . . . . . . . . . . . . .
68
6.2.1.4. Portabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6.2.1.5. Acceso a periféricos . . . . . . . . . . . . . . . . . . . . . . .
68
6.2.1.6. Threads y conectividad . . . . . . . . . . . . . . . . . . . . .
68
6.2.2. Modificaciones en aircrack / airodump . . . . . . . . . . . . . . . . . .
68
6.2.3. Data logger / viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
6.2.4. Organización de clases . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
6.2.4.1. Access Piont - ap::ap() . . . . . . . . . . . . . . . . . . . . .
72
6.2.4.2. Filtro de Kalman extendido - ekf::ekf() . . . . . . . . . . . .
72
6.2.4.3. Sistema de navegación integrada - ins::ins() . . . . . . . . . .
75
6.2.4.4. Unidad de mediciones inerciales - imu::imu() . . . . . . . . .
75
6.2.4.5. Logger TCP - tcp logger::tcp logger() . . . . . . . . . . . . .
78
6.2.4.6. Sensor WiFi - wifi sensor::wifi sensor() . . . . . . . . . . . .
79
ÍNDICE GENERAL
6.3. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
81
7. Conclusiones
87
8. Trabajo Futuro
89
A. Rotaciones en el espacio
91
A.1. Cuaterniones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
A.2. Matriz de Cosenos Directores - DCM . . . . . . . . . . . . . . . . . . . . . . .
93
A.3. Conversiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
A.3.1. DCM a Cuaternión . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
A.3.2. Cuaternión a DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
B. Método de Runge–Kutta - RK4
95
C. Triangulación por RSSI
96
C.1. Sistema propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
C.1.1. Campo de fuerza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
C.1.2. Dinámica del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
C.1.3. Modelo de observación . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
C.2. Filtro de Kalman - EKF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
C.2.1. Descripción de las matrices . . . . . . . . . . . . . . . . . . . . . . . .
98
C.2.2. Condiciones iniciales / ruidos / covarianzas . . . . . . . . . . . . . . .
99
C.3. Implementación del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
C.3.1. Mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
C.3.2. Campo de fuerza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
C.3.3. Observaciones / secuencia de mediciones . . . . . . . . . . . . . . . . . 100
C.3.4. Filtrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
C.4. Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
C.5. Simulaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
D. Caracterización por cuadrados mı́nimos
109
E. Formato de archivos
110
E.1. Mediciones WiFi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
E.2. Mediciones inerciales - IMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
E.3. Muestras de entrenamiento - histogramas . . . . . . . . . . . . . . . . . . . . 112
Índice de figuras
1.1. Modelo 3D de un quadrotor . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.2. Clasificación de sistemas de navegación indoor . . . . . . . . . . . . . . . . . .
15
2.1. Sistemas de navegación indoor estudiados en el trabajo . . . . . . . . . . . . .
21
2.2. Histograma de potencia WiFi recibida para una posición . . . . . . . . . . . .
23
2.3. Sistema de coordenadas y ubicación de los routers durante el experimento . .
25
2.4. Distribución espacial de la potencia . . . . . . . . . . . . . . . . . . . . . . . .
27
2.5. Histogramas de potencia WiFi medidos en cada punto de la grilla . . . . . . .
29
2.6. Camino obtenido a partir de locate vs ground truth, usando 4 routers . . . .
31
2.7. Camino obtenido a partir de locate vs ground truth, usando 2 routers . . . .
32
2.8. Error vs routers utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
2.9. Error vs mediciones tomadas . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.10. Error vs varianza de ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.11. Error vs routers utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
2.12. Error vs routers utilizados (extendido) . . . . . . . . . . . . . . . . . . . . . .
36
2.13. Error vs mediciones tomadas . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
2.14. Error vs varianza de ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
2.15. Error vs cantidad de mediciones offline . . . . . . . . . . . . . . . . . . . . . .
38
2.16. Error vs densidad de la grilla . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.1. Sistema de Navegación Inercial . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2. Sistemas de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.3. Clasificación de errores comunes en sensores inerciales . . . . . . . . . . . . .
44
3.4. Rotación de la IMU durante la caracterización . . . . . . . . . . . . . . . . .
45
4.1. Modelo 3D de un quadrotor . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.2. Diagrama en bloques de un quadrotor . . . . . . . . . . . . . . . . . . . . . .
52
6.1. IMU utilizada en la implementación del trabajo . . . . . . . . . . . . . . . . .
60
6.2. Principio de funcionamiento de un acelerómetro MEMS . . . . . . . . . . . .
60
6.3. Diagrama en bloques de un acelerómetro MEMS . . . . . . . . . . . . . . . .
61
4
ÍNDICE DE FIGURAS
5
6.4. Diagrama en bloques de un giróscopo MEMS . . . . . . . . . . . . . . . . . .
62
6.5. LPCXpresso 1768 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
6.6. Beagleboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
6.7. Adaptador WiFI USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
6.8. Salida del programa airodump-ng . . . . . . . . . . . . . . . . . . . . . . . . .
69
6.9. Salida del programa airodump-ng modificado . . . . . . . . . . . . . . . . . .
70
6.10. Pruebas con datalogger desarrollado en SimuLink . . . . . . . . . . . . . . . .
70
6.11. Pruebas con datalogger desarrollado en LabView . . . . . . . . . . . . . . . .
71
6.12. Clases C++ del navegador . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
6.13. Organización de la clase AP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
6.14. Métodos de la clase ekf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.15. Miembros de la clase ekf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
6.16. Matrices de la clase ekf
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
6.17. Organización de la clase INS . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
6.18. Métodos de la clase IMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.19. Miembros de la clase IMU usados en las mediciones . . . . . . . . . . . . . . .
77
6.20. Miembros de la clase IMU de uso general . . . . . . . . . . . . . . . . . . . .
77
6.21. Miembros de la clase IMU usados en la calibración . . . . . . . . . . . . . . .
78
6.22. Organización de la clase tcp logger . . . . . . . . . . . . . . . . . . . . . . . .
79
6.23. Métodos de la clase tcp logger . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6.24. Miembros de la clase tcp logger . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.25. Funciones usadas por la clase tcp logger . . . . . . . . . . . . . . . . . . . . .
81
6.26. Navegador inercial + WiFi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.27. Navegador inercial + WiFi con 5m de error en posición inicial . . . . . . . . .
82
6.28. Navegador inercial con 5m de error en posición inicial . . . . . . . . . . . . .
83
6.29. Navegador inercial con error en posición y actitud inicial . . . . . . . . . . . .
84
6.30. Navegador inercial + WiFi con error en posición y actitud inicial . . . . . . .
84
6.31. Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel =
0,1 sm2
0,2 sm2
0,4 sm2
0,8 sm2
. . . . .
85
. . . . .
85
. . . . .
86
. . . . .
86
6.35. Autocorrelación de las innovaciones . . . . . . . . . . . . . . . . . . . . . . . .
86
C.1. Mapa del espacio a navegar con su respectivo campo de fuerza . . . . . . . .
97
C.2. Mapa y recorrido propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
6.32. Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel =
6.33. Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel =
6.34. Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel =
C.3. Nivel de potencia en el espacio para cinco routers (centro y esquinas) . . . . . 100
C.4. Resultado obtenido para SNR = 30dB, α = 3, λ = 0,5, σν = 1m, Fcr = 1 . . . 101
C.5. Resultado obtenido para SNR = 20dB, α = 3, λ = 0,5, σν = 1m, Fcr = 1 . . . 101
ÍNDICE DE FIGURAS
6
C.6. Resultado obtenido para SNR = 10dB, α = 3, λ = 0,5, σν = 1m, Fcr = 1 . . . 102
C.7. Resultado obtenido para SNR = 0dB, α = 3, λ = 0,5, σν = 1m, Fcr = 1 . . . 102
Índice de tablas
6.1. Caracterı́sticas del acelerómetro MMA7361L . . . . . . . . . . . . . . . . . . .
61
6.2. Caracterı́sticas del giróscopo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
6.3. Caracterı́sticas del LPCXpresso 1768 . . . . . . . . . . . . . . . . . . . . . . .
63
6.4. Caracterı́sticas de la OBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
6.5. Caracterı́sticas del adaptador WiFi USB . . . . . . . . . . . . . . . . . . . . .
67
7
Siglas y Acrónimos
AP Access Point
GPS Global Positioning System - sistema de posicionamiento global
GLONASS Globalnaya Navigatsionnaya Sputnikovaya Sistema
GNSS Global Navigation Satellite System
UAV Unmanned Aerial Vehicle - vehı́culo aéreo no tripulado
IMU Inertial Measurement Unit - unidad de mediciones inerciales
INS Inertial Navigation System - sistema de navegación inercial
RSSI Received signal strength indication - Indicador de potencia de señal recibida
OBC On Board Computer - Computadora de abrodo
EKF Extended Kalman Filter - filtro de Kalman extendido
TOA Time of Arrival - Tiempo de arribo
TDOA Time Difference of Arrival - Diferencia en tiempo de arribo
NLOS Non Line of Sight - falta de lı́nea de visión
RTOF Roundtrip time of flight - Tiempo de viaje
AOA Angle of arrival - ángulo de arribo
kNN k-Nearest Neighbors - k vecinos más cercanos
SVM Support vector machine
SMP Smallest M-vertex polygon
RFID Radio Frequency IDentification - identificación por radiofrecuencia
IR Infra Rojo
8
ÍNDICE DE TABLAS
SPKF Sigma Point Klalman Filter
SPKS Sigma Point Kalman Smoother
FIUBA Facultad de Ingenierı́a de la Universidad de Buenos Aires
MAC Media Access Control
ESSID Extended Service Set IDentifier
BSSID Basic Service Set IDentification
MEMS Micro-electro-mechanical Systems - sistemas micro-electro-mecánicos
LS Least Squares - mı́nimos cuadrados
VTOL Vertical take-off and landing - aterrizaje y despegue vertical
PWM Pulse Width Modulation
ESC Electronic Speed Controller - control electrónico de velocidad
MSE Mean Squared Error - error cuadático medio
AWGN Additive white Gaussian noise
LLC Low Level Computer - Computadora de bajo nivel
ASIC Application-specific integrated circuit - circuito integrado de aplicación especı́fica
RTOS Real Time Operating System - sistema operativo de tiempo real
ADC Analog to Digital Converter
UART Universal asynchronous receiver/transmitter
I2 C Inter-Integrated Circuit
SPI Serial Peripheral Interface
CPU Central processing unit
USB Universal Serial Bus
GCC GNU Compiler Collection
BLAS Basic Linear Algebra Subprograms
VV.AA Variables Aleatorias
ARM Advanced RISC Machine
9
ÍNDICE DE TABLAS
IEEE Institute of Electrical and Electronics Engineers
IPC Inter-process communication - comunicación entre procesos
TCP/IP Transmission Control Protocol / Internet Protocol
RK4 Runge–Kutta 4
SI Le Système International d’Unités
10
Capı́tulo 1
Introducción
Un viaje de mil millas comienza
con el primer paso.
Lao-tsé
1.1.
Navegación en ambientes cerrados
Se entiende como navegación al arte de conocer la posición, velocidad y orientación de
determinado objeto respecto a un sistema de referencia conocido: un sistema de navegación
integrada es aquel que combina distintas fuentes de información para poder obtener los datos
deseados.
Para conocer las coordenadas de un objeto se puede acudir a referencias externas: en
función de la distancia o el ángulo del objeto respecto a cada una de esas referencias se
puede inferir su ubicación. Por ejemplo, los antiguos navegantes usaban el astrolabio para
ubicarse en altamar midiendo el ángulo formado entre las estrellas y el horizonte. Hoy en
dı́a los sistemas de posicionamiento global como GPS y GLONASS toman como referencia
satélites cuya posición es conocida y miden la distancia a cada uno de ellos. De esta forma
se obtiene una posición relativa a estos objetos de referencia.
Una alternativa a esto es usar sensores inerciales que registren ciertas cantidades fı́sicas
aplicadas al objeto que se navega, permitiendo reconstruir su trayectoria a partir de estos
datos. Teniendo mediciones de fuerza especı́fica (provinientes de acelerómetros), de velocidad
angular (provinientes de giróscopos) y conociendo las condiciones iniciales es posible inferir la
posición y orientación del vehı́culo. Por ejemplo, si se toma un objeto inicialmente en reposo,
se registra su aceleración y se la integra, se obtiene su velocidad. Si se integra nuevamente se
obtiene la posición. De esta forma es posible conocer la ubicación del objeto tomando como
origen la posición donde comenzó el experimento1 .
1
Para este sencillo experimento mental se supone conocida la orientación del objeto con lo cual no es
11
1.1 Navegación en ambientes cerrados
12
Algunos sistemas de navegación integrada combinan sensores inerciales (giróscopos y
acelerómetros) y sistemas que funcionan en base a referencias externas como los sistemas de
navegación global por satélite (GNSS): los sensores inerciales no dependen de parámetros
externos al vehı́culo (campo magnético terrestre, lı́nea de visión, etc), son aptos para usar
con dinámicas rápidas y son bastante robustos a perturbaciones o interferencias, pero al
integrar las mediciones para calcular la posición y orientación, cualquier error en los sensores
implica una deriva en los datos de posición.
En cambio los sistemas que calculan la posición a partir de referencias externas mantienen
el error acotado a lo largo del tiempo pero son más vulnerables a perturbaciones externas
y tienen una dinámica más lenta: al combinar algunos de estos instrumentos con sensores
inerciales se pueden lograr muy buenos resultados, siempre y cuando se sepan aprovechar
las vantajas de cada uno. En definitiva, el objetivo de un sistema de navegación integrada
es combinar toda la información disponible de forma óptima.
En el presente trabajo se analiza la problemática de navegar en entornos cerrados donde,
por lo general, no hay disponibilidad de sistemas de navegación global.
Para sortear este problema se acude a otros recursos que permitan conocer la posición con
confianza a largo plazo, de alguna forma, reemplazar el sistema GNSS por un instrumento
que sı́ esté disponible en ambientes cerrados.
A lo largo de la historia el hombre pasa cada vez más tiempo bajo los techos que construye.
Esta tendencia es clara y las superficies cubiertas son cada vez mayores. A tal punto ha llegado
esto que en lugares como aeropuertos, estaciones de tren, shoppings y supermercados (por
mencionar algunos) el caudal de personas que circula es enorme. En este contexto se torna
un tema de interés poder navegar en esas condiciones [6].
Algunas aplicaciones de este enfoque son:
Tracking de mercaderı́a en un depósito
Navegación indoor para visitas guiadas a museos o edificios grandes
Tracking de personas o equipos dentro de edificios
Navegación indoor de un UAV
Este trabajo se enfoca sobre el último de estos ı́tems. En particular se usa un quadrotor:
una plataforma de vuelo no tripulada que puede permanecer suspendida en el aire gracias a
cuatro hélices que le dan sustento.
necesario un giróscopo. También se supone medible la aceleración lineal aunque en realidad un acelerómetro
mida fuerza especı́fica, que es la suma de la aceleración lineal y la fuerza gravitatoria.
1.1 Navegación en ambientes cerrados
13
Figura 1.1: Modelo 3D de un quadrotor
A diferencia de un helicóptero se basa en una estructura mecánica muy simple, permitiendo transladar toda la complejidad del control y estabilidad a los algoritmos y programas
encargados de ello.
Esto hace a la plataforma muy atractiva para investigaciones an el área de electrónica y
ciencias de la computación, a tal punto que en los últimos años se ha vuelto muy popular [17].
Al tener dimensiones reducidas (un diámetro de decenas de centı́metros) es posible navegar en entornos cerrados.
Las aplicaciones de esta combinación (quadrotor y sistema de navegación) son muy variadas: desde vigilancia de edificios hasta reconocimiento y asistencia a vı́ctimas en un derrumbe,
pasando por control de fallas en lineas de alta tensión u otros sistemas crı́ticos.
En los siguientes capı́tulos se describe en detalle el problema planteado y se analiza e
implementa una posible solución.
Se comienza planteando los objetivos del trabajo y una breve reseña del estado del arte
de la navegación integrada en entornos cerrados. Se hace una introducción a los sistemas de
navegación y se presentan distintos enfoques de localización en ambientes cerrados.
A continuación, en el capı́tulo 2 se desarrollan los conceptos de localización mediante
señales WiFi. Se fundamenta la elección de la tecnologı́a y la técnica usada en el trabajo, y
se detallan las experiencias diseñadas para optimizar los parámetros de las mediciones.
Luego, en el capı́tulo 3 se detallan temas generales sobre navegación integrada como el
sistema de referencia usado, las ecuaciones del sistema y el modelo de error usado para los
sensores. También se describe la técnica usada para caracterizar la unidad de mediciones
1.2 Objetivo
14
inerciales (IMU).
En el capı́tulo 4 se presentan caracterı́sticas y limitaciones de la plataforma de navegación
usada -un quadrotor-.
El diseño del algoritmo de fusión de datos se detalla en el capı́tulo 5: toda la información
de navegación e información a priori alimenta un filtro de Kalman extendido (EKF) que
se ocupa de fusionar los datos del sistema de navegación inercial (INS) con las mediciones
externas -nivel de potencia WiFi-.
Posteriormente en el capı́tulo 6 se detalla la implementación del sistema completo, con
sus componentes de software y hardware: este capı́tulo abarca temas relacionados a los
sensores inerciales, el Indicador de potencia de señal recibida (RSSI), la Computadora de
abrodo (OBC), las bibliotecas de software utilizadas, y el diseño de clases y herramientas
que fueron necesarias durante el desarrollo.
Por último, en el capı́tulo 7 se presentan las conclusiones obtenidas a lo largo del trabajo
seguidas, en el capı́tulo 8, por lineas de trabajo futuro en el área.
1.2.
Objetivo
El objetivo de este trabajo es implementar un sistema de navegación integrada para
ambientes cerrados que sea capaz de funcionar en tiempo real y pueda ser parte de la carga
de un quadrotor. Para esto se propone una serie de tareas necesarias para cumplir el objetivo,
a saber:
Conocer el estado del arte, tanto de temas de navegación como localización indoor.
Plantear la problemática general y acotar el problema.
Encontrar alternativas para poder navegar en entornos cerrados sin señales de sistemas
GNSS.
De las alternativas encontradas, explotar aquellas que aprovechen las restricciones y
condiciones impuestas por el quadrotor.
Plantear un modelo de fusión de datos para integrar la información obtenida de la
localización indoor con las mediciones de la IMU.
Implementar todo lo anterior diseñando un sistema capaz de resolver el problema planteado en tiempo real y en la plataforma de vuelo propuesta
1.3.
Estado del Arte
Este trabajo combina dos áreas principales, necesarias para llevar a cabo su desarrollo.
Por un lado se estudian temas de navegación integrada en general. Por otro lado se exploran
1.3 Estado del Arte
15
técnicas de localización indoor.
La parte de navegación se enfoca en el estudio y la investigación de la dinámica y evolución
temporal de los sistemas de navegación, basándose en las mediciones de sensores inerciales.
También se estudia el modelo de error de los sensores usados. Todo esto se detalla en el
capı́tulo 3. La principal referencia para estos temas fue [25]
Las técnicas de localización indoor son más incipientes. A partir de 2002 se comenzaron
a publicar trabajos en este área [19].
Existe gran variedad de enfoques disponibles considerando distintos niveles de información a priori que se puede tener sobre el espacio a navegar o el modelo de propagación de
señal que se considere.
La localización indoor haciendo uso de beacons2 se puede abordar de distintas formas,
pero siempre se busca relacionar la posición del objeto a navegar con beacons o emisores
cuya posición sea conocida.
Se pueden clasificar los sistemas de localización indoor según el principio de medición:
Figura 1.2: Clasificación de sistemas de navegación indoor
1. Por triangulacición: estos metodos funcionan obteniendo caracterı́sticas del triángulo
formado por el objeto a localizar y algunas referencias cuya posición sea conocida.
a. Midiendo los lados (para ubicar un objeto en el espacio se necesitan por lo menos
tres referencias)
i. Tiempo de arribo (TOA): Mide el tiempo que tarda una señal en llegar desde
la referencia al objeto a localizar. El tiempo es directamente proporcional a la
distancia que los separa. Este enfoque requiere un sistema dedicado ya que los
distintos componentes deben estar sincronizados, hace falta una infraestructura dedicada. Además el sistema pierde performance cuando no hay lı́nea de
2
Balizas o puntos de referencia
1.3 Estado del Arte
16
visión directa entre el navegador y el beacon por efectos de multipath.
ii. Diferencia en tiempo de arribo (TDOA): con esta técnica se puede calcular la
posición relativa del objeto a localizar en función de la diferencia de tiempo
con que una señal enviada por dicho objeto llega a las referencias. Tiene como
ventaja respecto a TOA que no es necesaria la sincronización pero sufre el
mismo problema cuando no se dispone lı́nea de visión directa.
iii. Indicador de potencia de señal recibida (RSSI): Con este enfoque se busca
inferir la posición del objeto a localizar midiendo la potencia que le llega de
cada una de las referencias. Esto permite usar un modelo de propagación
subyacente que puede tener en cuenta el comportamiento de los campos en
ambientes cerrados, lo cual es una ventaja respecto a los dos esquemas anteriores. En otras palabras, si bien no se eliminan los efectos por propagación
multipath y por falta de lı́nea de visión (NLOS), se puede adaptar el modelo
de propagación para apaciguar estos problemas.
iv. Tiempo de viaje (RTOF): Esta técnica es parecida a TOA, pero tiene menos
restricciones en la sincronización del sistema ya que lo que se mide es el
tiempo que tarda una señal en ir y volver desde el objeto a localizar a una
referencia. El talón de Aquiles en este caso es la incertidumbre en el tiempo
de procesamiento que se tome el equipo que recibe y retransmite la señal.
b. Midiendo el ángulo de arribo (AOA): Se puede determinar la posición de un objeto
conociendo el ángulo que forma respecto a tres referencias conocidas. De todas
maneras este enfoque no es muy popular ya que la medición de ángulos de arribo
requiere hardware especı́fico, y los resultados obtenidos no son alentadores.
2. Por análisis del escenario: estas técnicas involucran dos etapas. Durante la primer etapa
se extraen features o huellas -fingerprints- del terreno obteniendo una base de datos con
información a priori. Luego, en la segunda etapa se toma una medición para inferir la
posición en que fue tomada, considerando toda la información a priori. Lo más común
es extraer features a partir del RSSI
a. Métodos probabilı́sticos: utilizan un filtro bayesiano para hacer una estimación a
posteriori de la posición basándose en una medición y en la información a priori
disponible.
b. k vecinos más cercanos (kNN): Consiste en hallar, mediante una función costo,
los k elementos de la base de datos (con puntos de entrenamiento) más parecidos
a la medición tomada. Luego se decide la posición en función de los k puntos
encontrados.
c. Redes neuronales: se basan en la interconexión de unidades básicas -neuronas-
1.3 Estado del Arte
17
que son entrenadas en la etapa offline. Luego estas redes entrenadas se usan para
decidir la ubicación del objeto que se navega a partir de las mediciones tomadas.
d. Support vector machine (SVM): es un método de aprendizaje supervisado en el
que se realizan transformaciones en el espacio de las muestras de tal forma que la
regla de decisión, en el espacio transformado, tenga una forma simple respecto al
espacio original.
e. Smallest M-vertex polygon (SMP): Se basa en calcular por lo menos un candidato
de posición para cada referencia de forma independiente. Luego se selecciona el
candidato de cada referencia de tal forma que el polı́gono formado por los M
candidatos (uno por cada referencia) sea mı́nimo. La posición final se calcula
como el baricentro de este polı́gono.
3. Por proximidad: consiste en equipar el espacio a navegar con receptores, y el navegador
con un transmisor. Cada receptor define una zona correspondiente a la posición del
objeto a navegar en caso que la lectura de ese receptor sea mayor a los demás. Esto
se puede implementar con tags de identificación por radiofrecuencia (RFID) o con
dispositivos Infra Rojos (IRs)
Todos estos enfoques, en mayor o menor medida son afectados por fenómenos de propagación multipath, ruido de fuentes ajenas al sistema y NLOS.
En general se utilizan combinaciones de los métodos presentados anteriormente, buscando
complementar las ventajas de cada uno.
En [21] Anindya y Wan se plantea un modelo de potencial y random walk basado en
el mapa del espacio a nevagar. Se usa un modelo de observación basado en la forma de
propagación de las ondas electromagnéticas. Se compraran distintos métodos de filtrado:
EKF vs SPKF vs SPKS y también se aplica el uso de sensores IR pasivos y pulsadores en
el suelo para mejorar la calidad de las mediciones. Una de las conclusiones de este trabajo
es la notable mejora del sistema usando sensores IR y pulsadores, logrando bajar el error de
2m a 0.37m. Si bien es una mejora significativa, implica la necesidad de modificaciones en la
infraestructura que no siempre son posibles, haciendo poco escalable el sistema en términos
de usuarios.
En Gezici Et al. [16] se aborda el tema desde un punto de vista más teórico, se analizan
los distintos enfoques para navegación usando señales de radio. Se buscan cotas teóricas en la
varianza del estimador para cada enfoque (cota de Cramér-Rao), se analizan los problemas
más comunes en estas técnicas (NLOS, multipath) algunas técnicas de espectro ensanchado.
En evennou y Marx [14] se presentan y comparan los modelos de propagación, fingreprint
y estimación probabilı́stica basada en histogramas. Se fusionan los datos de RSSI con una
IMU y usa filtro de partı́culas comparando distintos enfoques. A pesar de obtener mejores
1.3 Estado del Arte
18
resultados usando un filtro de partı́culas que un filtro de Kalman, la complejidad computacional del primero complica la implementación de un sistema embebido y en tiempo real.
Al igual que en Anindya y Wan [21] se obtiene un error cercano a los 2m.
Por otra parte, en Frank Et al. [15] se cubren temas parecidos a los presentados en
Evennou y Marx [14] pero se dedica más a desarrollar el modelo de observación con la IMU:
con esta se estiman los pasos de un peatón mediante un modelo de caminante, restringiendo
el uso del sistema únicamente a personas. El modelo de caminante le quita generalidad al
navegador, no pudiendo usarse entonces para plataformas de vuelo, por ejemplo. Para la
localización por WiFi usan estimación por histograma.
Los métodos y técnicas utilizados de detallan en el capı́tulo 2
Capı́tulo 2
Navegación usando señales WiFi
I do not think that the wireless
waves I have discovered will have
any practical application.
Heinrich Rudolf Hertz
2.1.
¿Por qué WiFi?
En la sección 1.3 se hace un análisis técnico de los distintos métodos para localización
indoor, pero un factor decisivo a la hora de implementar un sistema son los costos y la
disponibilidad que va a tener el servicio. El hecho de poder usar hardware y drivers que
funcionan, que están probados y disponibles en el mercado presenta una serie de ventajas
interesantes. También es un hecho que las redes WiFi, y por lo tanto los Access Point (AP)
están por doquier, con lo cual a la hora de implementar el sistema quizá ni siquiera haya que
instalar APs.
La principal desventaja que trae esta tecnologı́a es la baja resolución en las mediciones
de potencia que permite el hardware, y el comportamiento complejo que tienen los campos
en la banda de 2.4GHz en ambientes cerrados. Está claro que WiFi no fue pensado para
aplicaciones de localización, pero analizando la relación de compromiso entre las ventajas y
desventajas que ofrece se ve una buena perspectiva. Más aún teniendo en cuenta resultados de
trabajos publicados en los últimos años. Aplicando esquemas de fusión de datos y combinando
mediciones WiFi con mediciones de otros sensores se pueden lograr buenos resultados.
2.2.
¿Qué se mide?
El estándar IEEE 802.11 define un beacon o baliza que es enviado periódicamente por el
access point para anunciar su presencia. No es necesario estar conectado a la red para tener
19
2.3 Modelos estudiados
20
acceso a los beacons, el único requisito es estar en el rango del access point. Esto también es
ası́ si la red está encriptada, el contenido de los beacons es accesible por todos. Además, con
un adaptador se pueden recibir beacons de muchas redes distintas. Estos paquetes transmiten
información de sincronización y un identificador único de la red. El RSSI se calcula en el
receptor al obtener el beacon y esta es la cantidad que se toma como medida en el trabajo.
En general no se encuentra un consenso en la forma de medir la potencia recibida. Cada
fabricante provee una medida distinta, y para poder utilizar datos de manera intercambiable
entre distintas interfaces es necesaria una adaptación entre dBm, %, o la medida correspondiente a cada interfaz. Este problema en particular no es tratado en este trabajo, ya que se
usa siempre la misma interfaz.
En relación a periodicidad de los beacons, lo más común es encontrar los access point
configurados para transmitir 10 beacons por segundo y esta velocidad va a ser una restricción
en la frecuencia del lazo de mediciones WiFi del navegador.
Al diseñar este subsistema es importante tener en cuenta lo siguiente: IEEE 802.11 define
14 canales en los que se puede establecer una comunicación WiFi y los adaptadores pueden
enviar/recibir información solamente en el canal que tengan sintonizado. Por eso no es posible
escuchar beacons de todos los canales al mismo tiempo, si los access point están distribuidos
en varios canales es necesario sintonizar el adaptador un tiempo en cada uno para poder
escuchar los beacons correspondientes.
Esto establece una relación de compromiso donde a mayor diversidad de canales WiFi
que se quieren usar, menor frecuencia de mediciones se consigue. Este trabajo estudia el caso
de usar un único canal.
2.3.
Modelos estudiados
De todos los métodos de localización indoor presentados en (1.3) se estudian en detalle
localización por RSSI (usando un modelo de propagación de onda), y dentro de la categorı́a
de análisis de escenacio se estudian métodos basados en filtro Bayesiano y kNN. Se analizan
en profundidad estos métodos por diversos motivos. En el caso de RSSI es el método que
tiene menos requerimientos de hardware. A diferencia de los métodos basados en medición
de tiempo, la potencia de señal recibida es una cantidad que se puede obtener de la mayorı́a
de equipos comerciales. En el caso de los métodos por análisis de escenario se estudia el filtro
bayesiano y el método de los k vecinos más cercanos debido a su bajo costo computacional
comparado con redes neuronales, SVM y SMP.
No se estudian métodos de localización por proximidad debido al setup especı́fico de
hardware que requieren: parte del objetivo de este trabajo es que la implementación del
sistema no requiera grandes cambios en la infraestructura disponible.
2.3 Modelos estudiados
21
Figura 2.1: Sistemas de navegación indoor estudiados en el trabajo
2.3.1.
Triangulación por potencia de señal - RSSI
El modelo de propagación de onda es el método más simple. Se basa en suponer conocida
la forma de propagación y atenuación de la onda. Por ejemplo, tal como se propone en [14].
Prx (d) = Prx (d0 ) − 10 · α · log
�
d
d0
�
(2.1)
El parámetro α modela la forma de propagación en el entorno (para espacio libre α = 2,
para ambientes cerrados α � 3). Prx es la potencia recibida en la posición x, d es la distancia
del objeto a la fuente y d0 es una distancia de referencia.
También se puede tener en cuenta la atenuación causada por obstáculos (paredes, objetos)
Prx (d) = Prx (d0 ) − 10 · α · log
�
d
d0
�
−
Nv
�
i=0
ni · w i
(2.2)
donde Nv representa la clase de obstáculo y ni la cantidad de obstáculos con wi dB de
atenuación.
En general este método es pobre para navegar un objeto en un ambiente cerrado, debido
a la naturaleza de las ondas electromagnéticas en estos entornos (multipath, difracción, etc.)
2.3.2.
Análisis de escenario
Los métodos de fingerprint se basan en mediciones previas de los niveles reales de potencia
para distintos puntos del espacio donde se desea navegar.
La base de datos generada a partir de estas mediciones es usada para estimar la posición
del objeto.
Esto implica que todos los métodos de localización indoor por análisis de escenario se
dividen en dos etapas. La primera (offline) consiste en recopilar datos y extraer features
2.3 Modelos estudiados
22
del terreno a navegar. En otras palabras, obtener información a priori. La segunda etapa
(online) es la localización en sı́. Tomando las mediciones que correspondan según el método
y teniendo disponible la información a priori se busca estimar la ubicación del objeto.
2.3.2.1.
Método de los k vecinos más cercanos
Consiste en tomar una medición de los M access point que haya disponibles y con esa
información se genera un vector (espacio de la señal) cuyas componentes tienen la potencia
de señal recibida de cada access point. Esta información puede estar basada en una única
muestra o en un promedio de varias.
Luego se buscan los k vecinos más cercanos a la medición (en la base de datos). Se usa
la distancia euclı́dea en el espacio de la señal
�
�M
�
1 �
d(Z, Zi ) =
·�
[RSSj (x, y) − RSSj (xi , yi )]2
M
(2.3)
j=1
donde d(Z, Zi ) define la distancia entre la posición de medición actual Z y la posición correspondiente a la medición a priori Zi .
RSSj (x, y) es la medición actual y RSSj (xi , yi ) es el valor de señal del j-ésimo AP en la
posición (xi , yi ). Por último, se toma como posición estimada al baricentro de los k vecinos
más cercanos.
X=
�k
j=1 1/d(Z, Zj )
�k
· Xj
j=1 1/d(Z, Zj )
(2.4)
donde X1 , ...Xk son los vecinos más cercanos
Si la densidad de puntos con que se arma la base de datos de mediciones no es grande,
el enfoque de los k vecinos más cercanos no tiene buena performance [21] [14].
Esto refleja el comportamiento complejo del campo electromagnético en ambientes cerrados y en el caso de no disponer de una base de datos densa hay que abordar el problema
desde otra perpectiva: el método de los k vecinos más cercanos propone como estimación de
la posición al baricentro entre los k candidatos obtenidos, poniendo como hipótesis subyacente que un punto intermedio entre dos vectores del espacio de la señal corresponde a un
punto intermedio entre dos puntos en el espacio fı́sico y esto no es consistente con los datos
empı́ricos.
2.3.2.2.
Modelo probabilı́stico
El modelo probabilı́stico propone tomar un histograma de la potencia recibida en cada
lugar, en vez de tomar un promedio de la potencia (como lo anteior)
De esta forma se obtiene una información más completa de la dinámica de propagación
y se pueden estimar mejor los comportamientos no-monótonos del campo.
2.3 Modelos estudiados
23
Para obtener P (X|Z), que es la probabilidad de estar en la posición X luego de haber
hecho la medición Z, se mide P (Z|X) que es la probabilidad de obtener mediciones Z en la
posición X. Aplicando la regla de Bayes se llega a
P (X|Z) =
P (Z|X) · P (X)
P (Z)
(2.5)
donde P (X) es la probabilidad a priori de estar en una posición X y se puede usar para
introducir información adicional al sistema. P (Z) no depende de la posición, se puede tratar
como una constante normalizadora.
Finalmente se aplica una función costo entre todas las posibles ubicaciones para obtener
la estimación buscada.
Al implementar este método, la P (X|Z) no tiene por qué ser una distribución univariada
con lo cual se translada la complejidad de decidir la posición al subsistema que procese esta
información.
En la práctica, este método requiere una etapa de entrenamiento en la que se releva
información sobre la distribución de potencia WiFi. Es necesario definir puntos en el espacio
que se quiere navegar donde serán tomadas las mediciones. Una grilla puede ser una opción
para esto.
La ecuación 2.5 indica que el resultado del filtro bayesiano será una función densidad de
probabilidad. Los puntos en los que se realice la etapa de entrenamiento serán el dominio
de esta función densidad de probabilidad. Es por eso que la densidad de puntos requiere un
análisis (ver sección 2.4.2).
1
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.7
P(RSSI)
0.6
0.5
0.4
0.3
0.2
0.1
0
−100
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
Figura 2.2: Histograma de potencia WiFi recibida para una posición
Como resultado de la etapa de entrenamiento se obtiene una base de datos que contiene,
para cada punto de la grilla un histograma de RSSI para cada AP visible en dicho punto.
2.4 Experimentos
24
Por ejemplo en la figura 2.2 se pueden observar los histogramas (P (Z)) obtenidos para
un punto X. Es decir, P (Z|X) para 4 APs distintos.
Una vez recolectados los datos de entrenamiento es posible tomar mediciones en el espacio
medido y estimar la posición. Para esto se propone el siguiente algoritmo locate
Algoritmo 1 locate
Xi ← posiciones disponibles (i.e. puntos de la grilla)
Ai ← access point en rango
RSSI(Ai ) ← potencia recibida de cada AP en rango [dBm]
score(Xi ) ← 0
for each Ai do
for each Xi do
score(Xi ) ← score(Xi ) + histogram(Xi , Ai )[RSSI(Ai )]
end for
end for
Este algoritmo presenta para cada punto de la grilla (Xi ) un puntaje proporcional a la
probabilidad de que la medición haya sido realizada en dicho punto. Para transmitir esta
información a la etapa del sistema que procese los datos existen distintos enfoques: el más
simple consiste en indicar como posición estimada aquella que haya recibido el mayor puntaje.
Otra alternativa es informar los N puntos con mayor puntaje.
No es una buena idea hacer operaciones con estos puntos, como por ejemplo calcular el
baricentro, ya que al ser distribuciones multivariadas el resultado puede degradar la información que proveen los datos crudos.
2.4.
Experimentos
Durante el estudio de los métodos de localización por señales WiFi se relizaron algunas
pruebas para evaluar los distintos métodos.
Primero se simuló un sistema de localización WiFi basado en triangulación y medición
de potencia recibida. Se usó un esquema parecido al propuesto por Anindya Et al. [21]:
además de la potencia medida se tiene en cuenta información del mapa en que se navega.
No se siguieron estudiando este tipo de técnicas basadas en una ley conocida de propagación
del campo debido a su bajo desempeño en ambientes cerrados. Para más detalles sobre este
experimento consultar el apéndice C
Luego se realizaron una serie de mediciones con señales WiFi reales para realizar pruebas
con métodos probabilı́sticos y abandonando la hipótesis de conocer la forma de propagación
del campo.
Esto parece acertado al comparar la distribución de campo sintetizada de acuerdo a una
2.4 Experimentos
25
ley conocida (figura C.3) con los datos obtenidos de forma experimental (figura 2.4): Si bien
los resultados de la simulación son alentadores, no es realista considerar que el campo respeta
una ley de propagación de acuerdo a la ecuación (2.1)
2.4.1.
Dataset - Pruebas con métodos estadı́sticos
Este experimento es fundamental para poder implementar y probar métodos estadı́sticos
ya que es muy complicado modelar mediante simulaciones o datos sintetizados un escenario realista de mediciones WiFi. Para hacer esto serı́a necesario implementar técnicas de
raytracing y tener una información muy detallada del espacio (medidas, materiales, etc.)
2.4.1.1.
Objetivo
Generar y tener disponible una base de datos tomada en un escenario real para poder
realizar pruebas y comparaciones entre distintos algoritmos y métodos.
2.4.1.2.
Preparación
El experimento se llevó a cabo en el gimnasio de la Facultad de Ingenierı́a de la Universidad de Buenos Aires (FIUBA). Se trabajó con una grilla de 5x10 unidades de 80cm
(x ∈ [0 . . . 5], y ∈ [0 . . . 10]). Fuera de la grilla (a ∼ 1m en cada diagonal) se colocaron cuatro
routers Linksys WRT54G configurados para funcionar bajo la norma IEEE 802.11G, canal
7. Todos sobre el piso.
Figura 2.3: Sistema de coordenadas y ubicación de los routers durante el experimento
2.4 Experimentos
26
Como dispositivo de medición se usó el sistema de navegación implementado (ver capı́tulo 6) usando el programa locate cuyo objetivo es tomar una serie de mediciones de RSSI
con la placa de red WiFi y armar un histograma de los datos obtenidos para cada router.
Las mediciones se tomaron a una altura de ∼ 1m del piso. Cada medición tiene el siguiente
aspecto.
8 9 1 0 5 2 1 8 8 5 9 , rusell , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,2 ,15 ,56 ,119 ,6 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
200 [ −99 dBm . . . 0 dBm ]
9 7 5 5 7 7 7 7 4 1 4 , Helena , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,13 ,20 ,29 ,18 ,39 ,16 ,29 ,20 ,9 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 2 0 0 [ −99 dBm . . . 0 dBm ]
1 2 0 5 4 1 1 0 8 2 5 2 , laplace , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2 ,3 ,2 ,7 ,14 ,15 ,36 ,49 ,48 ,22 ,2 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 2 0 0 [ −99 dBm . . . 0 dBm ]
1 3 2 6 9 4 4 5 1 0 7 8 , galileo , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,48 ,
77 ,70 ,1 ,3 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,200
[ −99 dBm . . . 0 dBm ]
Donde cada linea (párrafo para que entre en el informe) corresponde a un AP y contiene
valores separados por comas indicando: la dirección MAC (en base 10) del AP, su nombre o
ESSID, los 100 buckets del histograma indicando la frecuencia de aparición de cada medición
donde el primero corresponde a -99dBm y el último a 0dBm. Pur último se encuentra la
cantidad total de elementos en el histograma y una referencia de la escala utilizada. Se
puede ver con más detalle la descripción de los formatos utilizados en el apéndice E
2.4.1.3.
Procedimiento
Una vez armado el banco de pruebas se comenzaron a tomar las mediciones barriendo la
grilla. Por cada vértice se obtuvieron los histogramas correspondientes cuidando que el área
de la grilla quede despejada de obstáculos durante la medición.
Durante todas las meciciones el navegador mantuvo su orientación y al finalizar toda la
grilla se tomaron algunas mediciones con la otientación cambiada para realizar comparaciones
en este aspecto.
2.4 Experimentos
2.4.1.4.
27
Resultados obtenidos
galileo [dBm]
rusell [dBm]
10
10
9
9
8
8
6.1
−4
y
−4
9.
47
12
3
−55.83
5
3
2
−55.
83
2
−42.728
7
1
0
6
1
4
−42
4
−52.9
2.
91
5
.728
7
y
6
7
−5
7
−4
−47. 4.15
0
−49.9 7
9
1
0
1
2
3
4
0
5
0
1
2
x
laplace [dBm]
4
5
helena [dBm]
10
10
9
9
8
8
−56
.482
7
5
−50.9725
−60.445 −54.13
7
6
51354.13
−52.5 −
6
5
y
−56.4825 9612
−53.
5
4
3.
9
61
2
4
3
−51
.44
−
−46.3 48.918
8
975
−43.8
762
2
1
0
3
−5
y
3
x
0
1
2
3
x
4
−54.13
2
1
5
0
0
1
2
3
x
Figura 2.4: Distribución espacial de la potencia
4
5
2.4 Experimentos
28
En la figura 2.4 se puede ver la distribución espacial de la potencia para cada router (rojo
indica más potencia y azul menos potencia).
Se puede ver que la señal de galileo es más fuerte cerca de (0,0) la de rusell cerca de
(0,10), la de laplace cerca de (5,0) y la de helena cerca de (5,10). En este último dataset
hubo un inconveniente durante el experimento y se perdieron los datos para y > 7
Estos gráficos fueron generados calculando para cada router la media del histograma
obtenido en cada punto de la grilla. Si bién no contiene toda la información del histograma
es útil para ver cualitativamente la distribución espacial de la señal.
En la figura 2.5 se puede ver el histograma correspondiente a cada punto de la grilla con
el valor medio de potencia para cada AP marcado con linea punteda. Las imágenes están
acomodadas de acuerdo al mismo sistema de referencia que la figura 2.4, es decir, con el
origen en el margen inferior izquierdo.
2.4 Experimentos
1
1
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.6
0.6
0.6
0.5
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.2
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.7
0.7
0.6
0.8
0.6
0.6
0.5
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.8
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0.8
0.7
0.6
0.6
P(RSSI)
0.7
0.6
0.5
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
1
rusell
linksys
laplace
galileo
<length: 0>
FIUBA − BIBLIOTECA − 2
FIUBA − BIBLIOTECA − 1
HPF0891F
0.9
0.7
P(RSSI)
−80
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.5
−90
0.9
0.8
0.5
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.8
0.8
0.7
0.7
0.7
0.6
0.6
0.6
0.5
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.8
0.9
0.8
P(RSSI)
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
0.8
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.9
0.8
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 2
FIUBA − BIBLIOTECA − 1
uFi_D02202
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.8
0.9
0.8
P(RSSI)
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
0.8
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.9
0.8
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 2
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.8
0.9
0.8
P(RSSI)
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
1
rusell
Helena
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 1
uFi_D02202
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
<length: 0>
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
0.8
0.7
0.6
0.6
P(RSSI)
0.7
0.6
P(RSSI)
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0.5
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.8
0.7
0.7
0.6
0.6
0.5
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.8
0.9
0.8
P(RSSI)
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 2
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.9
0.8
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
−100
0
0.9
0.8
P(RSSI)
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.5
0.4
0.4
0.4
0.4
0.4
0.3
0.3
0.3
0.3
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0
−100
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0
−100
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0
−100
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0
−100
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
rusell
Helena
laplace
galileo
<length: 0>
FIUBA − BIBLIOTECA − 1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.5
0.4
0
−100
−80
0.8
0.6
0.5
−90
0.9
0.7
0.5
0
1
rusell
Helena
laplace
galileo
<length: 0>
FIUBA − BIBLIOTECA − 1
0.6
0.5
−10
0.1
−80
0.7
0.5
−20
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.2
−90
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 2
FIUBA − BIBLIOTECA − 1
uFi_D02202
−30
0.5
0.4
0
−100
−50
−40
RSSI [dBm]
0.8
0.7
0.6
0.5
−60
0.9
0.7
0.5
−70
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.5
−80
0.1
−80
0.7
0.5
0
0.2
−90
1
rusell
Helena
laplace
galileo
<length: 0>
FIUBA − BIBLIOTECA − 1
−10
0.5
0.4
−70
−90
0.8
0.4
−80
−20
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.4
−90
−30
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.4
0
−100
−50
−40
RSSI [dBm]
0.1
−80
0.9
0.5
−60
0.2
−90
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 2
FIUBA − BIBLIOTECA − 1
HPF0891F
uFi_D02202
0.8
0.7
P(RSSI)
−70
0.9
0.6
0.5
−80
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.7
0.5
−90
0
−100
P(RSSI)
−80
0
−100
P(RSSI)
−90
0
−100
−70
0.5
0.4
0
−100
−80
0.8
0.7
0.6
0.5
−90
0.9
0.7
0.5
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.5
−10
0.1
−80
0.7
0.5
−20
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.2
−90
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
−30
0.5
0.4
0
−100
−50
−40
RSSI [dBm]
0.8
0.6
0.5
−60
0.9
0.7
0.5
−70
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.5
−80
0.1
−80
0.7
0.5
0
0.2
−90
1
rusell
Helena
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 1
−10
0.5
0.4
0
−100
−90
0.8
0.7
0.6
0.5
−20
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.7
0.5
−30
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.5
−50
−40
RSSI [dBm]
0.1
−80
0.7
0.5
−60
0.2
−90
1
rusell
Helena
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 1
uFi_D02202
−70
0.5
0.4
0
−100
−80
0.8
0.6
0.5
−90
0.9
0.7
0.5
0
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.5
−10
0.1
−80
0.7
0.5
−20
rusell
linksys
laplace
galileo
DlinkHall
FIUBA − BIBLIOTECA − 1
0.2
−90
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
−30
0.5
0.4
0
−100
−50
−40
RSSI [dBm]
0.8
0.7
0.6
0.5
−60
0.9
0.7
0.5
−70
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.6
0.5
−80
0.1
−80
0.7
0.5
0
0.2
−90
1
rusell
Helena
laplace
galileo
FIUBA − BIBLIOTECA − 1
−10
0.5
0.4
0.3
−90
−90
0.9
0.4
0
−100
−20
rusell
linksys
laplace
galileo
FIUBA − BIBLIOTECA − 1
1
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.5
−30
0.1
−80
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
−50
−40
RSSI [dBm]
0.2
−90
P(RSSI)
−70
0
−100
P(RSSI)
−80
0
−100
P(RSSI)
−90
0
−100
−60
0.5
0.4
0
−100
−70
0.8
P(RSSI)
0.7
0.6
P(RSSI)
0.7
0.6
P(RSSI)
0.8
0.7
P(RSSI)
0.8
0.5
−80
0.9
0.6
0.5
0.8
0.9
0.7
0.5
−90
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.8
P(RSSI)
P(RSSI)
P(RSSI)
0.5
0.4
0.3
0.8
P(RSSI)
0.5
0.4
0.3
0.9
P(RSSI)
0.5
0.4
1
P(RSSI)
0.5
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.8
P(RSSI)
0.6
P(RSSI)
0.6
P(RSSI)
0.7
P(RSSI)
0.7
0.5
0.8
0.9
0.7
0
−100
P(RSSI)
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.7
0.9
P(RSSI)
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.7
1
P(RSSI)
1
rusell
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
0.7
0
−100
P(RSSI)
1
rusell
<length: 0>
laplace
galileo
FIUBA − BIBLIOTECA − 1
0.9
0.8
P(RSSI)
P(RSSI)
0.9
P(RSSI)
29
0.2
0.1
−90
−80
−70
−60
−50
−40
RSSI [dBm]
−30
−20
−10
0
0
−100
−90
−80
−70
−60
−50
−40
RSSI [dBm]
Figura 2.5: Histogramas de potencia WiFi medidos en cada punto de la grilla
−30
−20
−10
0
2.4 Experimentos
2.4.2.
30
Caracterización del fingerprint
Durante el desarrollo del algoritmo de localización WiFi fue necesario usar varios parámetros. Es razonable hacer una evaluación de estos parámetros para justificar la elección de
cada uno. Más teniendo en cuenta que algunos de ellos tienen influencia directa en el costo
del sistema.
En este experimento se usa la base de datos de mediciones presentada en 2.4.1.
2.4.2.1.
Objetivo
Determinar el impacto/influencia de los siguientes factores en la calidad de la medición
WiFi
Mediciones online: es la cantidad de mediciones que se toman para obtener la localización. Es decir, cuántas veces se mide la potencia de todos los AP disponibles antes de
estimar la posición.
Cantidad de APs tomados en cuenta para la estimación.
Varianza de ruido aditivo a la medición WiFi
Mediciones offline: es la cantidad de mediciones que se toman para armar el histograma
en la etapa de entrenamiento.
Densidad de la grilla: indica la cantidad de mediciones por unidad de superficie para
armar la base de datos.
Los dos últimos ı́tems son difı́ciles de probar con las mediciones obtenidas en 2.4.1, principalmente por el tamaño reducido de la grilla. Para evaluar estos parámetros se realizó una
simulación en la que se sintetizan todos los datos necesarios.
2.4.2.2.
Preparación
Se modificó la aplicación locate para que acepte como parámetros los ı́tems que se
quieren caracterizar (cantidad de mediciones, densidad de histograma, granularidad de la
grilla y cantidad de AP) y para que tome las mediciones WiFi de un archivo de texto en
lugar de obtenerlas de la placa de red.
locate presenta como resultado la posición de la grilla con mayor probabilidad a posteriori.
2.4 Experimentos
31
Figura 2.6: Camino obtenido a partir de locate vs ground truth, usando 4 routers
Luego se generó un script MATLAB que corre una simulación de montecarlo probando
cada uno de estos parámetros por separado:
Se crea un camino aleatorio dentro de la grilla en la que está definido el dataset. Una
vez generado el camino se crea un archivo con las mediciones WiFi correspondientes a ese
camino, es decir, se toma del histograma de cada punto del camino el valor medio y se lo
contamina con ruido. El objetivo de esto es recrear una medición real en el escenario en que
fue tomado el dataset.
2.4 Experimentos
32
Figura 2.7: Camino obtenido a partir de locate vs ground truth, usando 2 routers
En el caso de los últimos dos ı́tems a probar, fue necesario crear un conjunto de utilidades
que presenten como resultado la base de datos (mediciones offline, de entrenamiento) que
se hubiera medido en un escenario ficticio. De esta manera se pueden hacer experimentos
en una grilla arbirariamente grande, usando cualquier cantidad de routers. Esto es mucho
más flexible que el dataset real, pero hay que interpretarlo con cuidado ya que la dispersión
y el comportamiento del campo WiFi en este caso se hace mediante una ley conocida, en
contraposición con la hipótesis de trabajo del comportamiento complejo del campo.
Los resultados de esta simulación son valiosos y tienen sentido solamente si se los analiza
con cuidado y a la par de los experimentos realizados con el dataset real.
2.4.2.3.
Procedimiento
El desarrollo del experimento consiste en una serie de corridas de locate (usando el
dataset con datos reales y luego el simulado) con todos los parámetros fijos salvo el que se
está evaluando (este último parámetro va recorriendo todo el rango que se quiera evaluar a
lo largo del experimento) y se calcula el error cuadrático medio entre el resultado de locate
y el camino original.
Esto se repite para todos los parámetros que se quieren evaluar.
2.4 Experimentos
2.4.2.4.
33
Resultados obtenidos (usando el dataset real)
En las figuras 2.6 y 2.7 se pueden ver las comparaciones entre el camino generado aleatoriamente y el camino estimado usando locate, para una realización en particular. Se marcan
con etiquetas verdes los puntos del gráfico donde coinciden los dos caminos. Cuando no
coinciden se marca con etiqueta azul el camino verdadero y en rojo el estimado.
Es interesante observar cómo es modificado el camino estimado por los errores, teniendo
en cuenta el comportamiento no monótono del campo de potencia respecto al espacio. Es
razonable que un pequeño error en la medición tenga un impacto grande en la estimación
considerando los resultados obtenidos en 2.4.1.4
A continuación se presentan los resultados del experimento. Se grafica el error cuadrático
de la estimación (en metros) en función del parámetro a evaluar. En azul se presenta la media
y en trazo rojo punteado la banda de ± 2 desvı́os. Tanto la media como el desvı́o estándar
son el resultado de 30 corridas de locate por cada valor del parámetro bajo observación.
Figura 2.8: Error vs routers utilizados
En la figura 2.8 se puede observar como decrece el error a medida que se usan más APs
para decidir la posición. El resultado es razonable y sugiere que tiene sentido tener un dataset
con diversidad de AP pero hasta cierto punto. Es necesario realizar mediciones con más que
4 routers para poder realizar afirmaciones en este aspecto.
2.4 Experimentos
34
Figura 2.9: Error vs mediciones tomadas
En la figura 2.9 se puede observar que tomar más de 5 mediciones para decidir la ubicación
no presenta grandes ventajas. Esto es importante porque es uno de los factores que determina
la frecuencia del lazo que va a tener el sistema de mediciones WiFi.
Figura 2.10: Error vs varianza de ruido
Por último en la figura 2.10 se puede observar como incrementa el error de estimación
al contaminar las mediciones con ruido blanco gaussiano. El eje horizontal de este gráfico
indica la varianza del ruido en dBm.
2.4 Experimentos
2.4.2.5.
35
Resultados obtenidos (usando el dataset simulado)
A continuación se presentan los resultados del experimento usando el dataset simulado.
Se grafica el error cuadrático de la estimación (en metros) en función del parámetro a evaluar.
En azul se presenta la media y en trazo rojo punteado la banda de ± 2 desvı́os, también
correspondientes a 30 corridas de locate
Para la evaluación de los primeros tres parámetros se usan las mismas condiciones que en
el dataset real. Es decir, mismo tamaño de grilla, misma cantidad de routers, misma ubicación
de los routers, etc. Esto se hace ası́ para poder aceptar el modelo y luego extrapolar resultados
en los casos que no se analizaron con el dataset real.



 









 



Figura 2.11: Error vs routers utilizados
En la figura 2.11 se puede observar como decrece el error a medida que se usan más APs
para decidir la posición. El resultado es consistente con lo obtenido en la sección 2.4.2.4.
2.4 Experimentos
36



 











 




Figura 2.12: Error vs routers utilizados (extendido)
En la figura 2.12 se puede observar otra corrida de la simulación, esta vez extendiendo
la cantidad de routers. Esto no hubiera sido posible usando el dataset real y presenta un
resultado interesante: tener disponibles más de 4 o 5 routers no mejora las mediciones en
gran medida.


 











 




Figura 2.13: Error vs mediciones tomadas
En la figura 2.13 se puede observar que tomar muchas mediciones para decidir la ubicación
no presenta grandes ventajas. Esto es importante porque es uno de los factores que determina
la frecuencia del lazo que va a tener el sistema. Este resultado también se verifica en la
sección 2.4.2.4 con el dataset real.
2.4 Experimentos
37



 

















Figura 2.14: Error vs varianza de ruido
Por último en la figura 2.14 se puede observar como incrementa el error de estimación
al contaminar las mediciones con ruido blanco gaussiano. El eje horizontal de este gráfico
indica la varianza del ruido en dBm. Nuevamente el gráfico verifica los resultados obtenidos
en la sección 2.4.2.4.
Quedan ahora por evaluar los últimos dos parámetros, para los cuales no era útil el
dataset real.
En la figura 2.15 se puede observar el error en función de la cantidad de muestras de
entrenamiento tomadas para armar el histograma.
Aparentemente no hay una mejora en la estimación a medida que se toman más muestras.
Hay que analizar cuidadosamente este resultado, porque con el dataset simulado la dispersión
de RSSI es gaussiana, generando una distribución univariada. De esta forma, una sola muestra
de entrenamiento podrı́a dar una buena idea de la distribución. En un caso real donde
la distribución tenga más de un máximo local puede tomar importancia la cantidad de
muestras en el histograma. El impacto de esto en la práctica serı́a una reducción del tiempo
de entrenamiento pero no provoca cambios significativos en el sistema durante la etapa de
estimación
2.4 Experimentos
38
3.5
3
Error RMS
2.5
2
1.5
1
0.5
0
5
10
15
mediciones offline
20
25
Figura 2.15: Error vs cantidad de mediciones offline
Por último se puede observar en la figura 2.16 como incrementa el error a medida que
baja la densidad de puntos en la base de datos. El eje horizontal de la figura indica el factor
de downsample con el que se usó la grilla. Un factor de downsample n significa que se usaron
solamente como información a priori la base de datos de los puntos de la forma (x · n, y · n).
12
10
Error RMS
8
6
4
2
0
1
1.2
1.4
1.6
1.8
2
2.2
1/densidad de grilla
2.4
2.6
2.8
3
Figura 2.16: Error vs densidad de la grilla
Es interesante analizar este resultado teniendo en cuenta que en una implementación
real del sistema no es necesario respetar una grilla, es decir, el filtro bayesiano no requiere
un dominio perı́odico para poder realizar la estimación. Simplemente es necesario asociar la
información a priori con una ubicación en el espacio.
Este esquema off-the-grid se puede aprovechar para no tomar mediciones innecesarias
2.4 Experimentos
39
durante la etapa de entrenamiento aceptando un incremento del error en ciertas zonas1 a
costa de tomar menos mediciones.
También se puede usar para ir completando la base de datos de información de entrenamiento a medida que se navega. Partiendo de un set de información a priori mı́nimo y
suficiente para navegar, se pueden ir creando nuevos puntos en la grilla tomando mediciones WiFi y ubicándolos en los momentos que el navegador tenga una buena covarianza en
la estimación de la posición. Esto presenta ciertas caracterı́sticas de bootstrapping que son
estudiadas en detalle en los problemas de SLAM.
1
quizá espacios grandes o con disponibilidad de otros sistemas de navegación como GNSS
Capı́tulo 3
Sistema de navegación inercial INS
Quia parvus error in principio
magnus est in fine.
Aristóteles
El sistema de navegación inercial se encarga de calcular la posición, velocidad y orientación (en la jerga, actitud) del vehı́culo a partir de las mediciones inerciales de los giróscopos
y acelerómetros.
Giróscopos
ωb
Posición
Acelerómetros
fb
INS
Velocidad
Actitud
Aceleración
gw
pw
vw
qw
b
gravitatoria
Figura 3.1: Sistema de Navegación Inercial
Su principio de funcionamiento se basa en integrar las mediciones inerciales obtenidas de
la IMU: integrando la velocidad angular medida por el giróscopo se obtiene la (diferencia
en) orientación respecto al momento inicial. Conociendo la orientación y la fuerza especı́fica
(medición del acelerómetro) se puede calcular la aceleración lineal. Al integrar dos veces la
aceleración lineal se obtiene la (diferencia en) posición respecto al momento inicial.
La principal dificultad que se encuentra al implementar un INS es el drift o corrimiento
que se genera a medida que pasa el tiempo: tanto la posición como la actitud son el resultado
40
3.1 Sistema de referencia
41
de integrar mediciones. Si estas mediciones están contaminadas con ruido (en menor o mayor
medida siempre va a suceder esto) en el resultado se obtiene un error no acotado en el tiempo.
3.1.
Sistema de referencia
Teniendo en cuenta las caracterı́sticas de la aplicación, se usa un sistema de referencia
cartesiano cuyo origen es arbitrario pero está siempre asociado a un mapa o información a
priori que se tiene sobre el terreno. No tiene sentido usar sistemas de referencia globales ya
que el entorno de trabajo siempre se reduce a un edificio o predio en particular.
Se define una terna w fija en algún punto del terreno que se desea navegar. Todas las
coordenadas de navegación quedan definidas a partir de esta terna. También se define una
terna b fija al objeto que se quiere navegar. La diferencia entre las dos ternas en el momento
inicial queda definida por las condiciones iniciales y un cuaternión representa la rotación de
la terna w a la terna b.
Todas las mediciones inerciales se obtienen en terna b ya que los instrumentos están fijos al
vehı́culo. Esto es conocido como Strap Down Navigation. Este esquema requiere mayor poder
de cómputo que su contraparte, Gimballed Navigation donde los sensores quedan orientados
según la terna w gracias a una plataforma estabilizadora. Sin embargo este último método
presenta desventajas respecto a la complejidad mecánica del sistema.
Existen varias técnicas para cambiar la terna en que está expresado un vector. En este
trabajo se usan cuaterniones y matrices de cosenos directores, explicados en los apéndices A.1
y A.2 respectivamente.
zw
zb
yb
xb
yw
xw
Figura 3.2: Sistemas de referencia
3.2 Ecuaciones del INS
3.2.
42
Ecuaciones del INS
El sistema a propagar se define a partir de las siguientes ecuaciones [10]
ṗ = v
v̇ = q ◦
q̇ =
�
fb
1
·q◦
2
0
�
�
(3.1)
◦ q∗ + g
ωb
0
(3.2)
�
(3.3)
Con condiciones iniciales
Donde p =
R3
�
x y z
�T
p 0 , v 0 , q0
∈
R3
es la posición del objeto a navegar, v =
�
vx vy vz
�T
∈
es su velocidad y q es un cuaternión que define la orientación del objeto respecto al sistema
de referencia.
g ∈ R3 es la fuerza de gravedad que se considera constante en un entorno de navegación
indoor, f b ∈ R3 es la fuerza especı́fica medida por el acelerómetro y ω b ∈ R3 es la velocidad
angular medida por el giróscopo. La fuerza especı́fica es una combinación de la aceleración
inercial y gravitacional. Es por eso que el navegador también tiene que tener en cuenta la
fuerza de gravedad [25] (cáp 5). ẋ indica la derivada temporal de x, ◦ el producto entre
cuaterniones
� y�∗ su conjugado.
�
�
b
fb
ω
Con
∈ R4 y
∈ R4 se representan dos cuaterniones cuyas primeras tres
0
0
componentes son el vector de mediciones f b y el vector de mediciones ω b respectivamente.
La última componente es un cero en los dos casos.
Se puede ver que las ecuaciones están definidas en terna w. En la ecuación (3.2) se
usa el producto entre cuaterniones para rotar la medición f b de la terna b a la terna w y
entonces poder sumarle g que está definida en w. La ecuación (3.3) también cambia de terna
la medición ω b usando el cuaternión q.
Para detalles sobre la definición de cuaterniones y sus operaciones consultar el apéndice A.1
3.3.
Errores de los sensores
Siempre que se mida una cantidad ésta estará acompañada de ruido, o una señal no
deseada. Esto es inherente a la acción de medir, y los sensores basados en sistemas microelectro-mecánicos (MEMS) no están exceptuados.
Haciendo una comparativa histórica los sensores MEMS representan un avance extraordinario en cuanto a costo, tamaño y consumo energético respecto a sus antecesores. Sin
3.3 Errores de los sensores
43
embargo para usarlos es necesario tener una idea clara de cómo funcionan y cuál es el origen
de los errores de medición.
Actualmente los sensores MEMS consisten en una estructura mecáncia construida en
silicio o cuarzo con un tamaño del orden de las decenas o centenas de micrometros (dependiendo el sensor y la tecnologı́a). Esta microarquitectura se logra usando las mismas técnicas
de fotolitografı́a ya conocidas y dominadas en la industria de los circuitos integrados.
El funcionamiento de los sensores se basa en la deformación mecánica que sufre la estructura al ser sometida a una aceleración lineal o una rotación.
Distintas estructuras definen distintos sensores: un giróscopo va a requerir una estructura
que sea sensible (i.e. que se deforme) ante rotaciones pero que no sufra modificaciones ante
una aceleración lineal. Contrariamente un acelerómetro tiene que ser sensible a la aceleración
lineal y no a rotaciones.
Lo más común es medir la deformación de la estructura en términos de capacidad eléctrica. Si pensamos en un capacitor de placas planas paralelas, su capacidad estará definida de
acuerdo a la distancia de las placas, entre otros factores. Si conocemos el capacitor podemos
inferir la distancia entre las placas a partir de su capacidad.
Las estructuras de los sensores MEMS están armadas para que la deformación mecánica
que sufren impacte en la capacidad eléctrica entre dos nodos. Esta deformación es tan pequeña que es común tener que medir capacidades del orden de los atto Farad (1aF=10−18 F)
Es por eso que pequeñas diferencias en la construcción pueden tener un impacto enorme
en la medición final.
Las fuentes de errores sistemáticos más comunes en sensores MEMS son [27]
Sesgo
Factor de escala
Sesgo dependiente de g (para giróscopos)
No ortogonalidad entre ejes
Se propone un modelo de error para los sensores inerciales en el que se separan las fuentes
de error: por un lado los errores inherentes a la construcción (desapareamiento de partes,
asimetrı́as, etc) y por otro lado los errores dependientes de las condiciones de operación.
Los errores del primer grupo son fijos para un sensor dado, no cambian a lo largo del
tiempo pero sı́ cambian de sensor a sensor.
3.4 Ensayo de los sensores
44
Figura 3.3: Clasificación de errores comunes en sensores inerciales
La IMU usada pasa por un proceso de caracterización en el que se estima el sesgo y factor
de escala provinientes de la construcción. Esos valores, luego del experimento se asocian al
sensor y todo el procesamiento posterior se realiza compensando estos errores.
A continuación se presenta el modelo de error que se usa para caracterizar los sensores
(offline)
fˆb = (1 + sf ) · f b + bf + ηf
ωˆb = (1 + sw ) · ω b + bw + ηw
(3.4)
(3.5)
fˆb y ωˆb son los valores medidos, f b y ω b los valores reales, con s se indica el factor de
escala, con b el sesgo y con η ruido blanco.
Una vez compensados los errores inherentes a la construcción, el sesgo y factor de escala
relativos a las condiciones de operación se tienen en cuenta como una variable de estado más
en el sistema y se estiman durante el funcionamiento del mismo.
A continuación se muestra la ecuación que define el modelo de error una vez ensayada la
IMU, es decir, luego de haber compensado los errores inherentes a la construcción.
f˜b = (1 + sof ) · fˆb + bof + ηfo
o
ω˜b = (1 + sow ) · ωˆb + bow + ηw
(3.6)
(3.7)
f˜b y ω˜b son los valores medidos, fˆb y ωˆb los valores compensados, con s se indica el factor
de escala, con b el sesgo y con η ruido blanco. El superı́ndice ’o’ indica que estos valores son
estimados online.
El error debido a la no ortogonalidad entre ejes no es tomado en cuenta en este trabajo
ya que en sensores MEMS de bajo costo esta fuente de error es despreciable frente al sesgo
y factor de escala [29]
3.4.
Ensayo de los sensores
Para estimar el sesgo y factor de escala de la IMU se propone hacer el siguiente experimento.
3.4 Ensayo de los sensores
45
Para el acelerómetro: se lo coloca en una plataforma alineada con los ejes del sensor, de tal
forma que se mida la fuerza de gravedad en un eje. Luego se comienza a girar la plataforma
de forma coaxial a otro de los ejes conociendo el ángulo de rotación y las mediciones del
instrumento en todo momento.
Por dificultades mecánicas a la hora de armar el experimento, es imposible ubicar el
sensor en el plano de rotación. Esto trae aparejado un error que es necesario contemplar si
se requiere una calibración final del instrumento.
Figura 3.4: Rotación de la IMU durante la caracterización
Como resultado se va a obtener una medida de la fuerza de gravedad modulada por el
ángulo de giro, entre los dos ejes del acelerómetro en el plano de giro.
Se repite la experiencia cambiando la posición del acelerómetro para obtener información
del eje que estaba ortogonal al giro de la plataforma.
Conociendo la fuerza de gravedad es posible sintetizar una tira de datos equivalente a la
medida, pero sin errores de sesgo ni factor de escala.
A continuación se plantea un problema de mı́nimos cuadrados en el que se busca adaptar
la tira de datos medida a la tira de datos sintetizada mediante el modelo propuesto (error
de sesgo y factor de escala)
Se parte de:
y = Ax + η
Donde
yT =
�
AM
1
AM
2
···
(3.8)
AM
N
�
es el vector de N mediciones del acelecómetro en el experimento,
3.4 Ensayo de los sensores
46
T
A =
�
Ai1 Ai2 · · ·
1
···
1
�
AiN
1
tiene una columna con los N valores de la tira de datos sintetizada y una columna de N
unos,
x=
�
1 + sf
bf
�
es el vector con los parámetros que se quieren estimar (sf es el factor de escala y bf es el
sesgo). Por último
ηT =
�
η1 η2 · · ·
ηN
tiene el ruido gaussiano que afecta a la medición.
�
El estimador de mı́nimos cuadrados (LS) de x es x̂ = (AT A)−1 AT y.
La espectación E[x̂] del estimador es igual a la espectación del vector E[x] con lo cual el
estimador es insesgado.
E[x̂] = E[(AT A)−1 AT y]
= E[(AT A)−1 AT (Ax + η)]
= E[(AT A)−1 AT Ax + (AT A)−1 AT η)]
= E[x] + (AT A)−1 AT E[η]
= E[x]
La matriz de covarianza del estimador Σx̂
Σx̂ = E[|x̂ − E[x̂]|2 ] = E[|x̂ − E[x]|2 ] = E[(x̂ − E[x])(x̂ − E[x])T ]
= E[((AT A)−1 AT (Ax + η) − E[x])((AT A)−1 AT (Ax + η) − E[x])T ]
= E[(x + (AT A)−1 AT η − E[x])(x + (AT A)−1 AT η − E[x])T ]
= E[xxT ] − E[x]E[x]T + (AT A)−1 AT ση2 A(AT A)−1
Para poder continuar con el cálculo es necesario aclarar que el sesgo y el factor de escala
que se buscan están ligados a un sensor en particular por cuestiones constructivas y no
cambian a lo largo del tiempo (i.e. se comportan como un número desconocido y no como una
3.4 Ensayo de los sensores
47
variable aleatoria.). Por lo tanto podemos tratarlos como números al calcular sus mementos
de 1er y 2do orden.
Hipótesis 1: Tanto el factor de escala como el sesgo inherentes a la construcción son
números no conocidos.
E[x] =
�
1 + E[sf ]
E[bf ]
�
=
�
1
0
�
var(sf ) = 0
var(bf ) = 0
Teniendo en cuenta la hipótesis 1 se puede seguir calculando Σx̂
Σx̂ = E[xxT ] − E[x]E[x]T + (AT A)−1 AT ση2 A(AT A)−1
�
� �
�
1 + 2sf + s2f bf + bf sf
1 0
−
= E
+ ση2 (AT A)−1
bf + bf s f
b2f
0 0
�
� �
�
1 + 2E[sf ] + var(sf ) E[bf ] + E[bf sf ]
1 0
=
−
+ ση2 (AT A)−1
E[bf ] + E[bf sf ]
var(bf )
0 0
�
� �
�
1 0
1 0
=
−
+ ση2 (AT A)−1
0 0
0 0
= ση2 (AT A)−1
=
N
ση2
�N
i2
k=1 Ak
−(
�N
i 2
k=1 Ak )
�
−
N
�N
i
k=1 Ak
�
�
i
− N
A
k=1 k
�N
i2
k=1 Ak
(3.9)
Por la forma en que se realiza el experimento se puede calcular
N
�
Aik = g
k=1
N
�
k=1
Aik
2
= g2
N
�
N
sin
k=1
N
�
�
k2π
k2π
=g
cos
=0
N
N
k=1
N
sin2
k=1
�
k2π
k2π
= g2
cos2
N
N
k=1
�
�
(2(2πN + π))
21
−1 (2π)
= g
2N − sin
sin
+1
4
N
N
(2N − 1 + 1)
= g2
4
N
= g2
2
Ahora se puede escribir Σx̂ como
Σx̂ = ση2
�
2
N g2
0
0
1
N
�
(3.10)
3.4 Ensayo de los sensores
48
De esta forma se puede definir la cantidad de muestras a tomar durante el experimento
en función del ruido del instrumento.
Es razonable cuestionarse qué impacto tiene en la caracterización una mala alineación
de la plataforma giratoria, y analizando las condiciones del experimento se puede ver que
es robusto en ese sentido: el error que pueda haber en el ángulo debido a una calibración
manual del setup hace que las mediciones queden moduladas por una función cos(α), donde
α es el ángulo formado entre la normal a la plataforma y el plano horizontal. Idealmente
con la normal de la plataforma en el plano horizontal (α = 0) y cos(α) = 1. Un error en
el ángulo (δ) tiene como consecuencia un error en las mediciones dado por cos(α + δ) =
α=0
cos(α) · cos(δ) − sin(α) · sin(δ) = cos(δ)
Mientras δ quede acotado por unos pocos grados la modulación en los datos obtenidos
no es apreciable.
De todas formas, el error que se cometa en este ensayo terminará siendo estimado por el
sistema como parte del error debido a las condiciones de operación. Se pueden encontrar los
detalles del cálculo en el apéndice D
Para ensayar el giróscopo se realiza un experimento similar: en lugar de modular la fuerza
de gravedad con la orientación de la IMU, se gira la plataforma a velocidades constantes y
conocidas. Luego se hace un ajuste por cuadrados mı́nimos entre los datos medidos y los
generados por el modelo de error.
Al no tener un equivalente de g en términos de velocidad angular para usar como patrón,
el ensayo del giróscopo es un poco más complejo en cuanto a las herramientas involucradas,
pero en escencia es el mismo experimento.
Es necesaria una plataforma capaz de girar a velocidad controlada y conocida. Luego
de tomar mediciones a distintas velocidades (en este experimento las distintas velocidades
equivalen a los distintos ángulos en el caso del acelerómetro) se plantea un problema de optimización por cuadrados mı́nimos similar al caso del acelerómetro: conociendo las velocidades
angulares usadas se puede sintetizar una tira de datos correspondiente a las lecturas deseadas, es decir, velocidad angular sin contaminación de ruido. Una vez hecho esto se proyectan
las mediciones obtenidas (i.e. las lecturas del giróscopo para cada velocidad angular) en el
espacio de la tira de datos generada. Usando el modelo de error propuesto obtendremos el
sesgo y factor de escala del giróscopo.
Hasta la ecuación (3.9) son válidas las cuentas para el ensayo del giróscopo. Lo único que
cambia es la forma en que se obtienen los datos.
Capı́tulo 4
Plataforma de vuelo
If birds can glide for long periods
of time, then. . . why can’t I.
Orville Wright
El término UAV se usa para referirse a un vehı́culo aéreo no tripulado. Un caso particular
de esto es el quadrotor. Un quadrotor es un dispositivo de aterrizaje y despegue vertical
(VTOL) capaz de volar gracias a cuatro hélices que le dan el sustento necesario para despegar
del piso. Se diferencia de un helicóptero en la manera de ser controlado: en el quadrotor no
se controla el ángulo de ataque de las hélices. Estas tienen paso fijo y el control se logra
actuando sobre la velocidad angular de los motores.
Si bien existen quadrotores tripulados y para transporte de cargas grandes este trabajo
se enfoca en los no tripulados y con una carga útil -payload- de pocos kg.
Figura 4.1: Modelo 3D de un quadrotor
4.1.
¿Por qué un quadrotor?
La elección se basa en la simplicidad del quadrotor en varios aspectos. En primer lugar
desde el punto de vista de la implementación mecánica un quadrotor es simple en el sentido
49
4.2 Descripción general
50
de que las únicas partes móviles que tiene son las hélices. Dado que estas están acopladas
directamente a los ejes de los motores no es necesario implementar ningún tipo de mecanismo.
Otra ventaja interesante del quadrotor en términos de simplicidad es la cancelación de
torque total que se obtiene (ya que 2 motores giran hacia un lado y 2 hacia otro). Esto
permite dejar de lado consideraciones respecto a la estabilización del dispositivo en el eje
vertical. Y comparando el quadrotor con un vehı́culo volador de alas fijas tiene como ventaja
el aterrizaje y despegue vertical, y la capacidad de volar en cualquier dirección o quedarse
flotando en un punto fijo. Teniendo en cuenta que la aplicación involucra moverse en un
entorno cerrado estas diferencias son importantes.
Por último pero no menos importante, tener cuatro hélices dispuestas en dos ejes ortogonales permite controlar el quadrotor de una forma relativamente simple.
En definitiva, el usar de un quadrotor presenta ciertas ventajas [11] respecto a otras
aeronaves:
Acople directo entre la hélice y el eje del motor (i.e. no necesita caja reductora, piezas
de transmisión o engranajes)
Hélices de paso fijo: en general son de una pieza y se evita el sistema de control de
ángulo de ataque que tiene los helicópteros.
Cuatro motores chicos en lugar de uno grande acumulan menos energı́a cinética aumentando la seguridad en caso de accidente.
Bajo costo de mantenimiento respecto a helicópteros y aviones.
Los quadrotores se pueden usar en tareas de búsqueda y rescate, para explorar terrenos
peligrosos (con elementos explosivos, o altos niveles de radiación). Debido a su capacidad de
permanecer flotando en un punto fijo se pueden usar también para inspección de calidad y
mantenimiento de estructuras.
4.2.
Descripción general
Caracterı́sticas del quadrotor:
Peso total entre 1kg y 2kg. Esto se distribuye entre el sistema en sı́ y el payload o carga
útil que lleva el vehı́culo (por ejemplo, una cámara, sensores)
Autonomı́a de vuelo entre 10 y 20 minutos. Para definir la autonomı́a siempre existe
una relación de compromiso entre la capacidad de la baterı́a o fuente de poder y el
tamaño total del vehı́culo.
Capacidad de cómputo suficiente para poder resolver los algoritmos de navegación.
4.2 Descripción general
51
Conectividad inalámbrica para transmitir telemetrı́a y recibir comandos de configuración.
4.2.1.
Principio de funcionamiento
Para controlar el quadrotor es necesario generar incrementos en la potencia entregada a
cada motor. Se asume que la plataforma está volando estable con una potencia de motores
PWMQ (en los cuatro motores). Hay tres posibilidades de giro de la plataforma: roll, pitch
y yaw. Roll y pitch son giros en torno a los ejes horizontales del quadrotor. Una inclinación
en cualquiera de estos ejes produce un movimiento lineal cuya velocidad depende del ángulo.
Esto se denomina ángulo de ataque y es la forma en que se translada el vehı́culo. Yaw es un
giro respecto a la vertical y no produce movimiento lineal.
Para modificar el pitch y el roll es necesario incrementar la potencia de un motor. De esta
manera la plataforma se inclina en torno al eje correspondiente. En cambio para modificar
el yaw se incrementa en igual medida la potencia de dos motores del mismo eje. Esto genera
un torque resultante que hace que la plataforma gire. Recordar que dos motores giran para
un lado y dos para el otro.
Por último, se puede lograr también cambiar la altura del quadrotor variando la potencia
de los cuatro motores en igual medida. De esta forma se puede hacer ascender o descender
la plataforma.
4.2 Descripción general
4.2.2.
52
Diagrama en bloques
Figura 4.2: Diagrama en bloques de un quadrotor
Componentes principales del quadrotor:
Cuatro motores eléctricos brushless con sus respectivo control electrónico de velocidad
(ESC)
Cuatro hélices (dos dextrógiras y dos levógiras)
Computadora de abrodo (OBC)
IMU compuesta por un giróscopo de 3 ejes y un acelerómetro de 3 ejes
Adaptador WiFi IEEE 802.11 usado para medir potencia de señal WiFi y para comunicación con tierra
Baterı́a de Li-Po
Cuadro (estructura mecánica que soporta el resto de los componentes)
Capı́tulo 5
Filtro de Kalman extendido - EKF
Caminante, no hay camino, se
hace camino al andar.
Antonio Machado
El filtro de Kalman [18] es un algoritmo recursivo que estima el estado de un sistema
lineal combinando información obtenida de sensores con información a priori acerca de la
dinámica del sistema. Siempre que se mida una cantidad fı́sica, esta estará contaminada por
ruido. En el filtro de Kalman esto se conoce como ruido de medición.
De la misma forma, siempre que se modele un sistema existe una diferencia entre el
modelo y el sistema real. Esto también se considera un ruido y en el filtro de Kalman se
conoce como ruido de proceso.
Se dice que el algoritmo es recursivo porque en cada paso de cálculo se usa solamente la
información del paso anterior y no toda la información previa. Esto representa una ventaja
importante respecto a otros métodos en cuanto a la potencia de cómputo requerida para
implementar el filtro.
Uno de los principales inventores del filtro y la teorı́a detrás fue Rudolf E Kálmán en la
década de los 60’, de ahı́ el nombre del filtro.
Su principio de funcionamiento es simple en términos cualitativos: el filtro evalúa la
calidad de la medición proveniente de los sensores y la compara con la calidad de la estimación
obtenida a partir de la información a priori del sistema. El resultado del filtro será una
combinación ponderada de estas dos fuentes de información de forma tal que el error se
minimice en términos estadı́sticos. Ambas calidades se calculan en base a los parámetros
estocásticos de cada proceso.
El filtro de Kalman es el estimador óptimo en términos de error cuadático medio (MSE)
para un sistema lineal con ruido blanco gaussiano.
Dada la naturaleza no lineal del sistema que se quiere resolver hay que modificar el filtro
53
5.1 Ecuaciones
54
en algunos aspectos para que sea un buen estimador aún cuando el sistema no es lineal. Para
esto se define el filtro de Kalman extendido (EKF) [3] que lo que hace es linealizar el sistema
tomando como punto de operación (bias, centro de la linealización) el estado estimado del
sistema.
En resumen, el filtro de Kalman toma distintas fuentes de información y las combina
para obtener una estimación del sistema mejor que la que se podrı́a calcular con cada una
de estas fuentes por separado:
Modelo del sistema (información a priori)
Mediciones de los sensores y errores de los mismos
Descripción estadı́stica de los ruidos (de proceso y medición)
Información sobre las condiciones iniciales del sistema
En el caso del filtro de Kalman esta estimación es óptima siempre que el sistema sea
lineal y los ruidos AWGN. Para el Filtro de Kalman Extendido la estimación no es óptima
debido a la linealización del sistema.
5.1.
Ecuaciones
El filtro de Kalman Extendido se define a partir de las siguientes ecuaciones [3]
Xk = f (Xk−1 ) + G(Xk−1 ) · wk−1
zk = h(Xk ) + vk
(5.1)
(5.2)
Con ruido de proceso y ruido de medición
wk ∼ N (0, Qk )
vk ∼ N (0, Rk )
La función f permite propagar el sistema (i.e. obtener el estado actual a partir del estado
anterior del sistema) y la función h estima las mediciones que se obtendrı́an. Ambas usando
la información a priori del sistema: el modelo dinámico.
El filtro combina dos instancias de cálculo en su funcionamiento: una etapa de predicción,
donde se modifica el estado de acuerdo a la información a priori. Y una etapa de actualización
donde se modifica el estado incorporando la información de las mediciones externas (i.e.
sensores)
5.1 Ecuaciones
55
La predicción se realiza en cada paso del filtrado, pero la actualización solamente se hace
cuando hay información de mediciones. Dependiendo del sistema puede haber más de una
predicción por cada actualización.
Predicción
X̂k|k−1 = f (X̂k−1|k−1 )
�
Pk|k−1 = Fk−1 Pk−1|k−1 Fk−1
+ Gk−1 Qk−1 G�
k−1
(5.3)
(5.4)
Actualización
ỹk = zk − h(X̂k|k−1 )
(5.5)
Sk = Hk Pk|k−1 Hk� + Rk
(5.6)
Kk = Pk|k−1 Hk� Sk−1
(5.7)
X̂k|k = X̂k|k−1 + Kk ỹk
(5.8)
Pk|k = (I − Kk Hk )Pk|k−1
(5.9)
Se entiende X̂k|k−1 como la estimación del estado X en el instante k conociendo el estado
del sistema en el instante k − 1.
Pk es la matriz de covarianza del error de estimación en el instante k. De alguna forma
es una medida de la calidad de la estimación para determinado instante.
Fk y Hk son los jacobianos de las funciones f y h respectivamente. Representan la
linealización de la dinámica para el instante k.
Fk−1 =
Hk =
�
∂f ��
∂X �X̂k−1|k−1
�
∂h ��
∂X �X̂k|k−1
ỹk es la innovación calculada a partir de la medición externa zk . Sk es la covarianza de
la innovación.
La innovación es la información que obtiene el sistema al tomar una medición y que no
pudo ser estimada con h. Si el sistema está bien caracterizado y el ruido es AWGN, entonces
las innovaciones son otrogonales entre sı́ (i.e. la secuencia temporal de innovaciones es un
proceso de ruido blanco).
Por último, Kk es la ganancia de Kalman. Esta matriz va a determinar cuanta importancia se le da al modelo y cuanta importancia se le da a la medición para calcular la estimación
del estado a posteriori X̂k|k
5.2 Modelo dinámico del sistema
5.2.
56
Modelo dinámico del sistema
Como se presentó en el capı́tulo 5, el filtro de Kalman extendido se basa en la linealización
del modelo dinámico involucrado. La performance del filtro va a depender de cuanto se
parezca la función linealizada a la función original. Es por eso que resulta beneficionso usar
el modelo del error en lugar del modelo del sistema directamente.
Si asumimos que el algoritmo del INS hace su trabajo correctamente, entonces el error
en las variables de navegación deberı́an ser cercanas a 0 (o por lo menos más parecidas a 0
que las variables de navegación en sı́). Tomando esta hipótesis de trabajo que es razonable y
se verifica en los experimentos, tiene sentido que el EKF trabaje con la dinámica del error.
El vector de estado del sistema es Xk

δp



 δv 




Xk =  φ 


 b 
 f 
bw
Donde δp ∈ R3 es el error en la posición, es decir, x̂ − x donde x es la posición real y x̂
la posición estimada por el INS.
δv ∈ R3 es el error en la velocidad, es decir, v̂ − v donde v es la velocidad real y v̂ la
velocidad estimada por el INS.
El error en la matriz de cambio de base que permite transformar la terna w en terna b
se define como φ ∈ R3 tal que C = Ĉ · (1 + S(φ)) donde C es la matriz de cambio de base
real y Ĉ es la matriz de cambio de base calculada a partir del cuaternión q del INS.
bf ∈ R3 y bw ∈ R3 son los sesgos de los acelerómetros y de los giróscopos respectivamente.
A continuación se presentan las ecuaciones que definen la dinámica del error:
δ˙p = δv
δ˙v = Ĉ · S(f ) · φ + C · δf + C · bf
φ̇ = S(w) · φ − δw − bw
b˙f
= 0
b˙w = 0
5.3 Modelo del observador
57
Y la función f que describe la evolución temporal del sistema

δp k + h · δvk

 δvk + h · [Ĉk · S(fk ) · φk + Ck · bf ]
k


f =
φk + h · [S(wk ) · φ − bwk ]


bf k

bwk









(5.10)
La matriz G se usa para acomodar (shape) el ruido gaussiano w a la dinámica del sistema.

0
0


0
h · Ck


G =  −I · h
0


0
0

0
0
�
�
δwk
wk =
δ fk









(5.11)
Y por último el jacobiano de f para usar en el filtro de Kalman extendido.

I h·I

 0

∂f

= 0

∂X
 0

0
5.3.
I
0
0
0
0
h · Ĉk · S(fˆk ) h · Ck
I + h · S(ŵ)
0
0
0
I
0
0
0


0 


−I 

0 

I
(5.12)
Modelo del observador
El algoritmo de localización por WiFi obtiene como resultado una función densidad de
probabilidad cuyo dominio es la grilla, o el conjunto de puntos definidos previamente a las
mediciones, sobre los cuales se tomaron las muestras de entrenamiento.
Este resultado a diferencia de una predición de posición hace posible implementar distintas estrategias para obtener la medición a partir de la f.d.p.
La primera opción en términos de simplicidad es quedarse con la ubicación más probable de la f.d.p. Para armar esquemas más complejos de observador pueden combinarse los
sigiuentes criterios
Descartar posiciones que estén más lejos que cierta cantidad de desvı́os de la posición
estimada. Para esto se puede usar la distancia euclı́dea o la distancia de mahalanobis.
Esto permite reducir el dominio de posibilidades a una zona razonable de acuerdo al
modelo inercial que se use.
5.3 Modelo del observador
58
Alimentar el filtro de Kalman con las k ubicaciones más probables, para k > 1. Asignando distinta covarianza a las mediciones en función de la probabilidad a posteriori
que se haya obtenido como resultado del filtro bayesiano.
5.3.1.
Ubicación más probable
En caso de usar como medición externa la ubicación más probable obtenida de la localización WiFi, la función h se define como
h(Xk ) = δp
Quedando definido el jacobiano H
H=
de forma tal que
H · Xk =
�
�
I3x3 0 0 0 0

I3x3
�
δp
(5.13)



 δv 
 �
� 
�


0 0 0 0 ·  φ  = δp


 b 
 f 
bw
En este caso la observación de x (la posición) se arma como x̂ − xw donde x̂ es la posición
estimada por el INS y xw es la posición más probable estimada por el filtro bayesiano.
Capı́tulo 6
Implementación
Oigo y olvido. Veo y aprendo.
Hago y entiendo.
Confucio
6.1.
Hardware
En esta sección se describen todos los componentes de hardware utilizados en el trabajo.
6.1.1.
IMU
La IMU utilizada se basa en sensores MEMS: un acelerómetro triaxial MMA7361L de
Freescale, un giróscopo biaxial LPR510AL (pitch, roll) y un giróscopo uniaxial LY510ALH
(yaw), ambos de STMicroelectronics. Los tres sensores tienen una interfaz analógica: presentan las mediciones en términos de una tensión. Para incorporar las mediciones al sistema de
navegación estas se digitalizan en la Computadora de bajo nivel (LLC) para luego ser enviadas a la OBC. Todos los sensores de la IMU vienen integrados en una placa de desarrollo
con un tamaño de 50x23mm y un peso menor que 50g.
59
6.1 Hardware
60
Figura 6.1: IMU utilizada en la implementación del trabajo
6.1.1.1.
Acelerómetro
Este sensor tiene en su interior una masa suspendida por un resorte que se deforma al
aplicarle una fuerza. Entre la masa y el marco que la sostiene se forma un capacitor que varı́a
de acuerdo a la geometrı́a (impuesta al aplicarle una fuerza). Esta variación en la capacidad
se mide y se acondiciona con un circuito integrado de aplicación especı́fica (ASIC)
Figura 6.2: Principio de funcionamiento de un acelerómetro MEMS
A continuación se puede observar un diagrama en bloques del sensor. El bloque G-CELL
representa la parte MEMS y el resto del sistema es un ASIC dedicado a acondicionar la
señal.
6.1 Hardware
61
Figura 6.3: Diagrama en bloques de un acelerómetro MEMS
En la tabla 6.1 se reúnen algunas caracterı́sticas del sensor provistas por el fabricante.
Caracterı́stica
Valor
min
Consumo
Tensión de operación
2.2
Temperatura de operación
-40
Unidad
typ
max
400
600
µA
3.3
3.6
V
85
ºC
±1.5
Rango 1
Rango 2
Sensibilidad @ Rango1
740
Sensibilidad @ Rango2
Tensión de offset
±6.0
g
g
800
860
mV/g
190.6
206
221.5
mV/g
1.485
1.65
1.815
V
Tabla 6.1: Caracterı́sticas del acelerómetro MMA7361L
6.1.1.2.
Giróscopo
Este sensor tiene en su interior una estructura mecánica que vibra gracias a un actuador
integrado. Al aplicarle una velocidad angular la estructura sufre una deformación de acuerdo
al principio de Coriolis [5] [7]. Esta deformación es medida en términos de capacidad eléctrica
y acondicionada mediante un ASIC.
6.1 Hardware
62
Figura 6.4: Diagrama en bloques de un giróscopo MEMS
En la tabla 6.2 se reúnen algunas caracterı́sticas del sensor provistas por el fabricante.
Caracterı́stica
Valor
min
Consumo
typ
Unidad
max
5+6.8
Tensión de operación
2.7
Temperatura de operación
-40
3
mA
3.6
V
85
ºC
±400
Rango x1
Rango x4
Sensibilidad @ Rango x1
Sensibilidad @ Rango x4
Tensión de offset
±100
º/S
º/S
2.5
mV/º/S
10
mV/º/S
1.23
V
Tabla 6.2: Caracterı́sticas del giróscopo
6.1.2.
LLC
La computadora de bajo nivel (o Low Level Computer ) es la encargada de generar una
interfaz entre algunos periféricos y la OBC. Existen tareas especı́ficas para las cuales tiene
sentido desacoplar el procesamiento. En este caso la LLC se ocupa de muestrear los sensores
analógicos y eventualmente generar las señales de PWM para controlar los motores.
6.1 Hardware
63
Figura 6.5: LPCXpresso 1768
Esta computadora cuenta con un sistema operativo de tiempo real (RTOS) que garantiza
que los perı́odos de muestreo sean correctos. Se comunica con la OBC mediante una interfaz
serie.
La LLC está basada en un microcontrolador de 32 bits LPC1769 con núcleo Cortex-M3.
En la tabla 6.3 se pueden encontrar algunos detalles del dispositivo.
Caracterı́stica
Valor
min
Consumo @ 100MHz
typ
Unidad
max
50
Tensión de operación
2.4
Temperatura de operación
-40
3.3
mA
3.6
V
85
ºC
Memoria flash
512
kBytes
Memoria ram
32
kBytes
Canales ADC
8
Resolución ADC
12
bits
Muestreo ADC
200
KHz
Canales UART
4
Velocidad UART
115.2
6250
kbps
Bus I2 C
Bus SPI
Salida PWM
Tamaño
Peso
140x35
50
mm
g
Tabla 6.3: Caracterı́sticas del LPCXpresso 1768
6.1.3.
OBC
Para seleccionar la computadora de abrodo se tuvieron en cuenta los siguientes factores
Peso y tamaño
6.1 Hardware
64
Consumo
Potencia de cálculo
Comunidad de usuarios
La mayorı́a de los quadrotores tienen un payload cercano a 1kg. Es por eso que la restricción en peso y tamaño de la computadora de abordo es importante. Una vez montado todo
el sistema debe quedar payload dispobible para montar la carga especı́fica de la aplicación
que se esté desarrollando (camara fotográfica, telemetrı́a, etc). Otro factor limitante es la
capacidad de las baterı́as. En general la autonomı́a de estos sistemas es del orden de las
decenas de minutos. Por eso la energı́a abordo es un recurso escaso y debe aprovecharse en
forma óptima.
Por otra parte se busca una computadora de abordo con potencia de cálculo suficiente
como para poder resolver el algoritmo inercial, el filtro de Kalman y las mediciones WiFi. Se
sobredimensionó la potencia de cálculo requerida para poder probar distintos algoritmos que
puedan ser más o menos exigentes en este sentido. Si bién existe una relación de compromiso
entre la potencia de cálculo y el consumo se decidió relajar el compromiso a favor de la
potencia de cálculo, perdiendo autonomı́a. Una vez definidos los algoritmos y haciendo mediciones del uso de CPU se puede ajustar nuevamente esta relación. Otro factor importante
en la definición de la computadora fue la comunidad de usuarios o la popularidad. Esto es
importante para reducir los tiempos en la resolución de problemas relativos a la plataforma
y poder concentrar la dedicación en en núcleo de la tesis.
6.1 Hardware
65
Figura 6.6: Beagleboard
Se usa como plataforma una placa BeagleBoard C4 ya que resulta conveniente luego de
evaluar los criterios de selección mencionados.
La BeagleBoard cuenta con un procesador OMAP3530DCBB72 que corre a 720MHz y para el
desarrollo del software corre un sistema operativo Linux. En la tabla 6.4 se pueden encontrar
algunos datos de la placa provistos por el fabricante.
6.1 Hardware
66
Caracterı́stica
Valor
min
Consumo
typ
Unidad
max
350
Tensión de operación
4.8
Temperatura de operación
-40
5.0
mA
5.2
V
85
ºC
Memoria NAND
256
MBytes
Memoria ram
256
kBytes
Memoria SD
2
GBytes
Canales UART
2
Velocidad UART
115.2
250
kbps
Bus I2 C
Bus SPI
Bus USB
Tamaño
Peso
79x77
mm
50
g
Tabla 6.4: Caracterı́sticas de la OBC
6.1.4.
WiFi
Para realizar las mediciones de potencia WiFi y para establecer un link de comunicación
con el navegador se usa un adaptador WiFi-USB. La principal restricción al seleccionar el
adaptador es que tenga driver para sistemas Linux. Se eligió el dispositivo TL-WN321G de
TP-LINK. En la tabla 6.5 se pueden encontrar algunos datos provistos por el fabricante.
Figura 6.7: Adaptador WiFI USB
6.2 Software
67
Caracterı́stica
Valor
min
typ
Consumo
Frecuencia de operación
max
500
Tensión de operación
Temperatura de operación
Unidad
5.0
V
0
40
2.400
2.4835
Sensibilidad @ 1Mbps, 8 %PER
mA
ºC
GHz
-90
dBm
20x75
mm
Interfaz USB2.0
Estandar IEEE 802.11b/g Tamaño
Peso
50
g
Tabla 6.5: Caracterı́sticas del adaptador WiFi USB
6.2.
Software
En esta sección de describen las herramientas que fueron creadas, usadas y modificadas
durante la relaización del trabajo, ası́ como los criterios de diseño involucrados en el proceso.
6.2.1.
C++ - Boost - GCC
Se decidió implementar todo el sistema de navegación en C++, haciendo uso de la biblioteca Boost1 . Esta decisión fue tomada en base a ciertos requisitos que eran necesarios
para la implementación del sistema. Como se mencionó en la sección 6.1.3 se relajaron las
relaciones de compromiso a favor de la velocidad de desarrollo y la simplicidad del sistema.
Para hacer funcionar el navegador es necesario contar con las siguientes funcionalidades:
6.2.1.1.
Operaciones con matrices
Tanto el filtro de Kalman como el algoritmo de navegación hacen uso extensivo de operaciones con matrices como el producto o la inversión.
La biblioteca Boost permite acceder de forma simple a funciones de la biblioteca BLAS,
pudiendo operar con matrices y acceder a las mismas por bloques.
6.2.1.2.
Cuaterniones
Para el algoritmo de navegación es necesario el uso de cuaterniones y la biblioteca BLAS
ofrece una implementación probada y funcional de cuaterniones, con todas sus operaciones
definidas.
1
http://www.boost.org/
6.2 Software
6.2.1.3.
68
Generación de VV.AA
El sistema permite simular la entrada de algunos sensores para poder realizar pruebas sin
tenerlos conectados fı́sicamente. Para esto en necesario poder sintetizar procesos aleatorios
que modelen el ruido de los sensores.
La biblioteca Boost tiene herramientes para generar procesos estocásticos con la distribución y parámetros convenientes para cada caso.
6.2.1.4.
Portabilidad
Si bién el programa final está pensado para correr en la OBC que tiene un procesador
ARM, es deseable que el sistema pueda ser ejecutado en controladores de arquitectura Intel
(u otras) para poder agilizar los procesos de debugging y testing. También es deseable que
el sistema sea apto para correr en otras plataformas en caso que se qiera cambiar la OBC en
el futuro.
La herramienta GCC permite generar ejecutables para distintas arquitecturas a partir
de un único código portable.
6.2.1.5.
Acceso a periféricos
Para acceder a las mediciones de los sensores es necesario leer datos de un puerto serie. Boost ofrece herramientas para realizar esto de forma independiente al sistema que se
esté usando.
6.2.1.6.
Threads y conectividad
Para realizar telemetrı́a es necesario tener un servicio que envı́e datos al exterior del
sistema pero sin estar acoplado a éste de forma rı́gida. Cada servicio de logging corre en un
thread independiente del programa principal para evitar bloqueos en el navegador causados
por cuellos de botella o interrupciones en los medios de almacenamiento y comunicacion.
Este esquema facilita también agregar nuevos servicios para realizar mediciones sin hacer
grandes cambios en el sistema principal.
6.2.2.
Modificaciones en aircrack / airodump
Como se explicó en la sección 2.2 este trabajo se basa en la medición de potencia de
las balizas (beacons) que transmiten los routers WiFi. Si bien los sistemas basados en Unix
permiten realizar mediciones de potencia de señal, no ofrecen buena performance en cuanto a tiempo de respuesta y en elgunos casos no es posible configurar el canal en que se
desea medir. Tanto iwlist en plataformas Linux como airport en OSX están pensados
para realizar un sondeo de los routers disponibles para que el usuario pueda evaluar a cuál
conectarse, pero tienen capas de abstracción que interfieren con una buena medición. Por
6.2 Software
69
ejemplo, dependiendo la periodicidad del pedido, el programa puede devolver una repetición
de los últimos datos tomados.
Otro problema relacionado con la herramienta es que al ejecutar el programa, este tiene
que acceder al dispositivo de red, abrirlo y generar el pedido de medición. Esto tiene asociado un overhead o tiempo muerto que no es despreciable cuando se quieren relizar varias
mediciones por segundo.
Para resolver estos problemas se tomó como punto de partida la aplicación airodump-ng2
del paquete aircrack-ng.3
9 ] [ Elapsed : 1 min ] [ 2007−04−26 1 7 : 4 1 ] [ WPA handshake : 0 0 : 1 4 : 6 C : 7 E : 4 0 : 8 0
CH
BSSID
PWR RXQ
Beacons
#Data , #/s
CH
MB
ENC
CIPHER AUTH ESSID
0 0 : 0 9 : 5 B : 1 C : AA : 1 D
11
16
10
0
0
11
54.
OPN
00:14:6 C :7 A :41:81
34 100
57
14
1
9
11 e
WEP
WEP
00:14:6 C :7 E :40:80
32 100
752
73
2
9
54
WPA
TKIP
BSSID
STATION
PWR
Rate
Lost
Packets
00:14:6 C :7 A :41:81
0 0 : 0 F : B5 : 3 2 : 3 1 : 3 1
51
36−24
2
( not associated )
0 0 : 1 4 : A4 : 3 F : 8 D : 1 3
19
0−0
0
4
00:14:6 C :7 A :41:81
0 0 : 0 C : 4 1 : 5 2 : D1 : D1
36−36
0
5
00:14:6 C :7 E :40:80
0 0 : 0 F : B5 : FD : FB : C2
−1
54−54
0
99
35
NET
big
PSK
teddy
Probes
14
mossy
teddy
Figura 6.8: Salida del programa airodump-ng
airodump-ng es una herramienta para capturar paquetes crudos de la norma IEEE
802.11. Esto permite obtener los beacons a medida que van llegando y configurar el canal
que se desea medir.
Se modificó la herramienta para que quede corriendo como un proceso paralelo al navegador con el objetivo de que se inicialice una sola vez para evitar el overhead de apertura del
dispositivo. También se modificó el formato de la salida para obtener únicamente los datos
de interés (BSSID, ESSID, RSSI) en un formato conveniente.
Por último se creó un mecanismo de comunicación entre procesos (IPC) para sincronizar
la captura de datos en el momento que los necesita el navegador. Esto se implementó mediante
una zona de memoria compartida entre el navegador y airodump-ng.
2
3
http://aircrack-ng.org/doku.php?id=airodump-ng
http://aircrack-ng.org/
6.2 Software
70
$START , BSSID , RSSI , RXQ , BEACON , DATA , DATAPS , ESSID , $
$DATA , 0 0 : 1 E : E5 : 3 4 : A3 : 8 6 , − 4 1 , XX , XX , XX , XX , galileo , $
$DATA , 0 0 : 1 4 : BF : 1 5 : BD : 2 B , −59 , XX , XX , XX , XX , rusell , $
$DATA , 0 0 : 1 C : 1 0 : CF : 5 8 : 1 C , −59 , XX , XX , XX , XX , laplace , $
$DATA , 0 0 : 1 6 : B6 : E5 : 8 C : 0 6 , − 5 7 , XX , XX , XX , XX , Helena , $
$END , BSSID , RSSI , RXQ , BEACON , DATA , DATAPS , ESSID , $
Figura 6.9: Salida del programa airodump-ng modificado
De esta forma se pudo agilizar el proceso de tomar mediciones de potencia WiFi, obteniendo más de 10 mediciones por segundo.
6.2.3.
Data logger / viewer
Una parte muy importante del trabajo, además de la implementación del sistema, es
verificar que funcione correctamente. Para esto es fundamental poder observar las variables
de estado y los eventos que suceden durante la navegación.
Durante el desarrollo del trabajo se consideraron y analizaron distintas alternativas para
poder visualizar y graficar en tiempo real las variables del sistema. Se realizaron ensayos con
GNUPlot y Simulink pero no se consiguió un buen desempeño en tiempo real. Los mejores
resultados de obtuvieron usando LabView
Figura 6.10: Pruebas con datalogger desarrollado en SimuLink
6.2 Software
71
Se desarrolló un programa que se conecta vı́a TCP/IP a servidores de telemetrı́a que
tienen los distintos subsistemas del navegador (INS, EKF, WiFi) y baja los datos en tiempo
real para graficarlos de forma conveniente.
El programa también tiene la capacidad de mandar comandos al navegador para poder
ajustar parámetros tales como los sesgos y factores de escala de los sensores, y otras variables
que se quieran modificar para evaluar el sistema.
Figura 6.11: Pruebas con datalogger desarrollado en LabView
6.2.4.
Organización de clases
Dada la complejidad involucrada, se separó el sistema en distintos objetos representados
por clases C++ cuyo objetivo es modelar el comportamiento de cada subsistema de forma
independiente. Esto se pensó para poder realizar pruebas aisladas e intercambiar o actualizar
bloques sin modificar el resto del sistema.
Se detallan a continuación cada una de las clases implementadas.
6.2 Software
72
Figura 6.12: Clases C++ del navegador
6.2.4.1.
Access Piont - ap::ap()
Esta clase está pensada para representar un access point genérico. Se crea mediante su
dirección MAC uint64_t y un nombre (opcional). Puede almacenar tanto el histograma de
mediciones como el valor de la última medición del access point.
Tiene definida una relación de orden (==, <, >) para que pueda ser parte de estructuras
de datos como árboles binarios de búsqueda. La relación de orden queda definida por la
dirección MAC del access point.
Figura 6.13: Organización de la clase AP
lastRSSI apunta a la última medición de potencia tomada y histRSSI apunta a un arreglo de buckets elementos que funciona como historgama de las count mediciones tomadas.
6.2.4.2.
Filtro de Kalman extendido - ekf::ekf()
Esta clase contiene todas las funciones y matrices para implementar un filtro de Kalman
extendido. El método update() se encarga de propagar el sistema, actualizar las matrices e
6.2 Software
73
incorporar las observaciones cuando corresponde. Se le pasa como parámetro un timestamp
y la medicion externa en caso de haber una. La función f() implementa la dinámica no lineal
del sistema: devuelve Xk+1 a partir de Xk (ec 5.10).
Cp() calcula la matriz Ĉ a partir del cuaternión q del INS y C() calcula la matriz de
cambio de base C a paritr de Ĉ y φ tal como se explicó en la sección 5.3.
Los métodos S() permiten calcular la matriz S(x) del producto cruzado (ver apéndice A.1)
Los métodos print permiten imprimir el estado del sistema en varios formatos.
Figura 6.14: Métodos de la clase ekf
La clase contiene un objeto tcp_logger que permite reportar el vector de estado a un
monitor remoto, ası́ como ajustar parámetros del filtro en tiempo real. También tiene un
objeto ins que es el sistema navegador sobre el cual se filtra el error. Con h se configura el
paso temporal de discretización para los cálculos numéricos
rng es un generador de números aleatorios basado en el algoritmo Mersenne Twister [20]
usado por ndA, ndW, var_norA y var_norB para generar AWGN.
6.2 Software
74
Figura 6.15: Miembros de la clase ekf
Por último, la clase también contiene las matrices necesarias para hacer los calculos. Si
bien estas matrices también son miembros de la clase se detallan aparte por claridad.
G ∈ R15x6 es el shaper del ruido de proceso (ec 5.11). F ∈ R15x15 es el jacobiano de la
función f (ec 5.12).
Q = cov(wk ) ∈ R2x2 y R = cov(vk ) ∈ R3x3 son los ruidos de proceso y de medición
respectivamente.
K ∈ R15x3 es la ganancia de Kalman definida en la ecuación 5.7
H ∈ R3x15 es el jacobiano de la función de observación h() (ec 5.13).
P y P P ∈ R15x15 se usan para calcular la covarianza del estado. Por último X y XX ∈
R15x1 se usan para calcular el vector de estado.
Figura 6.16: Matrices de la clase ekf
6.2 Software
6.2.4.3.
75
Sistema de navegación integrada - ins::ins()
La clase INS representa un navegador inercial. Toma los datos de una IMU y el método
update() actualiza el estado del navegador aplicando la función fdyn(). Esta fución propaga
una versión discretizada de las ecuaciones del sistema explicado en la sección 3.2 usando como
método numérico Runge–Kutta 4 (RK4) (ver apéndice B).
Los métodos print permiten imprimir las variables del navegador en distintos formatos
para ser usados por el sistema de telemetrı́a o para facilitar el desarrollo.
Figura 6.17: Organización de la clase INS
h define el paso temporal de discretización para los cálculos numéricos. q ∈ R4 el cuater-
nion que determina la rotación entre la terna b y la terna w como se explicó en la sección 3.2.
Xp ∈ R10 es el vector de estado donde se almacena la posición p, la velocidad v y el
cuaternión q.
imu1 es un objeto de la clase imu que representa el sensor inercial utilizado en el navegador. G ∈ R3 es la fuerza de gravedad en terna w y Ki , i ∈ {1, 2, 3, 4} son los coeficientes
utilizados en la integración numérica por RK4
6.2.4.4.
Unidad de mediciones inerciales - imu::imu()
Esta clase representa una IMU. En particular se conecta mediante un puerto serie y
obtiene los datos a partir de un stream con valores separados por comas, pero la estructura
6.2 Software
76
está preparada para usar otra interfaz como I2 C o SPI. El método update() obtiene los datos
crudos de la fuente correspondiente y los transforma en mediciones en SI. Para esto hace los
ajustes de offset y factor de escala correspondientes. Estos valores de calibración se ajustan
para cada IMU de acuerdo a los ensayos realizados para cancelar los errores inherentes a la
fabricación (recordar modelo de error propuesto en 3.3).
La clase también utiliza generadores de AWGN para poder realizar pruebas sin los sensores fı́sicamente conectados. Los métodos print permiten imprimir el estado del sistema en
varios formatos.
La clase dispone de métodos para configurar el sesgo y el factor de escala de los giróscopos
y los acelerómetros de forma independiente para poder hacer pruebas y evaluar los cambios
del sistema ante distintas configuraciones.
Figura 6.18: Métodos de la clase IMU
Los datos obtenidos del sensor de almacenan en variables de tipo entero para luego ser
convertidas a SI usando la configuración de la calibración. Un timestamp indica el momento
en que fueron tomadas las mediciones de acuerdo al RTOS de la LLC. El flag lostflag indica
si se perdió información (i.e. si llegaron dos mediciones con timestamp no consecutivo).
6.2 Software
77
Figura 6.19: Miembros de la clase IMU usados en las mediciones
La clase IMU tiene la opción de obtener los datos de un archivo en caso de que no se
esté usando una IMU fı́sica. Esto es sumamente útil en entornos de desarrollo o para hacer
simulaciones del tipo software in the loop.
Figura 6.20: Miembros de la clase IMU de uso general
Las variables de calibración de la IMU guardan la configuración particular de una IMU
y el conversor AD al que esté conectada en caso de que tenga una interfaz analógica. Con
VccRange y QuantizationLevels se pueden convertir cuentas del ADC en volts. Esto es
importante ya que la sensibilidad de algunos sensores está definida en función de la tensión
de salida.
También se almacenan los sesgos y factores de escala de los giróscopos y acelerómetros
de acuerdo a la caracterización que se haya hecho.
6.2 Software
78
Figura 6.21: Miembros de la clase IMU usados en la calibración
6.2.4.5.
Logger TCP - tcp logger::tcp logger()
Esta clase fue implementada para poder monitorear el estado de las distintas clases en
una terminal remota.
Dado que todo el navegador es parte de un sistema embebido que no tiene interfaz con
el usario por estar montado en una platforma de vuelo, es importante poder conocer la
situación de las variables de estado, las lecturas de los sensores, y otras variables relevantes
para tareas de desarrollo y diagnóstico.
Se implementó una clase genérica que al ser instanciada define un puerto y un nombre
de servicio sobre el que abre un servidor TCP/IP.
La clase entrega un stream para que cada servicio pueda imprimir con un formato conveniente la salida.
6.2 Software
79
Figura 6.22: Organización de la clase tcp logger
A tcp_logger también se le puede definir un handler que reciba información desde la
terminal de telemetrı́a. El handler es una función de la clase que usa el tcp_logger (por
ejemplo, la IMU) y esta función permite interpretar datos provenientes de la consola. Esto es
útil para realizar cambios en la configuración del navegador en tiempo real. Un caso de uso
en la implementación es poder cambiar los sesgos y factores de escala de la IMU mediante
la consola para poder hacer una ajuste fino con el sistema ya funcionando.
tcp_logger crea un thread nuevo por cada servicio que se registre en la telemetrı́a de
forma tal de desacoplar el código y los tiempos de cada thread.
6.2.4.6.
Sensor WiFi - wifi sensor::wifi sensor()
La clase wifi_sensor está pensada para manejar las mediciones de potencia WiFi mediante el programa airodump-ng modificado, la base de datos con mediciones de entrenamiento y el algoritmo de filtrado bayesiano.
El método update() se encarga de pedirle una nueva medición a airodump-ng y a partir
del resultado genera un vector con un elemento de la clase ap por cada router que haya en
rango. La clase wifi_sensor tiene la posibilidad de simular mediciones WiFi tomándolas de
un archivo en lugar de realizar las mediciones. En ese caso update() lee el archivo entregando
el resultado en el mismo formato que con las mediciones reales.
El método measure(unsigned int place) llama a update() y una vez obtenidas las
mediciones, las asigna al punto de la grilla especificado en place. De esta forma se van
6.2 Software
80
armando los histogramas de cada router y de cada punto de la grilla. Este método se usa
durante la etapa de entrenamiento y no se usa al estimar la posición.
loadAPfromFILE se encarga de cargar los archivos correspondientes a las bases de datos
y asociarlos con cada punto de la grilla.
El método locate(), contrariamente a measure se usa al estimar la posición y no al
generar la base de datos. Este método es el encagado de tomar una (o varias) mediciones
WiFi y procesar el algoritmo de filtrado (ver algoritmo 1) para generar la f.d.p con las
probabilidades a posteriori de ubicación.
Los métodos locationX y locationY permiten obtener las coordenadas x e y de la
posición más probable después de la última medición. La coordenada z queda definida en
función del plano en que se hayan tomado las mediciones WiFi en la etapa de entrenamiento.
Los métodos print permiten imprimir las variables del navegador en distintos formatos
para ser usados por el sistema de telemetrı́a o para facilitar el desarrollo.
Figura 6.23: Métodos de la clase tcp logger
La clase wifi_sensor tiene también un tcp_logger para tareas de telemetrı́a, los sets y
pares de AP permiten realizar búsquedas de access points basadas en la dirección MAC que es
la información disponible cuando se relaliza una nueva medición, para asociar el dato nuevo
con la base de datos de entrenamiento. Las variables dentro de IPC se usan para sincronizar
la comunicación entre procesos con airodump-ng.
6.3 Resultados
81
Figura 6.24: Miembros de la clase tcp logger
Por último hay funciones que si bien no son miembros de la clase son útiles. miatol
convierte una cadena de caracteres en un número entero de 64 bits, y string_to_mac convierte una cadena de caracteres de la forma xx:xx:xx:xx:xx:xx con cada x un dı́gito en
hexadecimal en enteros de 64 bits.
Figura 6.25: Funciones usadas por la clase tcp logger
6.3.
Resultados
Para probar y medir el sistema completo se escribió un script MATLAB que sintetiza
los datos de entrada (mediciones WiFi e inerciales) y ejecuta el navegador en un software
in the loop. Luego toma el resultado de la navegación y lo compara con los datos reales, o
ground-truth para poder evaluar el sistema.
Se realizaron las simulaciones en una grila WiFi de 10x10m. La relación entre mediciones
WiFi e inerciales es de 1 : 100 (i.e. 100 mediciones inerciales por cada medición WiFi). Las
mediciones inerciales se tomaron a 100Hz
6.3 Resultados
82
9
GT WiFi
locate WiFi
GT INS
navegador WiFi+INS
8
7
11
11
10
6
15
5
12
12
14
14
4
3
3
3
2
1
0
13
4
4
9
9
8
8
13
2
2
5
5
7
7
1
0 1
10
6
6
1
2
3
4
5
6
7
8
9
Figura 6.26: Navegador inercial + WiFi
En la figura 6.26 se puede ver el desempeño del navegador para un camino de 15 segundos.
En verde los datos verdaderos (ground truth) y en rojo el resultado del navegador. Las
etiquetas verdes y rojas corresponden a la secuencia de las posiciones reales y mediciones
WiFi respectivamente. Por ejemplo, en el paso 13 las etiquetas verde y roja están en distintos
lugares, eso indica que el filtro bayesiano tuvo un error en la estimación.
9
GT WiFi
locate WiFi
GT INS
navegador WiFi+INS
8
7
6
15
5
4
4
4
3
3
3
2
2
2
1
0
5
5
14
6
6
13
14
13
7
7
8
8
12
12
1
0 1
9
9
1
2
3
4
5
6
11
11
10
7 10
8
9
Figura 6.27: Navegador inercial + WiFi con 5m de error en posición inicial
6.3 Resultados
83
En la figura 6.27 se puede ver como responde el navegador ante una mala especificación
de las condiciones iniciales. En este caso fueron 5m de error en el eje x. A medida que el
sistema incorpora mediciones externas va corrigiendo la trayectoria hasta que logra reducir
la distancia al camino verdadero.
9
GT WiFi
locate WiFi
GT INS
navegador INS
8
7
13
13
6
12
5
14
14
4
11
12
11
15
3
3
3
10
10
2
1
0
2
2
9
9
4
5
4
7
7
1
0 1
8
8
5
1
2
3
6
6
4
5
6
7
8
9
Figura 6.28: Navegador inercial con 5m de error en posición inicial
Una pregunta válida es qué pasa si dejamos correr el algoritmo inercial sin incorporar
mediciones externas. En caso de haber un error en las condiciones iniciales la consecuencia
es una discrepancia sustancial entre el camino del navegador y el camino verdadero. Esto se
puede observar en la figura 6.28 para un error en la posición inicial y en la figura 6.29 para
un error en la posición y actitud inicial.
6.3 Resultados
84
9
9
9
8
8
8
7
7
7
11
11
10
12
6
6
5
13
6
13
12
15
5
5
4
14
14
3
3
3
2
1
0
GT WiFi
locate WiFi
GT INS
navegador INS
10
4
4
2
2
1
0 1
1
2
3
4
5
6
7
8
9
Figura 6.29: Navegador inercial con error en posición y actitud inicial
En la figura 6.30 se aprecia la respuesta del sistema completo, nuevamente incorporando mediciones WiFi. A pesar de un error en posición y actitud inicial puede retomar la
trayectoria pasados unos segundos.
15
9
8
14
14
7
13
13
8
8
7
12
12
6
7
4
4
4
3
3
3
2
2
2
0
10
10
11
11
6
6
5
1
9
9
GT WiFi
locate WiFi
GT INS
navegador WiFi+INS
5
5
1
0 1
1
2
3
4
5
6
7
8
9
Figura 6.30: Navegador inercial + WiFi con error en posición y actitud inicial
Luego se realizaron corridas del sistema para caracterizarlo mediante el método Monte
6.3 Resultados
85
Carlo. Para un camino de 200 segundos se fijó un set de parámetros y se corrió el navegador
20 veces. Por cada corrida se computó el error en posición respecto al camino verdadero. A
partir de los vectores de error se calculó la media y el desvı́o estándar.
La media se espera que sea nula ya que en cada corrida el camino es aleatorio. Una
media no nula serı́a indicio de un bias en alguna parte del algoritmo. Por otra parte, el
desvı́o estándar indica la dispersión en el error a lo largo del tiempo. Se espera que sea
acotado.
3
3
2
2
1
1
0
0
−1
−1
−2
−2
−3
−3
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
4
2
4
x 10
x 10
Figura 6.31: Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel = 0.1 sm2
3
4
2
3
1
2
0
1
−1
0
−2
−1
−3
−2
−4
−3
−5
−4
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
4
x 10
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
4
x 10
Figura 6.32: Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel = 0.2 sm2
6.3 Resultados
86
3
3
2
2
1
1
0
0
−1
−1
−2
−2
−3
−3
−4
−4
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
4
2
4
x 10
x 10
Figura 6.33: Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel = 0.4 sm2
6
6
4
4
2
2
0
0
−2
−2
−4
−4
−6
−8
−6
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
4
2
4
x 10
x 10
Figura 6.34: Valor esperado ±2σ para 20 corridas de 200 segundos. σaccel = 0.8 sm2
Como se puede ver en los gráficos, el navegador cumple lo pedido. Este tipo de pruebas
son de suma importancia porque permiten detectar modos de falla en cualquier parte del
sistema. Desde errores en el modelo hasta cuestiones de inestabilidad numérica.
Por último y para validar la modelización del sistema se registró el vector de innovaciones.
Si el sistema está bien modelado y el ruido del sistema es gaussiano, entonces las innovaciones
tienen que ser ortogonales y el vector de innovaciónes ruido blanco.
Para probar esto se observó la autocorrelación de cada componente del vector de innovaciones (figura 6.35) para δx, δy, δz y ruido blanco gaussiano generado en MATLAB
respectivamente.
1000
800
350
700
300
600
250
500
200
400
150
300
100
200
50
100
0
500
800
400
600
300
400
200
200
100
0
0
0
−200
−50
−100
0
100
200
300
400
500
600
700
800
900
1000
−100
0
100
200
300
400
500
600
700
800
900
1000
−100
0
100
200
300
400
500
600
700
800
900
1000
Figura 6.35: Autocorrelación de las innovaciones
0
100
200
300
400
500
600
700
800
900
1000
Capı́tulo 7
Conclusiones
A lo largo de este trabajo se estudiaron distintos sistemas de navegación, tanto basados en
sensores inerciales como en referencias externas. Se estudiaron distintas técnicas y métodos
para poder realizar navegación indoor donde no hay disponibilidad de sistemas GNSS.
Luego de analizar sistemas de navegación indoor en general, se decidió implementar el
sistema basado en mediciones de beacons WiFi por diversos motivos, principalmente por la
disponibilidad de hardware y la masividad de AP en lugares de interés.
En el capı́tulo 2 se estudiaron en detalle diversos modelos de navegación mediante señales
WiFi y se decidió utilizar en la implementación un filtro bayesiano. Se analizó también un
esquema de modelo de propagación sumado a un mapa del terreno (apéndice C). A pesar
de obtener buenos resultados en las simulaciones se decidió abandonar este enfoque dejando
de lado la idea de utilizar un modelo fı́sico de propagación debido a la complejidad que este
deberı́a tener para ser fidedigno, principalmente por los efectos de la propagación multipath,
NLOS, difracción y otros efectos que se acentúan en ambientes cerrados.
Se realizó un experimento con el objetivo de caracterizar y definir algunos de los parámetros involucrados en el filtro bayesiano. Una parte del experimento se realizó con un dataset
real, y algunas parametrizaciones se obtuvieron extrapolando los resultados obtenidos a partir de simulaciones.
A partir de esto se pudieron optimizar y fundamentar ciertos valores relacionados con la
etapa de entrenamiento y con la etapa de estimación.
Se obtuvieron resultados satisfactorios. Del sistema de navegación con señales WiFi se
obtuvieron mediciones con un error de 2m a 4m dependiendo las condiciones. Estos son los
valores tı́picos que se encuentran actualmente en la biliografı́a.
También se obtuvo como conclusión que para obtener una buena medición son necesarios
al menos 3 o 4 routers, pero poner muchos más no reduce significativamente el error. Tampoco
lo hace tomar muchas mediciones en lugar de una sola a la hora de estimar la posición.
Dado el tamaño reducido del dataset tomado en la FIUBA y para tener una perspectiva
más amplia respecto a algunos parámetros se diseñó una simulación con el objetivo de mo87
88
dificar parámetros más allá de lo que permitı́a el dataset. Con esta simulación se verificaron
los resultados obtenidos anteriormente y se obtuvo una idea de aquellos experimentos imposibles de realizar con el dataset (por ejemplo, cambiar el tamaño o densidad de la grilla de
mediciones offline).
De todas formas, esto fue solo un accesorio y no pueden desprenderse resultados concluyentes de esta experiencia debido a la hipótesis de trabajo sobre la complejidad de propagación de campos indoor. Para arrojar más luz sobre el tema es fundamental realizar nuevos
experimentos con un dataset más abundante.
En el capı́tulo 3 se estudió el navegador inercial, definiendo sus ecuaciones, y se estudiaron
las fuentes de error relacionadas con los sensores MEMS. Luego de clasificar los errores se
estudió cómo palearlos.
Si bien la industria de sensores inerciales evoluciona a pasos agigantados, las técnicas
para obtener trayectorias a partir de mediciones inerciales no tienen buena perspectiva en el
corto y mediano plazo.
Es por eso que en el capı́tulo 5 se estudian algoritmos de fusión de datos para poder
mantener acotado el error del navegador. En ese sentido se buscó una forma robusta de
incorporar nueva información al sistema. Se describieron varias alternativas para incorporar
la información del filtro bayesiano al navegador, y si bien se implementó la más simple de
ellas, quedan disponibles las demás para futuras mejoras del sistema.
En la figura 6.29 se puede ver la respuesta al sistema cuando se navega solo con instrumentos inerciales y las condiciones iniciales no fueron especificadas correctamente. Es evidente la
diferencia entre el camino real y el camino estimado. En cambio, en la figura 6.30 se observa
la respuesta del sistema con mediciones externas además de la navegación inercial, y para
las mismas condiciones iniciales. Pasado un tiempo los dos caminos se acercan y mantienen
una diferencia acotada.
En el capı́tulo 4 se describió la plataforma de vuelo utilizada, dejando en evidencia las
restricciones en cuanto a tamaño, peso y consumo energético que puede tener el sistema.
Esto no implicó grandes restricciones en el desarrollo teórico del trabajo, sin embargo la
implementación del mismo tuvo que amoldarse a estas condiciones.
Por último en el capı́tulo 6 se llevó a cabo todo el trabajo necesario para poder transformar los temas estudiados en los capı́tulos anteriores en un sistema funcional, capaz de correr
bajo las condiciones propuestas en el objetivo del trabajo. También se presentaron todas las
herramientas que hubo que modificar y construir para el desarrollo del trabajo. Si bien no
son un bloque funcional del sistema fueron un factor decisivo en el proceso que tuvo como
resultado el sistema per se.
Capı́tulo 8
Trabajo Futuro
Siempre que se diseña algo existen ajustes, mejoras y detalles que permiten ir refinando
el sistema. Estos cambios pueden tener que ver con completar de alguna forma lo que ya
está hecho, o rehacerlo y encararlo desde otro enfoque.
A lo largo del trabajo se fueron tomando decisiones para poder definir, acotar y seguir
con el objetivo propuesto. Sin embargo existen muchos aspectos a explorar para probar
variaciones y mejoras respecto a lo implementado en esta tesis.
Para profundizar la investigación comenzada en este trabajo es fundamental disponer de
un dataset con muestras de entrenamiento más tupido y abundante que el que se considera
en el capı́tulo 2. Es necesario disponer una base de datos que cubra una superficie mayor (i.e.
más de ∼ 50 puntos de entrenamiento), con más de 4 routers, muestras a más de una altura
(en el eje z). Para poder abandonar el esquema de puntos en una grilla y usar puntos de
entrenamiento arbitrariamente distribuidos (propuesto en 2.4.2.5) hace falta incluir dentro
del archivo que guarda los histogramas la ubicación donde fue tomada la muestra.
Con todos estos cambios se pueden realizar ensayos más confiables e implementar opciones
más flexibles, donde los puntos de entrenamiento se vayan creando o mejorando a medida
que funciona el sistema. Para esto es posible implementar algoritmos y técnicas de SLAM.
En términos del dataset, también se puede tomar más de una medición en cada punto con
distintas orientaciones del navegador, para evaluar si es posible extraer datos de actitud a
partir de la no isotropı́a de la antena WiFi en el receptor. En este sentido es posible también
modificar el patrón de radiación de la antena receptora para fortalecer esta posible respuesta
en actitud.
Aprovechando el diseño por clases en la implementación, es posible crear alternativas al
filtro bayesiano usado en wifi_sensor para comparar distintos algoritmos y obtener mayores
precisiones de las ventajas y falencias de cada uno. Solo es necesario respetar la interfaz de
wifi_sensor y la clase que implemente los nuevos algoritmos puede ser usada de forma
intercambiable con la original.
89
90
Este tipo de modificaciones se pueden realizar en la clase ekf para adoptar nuevos observadores como se propone en la sección 5.3. Teniendo en cuenta la probabilidad a posteriori
de la estimación bayesiana y la distancia a la posición actual se pueden armar esquemas que
aprovechen más la información y descartar outliers.
Otra modificación posible al trabajo es reemplazar el receptor WiFi usado por un frontend
de software defined radio. Este tipo de dispositivos permite sintonizar el o los canales de
interés y procesar la señal cruda en banda base. Si bien requiere más poder de cómputo que
analizar los beacons 802.11 directamente, también permite obtener mucha más información
a partir de la señal. Actualmente se consiguen en el marcado dispositivos capaces de hacer
esto por el mismo precio que un dongle USB-WiFi con lo cual no implica ninguna difrencia
en el costo del sistema.
Apéndice A
Rotaciones en el espacio
A.1.
Cuaterniones
Los cuaterniones son una extensión de los números complejos. Fueron descriptos por
William Rowan Hamilton en 1843 para ser aplicados en mecánica, y entre otras cosas pueden
usarse para expresar rotaciones en el espacio, al igual que las matrices de cosenos directores
o los ángulos de Euler. Las rotaciones con cuaterniones son más compactas y eficientes para
calcular que las rotaciones mediante matrices. Además, a diferencia de los ángulos de Euler
no tiene puntos de indeterminación (Gimball Lock).
Ası́ como un número complejo z ∈ C puede ser expresado en términos de números reales
y una unidad imaginaria (z = a + b · i). Un cuaternión puede ser expresado unı́vocamente de
la siguiente forma,
q ∈ H, q = a + b · i + c · j + d · k
con a, b, c, d ∈ R. De forma tal que las unidades i, j, k cumplen las siguientes ecuaciones,
i2 = j 2 = k 2 = i · k · j = −1
(A.1)
En el espacio de cuaterniones se definen varias operaciones: suma, multiplicación por un
escalar y multiplicación entre cuaterniones. Para la suma y multiplicación por un escalar se
procede de la misma forma que los números complejos, respetando las unidades i, j, k. Sean
q 1 = a 1 + b1 · i + c 1 · j + d 1 · k
y
q 2 = a 2 + b2 · i + c 2 · j + d 2 · k
Entonces
qs = q1 + q2 = a1 + a2 + (b1 + b2 ) · i + (c1 + c2 ) · j + (d1 + d2 ) · k
qp = p · q1 = p · a1 + p · b1 · i + p · c1 · j + p · d1 · k, con p ∈ R
91
A.1 Cuaterniones
92
Para el producto entre cuaterniones se define el producto de Hamilton, distribuyendo los
términos del producto normalmente y usando las identidades definidas en (A.1). Sean
q 1 = a 1 + b1 · i + c 1 · j + d 1 · k
q 2 = a 2 + b2 · i + c 2 · j + d 2 · k
y
Entonces
q1 ◦ q2
=
(a1 + b1 · i + c1 · j + d1 · k) · (a2 + b2 · i + c2 · j + d2 · k)
=
a 1 a 2 + a 1 b2 i + a 1 c 2 j + a 1 d 2 k +
+
b1 a2 i + b1 b2 i2 + b1 c2 ij + b1 d2 ik +
+
c1 a2 j + c1 b2 ji + c1 c2 j 2 + c1 d2 jk +
+
d1 a2 k + d1 b2 ki + d1 c2 kj + d1 d2 k 2 +
(A.1)
=
a 1 a 2 − b1 b 2 − c 1 c 2 − d 1 d 2 +
+
(a1 b2 + b1 a2 + c1 d2 − d1 c2 )i +
+
(a1 c2 − b1 d2 + c1 a2 + d1 b2 )j +
+
(a1 d2 + b1 c2 − c1 b2 + d1 a2 )k
Al trabajar con rotaciones en el espacio, es cómodo definir los cuaterniones en términos
de un vector �εq correspondiente a la dirección en torno a la cual se gira, y una parte escalar
ηq correspondiente a la magnitud del giro.
q=
�
�εq
ηq
�

qx



 q 
 y 
=

 qz 


qr
Para representar una rotación de ángulo θ en torno a un vector unitario n̆, se expresa el
�
�
�
�
cuaternión q tal que �εq = n̆ · sin 12 · θ y ηq = cos 12 · θ
Y bajo estas restricciones se define el conjugado q ∗ de un cuaternión q
∗
q =
�
−�εq
ηq
�
Por último se define el producto entre cuaterniones en función del producto entre matrices

qr
−qz
qy
qx
 
rx


 
 �
� �
�
 q
 

ηq · I3 + S(�εq ) �εq
�εr
 z qr −qx qy   ry 
q◦r =
·
·
=
T
 qy qx
  rz 
q
q
ηr
−�
ε
η
r
z
q
q

 

qx −qy −qz qr
rr
A.2 Matriz de Cosenos Directores - DCM
con

93
0

S(x) = 
 x3
−x2
A.2.
−x3
0
x1
x2


−x1 

0
Matriz de Cosenos Directores - DCM
Partiendo de las tres matrices básicas de rotación en torno a los ejes cartesianos, Rx (φ),
Ry (θ) y Rz (ψ) podemos definir una matriz R que represente una rotación arbitraria en el
espacio.

1

cos θ 0 − sin θ
0
0





Rx (φ) = 0 cos φ sin φ 


0 − sin φ cos φ





Ry (θ) =  0
1
0 


sin θ 0 cos θ


cos ψ sin ψ 0




Rz (ψ) = − sin ψ cos ψ 0


0
0
1
http://xkcd.com/184/
Recordando la propiedad de composición de las matrices de rotación se obtiene R =
Rz (ψ) · Ry (θ) · Rx (φ)

cos θ cos ψ
cos φ sin ψ + sin φ sin θ cos ψ sin φ sin ψ − cos φ sin θ cos ψ




R=
− cos θ sin ψ cos φ cos ψ − sin φ sin θ sin ψ sin φ cos ψ + cos φ sin θ sin ψ 
sin θ
− sin φ cos θ
cos φ cos θ
Es importante notar el orden en que se efectuan las rotaciones es importante, y es necesario definir una convención y respetarla. Esta es una de las desventajas de las matrices de
cosenos directores frente a los cuaterniones.
A.3.
Conversiones
A.3.1.
DCM a Cuaternión
Para transformar una matriz de cosenos directores R en un cuaternión q se pueden usar
las siguientes identidades
A.3 Conversiones
94
1
(R32 − R23 )
4qr
1
qy =
(R13 − R31 )
4qr
1
qz =
(R21 − R12 )
4qr
1�
qr =
1 + R11 + R22 + R33
2
qx =
A.3.2.
Cuaternión a DCM
Para transformar un cuaternión q en una matriz de cosenos directores R se puede usar
la siguiente identidad

1 − 2qy2 − 2qz2

R=
 2(qx qy + qz qr )
2(qx qy − qz qr ) 2(qx qz + qy qr )


2(qy qz − qx qr ) 

2
2
2(qx qz − qy qr ) 2(qx qr + qy qz ) 1 − 2qx − 2qy
1 − 2qx2 − 2qz2
Apéndice B
Método de Runge–Kutta - RK4
Runge Kutta es un método para aproximar soluciones de ecuaciones diferenciales ordinarias. La ténica fue desarrollada por los matemáticos alemanes Carl David Tolmé Runge y
Martin Wilhelm Kutta cerca de 1900.
Su forma más popular es la de cuarto orden (RK4), donde se parte de un problema con
condiciones iniciales
ẏ = f (t, y),
y(t0 ) = y0
y se obtiene una aproximación deiscetizada de la función y:
yn+1 = yn + 16 (k1 + 2k2 + 2k3 + k4 ) + O(h5 )
tn+1 = tn + h
con h el intervalo de discretización y O(h5 ) el error de quinto orden, yn+1 es la proximación
RK4 de y(tn+1 ) donde
k1 = hf (tn , yn ),
k2 = hf (tn + 12 h, yn + 12 k1 ),
k3 = hf (tn + 12 h, yn + 12 k2 ),
k4 = hf (tn + h, yn + k3 ).
El método fue usado para obtener la solución del INS a partir de las ecuaciones definidas
en el capı́tulo 3.
Debido al paso temporal semientero (de los coeficientes k2 y k3 ) es necesario alimentar
el algoritmo con datos inerciales al doble de frecuencia que el lazo de propagación numérica.
95
Apéndice C
Triangulación por RSSI
C.1.
Sistema propuesto
El sistema propuesto en este caso tomará el modelo más simple de propagación de onda
con α como parámetro (ver 2.3.1).
Se propone una dinámica de sistema basada en un proceso de random-walk en un campo
de potencial. Este campo está definido en base al mapa del entorno (información a priori).
Se consideran movimientos en el plano y se usa como vector de estado
X = [x
C.1.1.
y
vx
vy ]
Campo de fuerza
Se define Ξi,j (x, y) como la fuerza ejercida en el objeto a navegar en (x, y) debido a la
celda del mapa (i, j)
Este campo de fuerza actúa como información a priori o dinámica del sistema, estableciendo una tendencia del objeto que navega a alejarse de las paredes.
Ξcr · C(i, j)
Ξi,j (x, y) = − 2
·
di,j (x, y)
�
x − xic
y − ycj
· �x +
· �y
di,j (x, y)
di,j (x, y)
�
(C.1)
donde di,j (x, y) es la distancia entre el objeto a nevagar (x, y) y la celda (xic , ycj ) y Ξcr es la
constante de fuerza del sistema.
C(i, j) =

1
0
si (xic , ycj ) es pared - obstáculo
si (xic , ycj ) es piso
Por último se calcula la fuerza total para una posición dada
Ξr (x, y) =
�
i,j
96
Ξi,j (x, y)
(C.2)
C.2 Filtro de Kalman - EKF
97
que se calcula offline y no cambia durante el filtrado.
50
50
45
45
40
40
35
35
30
30
25
25
20
20
15
15
10
10
5
5
5
10
15
20
25
30
35
40
45
50
5
10
15
20
25
30
35
40
45
50
Figura C.1: Mapa del espacio a navegar con su respectivo campo de fuerza
C.1.2.
Dinámica del sistema
Las siguientes ecuaciones modelan el random walk combinado con el campo de fuerza
propuesto.
h2
· Ξxk (xk , yk )
2
h2
= y k + h · v yk +
· Ξyk (xk , yk )
2
= λ · vxk + h · Ξxk (xk , yk ) + (1 − λ) · νx
xk+1 = xk + h · vxk +
(C.3)
yk+1
(C.4)
vxk+1
vyk+1
= λ · vyk + h · Ξyk (xk , yk ) + (1 − λ) · νy
(C.5)
(C.6)
h es el tiempo de integración, λ permite suavizar los cambios en la velocidad y [νx νy ]
es un proceso de ruido blanco gaussiano de media nula.
C.1.3.
Modelo de observación
�
�− 1
RSSi = Pi · (xk − Axi )2 + (yk − Ayi )2 α + ηi
(C.7)
Pi es la potencia del i-ésimo access point y (Axi , Ayi ) su ubicación. α es parámetro del
sistema y ηi es ruido blanco gaussiano de media nula.
C.2.
Filtro de Kalman - EKF
Para resolver el problema y debido a que este no es lineal se propone usar un filtro de
Kalman extendido (EKF) con el siguiente sistema asociado. Para una referencia teórica del
filtro de Kalman consultar el capı́tulo 5
C.2 Filtro de Kalman - EKF
98
Xk = f (Xk−1 , uk−1 ) + νk−1
(C.8)
zk = h(Xk ) + ηk
(C.9)
donde cov(νk ) = Q y cov(ηk ) = R y sus correspondientes ecuaciones
X̂k+1|k = f (X̂k|k , uk )
(C.10)
Pk+1|k = Fk · Pk|k · FkT + Qk
(C.11)
T
T
Kk+1 = Pk+1|k · Hk+1
· (Hk+1 · Pk+1|k · Hk+1
+ Rk )−1
C.2.1.
(C.12)
X̂k+1|k+1 = X̂k+1|k + Kk+1 (zk − h(X̂k+1|k ))
(C.13)
Pk+1|k+1 = (I − Kk+1 · Hk+1 ) · Pk+1|k
(C.14)
Descripción de las matrices

xk + h · vxk + h2 /2 · Ξxk (xk , yk )

 y + h · v + h2 /2 · Ξ (x , y )
yk
yk k k
 k
f (Xk , uk ) = 

λ · vxk + h · Ξxk (xk , yk )

λ · vyk + h · Ξyk (xk , yk )


0




0


νk = 

 (1 − λ) · νx 
k


(1 − λ) · νyk








�
�− 1 
P1 · (xk − Ax1 )2 + (yk − Ay1 )2 α


1
 P2 · �(xk − Ax )2 + (yk − Ay )2 �− α 
2


2
h(Xk ) = 

.


..


1
�
�
y 2 −α
x
2
PM · (xk − AM ) + (yk − AM )


η 1k


 η2 
k 

ηk =  . 
 .. 


η Mk

2
rx
h2 ∂Ξrx
1 + h2 · ∂Ξ
h 0
∂x
2 · ∂y

�
2
2
∂Ξ
∂Ξ
r
 h · ry
1 + h2 · ∂yy 0 h
∂f ��

2
∂x
Fk =
=

rx
rx
∂X �X̂k|k ,uk 
h · ∂Ξ
h · ∂Ξ
λ 0
∂x
∂y

∂Ξry
∂Ξry
h · ∂x
h · ∂y
0 λ







C.3 Implementación del sistema


�

∂h ��

Hk =
=

∂X �X̂k|k 

99
2·P1 ·(xk −Ax
1)
α
2·P ·(x −Ax )
− 2 αk 2
−
..
.
−
2·PM ·(xk −Ax
M)
α
�
�− 1 −1
con ϕi = (xk − Axi )2 + (yk − Ayi )2 α
C.2.2.
· ϕ1
· ϕ2
· ϕM
2·P1 ·(yk −Ay1 )
α
2·P2 ·(yk −Ay2 )
−
α
−
..
.
−
2·PM ·(yk −AyM )
α
· ϕ1
· ϕ2
· ϕM
0 0


0 0 

.. .. 
. . 

0 0
Condiciones iniciales / ruidos / covarianzas
La posición inicial se asume desconocida. Se toma un punto cualquiera de la grilla (se
podrı́a tomar el centro). Se toma un desvı́o estandar de 1m para el ruido de proceso νk . La
potencia de ruido de medición ηk se modifica para simular diversos escenarios.
C.3.
Implementación del sistema
Todo el sistema está simulado mediante un script MATLAB (ver C.5). Sintetizando los
datos de las mediciones y en un mapa ficticio.
También se sintetiza una trayectoria a seguir, de donde se tomarı́an las mediciones de
señal WiFi
C.3.1.
Mapa
El plano de navegación es un mapa de bits binario, donde un pixel blanco simboliza una
pared y un pixel negro el piso.
También se genera un mapa de bits que contiene el camino recorrido. Esta imagen es
luego transformada en una secuencia temporal de coordenadas (x, y)
Figura C.2: Mapa y recorrido propuesto
C.3 Implementación del sistema
C.3.2.
100
Campo de fuerza
Recordando el modelo de sistema, se calcula el campo de fuerza como
Ξr (x, y) =
�
i,j
Ξcr · C(i, j)
− 2
·
di,j (x, y)
�
x − xic
y − ycj
· �x +
· �y
di,j (x, y)
di,j (x, y)
�
(C.15)
usando como C(i, j) el mapa de bits que define el entorno.
Luego se calculan las derivadas parciales del campo de fuerza
∂Ξrx ∂Ξrx ∂Ξry
∂x , ∂y , ∂x
y
∂Ξry
∂y
aproximando
con la primer diferencia
C.3.3.
Observaciones / secuencia de mediciones
Para generar las observaciones se generan 5 campos con la señal emitida por 5 access
points distintos: en las 4 esquinas y en el centro del mapa.
Para esto se usa el parámetro α anteriormente mencionado, se determina una potencia
Pi para cada AP y se le agrega un ruido blanco gaussiano (ruido de medición η)
50
45
40
35
30
25
20
15
10
5
5
10
15
20
25
30
35
40
45
50
Figura C.3: Nivel de potencia en el espacio para cinco routers (centro y esquinas)
C.3.4.
Filtrado
Por último se implementa el algoritmo del EKF con la dinámica presentada y tomando
como mediciones los puntos del campo de los AP, tomados de la secuencia temporal correspondiente al camino simulado. En otras palabras, se simula un móvil recorriendo el camino
y tomando mediciones de señal de los 5 AP.
C.4 Resultados obtenidos
C.4.
101
Resultados obtenidos
Se grafican los resultados (cı́rculos verdes) en el mismo mapa, superpuestos al camino
verdadero (rojo).
50
45
40
35
30
25
20
15
10
5
5
10
15
20
25
30
35
40
45
50
Figura C.4: Resultado obtenido para SNR = 30dB, α = 3, λ = 0.5, σν = 1m, Fcr = 1
50
45
40
35
30
25
20
15
10
5
5
10
15
20
25
30
35
40
45
50
Figura C.5: Resultado obtenido para SNR = 20dB, α = 3, λ = 0.5, σν = 1m, Fcr = 1
C.4 Resultados obtenidos
102
50
45
40
35
30
25
20
15
10
5
5
10
15
20
25
30
35
40
45
50
Figura C.6: Resultado obtenido para SNR = 10dB, α = 3, λ = 0.5, σν = 1m, Fcr = 1
50
45
40
35
30
25
20
15
10
5
5
10
15
20
25
30
35
40
45
50
Figura C.7: Resultado obtenido para SNR = 0dB, α = 3, λ = 0.5, σν = 1m, Fcr = 1
Si bien los resultados de las simulaciones son prometedores, incluso para baja relación
señal a ruido, este método presenta varias desventajas que dificultan su uso en la práctica.
Una de ellas es la necesidad de un mapa a priori de las paredes y obstáculos del terreno, esto
es costoso de generar y mantener.
Por otra parte, la función propuesta como campo de fuerza es muy dependiente de la
aplicación. Para un peatón en un pasillo tiene sentido la premisa de mantenerse alejado de
las paredes, pero para un UAV no es necesariamente cierta.
� �
Además la hipótesis de propagación ∼ α · log dd0 no se sustenta en ambientes cerrados
donde los efectos de la propagación multipath son apreciables.
C.5 Simulaciones
103
Por todos estos motivos se dejó de lado la idea de implementar métodos basados en RSSI
sin análisis estadı́stico posterior.
C.5.
Simulaciones
clc
clear all
close all
% modelo de potencial para usar con random−walk
% %mapa de la habitacion , 1 es pared , 0 es piso
binmap=zeros ( 5 0 , 5 0 ) ;
binmap ( 1 , : ) =1;
binmap ( 5 0 , : ) =1;
binmap ( : , 1 ) =1;
binmap ( : , 5 0 ) =1;
binmap ( 2 0 , 1 : 2 5 ) =1;
binmap ( 2 0 : 4 0 , 2 5 ) =1;
binmap ( 4 0 , 3 5 : 5 0 ) =1;
binmap ( 1 : 3 0 , 3 5 ) =1;
% para grabar / levantar mapas
%imwrite ( binmap , ' mapa . bmp ' , 'BMP' )
%camino=imread ( ' camino . bmp ' , 'BMP' ) ;
load ( ' s e c u e n c i a . mat ' ) %secuencia temporal del camino
% tiene las coordenadas por donde paso el objeto ( ground truth )
figindex =1;
%mapa
figure ( figindex ) ,
contourf ( binmap , 1 )
figindex=figindex +1;
% %campo de fuerza para la dinamica del sistema
% basado en WI−FI BASED INDOOR LOCALIZATION AND TRACKING
% USING SIGMA−POINT KALMAN FILTERING METHODS
% de Anindya S . Paul and Eric A . Wan
forcex=zeros ( 5 0 , 5 0 ) ;
forcey=zeros ( 5 0 , 5 0 ) ;
forcemod=zeros ( 5 0 , 5 0 ) ;
Fcr =1; %cte de la fuerza
x =1:50;
C.5 Simulaciones
104
y =1:50;
f o r i =1:50 ,
f o r j =1:50 ,
f o r x =1:50;
f o r y =1:50 ,
i f ( x==i && y==j ) ,
% evitar division por cero
else
forcex ( y , x )=forcex ( y , x )+Fcr . ∗ binmap ( j , i ) ∗ ( ( x−i ) / ( ( ( x−i ) ˆ2+(y−j ) ˆ 2 ) ←�
ˆ ( 1 / 2 ) ) ) / ( ( x−i ) ˆ2+(y−j ) ˆ 2 ) ;
forcey ( y , x )=forcey ( y , x )+Fcr . ∗ binmap ( j , i ) ∗ ( ( y−j ) / ( ( ( x−i ) ˆ2+(y−j ) ˆ 2 ) ←�
ˆ ( 1 / 2 ) ) ) / ( ( x−i ) ˆ2+(y−j ) ˆ 2 ) ;
end
end
end
end
end
f o r i =1:50 ,
f o r j =1:50 ,
forcemod ( i , j )=sqrt ( forcex ( i , j ) ˆ2+forcey ( i , j ) ˆ 2 ) ;
end
end
figure ( figindex ) ,
contourf ( forcex )
figindex=figindex +1;
figure ( figindex )
contourf ( forcey )
figindex=figindex +1;
figure ( figindex )
contourf ( forcemod )
figindex=figindex +1;
% derivada del campo de fuerza , despues se usa en el EKF
% probar calcular las derivadas de otra manera
dforcexdx=forcex−circshift ( forcex , [ 0 , 1 ] ) ;
dforcexdy=forcex−circshift ( forcex , [ 1 , 0 ] ) ;
dforceydx=forcey−circshift ( forcey , [ 0 , 1 ] ) ;
dforceydy=forcey−circshift ( forcey , [ 1 , 0 ] ) ;
figure ( figindex ) ,
surf ( dforcexdx ' )
f i g i n d e x=f i g i n d e x +1;
figure ( figindex )
s u r f ( dforcexdy ' )
figindex=figindex +1;
C.5 Simulaciones
105
figure ( figindex ) ,
contourf ( dforceydx ' )
f i g i n d e x=f i g i n d e x +1;
figure ( figindex )
contourf ( dforceydy ' )
figindex=figindex +1;
% %mapa de observaciones
obs=zeros ( 5 0 , 5 0 , 5 ) ; % 5 access points , en las esquinas y en el centro
pot =1000;
aplocation =[1 , 1 ;
1 ,50;
50 ,50;
50 ,1 ;
25 ,25];
sigma =1000;
alpha =3;
f o r m =1:5 ,
f o r i =1:50 ,
f o r j =1:50 ,
obs ( j , i , m )=pot . / ( ( ( i−aplocation ( m , 2 ) ) ˆ2+(j−aplocation ( m , 1 ) ) ˆ 2 ) ˆ ( 1 / alpha ) ←�
);
end
end
obs ( aplocation ( m , 2 ) , aplocation ( m , 1 ) , m )=pot ;
end
ruido=sqrt ( sigma ) ∗ randn ( 5 0 , 5 0 , 5 ) ;
obs=obs+ruido ;
mediciones=zeros ( 9 5 , 5 ) ; % secuencia de mediciones de los 5 sensores
f o r i =1: length ( secuencia ) ,
f o r j =1:5 ,
mediciones ( i , j )=obs ( secuencia ( i , 1 ) , secuencia ( i , 2 ) , j ) ;
end
end
% en la matriz mediciones se guarda la simulacion de lo que leeria
% un sensor de RSS
% %EKF ( ya estan todos los datos )
% en forcex y forcey esta la fuerza de control ( estan tambien las deriv )
% en secuencia esta el camino verdadero
% en mediciones estan los datos medidos de los 5 AP
C.5 Simulaciones
106
lambda = 0 . 5 ;
N=length ( secuencia ) ;
h =1; % paso temporal de las estimaciones
estim=zeros ( 4 , N ) ; %vector que guarda las estimaciones
% ruido de proceso
%−−−−−−−−−−−−−−
s_x = 0 ; % bajar a algo mas parecido a 1
s_y = 0 ;
s_vx = 1∗(1 − lambda ) ;
s_vy = 1∗(1 − lambda ) ;
r_proc = [
sqrt ( s_x ) ∗ randn ( 1 , N )
;
sqrt ( s_y ) ∗ randn ( 1 , N )
;
sqrt ( s_vx ) ∗ randn ( 1 , N )
;
sqrt ( s_vy ) ∗ randn ( 1 , N )
];
%−−−−−−−−−−−−−−−
Q = cov ( r_proc ' ) ;
% r u i d o de m e d i c i o n ( sigma e s t a d e f i n i d o cuando s e arma l a s e n a l de m e d i c i o n e s )
e t a 1 = sigma ;
e t a 2 = sigma ;
e t a 3 = sigma ;
e t a 4 = sigma ;
e t a 5 = sigma ;
e t a = [ s q r t ( e t a 1 ) ∗ randn ( 1 ,N)
;
s q r t ( e t a 2 ) ∗ randn ( 1 ,N)
;
s q r t ( e t a 3 ) ∗ randn ( 1 ,N)
;
s q r t ( e t a 4 ) ∗ randn ( 1 ,N)
;
s q r t ( e t a 5 ) ∗ randn ( 1 ,N)
];
R = cov ( e t a ' ) ;
%41 y 7
x_0_0 = [
p_0_0 = [
(41+1∗ round ( randn ( 1 , 1 ) ) )
;
(0+ 1∗ randn ( 1 , 1 ) )
;
(0+ 1∗ randn ( 1 , 1 ) )
];
1
0
0
0
;
0
1
0
0
;
0
0
1
0
;
0
0
0
1 ];
x_k_k = x_0_0 ;
p_k_k = p_0_0 ;
f o r n =1: N ,
;
(7+ 1∗ round ( randn ( 1 , 1 ) ) )
C.5 Simulaciones
107
y_kk=mediciones ( n , : ) ' ;
x kk k = [
x k k ( 1 ) + h∗ x k k ( 3 ) + ( h ˆ 2 ) . / 2 ∗ f o r c e x ( ( round ( x k k ( 2 ) ) ) , ( round←�
( x k k (1) ) ) )
;
x k k ( 2 ) + h∗ x k k ( 4 ) + ( h ˆ 2 ) . / 2 ∗ f o r c e y ( ( round ( x k k ( 2 ) ) ) , ( round←�
( x k k (1) ) ) )
;
lambda ∗ x k k ( 3 )
+ h∗ f o r c e x ( ( round ( x k k ( 2 ) ) ) , ( round←�
( x k k (1) ) ) )
lambda ∗ x k k ( 4 )
;
+ h∗ f o r c e y ( ( round ( x k k ( 2 ) ) ) , ( round←�
( x k k (1) ) ) )
];
%d f /dx d e r i v a d a de l a d i n a m i c a d e l s i s t e m a ( random walk + mapa )
F =
[1+h ˆ2/2∗ d f o r c e x d x ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
ˆ2/2∗ d f o r c e x d y ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
h
h←�
0
;
h ˆ2/2∗ d f o r c e y d x ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
1+h←�
0 ←�
ˆ2/2∗ d f o r c e y d y ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
h
;
h∗ d f o r c e x d x ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
←�
h∗ d f o r c e x d y ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
lambda
0
;
←�
←�
h∗ d f o r c e y d x ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
0 ←�
h∗ d f o r c e y d y ( ( round ( x k k ( 2 ) ) ) , ( round ( x k k ( 1 ) ) ) )
lambda ] ;
p kk k = F ∗ p k k ∗ F ' + Q ;
% dh / dx derivada del modelo de observacion
H = [ −pot ∗ 2 ∗ ( x_k_k ( 1 )−aplocation ( 1 , 2 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 1 , 2 ) ) ←�
−pot ∗ 2 ∗ ( x_k_k ( 2 )−←�
ˆ2+( x_k_k ( 2 )−aplocation ( 1 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
aplocation ( 1 , 1 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 1 , 2 ) ) ˆ2+( x_k_k ( 2 )−←�
aplocation ( 1 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
0
0
;
−pot ∗ 2 ∗ ( x_k_k ( 1 )−aplocation ( 2 , 2 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 2 , 2 ) ) ←�
−pot ∗ 2 ∗ ( x_k_k←�
ˆ2+( x_k_k ( 2 )−aplocation ( 2 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
( 2 )−aplocation ( 2 , 1 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 2 , 2 ) ) ˆ2+( x_k_k←�
( 2 )−aplocation ( 2 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
0
0
;
−pot ∗ 2 ∗ ( x_k_k ( 1 )−aplocation ( 3 , 2 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 3 , 2 ) ) ←�
−pot ∗ 2 ∗ ( x_k_k←�
ˆ2+( x_k_k ( 2 )−aplocation ( 3 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
( 2 )−aplocation ( 3 , 1 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 3 , 2 ) ) ˆ2+( x_k_k←�
( 2 )−aplocation ( 3 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
0
0
;
−pot ∗ 2 ∗ ( x_k_k ( 1 )−aplocation ( 4 , 2 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 4 , 2 ) ) ←�
−pot ∗ 2 ∗ ( x_k_k←�
ˆ2+( x_k_k ( 2 )−aplocation ( 4 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
( 2 )−aplocation ( 4 , 1 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 4 , 2 ) ) ˆ2+( x_k_k←�
( 2 )−aplocation ( 4 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
0
0
;
−pot ∗ 2 ∗ ( x_k_k ( 1 )−aplocation ( 5 , 2 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 5 , 2 ) ) ←�
−pot ∗ 2 ∗ ( x_k_k←�
ˆ2+( x_k_k ( 2 )−aplocation ( 5 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
( 2 )−aplocation ( 5 , 1 ) ) / alpha ∗ ( ( x_k_k ( 1 )−aplocation ( 5 , 2 ) ) ˆ2+( x_k_k←�
( 2 )−aplocation ( 5 , 1 ) ) ˆ 2 ) ˆ( −1/ alpha −1)
s_kk = H ∗ p_kk_k ∗ H ' + R;
0
0
;
];
C.5 Simulaciones
108
k kk = p k k k ∗ H ' ∗ ( s_kk ) ˆ( −1) ;
fh = [ pot ∗ ( ( x_k_k ( 1 )−aplocation ( 1 , 2 ) ) ˆ2+( x_k_k ( 2 )−aplocation ( 1 , 1 ) ) ˆ 2 ) ˆ( −1/←�
alpha )
;
pot ∗ ( ( x_k_k ( 1 )−aplocation ( 2 , 2 ) ) ˆ2+( x_k_k ( 2 )−aplocation ( 2 , 1 ) ) ˆ 2 ) ˆ( −1/←�
alpha )
;
pot ∗ ( ( x_k_k ( 1 )−aplocation ( 3 , 2 ) ) ˆ2+( x_k_k ( 2 )−aplocation ( 3 , 1 ) ) ˆ 2 ) ˆ( −1/←�
alpha )
;
pot ∗ ( ( x_k_k ( 1 )−aplocation ( 4 , 2 ) ) ˆ2+( x_k_k ( 2 )−aplocation ( 4 , 1 ) ) ˆ 2 ) ˆ( −1/←�
alpha )
;
pot ∗ ( ( x_k_k ( 1 )−aplocation ( 5 , 2 ) ) ˆ2+( x_k_k ( 2 )−aplocation ( 5 , 1 ) ) ˆ 2 ) ˆ( −1/←�
alpha )
];
x_kk_kk = x_kk_k + k_kk ∗ ( y_kk − fh ) ;
p_kk_kk = ( eye ( 4 , 4 )−k_kk ∗ H ) ∗ p_kk_k ;
%next step
x_k_k = x_kk_kk ;
p_k_k = p_kk_kk ;
%save
estim ( : , n ) = x_kk_kk ;
end
% resultados
% circulos verdes para la estimacion
% trazo rojo para la verdad
figure ( figindex )
contourf ( binmap , 1 )
hold ,
plot ( estim ( 1 , : ) , estim ( 2 , : ) , ' og ' )
plot ( secuencia ( : , 2 ) , secuencia ( : , 1 ) , ' r ' )
figindex=figindex +1;
Apéndice D
Caracterización por cuadrados
mı́nimos
load ( ' e n s a y o . mat ' )
modelo = −9.8∗[ sin ( tita ) , cos ( tita ) ] ;
% en la variable datos estan las mediciones de los dos canales del
% acelerometro en funcion de tita
%
% se crea la variable modelo que tiene la simulacion del mismo experimento
% pero con un acelerometro ideal , tomando g =9.8 m / s ˆ2
Ax = [ modelo ( : , 1 ) ones ( length ( tita ) , 1 )
];
Ay = [ modelo ( : , 2 ) ones ( length ( tita ) , 1 ) ] ;
Yx = datos ( : , 1 ) ;
Yy = datos ( : , 2 ) ;
Xpx = ( ( Ax ' ∗Ax) ˆ−1)∗Ax ' ∗ Yx ;
Xpy = ( ( Ay ' ∗Ay) ˆ−1)∗Ay ' ∗ Yy ;
% en Xpx y Xpy estan las estimaciones de los parametros del modelo de
% acelerometro , Xp = [ 1+E_e E_s ]
109
Apéndice E
Formato de archivos
En este apéndice se detallan los formatos utilizados en los distintos archivos que usa el
programa.
Para poder implementar el sistema de forma modular y probar sus partes por separado
se establecieron interfaces entre los distintos bloques. Tanto la IMU como el sensor WiFi
pueden ser reemplazados por archivos de texto para poder reproducir escenarios de prueba.
Esto fue necesario para correr las simulaciones de montecarlo en software-in-the-loop para
caracterizar y perfilar el navegador.
E.1.
Mediciones WiFi
wifidata es la interfaz entre el navegador y la fuente de mediciones WiFi, que puede ser
la versión modificada de airodump-ng o un archivo de texto plano.
Por cada medición de RSSI se obtiene una serie de lineas formadas por:
Un header:
$START,BSSID,RSSI,RXQ,BEACON,DATA,DATAPS,ESSID,$
Una linea por cada AP en rango:
$DATA,<MAC>,<RSSI>,XX,XX,XX,XX,<nombre>,$
donde <MAC> indica la dirección MAC o BSSID del AP, <RSSI> indica el nivel de señal,
medido de acuerdo al fabricante del adaptador. En el caso del TL-WN321G de TPLINK la medición en en dBm. Las XX indican datos provistos por el sensor que no son
usados en el filtro bayesiano. Estos valores son ignorados. Por último, <nombre> indica
el nombre del AP, o ESSID.
Un footer:
$END,BSSID,RSSI,RXQ,BEACON,DATA,DATAPS,ESSID,$
A continuación se puede ver un ejemplo del stream de datos para una medición:
110
E.2 Mediciones inerciales - IMU
111
$START , BSSID , RSSI , RXQ , BEACON , DATA , DATAPS , ESSID , $
$DATA , 0 0 : 0 0 : E5 : 3 4 : A3 : 8 6 , − 4 3 , XX , XX , XX , XX , galileo , $
$DATA , 0 0 : 0 0 : BF : 1 5 : BD : 2 B , −43 , XX , XX , XX , XX , rusell , $
$DATA , 0 0 : 0 0 : 1 0 : CF : 5 8 : 1 C , −47 , XX , XX , XX , XX , laplace , $
$DATA , 0 0 : 0 0 : B6 : E5 : 8 C : 0 6 , − 4 7 , XX , XX , XX , XX , Helena , $
$DATA , 0 0 : 0 0 : B6 : E5 : 8 C : F6 , −43 , XX , XX , XX , XX , newguy , $
$END , BSSID , RSSI , RXQ , BEACON , DATA , DATAPS , ESSID , $
E.2.
Mediciones inerciales - IMU
imudata es la interfaz entre el navegador y la fuente de mediciones inerciales, que puede
ser una IMU conectada al puerto serie o un archivo de texto plano. Por cada medición inercial
se obtiene un linea como la siguiente:
$IMUDATA,<timestamp>,<Ax>,<Ay>,<Az>,<Wx>,<Wy>,<Wz>,<prom>
Donde
IMUDATA es un header,
<timestamp> un número entero que identifica temporalmente a la muestra,
<Ai> es la fuerza especı́fica en el eje i (terna b), medida en cuentas del conversor AD
de la LLC. Esta cantidad tiene que ser convertida a SI antes de usarla en el algoritmo
inercial.
<Wi> es la velocidad angular en el eje i (terna b), medida en cuentas del conversor AD
de la LLC. Esta cantidad tiene que ser convertida a SI antes de usarla en el algoritmo
inercial.
y por último, <prom> indica la cantidad de mediciones que se tomaron y promediaron
en la LLC, correspondientes a la presente muestra.
A continuación se puede ver un ejemplo del stream de datos:
$IMUDATA , 0 0 0 0 0 2 0 1 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
$IMUDATA , 0 0 0 0 0 2 0 2 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
$IMUDATA , 0 0 0 0 0 2 0 3 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
$IMUDATA , 0 0 0 0 0 2 0 4 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
$IMUDATA , 0 0 0 0 0 2 0 5 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
$IMUDATA , 0 0 0 0 0 2 0 6 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
$IMUDATA , 0 0 0 0 0 2 0 7 , 1 9 8 8 , 2 0 4 8 , 2 0 4 8 , 1 5 2 6 , 1 5 2 6 , 1 5 2 6 , 1 6
E.3 Muestras de entrenamiento - histogramas
E.3.
112
Muestras de entrenamiento - histogramas
La información a priori o muestras de entrenamiento del filtro bayesiano se guardan en
forma de histograma, clasificados por ubicación espacial donde fueron tomados.
Por cada punto del espacio que se defina como dominio del filtro bayesiano se define un
archivo de texto plano que contiene un histograma por cada AP en rango.
Dentro del archivo correspondiente a un punto se define un histograma por linea, respetando el siguiente formato:
<MAC>,<nombre>,<b99>, ... ,<b00>,<counts> <ref>
Donde
<MAC> indica la dirección MAC o BSSID del AP,
<nombre> indica el nombre del AP (i.e. ESSID),
<bi> indica el bucket del histograma, con i = 0 . . . 100,
<counts> indica la cantidad total de mediciones en el histograma
y por último, <ref> indica una referencia de la escala utilizada.
A continuación se puede ver como ejemplo el archivo correspondiente a una posición
particular con los histogramas de los AP en rango desde esa ubicación:
8 9 1 0 5 2 1 8 8 5 9 , rusell , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,16 ,33 ,104 ,37 ,9 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 0 0 [ −99 dBm . . . 0 dBm ]
9 7 5 5 7 7 7 7 4 1 4 , Helena , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,34 ,73 ,91 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 0 0 [ −99 dBm . . . 0 dBm ]
1 2 0 5 4 1 1 0 8 2 5 2 , laplace , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,4 ,27 ,43 ,77 ,38 ,11 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 0 0 [ −99 dBm . . . 0 dBm ]
1 3 2 6 9 4 4 5 1 0 7 8 , galileo , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,21 ,75 ,101 ,1 ,0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 0 0 [ −99 dBm . . . 0 dBm ]
1 4 2 4 2 8 6 1 5 6 9 7 , DlinkHall , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 8 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 8 0 [ −99 dBm . . . 0 dBm ]
1 4 7 4 9 0 5 9 7 1 3 3 , FIUBA − BIBLIOTECA − 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,183 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,
0 , 0 , 1 8 3 [ −99 dBm . . . 0 dBm ]
Bibliografı́a
[1] 802.11 beacons revealed
http://www.wi-fiplanet.com/tutorials/print.php/1492071.
[2] Beacon frames, 802.11 devices, and kismet
http://www.techrepublic.com/blog/opensource/beacon-frames-80211-devices-andkismet/3279.
[3] Extended kalman filter
https://en.wikipedia.org/wiki/extended kalman filter.
[4] Ieee 802.11
http://en.wikipedia.org/wiki/ieee 802.11.
[5] An overview of mems inertial sensing technology
http://www.sensorsmag.com/sensors/acceleration-vibration/an-overview-memsinertial-sensing-technology-970.
[6] Un gps en el movil para no caerse del mapa
http://www.lanacion.com.ar/1449290-un-gps-en-el-movil-para-no-caerse-del-mapa.
[7] Vibrating structure gyroscope
http://en.wikipedia.org/wiki/vibrating structure gyroscope.
[8] J. Bilbao, A. Olozaga, E. Bravo, O. Garcı́a, C. Varela, and M. Rodrı́guez. How design an unmanned aerial vehicle with great efficiency in the use of existing resources.
International Journal of Computers, (4):442–451.
[9] R. Chandra, J. Padhye, L. Ravindranath, and A. Wolman. Beacon-stuffing: Wi-fi without associations. In Mobile Computing Systems and Applications, 2007. HotMobile
2007. Eighth IEEE Workshop on, pages 53–57. IEEE, 2007.
[10] A.B. Chatfield. Fundamentals of high accuracy inertial navigation, volume 174. AIAA
(American Institute of Aeronautics & Astronautics), 1997.
[11] Jorge Miguel Brito Domingues. Quadrotor prototype, 2009.
113
BIBLIOGRAFÍA
114
[12] D. Eberly. Quaternion algebra and calculus. Magic Software, Inc, 21, 2002.
[13] N. El Sheimy, EW Shin, and X. Niu. Kalman filter face-off: Extended vs. unscented
kalman filters for integrated gps and mems inertial. In Proceedings of the International
Symposium on Global Navigation Satellite Systems (GNSS’06), pages 48–54, 2006.
[14] F. Evennou and F. Marx. Advanced integration of wifi and inertial navigation systems
for indoor mobile positioning. EURASIP journal on applied signal processing, 2006:164–
164, 2006.
[15] K. Frank, B. Krach, N. Catterall, and P. Robertson. Development and evaluation of a
combined wlan & inertial indoor pedestrian positioning system. In ION GNSS, 2009.
[16] S. Gezici, Z. Tian, G.B. Giannakis, H. Kobayashi, A.F. Molisch, H.V. Poor, and Z. Sahinoglu. Localization via ultra-wideband radios: a look at positioning aspects for future
sensor networks. Signal Processing Magazine, IEEE, 22(4):70–84, 2005.
[17] S. Gupte, P.I.T. Mohandas, and J.M. Conrad. A survey of quadrotor unmanned aerial
vehicles. IMU, 21(26):35–72.
[18] R.E. Kalman et al. A new approach to linear filtering and prediction problems. Journal
of basic Engineering, 82(1):35–45, 1960.
[19] H. Liu, H. Darabi, P. Banerjee, and J. Liu. Survey of wireless indoor positioning techniques and systems. Systems, Man, and Cybernetics, Part C: Applications and Reviews,
IEEE Transactions on, 37(6):1067–1080, 2007.
[20] M. Matsumoto and T. Nishimura. Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Transactions on Modeling and
Computer Simulation (TOMACS), 8(1):3–30, 1998.
[21] Anindya S. Paul and Eric A. Wan. Wi-fi based indoor localization and tracking using
sigma-point kalman filtering methods. Position, Location and Navigation Symposium,
2008 IEEE/ION, pages 646 – 659, 2008.
[22] L. Pei, R. Chen, J. Liu, H. Kuusniemi, T. Tenhunen, and Y. Chen. Using inquirybased bluetooth rssi probability distributions for indoor positioning. Journal of Global
Positioning Systems, 9(2):122–130, 2010.
[23] M. Quan, E. Navarro, and B. Peuker. Wi-fi localization using rssi fingerprinting. 2010.
[24] S. Riisgaard and M.R. Blas. Slam for dummies. A Tutorial Approach to Simultaneous
Localization and Mapping, 22:1–127, 2003.
BIBLIOGRAFÍA
115
[25] R.M. Rogers. Applied mathematics in integrated navigation systems. Number v. 1 in
AIAA education series. American Institute of Aeronautics and Astronautics, 2003.
[26] E.H. Shin and N. El-Sheimy. An unscented kalman filter for in-motion alignment of
low-cost imus. In Position Location and Navigation Symposium, 2004. PLANS 2004,
pages 273–279. IEEE, 2004.
[27] D.H. Titterton and J.L. Weston. Strapdown inertial navigation technology, volume 17.
Peter Peregrinus Ltd, 2004.
[28] R. Van Der Merwe and E.A. Wan. Sigma-point kalman filters for integrated navigation.
In Proceedings of the 60th Annual Meeting of the Institute of Navigation (ION), pages
641–654, 2004.
[29] J.H. Wang. Intelligent MEMS INS/GPS integration for land vehicle navigation, volume 67. University Microfilms International, P. O. Box 1764, Ann Arbor, MI, 48106,
USA, 2006.
[30] GV Zaruba, M. Huber, FA Kamangar, and I. Chlamtac. Indoor location tracking using
rssi readings from a single wi-fi access point. Wireless networks, 13(2):221–235, 2007.

Documentos relacionados