Académique Documents
Professionnel Documents
Culture Documents
.
Universidad Nacional de Córdoba
Facultad de Matemática, Astronomı́a y Fı́sica
19 de Diciembre de 2013
“The best way to follow your dreams, is to put a gps on the back of your eye lids.”
Michael Phelps
Resumen
Los Filtros de Kalman son un algoritmo desarrollado por Rudolf E. Kalman en 1960 que
sirve para poder identificar el estado oculto (no medible) de un sistema dinámico lineal,
pero sirve además cuando el sistema está sometido a ruido poco aditivo. Los Filtros
de Kalman son capaces de escoger la ganancia K de realimentación del error de forma
óptima cuando se conocen las variaciones de ruido que afectan al sistema.
Desde su introducción los Filtros Kalman han llegado a ser un componente integral
dentro de miles de sistemas de navegación tanto militares como civiles. Los Filtros de
Kalman, son algoritmos digitales recursivos aparentemente simples, han sido los favori-
tos para integrar los datos de los sensores de navegación para alcanzar un rendimiento
óptimo de todo el sistema. Para proveer valores estimados correctos del sistema tales
como coordenadas de posición el filtro usa modelos estadı́sticos, los cuales ponderan
apropiadamente cada una de las mediciones nuevas relativas a la información obtenida
anteriormente. También determinar los valores estimados de incerteza, utilizados para
realizar evaluaciones cualitativas en tiempo real ó para estudios de los sistemas de cálcu-
los no convencionales. A causa de que se obtiene un rendimiento óptimo, versatilidad y
una fácil implementación, los Filtros Kalman han resultado ser populares especialmente
para los cálculos de la posición en los sistemas de posicionamiento global. En la actuali-
dad los sistemas de geolocalización se encuentran disponibles en diversos dispositivos de
uso cotidiano, y particularmente se encuentran integrados y disponibles en gran varie-
dad de teléfonos Smartphones. A pesar de los esfuerzos para obtener datos precisos, la
información obtenida se encuentra afectada por ruido, la cual puede ser mejorada con
la utilización de filtros de Kalman para obtener un camino más suave y preciso basa-
do en la reducción del error y el cálculo de la posición real que se desprende del algoritmo.
A Carolina, por las incesantes horas de compañı́a y apoyo que me dieron la fuerza
necesaria para no bajar los brazos y terminar. Este trabajo es tan tuyo como mı́o.
A Caro Dania, que peleó este trabajo palmo a palmo conmigo, revisó y ayudó corrigiendo
incesantemente, me incentivó a continuar en cada tropiezo, y ayudando a poner en
contexto muchas ideas locas y palabras cruzadas.
A Javier, quien se sentó conmigo a revisar y encontrar soluciones a los problemas que
surgieron al codificar. La calidad del código y la capacidad de tenerlo en tiempo y en
forma se concretaron gracias a sus aportes desinteresados.
A mis viejos, hicieron muchos esfuerzos para darme una educación, y hoy finalmente van
a ver cerrar esta etapa.
A Cesar Martinez, ex-jefe que me empujó y retó a cerrar esta etapa. Gracias a su buena
predisposición y compromiso pude terminar con las materias que adeudaba y enfocarme
en este trabajo.
A Gabriel Infante-Lopez, quien aceptó dirigir este trabajo, me ayudó con el planteo de
la temática, y me dio libertad para que pudiera desarrollarlo respetando mi criterio y
conocimientos.
A los amigos, los de la Picada Moreana, Guille, Walter, los chicos de la facu que me
regalaron su amistad, y que llegué a conocer gracias a mi paso por esta institución.
Ustedes son también parte de este camino.
Julio
iv
Índice general
Resumen III
Agradecimientos IV
1. Introducción 1
1.1. Bases y lineamientos del trabajo . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Organización del trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5. Análisis de la información 44
5.1. Análisis comparativo de los valores de precisión . . . . . . . . . . . . . . . 44
5.2. Análisis de trayectorias geolocalizadas sobre mapas . . . . . . . . . . . . . 46
Bibliografı́a 52
Capı́tulo 1
Introducción
Los mapas de papel, sobre todo aquellos que contienen información sobre caminos, ru-
tas y autopistas, se utilizan cada vez menos. 20 años atrás habı́a un mapa de ruta en
cada automóvil, pero hoy en dı́a han quedado completamente obsoletos. El invento res-
ponsable de dicha obsolescencia es el sistema de posicionamiento global llamado GPS,
un sistema electrónico que utiliza una constelación de satélites y receptores de bajo
precio capaces de determinar en tiempo real su posición con una precisión de pocos
metros. En la actualidad los sistemas de geolocalización se encuentran disponibles en
diversos dispositivos de uso cotidiano, y particularmente en una gran variedad de teléfo-
nos Smartphones, los cuales nos permiten obtener la posición del dispositivo con cierto
error en cada momento. Es importante a la hora de utilizar esta información, contar con
una posición con el menor ruido posible, pero entonces ¿Qué se puede descartar de este
ruido? La primera respuesta que nos viene a la mente es el tomar el promedio de alguna
secuencia de muestras. Este enfoque no funciona en la mayorı́a de los problemas de la
vida real ya que deberı́amos mantener la historia de toda la información para lograr este
cálculo, y no estamos asegurando que el nuevo valor sea correcto, pues estamos tomando
datos basados en la media del error, y obteniendo un dato con un error alto, alterarı́a
toda la secuencia. Por lo tanto necesitamos un abordaje más sofisticado a la solución de
estos problemas, y para este trabajo utilizaremos Filtros de Kalman [1].
Los filtros de Kalman son un conjunto de ecuaciones matemáticas que proveen recursos
computacionales (iterativos) para estimar el estado de un proceso, de una manera que
se minimice la media del error cuadrático. Los filtros de Kalman son muy poderosos
en los siguientes aspectos: soportan estimaciones de estados pasados, presente, e incluso
1
2
futuros, y lo pueden hacer incluso cuando la naturaleza precisa del sistema modelado es
desconocida.
A fines de encarar este trabajo, mejoraremos y corregiremos las posiciones obtenidas por
un sistema de posicionamiento global aplicándoles Filtros de Kalman, logrando ası́ obte-
ner un valor más ajustado a la realidad basándonos en los datos anteriormente medidos
y estimados. Esta técnica nos permitirá ajustar el camino realizado en cada paso, ob-
teniendo como resultado una trayectoria geolocalizada más suave y con un error mucho
menor.
Este trabajo nos permitirá aprender el uso de las técnicas antes mencionadas, y su ma-
nipulación para calcular datos más uniformes a los medidos, suavizando las trayectorias
a trazar sobre un mapa.
A fines de poder llevar adelante este trabajo necesitaremos en principio estudiar los
Filtros de Kalman en general, proveyendo el marco teórico adecuado para su posterior
implementación. También estudiaremos y analizaremos los conceptos fundamentales del
análisis de señales de los sistemas de posicionamiento global desde el punto de vista del
emisor (satélite), como del punto de vista del receptor.
En esta sección nos abocamos al estudio de los filtros de Kalman en general, para poder
dilucidar su funcionamiento, y los algoritmos que se implementan, y que a posteriori
utilizaremos para mejorar los valores de geolocalización que presentaremos basándonos
en las mediciones obtenidas con los sistemas de posicionamiento global.
Los filtros de Kalman pueden ser considerados como análogos al modelo de Markov es-
condido, con la diferencia clave que la variable de estado escondido toma valores en un
espacio continuo (en oposición a un espacio de estado discreto como es en el modelo de
Markov escondido). Además, y en contraste con el modelo de ruido Gaussiano utilizado
por los filtros de Kalman, los modelos de Markov escondidos pueden representar distri-
buciones arbitrarias para el siguiente valor de las variables de estado. Notemos que hay
4
5
una fuerte dualidad entre las ecuaciones de los filtros de Kalman y las de los modelos
de Markov escondidos [4] [5].
Es conocido, en la teorı́a, que los filtros de Kalman son óptimos en casos en que a) el
modelo coincide perfectamente con el sistema real, b) el ruido de entrada es ruido blanco,
y c) la covarianza del ruido es conocido exactamente. Muchos métodos para la estimación
de la covarianza del ruido han sido propuestos durante las últimas décadas.
Después de que las covarianzas son identificadas, es útil evaluar la performance del filtro,
por ejemplo, si es posible mejorar la calidad estimada del estado o no. Se sabe que si
los filtros de Kalman trabajan de manera óptima, la secuencia de innovación (el error
de predicción de salida) es un ruido blanco.
En esta sección nos enfocaremos en detallar los conceptos fundamentales que sugerimos
en la sección anterior, y daremos un contexto mas profundo al análisis de los filtros de
Kalman. Describiremos los filtros en su formulación original [7], donde el valor medido
ocurre y el estado es estimado en un momento discreto del tiempo.
Los filtros de Kalman abordan el problema general de tratar de estimar el estado x ∈ <n
de un proceso controlado discreto en el tiempo. Dicho proceso es gobernado por una
ecuación diferencial lineal estocástica:
zk = Hxk + vk (2.2)
6
El objetivo es el de encontrar una ecuación que compute un estimado del estado a poste-
riori x b−
bk como una combinación lineal de un estimado a priori x k y una diferencia pesada
entre una medición actual y una predicción de medición. A continuación introduciremos
b−
los elementos requeridos para generar nuestras definiciones. Llamaremos x n
k ∈ < a la
estimación a priori del estado en el paso k dado el conocimiento del proceso antes del
bk ∈ <n a la estimación a posteriori del estado en el paso k dada la medición
paso k, y x
zk . Ahora estamos en condiciones de definir el estado estimado del error a priori y a
posteriori de la siguiente manera
e− b−
k ≡ xk − x k
(2.5)
e k ≡ xk − x
bk
Pk− = E[e− −T
k ek ] (2.6)
7
x b−
bk = x b−
k + K(zk − H x k) (2.8)
La justificación para la ecuación 2.8 la podemos encontrar en .El origen probabilı́stico del
b−
filtro”. En la ecuación 2.8 el término (zk − H x k ) es llamado la medición de innovación,
b−
o el residual. El residual refleja la discrepancia entre la medición predicha H x k y la
medición real zk . Un residual de cero significa que los dos valores están en completa
concordancia, mientras que la matriz K de tamaño n x m es escogida como la ganancia
o factor de mezcla que reduce al mı́nimo la ecuación de covarianza del error a posteriori
2.7. Esta minimización puede lograrse sustituyendo la ecuación 2.8 en la definición 2.5,
sustituyéndola en la ecuación 2.7, alcanzando las expectativas, tomando la derivada de la
traza del resultado con respecto a K, configurando ese resultado igual a cero, devolviendo
entonces para K [8] [9] [10].
Pk− H T
Kk = Pk− H T (HPk− H T + R)−1 = (2.9)
HPk− H T + R
Esta es una de las formas en que el K resultante que minimiza la ecuación 2.7. Notemos
que Todas las ecuaciones del filtro de Kalman pueden ser manipuladas algebráicamente
de diferentes maneras. Si observamos la ecuación 2.9 vemos que mientras la covarianza
del error medido se acerca a cero, pondera el valor residual de la ganancia K más
fuertemente. Especı́ficamente,
lı́m Kk = H − 1
Rk →0
Por otro lado, mientras la covarianza de error estimado a priori Pk− se acerca a ce-
ro,pondera el valor residual de la ganancia K más débilmente. Especı́ficamente,
lı́m Kk = 0
Pk− →0
b−
la medición predicha H x k es cada vez menos confiable. Por otro lado, mientras la co-
varianza del error medido a priori Pk− se acerca a cero, el valor medido zk es cada vez
b−
menos confiable, mientras que la medición predicha H x k es más confiable.
E[xk ] = x
bk
E[(xk − x bk )T ] = Pk
bk )(xk − x
La ecuación 2.8 refleja el sentido (el primer momento) de la distribución de estado - Esta
es normalmente distribuida si la condición de las ecuaciones 2.3 y 2.4 son alcanzadas. Por
otro lado, la ecuación de covarianza del error estimado a posteriori 2.7 refleja la varianza
de la distribución del estado (el segundo momento no central), en otras palabras:
En [10] podemos encontrar mas detalles del origen probabilı́stico de los filtros de Kal-
man.
Los filtros de Kalman estiman un proceso a través del uso de una forma de control de
retroalimentación. El filtro estima el estado del proceso en un cierto momento para luego
obtener feedback en la forma de mediciones (ruidosas). Como tales, las ecuaciones de
los filtros de Kalman caen en dos grupos: ecuaciones de actualización de tiempo, y ecua-
ciones de actualización de medición. Las ecuaciones de actualización de tiempo son las
responsables de proyectar hacia adelante (en el tiempo) el estado actual y la covarianza
estimada del error para obtener el estimado a priori para el paso siguiente en el tiempo.
Las ecuaciones de actualización de medición son responsables de la retroalimentación;
por ejemplo, para incorporar una nueva medición en el estimado a priori para obtener
un estimado a posteriori mejorado.
9
Actualizaciones de tiempo
(Predicción)
b − = Ab
X xk−1 + Buk (2.10)
k
El las tablas 2.1 y 2.2 mostramos la ecuación que representa las actualizaciones de tiempo
y de medición.
Como podemos observar, las ecuaciones de actualización de tiempo en la tabla 2.1 pro-
yectan el estado y los estimados de covarianza hacia adelante desde el instante k − 1 al
instante k. Además, las matrices A y B son las involucradas en la ecuación 2.1, mientras
que Q proviene de la ecuación 2.3.
Actualizaciones de mediciones
(Corrección)
x b−
bk = x b−
k + Kk (zk − H x k) (2.13)
Pk = (I − Kk H)Pk− (2.14)
Paso siguiente
Actualizaciones
de mediciones
Actualización de tiempo (corrección)
(predicción)
1. Computar la ganancia de Kalman
1. Proyectar el estado Kk = P− T − T
k H (HPk H + R) 1
−
b − = Ab
X xk−1 + Buk
k 2. Actualizar el estimado vı́a zk
2. Proyectar el error de covarianza x b−
bk = x k + Kk (zk − Hbx−k)
P−
k = APk−1 A + Q
T
3. Actualizar el error de covarianza
Pk = (I − Kk H)P− k
Los filtros de Wiener son diseñados para operar sobre todos los datos directamente
para cada estimación, mientras que los filtros de Kalman condicionan recursivamente
la estimación actual en todas las mediciones pasadas. La figura 2.2 ofrece una imagen
completa de la operación del filtro, combinando el diagrama de alto nivel de la figura
2.1 con las ecuaciones de la tablas 2.1 y 2.2.
Capı́tulo 3
Para determinar la posición del satélite, el usuario debe obtener el mensaje de datos.
Además, el usuario debe medir la fase de cada uno de las secuencias de PRN que son
recibidas de los satélites. A su vez, el usuario debe medir la fase de cada una de las
secuencias de PRN recibidas de los satélites. Es trabajo del receptor el realizar estas
tareas, la cual es realizada explotando las propiedades de la portadora y las señales
de PRN. Las propiedades de auto-correlación de la secuencia de PRN son usadas para
determinar la fase de los códigos de PRN recibidos.
L1 = 154 × 10,23M Hz
(3.1)
L2 = 120 × 10,23M Hz
La señal L1 transmitida por el i-esimo satélite llamada SL1i , está compuesta de compo-
nentes en fase y de cuadratura, y se define de la siguiente manera
p p
SL1i = 2Pc Gi (t)Di (t)cos(ω1 t + φ) + 2Pp L1 Pi (t)Di (t)sen(ω1 t + φ) (3.2)
14
Ambos componentes consisten de una secuencia PRN (también llamada código de Oro),
el mensaje de datos de navegación y sus portadoras sinusoidales. El componente en fase
es modulado por Coarse/adquisition (C/A), código de Oro Gi (t) y el mensaje de datos
Di (t) del satélite. El componente de cuadratura de la señal L − 1 es modulada por
precisión P código de Oro Pi (t) y el mismo mensaje de datos que la componente en
fase requiere. El código C/A, P y el mensaje de datos son especı́ficos de cada satélite.
La potencia Pc de la componente en fase es 3 dB más fuerte que la potencia de la
componente cuadrafase, Pp . Para más detalles se puede consultar [12]
La señal L2 , llamada SL2i , es modulada con el mismo mensaje de datos que la señal L1 .
p
SL 2i = 2Pp,L2 Pi (t)Di (t)cos(ω2 t + φ) (3.3)
La secuencia PRN, Gi (t) y Pi (t) usadas por el satélite, son llamadas códigos de Oro. Los
códigos de Oro tienen un gran ancho de banda y son usados para difundir el espectro de
los mensajes de datos sobre un ancho de banda mucho más amplio. En el receptor, el
efecto de difusión de la secuencia PRN es removida usando réplicas generadas localmen-
te de los códigos de Oro transmitidos. Cada satélite transmite su único y propio código
de Oro, y el usuario recibe múltiples señales de satélites en casi la misma frecuencia. El
usuario puede rastrear los códigos individuales recibidos porque los códigos son prácti-
camente ortogonales entre si, esto quiere decir que si el receptor está usando un código
de Oro para rastrear un satélite especı́fico, en un canal del receptor, la señal recibida
del otro satélite son efectivamente anuladas en ese canal. Este aspecto de los códigos de
Oro hacen las propiedades del CMDA del sistema de GPS posible [13].
Los códigos de Oro son formados por una suma módulo 2 de dos secuencias de largo
máximo. Las secuencias de longitud máxima son formadas por generadores de registros
corridos (SRG) y se repiten a si mismo cada 2N −1 bits, donde N es el número de etapas
del SRG.
15
Los códigos de Oro C/A usados por el satélite están todos formados agregándoles las
mismas dos secuencias de longitud máxima, nombradas G1 y G2. Sin embargo los códigos
de Oro transmitidos por cada satélite son diferentes. Los diferentes códigos de Oro están
formados moviendo las secuencias G1 y G2 con respecto a cada uno de los otros en
el tiempo antes de agregarlos. Cada código de Oro tiene un desplazamiento de tiempo
especı́fico asociado a él. Todo lo necesario para producir una secuencia de PNR especı́fico
de un satélite es el retardo de tiempo definido por ese satélite y las secuencias G1 y
G2 [12].
Los códigos de Oro C/A son transmitidos a una velocidad de ficha de 1.023 Mbps. Los
sı́mbolos individuales de los códigos se conocen como fichas, en oposición a los bits del
mensaje de navegación. Para modular la señal e portadora S(t) utilizamos un código
g(t) generado como una secuencia binaria, utilizándolo de la siguiente manera:
Como la fase de la señal es desplazada unos 180◦ , el código de Oro es expresado como
sigue:
En esta ecuación, la secuencia binaria original g(t) ha sido mapeada a una secuencia de
±1 G(t). La forma mostrada en la ecuación 3.5 es la manera usual en que es representada
la modulación del código de Oro. Los códigos de Oro tienen una muy angosta función
de auto-correlación de tiempo. La función de auto corrección es lineal para π < 1f icha
de desalineación. Más allá que π = 1f icha, la función de auto-correlación es aproxima-
damente cero. las propiedades de auto-correlación del código de Oro son usadas para
rastrear la señal del satélite y hacer mediciones de pseudo-rango. Las propiedades de
correlación cruzadas de los códigos de Oro permiten a todos los satélites transmitir en
la misma frecuencia. Los diferentes códigos de Oro son prácticamente ortogonales entre
si. Cuando un receptor junta los datos de radio frecuencia (RF ), múltiples señales de
satélites son guardadas en la misma banda de frecuencia, el receptor toma la informa-
ción de un satélite especı́fico multiplicando el dato por una réplica en fase de el código
de Oro del satélite. Esta multiplicación efectivamente cancela todas las señales de los
16
otros satélites mientras remueve la modulación PRN de la señal recibida del satélite
seleccionado.
El mensaje de datos transmitido por cada satélite contiene información sobre la órbita
del satélite, su estado de mantenimiento, el tiempo del sistema de GPS y el almanaque
de los otros satélites en la constelación. El mensaje de datos contiene la información
necesaria para que los usuarios sincronicen los relojes de sus sistemas y determinen su
posición.
El mensaje de datos es transmitido a 50 bits por segundo (bps), los mensajes se en-
cuentran armados en palabras de treinta bits. Diez palabras constituyen un subframe, y
cinco subframes arman un frame. En cada frame, los primeros tres subframes contienen
información del reloj y efemérides del satélite que transmite. Los subframes cuatro y
cinco proveen alternativamente información de soporte, como los datos de almanaque y
datos de corrección de ionosfera. Los datos de efeméride del satélite es información sobre
la órbita del satélite, y usando estos datos se calcula la posición del satélite. Finalmente,
los datos de almanaque son aproximadamente los datos de efeméride en el subframe 2 y
3, pero son válidos por un perı́odo de tiempo más largo.
Control
Antena automático
de ganancia
IF analógico
Conversor Digital IF
4.1304 MHz
Preamplificador Convertidor analógi-
L1 co digital
(1.57542 GHz)
Oscilador de Sintetizador
referencia de frecuencia
Antes que la señal L1 sea muestreada, la señal es pasada a través de varias etapas de
amplificación, conversión descendente, y filtrado. La figura 3.1 muestra un diagrama
en bloques de un receptor utilizado de GPS. La señal L1 es recibida por una antena
y es entonces pasada a través de un preamplificador. El preamplificador normalmente
consiste de filtrado, protección de desgaste y un amplificador de bajo ruido (LNA). A
continuación la señal se mezcla a una frecuencia intermedia llamada (IF ), y la señal de
GPS L1 es transmitida a una frecuencia de 1.57542 GHz como vimos en las ecuaciones
3.1. El receptor utilizado mezcla la señal L1 a una frecuencia IF de 4.1304 MHz. La salida
del oscilador de referencia es usada por el sintetizador de frecuencias para generar la
oscilación local necesaria (LOs) para el convertidor de reductor de frecuencia. Finalmente
la señal L1 de frecuencia reducida es muestreada por un conversor analógico digital.
18
Antes de que el receptor pueda comenzar a seguir satélites, este debe determinar que
satélites están a la vista. Además, el receptor debe determinar el corrimiento Doppler
causado por el movimiento relativo de los satélites y el código de fase de la secuencia
de PRN de los satélites. El proceso de la determinación de estas variables se denomina
adquisición. El estimado del desplazamiento Doppler debe ser de una precisión de unas
pocas decenas de Hertz para que el lazo de seguimiento pueda traerla y fijarla a la
portadora. La fase de la secuencia de PRN debe ser precisa alrededor de media ficha
debido a la función de autocorrección de los códigos de Oro [14]. El número de satélites
que deben ser buscados puede ser fuertemente reducido si se usa información a priori,
como datos de almanaque o una vaga estimación de la localización del receptor.
El mensaje de dato enviado por cada satélite es recuperado por un lazo de seguimiento
y es usado para calcular la posición del satélite. Además el lazo bloqueado por demora
produce mediciones de pseudo rango de cada satélite. Una vez que la posición de al
menos cuatro satélites son conocidas, y sus mediciones de pseudo rango producidos, el
receptor puede determinar su posición. Cada medición de pseudo rango individual puede
ser expresada como se muestra en la siguiente ecuación:
ρi = kSi − uk + ctu
p (3.6)
ρi = (xi − xu )2 + (yi − yu )2 + (zi − zu )2 + ctu
El modelo de arriba ignora los errores causados por la ionosfera, troposfera, y el corri-
miento del reloj del satélite. El pseudo-rango ρi del i-esimo satélite es una función de las
coordenadas del usuario (xu , yu , zu ) y la tendencia del reloj tu .
Obtener la posición del usuario y la tendencia del reloj requiere resolver las ecuaciones
no lineales de segundo orden mostradas a continuación:
20
p
ρ1 = (x1 − xu )2 + (y1 − yu )2 + (z1 − zu )2 + ctu
p
ρ2 = (x2 − xu )2 + (y2 − yu )2 + (z2 − zu )2 + ctu
.. (3.7)
.
p
ρi = (xi − xu )2 + (yi − yu )2 + (zi − zu )2 + ctu
Estas ecuaciones pueden ser resueltas usando soluciones analı́ticas, técnicas numéricas
iterativas, o el Filtro de Kalman extendido.
Los lazos de seguimiento descriptos en 3.2.4 operan bien en entornos con baja dinámica
de usuarios y altos niveles de C/No. Sin embargo los lazos de seguimiento tienen fallas
inherentes. Estos usan filtros de ancho de banda fijo que no se adapta a niveles C/No
variables y dinámica del usuario. Las mediciones realizadas por el discriminador son
todas igualmente ponderadas. Las mediciones realizadas durante perı́odos de alta C/No
son igualmente ponderadas con aquellas realizada durante perı́odos de bajo C/No. Los
lazos de seguimiento también tienen una limitado control de cambios en la dinámica de
usuarios. El orden de los filtros de lazo dictan las dinámicas que el lazo puede seguir sin
error de estado estacionario. Cuando se diseña el filtro de lazo, el diseñador es enfrentado
a una solución de compromiso. Por un lado, incrementar el ancho de banda del filtro
permite al lazo seguir mejor la dinámica del usuario. Sin embargo un ancho de banda
más amplio hace al lazo más susceptible a ruido e interferencia.
Los Filtros de Kalman tienen la capacidad de superar los inconvenientes de los lazos de
seguimiento tradicionales. El Filtro de Kalman es, en esencia, un filtro con ganancia va-
riable en el tiempo. Las ganancias varı́an con estadı́sticas de ruido medido y estadı́sticas
de ruido procesado cambiantes. Las estadı́sticas de ruido medido cambia con valores de
C/No e interferencia. Las estadı́sticas de ruido procesado con la dinámica de usuario.
21
θc,k+1 1 ∆t 0 0 0 0 θc,k
fc,k+1 0 1 ∆t 0 0 0 fc,k
ˇ ˇ
fc,k+1 0 0 1 0 0 0 fc,k
= (3.8)
θG,k+1 0 0 0 1 ∆t 0 θG,k
f
G,k+1 0 K1 0 0 0 1 fG,k
CG,k+1 0 0 0 0 0 1 CG,k
El primer estado del filtro θc,k+1 corresponde a la fase de la portadora de IF. La derivada
de la fase de la portadora es la frecuencia IF, la cual es el segundo estado, fc,k+1 . La
frecuencia de la portadora es modelada variando linealmente en el tiempo. La derivada
de la frecuencia de la portadora es modelada como una tendencia que varı́a lentamente
en el tercer estado, fˇc,k+1 . El valor del tercer estado puede ser determinado usando las
efemérides del satélite o por ajuste de curvas. El cuarto estado es la fase del código de
Oro local θG,k+1 . La frecuencia en la cual el receptor incrementa a través del código
de Oro local es el quinto estado fG,k+1 . La frecuencia del código es una combinación
de una frecuencia nominal CG,k+1 más un término causado por el desplazamiento del
efecto Doppler en la portadora. El término causado por el desplazamiento Doppler es
modelado como la frecuencia de portadora multiplicado por una constante K1 . Este es
el equivalente de usar la frecuencia Doppler de un lazo Costas para ayudar al lazo de
seguimiento de código.
El Filtro de Kalman usado para seguir la portadora y el código es similar al filtro usado
para seguir la posición del usuario. Las mediciones provistas al filtro no son mediciones
del estado directamente, sino más bien los errores entre ciertos estados y los de la señal
recibida. Las mediciones son por lo tanto residuales. El filtro tiene acceso a tres residua-
les, las cuales son mediciones del error en la fase y frecuencia de la portadora, y el error
en la fase del código de Oro local. En cada periodo de medición, las ganancias residuales
y de Kalman son usadas para computar correcciones a los estados. Los estados después
de la actualización de mediciones son entonces los estados propagados más el vector de
correcciones.
La señal usada para generar las mediciones para el filtro se resumen en la ecuación 3.9
22
r
2ST sin(πferr T )
IEk = R( + τ )Dk cos(πferr T + θe rr) + ηIE,k
N0 πferr T
r
2ST sin(πferr T )
IP = R()Dk cos(πferr T + θe rr) + ηIP,k
N0 πferr T
r
2ST sin(πferr T )
IL = R( − τ )Dk cos(πferr T + θe rr) + ηIL,k
N0 πferr T
r
2ST sin(πferr T ) (3.9)
QE = R( + τ )Dk sin(πferr T + θe rr) + ηQE,k
N0 πferr T
r
2ST sin(πferr T )
QP = R()Dk sin(πferr T + θe rr) + ηQP,k
N0 πferr T
r
2ST sin(πferr T )
QL = R( − τ )Dk sin(πferr T + θe rr) + ηQL,k
N0 πferr T
η = N (0, 1)
En la ecuación 3.9, η representa las muestras de ruido en la salida de cada bloque integra-
do y volcado. Los muestreos de ruido son asumidos Gaussianos, blancos e independientes
del muestreo de ruido en las otras funciones integradas y volcadas. El error en la ali-
neación de la replica del código de Oro recuperado y del código recibido es representado
por . Los errores de frecuencia y de fase entre las portadoras recibidas y replicadas son
denotadas por ferr y θerr respectivamente.
Las mediciones de los tres errores en la señal local son generadas por el uso de funciones
de discriminación no lineal. Un discriminador early-minus-late normalizado es usado para
producir un estimado del error en alineación entre el receptor y la replica del código de
Oro, como es mostrado en la ecuación 3.10
p p
IE 2 + QE 2 − Σ IL2 + QL2
Σ
≈ p p (3.10)
Σ IE 2 + QE 2 + Σ IL2 + QL2
QP
θerr ≈ arctan( ) (3.11)
IP
23
0,4
0,2
−0,2
−0,4
−0,6
−1 −0,5 0 0,5 1
Desalinemiento de código (chips)
Un discriminador de frecuencias genera una medición del error de frecuencia ferr a través
del uso de los datos recolectados durante dos intervalos integrados y volcados, como se
muestra en la ecuación 3.12
Estos intervalos no pueden montar una transición del bit de datos. El primer intervalo
es denotado por T1 , y el segundo intervalo es denotado por t2 . Las señales en fase y
de cuadratura son usadas para formar productos de dot y cross. Estos productos son
entonces usados para estimar el error de frecuencia [15].
50
−50
−100
−150 −100 −50 0 50 100 150
Error de fase (grados)
40
20
−20
−40
La matriz e covarianza de ruido medido contiene las estadı́sticas del ruido medido,
mostrados en la ecuación 3.13
25
2 ]
E[θerr E[θerr · ferr ] E[θerr · ]
E[θerr · ferr ] 2 ]
E[ferr E[ · ferr ] (3.13)
E[θerr · ] E[ · ferr ] E[2 ]
Los términos fuera de la diagonal de la matriz de covarianza de ruido medido son asu-
midos iguales a cero. Los términos en la diagonal de la matriz son computados empı́rica-
mente y pueden ser implementados como una tabla de consulta para niveles variables de
C/No. La covarianza de ruido de proceso es usado para acumular errores no modelados
y ajustado a mano para dar un seguimiento satisfactorio.
Capı́tulo 4
Suavizado de trayectorias
geoposicionadas utilizando Filtros
de Kalman
Los sistemas de posicionamiento global brindan la posibilidad de contar con datos fide-
dignos sobre la geolocalización de los dispositivos. Es común en la actualidad contar con
diversos dispositivos que provean de esta información, ya sea como sistemas de navega-
ción satelital, proveyendo la posición en un mapa digital, e incluso dando indicaciones
paso a paso para llegar de un punto A a un punto B, o también agregando valor a
dispositivos de uso general como los actuales smartphones y cámaras fotográficas.
Los dispositivos que cuentan con sistemas de posicionamiento global proveen coordena-
das de latitud y longitud que indican la geoposición del dispositivo, en conjunto con otra
información relevante como la precisión de la medición, entre otros. De hecho, podemos
pensar a estos datos multidimensionales ruidosos como una señal multidimensional más
ruido.
Los Filtros de Kalman entonces filtran las mediciones ruidosas para estimar la señal
deseada. Las estimaciones son estadı́sticamente óptimas en el sentido que pueden mini-
mizar el error de estimación media cuadrático.
obtener los datos más precisos posibles, eliminando el ruido utilizando estas técnicas. Al
reducir el ruido corrigiendo la señal medida, obtendremos una nueva posición, la cual
será próxima al siguiente punto real, pero eliminando el error medido, lo que generará un
camino más preciso que el obtenido de la lectura del dispositivo. Como valor agregado
entrega datos más uniformemente distribuidos, puliendo el trazo del recorrido.
Decidimos utilizar Tecnologı́a Android como base de nuestro sistema debido a su am-
plia disponibilidad y accesibilidad. Utilizamos su interfaz de programación de aplicación
(API ), ya que cuenta con maneras directas para obtener los datos de los proveedores de
localización[16], brindando información de geolocalización con valores de longitud y su
latitud, junto con información adicional relacionada, como la precisión de la medición
(accuracy). Esta medida es especificada como un solo número medido en metros.
Volviendo a la teorı́a, vemos que los filtros de Kalman abordan el problema general de
tratar de estimar el estado x ∈ <n de un proceso controlado discreto en el tiempo. Dicho
proceso es gobernado por una ecuación diferencial lineal estocástica:
zk = Hxk + vk (4.2)
Los datos utilizados en el cálculo del nuevo trazado utilizando Filtros de Kalman serán
cuatro
Como vimos anteriormente, con el fin de encontrar una ecuación que compute un es-
timado del estado a posteriori x
bk , definimos una serie de ecuaciones que representan
la covarianza del error estimado a priori y la covarianza del error estimado a posterio-
ri, basándonos en el estado estimado del error a priori y a posteriori, definidos de la
siguiente manera:
e− b−
k ≡ xk − x k
(4.5)
e k ≡ xk − x
bk
29
Pk− = E[e− −T
k ek ] (4.6)
P0 = e20
Notemos que los valores expresados en grados que representan a la latitud y longitud, y
aquel expresado en metros para representar el valor de la precisión de la medición, tienen
todos unidades de medida diferentes. Si utilizamos un factor de corrección de escala para
convertir todos estos valores a una misma unidad, se terminarı́an cancelando entre si,
convirtiendo a los resultados en sus unidades de medida originales.
La matriz H será igual a 1. Sabemos que la medición está compuesta por el valor
de la posición y algo de ruido1
1
No se encuentran en general en aplicaciones concretas muchos casos donde H sea diferente a 1
30
Actualizaciones de tiempo
(Predicción)
Tabla 4.1: Ecuaciones de actualización de tiempo del filtro discreto de Kalman sim-
plificadas para la implementación propuesta
Actualizaciones de mediciones
(Corrección)
Pk−
Kk = (4.9)
(Pk− + R)
x bk−1 + Kk (zk − x
bk = x bk−1 ) (4.10)
Pk = (1 − Kk )Pk− (4.11)
La siguiente caracterı́stica que guió el desarrollo de la solución estuvo ligada a los méto-
dos usados para visualizar la información obtenida. Se optó por mostrar los resultados
de las siguientes maneras:
Exportando los datos de la base de datos a un archivo que será luego compartido
Lat latitud
Lng longitud
32
Para el segundo método de visualización de los datos decidimos utilizar los mapas provis-
tos por la API javascript de google maps[19], dibujando en una interfaz web el mapa que
pretendemos visualizar y poder trazar sobre ellos el camino recorrido. Esta interfaz de
programación nos permite obtener de manera sencilla un mapa de una región basándose
en la información de geolocalización provista en uno de sus parámetros.
Otra caracterı́stica que provee la API javascript de google maps, y sobre la cual basamos
nuestra implementación, es la capacidad de realizar dibujos sobre el mapa. Esto nos
33
Figura 4.2: Vista mapa: Imagen representando un camino trazado con los datos ob-
tenidos del GPS del dispositivo
permitió trazar el recorrido dibujando aristas entre cada par de puntos, ya sean aquellos
obtenidos por el proveedor de localizaciones, o calculado utilizando el algoritmo de Filtros
de Kalman simplificado descripto en la sección 4.1. Esta información termina formando
trazados que, al ser visualizados sobre un mapa, muestran la idea de un camino recorrido
como se aprecia en la figura 4.2.
En la figura 4.3 podemos observar como la aplicación de los Filtros de Kalman a los
datos obtenidos del dispositivo disminuyen el error y ajustan las posiciones a lo largo
del trazado. Para ello utilizamos la misma caracterı́stica de realizar dibujos, pero en esta
oportunidad utilizando cı́rculos con centro en la posición obtenida, y con radio igual al
error estimado.
Junto con las vistas ya presentadas de la aplicación, hay una vista adicional en la cual
se pueden realizar las configuraciones básicas de la aplicación, tanto de actualizaciones,
de visualización y las relacionadas con la información almacenada que se muestra en la
figura 4.4. En este punto haremos foco en las opciones de visualización de la aplicación,
la cual nos indica basados en que información se deberá generar la trayectoria sobre el
mapa. Esta cuenta con tres opciones:
Figura 4.3: Comparación de precisión entre el dato obtenido del dispositivo (lı́neas
roja) y el dato calculado utilizando Filtros de Kalman simplificado (lı́neas verde)
Android cuenta con la API de localización, la cual hace que realizar aplicaciones que
sepan de la localización del dispositivo sea simple, sin necesitar hacer foco en la tecnologı́a
de localización subyacente. Cuando desarrollamos una aplicación de geolocalización para
35
Figura 4.4: Vista de configuración de Figura 4.5: Compartir archivo con in-
la aplicación formación de la base de datos
Android, se pueden utilizar tanto los valores obtenidos del proveedor de posiciones del
GPS como de la red para adquirir la posición del dispositivo. Aunque el GPS es más
preciso, sólo funciona al aire libre, consume energı́a de la baterı́a de forma rápida y
no devuelve la ubicación tan rápido como los usuarios desean. La Red de Proveedores
de Ubicación de Android determina la ubicación del usuario utilizando la torre celular
y señales Wi-Fi, que proporciona información sobre la ubicación de una manera que
funciona en el interior y al aire libre, responde más rápido y utiliza menos energı́a de la
baterı́a. Para obtener la ubicación del usuario en la aplicación, se puede utilizar tanto
el GPS como el del proveedor de red, o sólo uno.
Más allá de esto, obtener la ubicación de un dispositivo móvil puede resultar muy com-
plicado, y hay varias razones por las cuales una lectura de posición (independientemente
36
del origen de la información) puede contener errores y ser imprecisas. El origen de alguno
de dichos errores en la posición del dispositivo incluyen:
Movimiento del usuario Debido a que la ubicación del usuario cambia, se deben
actualizar la ubicación del usuario causado por este movimiento cada cierto tiempo.
Este problema puede hacer difı́cil la tarea de obtener una lectura de ubicación del dispo-
sitivo confiable. Es por esto que la utilización de suavizado de la trayectoria genera datos
con mejor precisión ya que los Filtros de Kalman reducen el error estimado, obteniendo
posiciones más precisas, y eliminando el error de medición.
A fin de obtener la medición de los datos provistos por los proveedores de localiza-
ción, lo primero que debemos tener en cuenta en la aplicación es contar con los per-
misos apropiados para que esta pueda recibir actualizaciones de datos provistos NET-
WORK PROVIDER o por GPS PROVIDER, que son los proveedores de datos de GPS
y de Red de la API Android. En caso de no tener estos permisos, la aplicación fallará en
tiempo de ejecución cuando requiera una actualización de la posición.
Inicio de la aplicación
Al momento de iniciar la aplicación, esta inicializa una serie de tareas que nos permitirán
en un futuro inmediato empezar a escuchar actualizaciones de posiciones. Entre las tareas
de inicialización que se realizan, debemos comenzar con las preferencias compartidas[20],
37
Los cursores de la base de datos[18] actúan como puentes entre una vista de la aplicación
y los datos subyacentes de esa vista. En nuestra aplicación utilizamos cursores simples de
base de datos, los cuales mapean columnas de un cursor a una vista de texto o una vista
de imagen definida en un archivo XML. Se puede especificar que columnas se requieren,
en que vistas se quiere mostrar que columna, y el archivo XML que define el aspecto
de esa vista. De esta manera, cuando un nuevo dato es ingresado a la base de datos, el
cursor es actualizado y se muestra la nueva información en el cursor que representa la
tabla de registros mostrada en la vista principal.
Un WebView es una vista que exhibe una página web dentro de una aplicación nativa de
Android. La API provee esta caracterı́stica que permite mostrar contenido proveniente
de una página web dentro de una actividad. Usa el WebKit del motor de render de
Android para exponer páginas web, incluye métodos para navegación histórica, zoom,
búsquedas de texto entre otras caracterı́sticas. Para poder utilizar esta caracterı́stica es
necesario contar con privilegios para acceder a Internet.
El modo escogido para generar el mapa con la trayectoria recorrida está basada en una
página web que se distribuye junto con la aplicación, la cual realiza el siguiente proceso
al cargar la página, recibe una notificación que ejecuta la acción definida cuando
se termina de cargar la página (método onPageFinished ),
con los datos obtenidos y apropiadamente estructurados (datos separados por co-
ma entre columnas y punto y coma entre filas), ejecutamos la función Javascript
visualiseDataWithParams utilizando los datos anteriores como parámetro,
para dibujar las trayectorias, la aplicación Javascript itera sobre los puntos, y traza
una recta entre pares de puntos que los unen, haciendo uso de la propiedades de
la API de google maps google.maps.LatLng,
Esto nos dará como resultado una página web conteniendo un mapa que muestra la
trayectoria utilizada como se observa en la figura 4.6
Desde el comienzo del trabajo nos planteamos como objetivo el obtener una trayectoria
generada por punto obtenidos del GPS incluido en dispositivos Android, y a partir de
estos generar un nuevo camino que aproxime mejor la realidad, reduciendo el error,
generando un camino más uniforme, y en consecuencia suavizando el trayecto para una
39
Lo primero que notaremos son las diferencias entre el modelo original, y la versión
simplificada como se describió en la sección 4.1.1, como se observa en la figura 4.7. De la
comparación de dichos algoritmos podemos notar la simplificación de la implementación,
que se basa fundamentalmente en la eliminación de los cálculos matriciales, ya que estas
fueron reemplazándose por escalares, simplificando la aritmética necesaria en cada paso.
Con el algoritmo simplificado a nuestra disposición, solo resta tomar los datos ya obteni-
dos y almacenados en la aplicación y generar nuevos valores, obteniendo ası́ una mayor
precisión y mejorando el error entre cada paso. La forma escogida para implementar
dicha tarea es realizando la ejecución de los Filtros de Kalman simplificados en el mo-
mento en que se detiene la obtención de datos. Al oprimir el botón señalizado con la
palabra Stop en la vista principal, este detiene la obtención de datos y se comienza a
procesar la ejecución. En cada paso encontramos un nuevo valor que es almacenado en
la base de datos utilizando el mismo formato que para los valores de GPS o Network,
como se describe a continuación:
Name kalman
Paso siguiente
Actualizaciones
de mediciones
Actualización de tiempo (corrección)
(predicción)
1. Computar la ganancia de Kalman
1. Proyectar el estado Kk = P− T − T
k H (HPk H + R) 1
−
b − = Ab
X xk−1 + Buk
k 2. Actualizar el estimado vı́a zk
2. Proyectar el error de covarianza x b−
bk = x k + Kk (zk − Hbx−k)
P−
k = APk−1 A + Q
T
3. Actualizar el error de covarianza
Pk = (I − Kk H)P− k
Paso siguiente
Actualizaciones
de mediciones
Actualización de tiempo (corrección)
(predicción)
1. Computar la ganancia de Kalman
P−
1. Proyectar el estado Kk = (P−
k
k +R)
b− = x
X bk−1
k
2. Actualizar el estimado vı́a zk
2. Proyectar el error de covarianza x bk−1 + Kk (zk − x
bk = x bk−1 )
P−
k = Pk−1 + Q
3. Actualizar el error de covarianza
Pk = (1 − Kk )P− k
Con todos estos valores disponibles, podemos comenzar a utilizar el algoritmo de Fil-
tros de Kalman simplificado. Utilizaremos como valores iniciales aquellos obtenidos del
proveedor de GPS en el instante 0 que se encuentran en la primer fila de la tabla 4.3,
y que inicializan a la posición inicial x0 = (−31,4528366210717, −64,1756712557967) y
y el valor del error medido P0 = 32. El valor de el error medido es distinto de cero, y
es correcto que sea ası́, porque si tomásemos un valor igual a 0, esto querrı́a decir que
nuestra medición no tiene error de ambiente, y esa suposición nos llevarı́a a la conclusión
b−
que x k deberı́a ser 0.
2
No se encuentran en general en aplicaciones concretas muchos casos donde H sea diferente a 1
42
Figura 4.8: Comparación de precisión entre el dato obtenido del dispositivo (lı́neas
roja) y el dato calculado utilizando Filtros de Kalman simplificado (lı́neas verde)
A partir de este punto, lo que resta hacer es calcular cada uno de los valores estimados
utilizando el algoritmo de Filtros de Kalman, para ası́ tener nuevos valores estimados, con
una mejor precisión, y más uniformes. Podemos observar a partir de estos cálculos, los
primeros 16 valores obtenidos y los calculados a partir de ellos, utilizando las ecuaciones
expuestas en las tablas 4.1 y 4.2, que se muestran en detalle en la tabla 4.4.
Se puede observar con esta pequeña muestra de datos, que la estimación del error se
reduce rápidamente a valores mucho menores que los valores del error del dispositivo,
haciendo que la diferencia de cálculo de la siguiente posición a estimar se encuentre en
un área más próxima al elemento anterior, haciendo ası́ más uniforme el trazado del
camino, y por lo tanto suavizando la trayectoria. Esta situación es fácilmente observable
en la figura 4.8.
k ∆ zk Precisión Pk− x
bk Pk
tiempo
1 0 (-31.4528366210717, -64.1756712557967) 32 32 (-31.4528366210717, -64.1756712557967) 32
2 205 (-31.4528366210717, -64.1756712557967) 32 32.028815 (-31.4528366210717, -64.1756712557967) 22.627417
3 1091 (-31.4528573478009, -64.1756597777355) 16 22.843357 (-31.4528505186002, -64.1756635596146) 13.101572
4 318 (-31.4528573478009, -64.1756597777355) 16 13.210344 (-31.4528532597135, -64.1756620416391) 10.136745
5 466 (-31.4528573478009, -64.1756597777355) 32 10.341547 (-31.4528536619358, -64.1756618188962) 10.037439
6 346 (-31.4528573478009, -64.1756597777355) 32 10.191377 (-31.4528539920994, -64.175661636058) 9.577339
7 602 (-31.4528573478009, -64.1756597777355) 16 9.856136 (-31.4528549395586, -64.1756611113734) 8.501755
8 519 (-31.4528573478009, -64.1756597777355) 16 8.772162 (-31.4528554697994, -64.1756608177364) 7.507692
9 463 (-31.4528573478009, -64.1756597777355) 6 7.780259 (-31.4528566808275, -64.1756601470925) 4.818151
10 377 (-31.4528573478009, -64.1756597777355) 6 5.158253 (-31.4528569423088, -64.1756600022892) 3.7567935
11 565 (-31.4528088978413, -64.1756027176411) 6 4.381608 (-31.4528381568245, -64.1756376038755) 3.7518094
12 574 (-31.4528088978413, -64.1756027176411) 6 4.386578 (-31.4528299323065, -64.1756277975722) 3.1810968
13 609 (-31.452791138506, -64.1755947701889) 6 3.949731 (-31.4528164675464, -64.1756163342511) 3.534837
14 291 (-31.452791138506, -64.1755947701889) 6 3.887682 (-31.4528099413534, -64.1756107781293) 3.0455928
15 596 (-31.452791138506, -64.1755947701889) 6 3.826177 (-31.4528036142162, -64.1756053914752) 3.4805117
16 577 (-31.452791138506, -64.1755947701889) 6 4.160163 (-31.4528004731261, -64.1756027172854) 3.0106397
Tabla 4.4: Cálculo de los valores calculados usando Filtros de Kalman simplificado
43
Capı́tulo 5
Análisis de la información
Para poder tener una idea más precisa de la información con la que contamos, tome-
mos como punto de partida datos relevantes al análisis del comportamiento del sistema
utilizando los valores obtenidos del GPS y de aquellos calculados utilizando Filtros de
Kalman simplificados:
Cada dato obtenido está formado por latitud, longitud, precisión, e instantes en el
que el dato fue tomado
El promedio del error medido es de 8.8 mts, los cuales fluctúan en un rango entre
4 y 32 mts.
El promedio del error calculado es de 3.9 mts., , los cuales fluctúan en un rango
entre 2.3 y 22.6 mts.
44
Figura 5.1: Comparación de los valores de precisión entre los datos obtenido del dispositivo y los calculados a lo largo del tiempo
45
46
Con los valores medidos y calculados ya agregados a la base de datos, estamos en con-
diciones de analizar los resultados obtenidos a través de las representaciones visuales
trazadas en mapas.
Los valores obtenidos del proveedor de localización del GPS muestra información acerca
de la trayectoria, con un grado importante de incertidumbre. Este error de medición
es independiente de mediciones anteriores, por lo que los nuevos valores obtenidos no
47
Figura 5.3: Trazado en mapa usando Figura 5.4: Trazado en mapa usando
datos obtenidos del GPS mostrando la datos generados usando Kalman mos-
precisión trando la precisión
Siguiendo con este análisis basado en la información visualizada utilizando los datos
obtenidos y generados sobre los mapas, podemos continuar detallando el análisis de los
valores de precisión, agregando en este caso imágenes que muestran la trayectoria para
cada proveedor (GPS y Kalman), pero con el extra de cı́rculos con centro en la posición,
que muestran la precisión de manera visualmente clara.
Podemos apreciar que la figura 5.3 deja a la luz que los diversos valores de precisión
obtenidos en cada paso cambian con una frecuencia alta, y sus valores ocupan una
importante sección del mapa, en contraposición con la figura 5.4 que muestra valores
más homogéneos y parejos, y de un tamaño mucho menor al valor medido.
48
Pero basados en esta información no podemos precisar cuan cerca o lejos la trayectoria
medida está de las posiciones obtenidas aplicando el algoritmo de Filtros de Kalman sim-
plificado. Para poder adentrarnos en este análisis comparemos primero ambos trazados
sobre el mapa que muestra la figura 5.5. Observamos que ambas trayectorias coinciden
en gran escala en sus trazados, lo cual indica que el cálculo utilizando el algoritmo de
Filtros de Kalman simplificado no se aleja de los valores reales, lo cual es una de las
condiciones requeridas, ya que nuestra propuesta es suavizar las trayectorias haciéndo-
las más precisas y, a pesar que el error en los valores medidos es de consideración, nos
basamos en estos datos para calcular los datos calculados.
A fin de agregar más claridad a la información provista por la figura 5.5, podemos
observar una sección particular de dicho mapa visualizado en la figura 5.6, en la cual
apreciamos como los datos provistos por el GPS muestran aristas entrecortadas, mientras
que aquellas generadas realizan una trayectoria uniforme, suavizándola y proveyendo un
trazo equivalente al medido, pero más uniforme.
Capı́tulo 6
Desde la aparición de los Filtros de Kalman en los años 60, el uso de la técnica ha crecido
considerablemente, y desde la masificación de los sistemas de posicionamiento global de
uso civil, mucho se a escrito e investigado al respecto. Nuestro trabajo hizo foco en la
suavización de las trayectorias obtenidas del proveedor de localización de los dispositivos
Android, haciendo uso de una versión simplificada del algoritmo, para poder visualizar
dicha trayectoria en mapas provistos por Google Maps.
49
50
En base a esta técnica somos capaces de tomar los datos de GPS obtenidos del provee-
dor de localización, y aplicar el algoritmo para ası́ obtener un camino uniformemente
suavizada. Vimos que la trayectoria medida y la calculada coinciden en la visualización
de sus trayectorias sobre el mapa, y este comportamiento es el esperado, ya que usando
Filtros de Kalman para reducir el error y calcular una posición más ajustada a la reali-
dad nos brinda nuevos valores estimados más precisos que los medidos, pero basados en
las mediciones. En conjunto con ello observamos que el error estimado por el algoritmo
es considerablemente menor que el error medido, haciendo que las posiciones calculadas
generen una trayectoria uniforme y más suave que aquella realizada con los valores me-
didos. Por lo tanto los datos obtenidos utilizando Filtros de Kalman representan una
trayectoria más cercana a la realmente recorrida, con un error más pequeño.
La funcionalidad del sistema puede ser dividida en dos perı́odos, el tiempo de recolección
de datos y el tiempo de visualización. La visualización de los datos en la pantalla principal
y en el mapa no tienen un alto impacto en el desempeño de la aplicación, ya que, aunque
son dinámicamente generadas, ya cuentan con la información almacenada, y solo realizan
tareas de presentación. En cambio, la recolección de datos si afecta el desempeño del
equipo, ya que esta se realiza utilizando las radios (GPS, WiFi, y red de telefonı́a) para
obtener la posición del dispositivo, y consumo de memoria y procesador para realizar
los cálculos que realiza el algoritmo. El uso de memoria y CPU a la hora de obtener los
datos son bajos, pues se está consumiendo recursos provistos por el sistema propiamente
dicho, incluso sin necesidad de tener la pantalla encendida. El punto potencialmente más
problemático es durante el cálculo de los datos estimados usando los Filtros de Kalman,
más al eliminar los cálculos matriciales gracias a la simplificación del modelo, descripta
en el la sección 4.1.1, este cálculo se basa en una serie de cálculos aritméticos simples,
lo que refuerza la idea de un desempeño óptimo.
mucha energı́a para obtener y procesar las señales de la grilla de satélites, la aplicación
causará un drenaje importante de la baterı́a del dispositivo.
https://github.com/jbianco/LocationMapper/tree/yan
Para ampliar este trabajo podemos realizar algunas mejoras a la aplicación, como agregar
el uso de sensores disponibles en los dispositivos que provean información adicional a fin
de saber si el dispositivo está en movimiento, o si cambió el sentido en el que se desplaza
el dispositivo, entre otras cosas, y ası́ agregar precisión al cálculo de la trayectoria, y
reducir aún más el error estimado. La complicación adicional resulta de la necesidad de
ampliar el modelo generado para este problema, haciendo necesario el uso de las matrices
que eliminamos durante la simplificación. Esto también trae aparejado un error adicional
adquirido de los datos los sensores.
[1] Greg Welch and Gary Bishop. An introduction to the Kalman filter. July 2006.
URL http://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf.
[2] Greg Welch and Gary Bishop. An introduction to the Kalman fil-
ter, 2001. URL http://www.cs.unc.edu/~tracker/media/pdf/SIGGRAPH2001_
CoursePack_08.pdf.
[4] Sam Roweis and Zoubin Ghahramani. A unifying review of linear gaussian models.
Neural Computation, 11(2), February 1999.
[5] James Douglas Hamilton. Time Series Analysis. Princeton University Press, 1994.
[6] Peter Matisko and Vladimir Havlena. Optimality tests and adaptive Kalman filter.
IFAC, 2012. URL http://www.ifac-papersonline.net/Detailed/54941.html.
[7] Rudolph E. Kalman. A new approach to linear filtering and prediction problems.
Transaction of the ASME—Journal of Basic Engineering, 1960. URL http://www.
cs.unc.edu/~welch/kalman/media/pdf/Kalman1960.pdf.
[10] Robert Grover Brown and Patrick Y. C. Hwang. Introduction to Random Signals
and Applied Kalman Filtering: with MATLAB Exercises and Solutions. Wiley &
Sons, Inc., Hoboken, New Jersey, 1996.
52
Bibliography 53
[12] James J. Spilker. Global Positioning System: Theory and Applications, volume 1.
Parkinson, B. W., editor, 1996.
[13] P. Misra and P. Enge. Global Positioning System: Signals, Measurements, and
Performance. Ganga-Jamuna Press, 2001.
[15] Phillip Ward. Understanding GPS: Principles and Applications. Artech House
Publishers, 1996.
[19] Google. Google maps javascript API, November 2013. URL https://developers.
google.com/maps/documentation/javascript/reference.