Download sistema de localización para redes inalámbricas de

Document related concepts
no text concepts found
Transcript
UNIVERSITAT JAUME I DE CASTELLÓN
Escuela Superior de Tecnología
y Ciencias Experimentales
II31 - Sistemas Informáticos
Memoria Técnica del Proyecto
SISTEMA DE LOCALIZACIÓN
PARA REDES INALÁMBRICAS
DE SENSORES
MEDIANTE ZIGBEE
Director: Raúl Marín Prades
Alumno: Sandra Pallarés Gual
Fecha:
30 – 03 - 2009
2
Resumen
El proyecto ha consistido en el diseño e implementación de un sistema de localización
espacial para redes inalámbricas de sensores con el protocolo IEEE 802.15.4, conocido como
ZigBee. Este estándar se caracteriza por ser un sistema de bajo coste, con envío de datos de baja
capacidad (kbps), bajo consumo de energía, corto alcance, seguro y fiable.
Las redes inalámbricas de sensores se encuentran catalogadas como redes ad-hoc, se
distinguen por estar compuestas de un conjunto autónomo y espontáneo de routers móviles,
conectados por enlaces inalámbricos que no precisan de una infraestructura fija. Se proyectan para
operar en ambientes hostiles e irregulares, siendo capaces de modificar su topología para adoptar
nuevas formas y mantener la red igual de funcional. Sus aplicaciones en la actualidad resultan ser
muy extensas, tales como redes de área personal, entornos militares, entornos ciudadanos,
operaciones de emergencia, recolección de información medioambiental, como los más
destacados.
En la implementación del sistema se ha buscado obtener un sistema altamente preciso
dentro de las posibilidades, se dispone de una fuerte limitación al emplear la fuerza de la señal en
los cálculos. La fuerza de la señal, también conocida como RSS (Received Signal Strength), no es
más que la atenuación de la señal recibida, y en base a ella, se puede estimar la distancia que
separa un nodo de la red de otro. El problema que se genera surge de la relación
distancia/potencia de la señal, la presencia de reflexiones, difracciones y multitrayecto, alteran los
valores que puede tomar la RSS en una misma situación, presentando un carácter dinámico y
difícil de predecir.
Como requisito de esta clase de redes, una parte de los nodos que integran la red
inalámbrica deben jugar el rol de puntos de referencia para el resto, esto quiere decir, que se debe
conocer la ubicación de los nodos en el espacio y, por consiguiente, que estos no puedan variar su
posición perdiendo así la capacidad de movilidad.
El sistema ha sido desarrollado sobre la plataforma proporcionada por Crosbow, la cual
esta constituida por 4 nodos inalámbricos programados en nesC y un programa servidor para la
recepción de los paquetes provenientes desde la red. La aplicación se compone de los módulos
programados para los nodos, así como una de una interfaz en C# para la edición de los parámetros
de configuración y la visualización de los puntos calculados por el sistema de localización
programado.
La planificación recogida en el documento detalla la lista de actividades llevadas a cabo así
como las estimaciones realizadas para cada una de ellas. También se provee de un listado de los
recursos empleados en el proyecto y un seguimiento de la planificación.
Palabras Clave
Ad Hoc, RRS, ZigBee, nesC, trilateración
3
4
Índice General
1.- INTRODUCCIÓN ..................................................................................................... 9
1.1.- Motivación............................................................................................................. 9
1.2.- Objetivos del proyecto .......................................................................................... 10
1.3.- Conceptos esenciales............................................................................................. 10
1.3.1.- Introducción a las redes Ad-Hoc............................................................................. 10
1.3.2.- ZigBee............................................................................................................. 11
1.4.- Estructura del documento ..................................................................................... 12
2.-PLANIFICACIÓN ..................................................................................................... 15
2.1.- Planificación temporal............................................................................................ 15
2.2.- Estimación de los recursos...................................................................................... 18
3.- PLATAFORMA DE DESARROLLO ........................................................................... 19
3.1. Hardware de la plataforma....................................................................................... 19
3.1.1.- Estación base .................................................................................................... 19
3.1.2.- Nodo inalámbrico .............................................................................................. 20
3.1.3.- Sensor ............................................................................................................. 20
3.2. Software de la plataforma ........................................................................................ 21
3.2.1.- XMESH........................................................................................................... 21
3.2.2.- XSERVE .......................................................................................................... 22
3.2.3.- Herramientas de desarrollo................................................................................... 22
3.3. TinyOS y nesC ....................................................................................................... 22
4.- ALGORITMOS DE LOCALIZACIÓN ........................................................................ 25
4.1. Introducción........................................................................................................... 25
4.2. ToA (Tiempo de llegada)......................................................................................... 26
4.3. AoA (Ángulo de llegada).......................................................................................... 27
4.4. RSS (Fuerza de la señal recibida) .............................................................................. 27
4.5. APS (Ad-hoc positioning system).............................................................................. 28
4.6. Métodos de estimación para la técnica RSS ................................................................ 30
4.6.1.- Triangulación y trilateración................................................................................ 30
4.6.2.- Reconocimiento de patrones .................................................................................. 32
4.7. Refinamiento de las localizaciones ............................................................................ 33
4.7.1.- Filtro de partículas............................................................................................. 33
4.7.2.- Filtro de Kalman ............................................................................................... 33
4.7.3.- Modelos Ocultos de Markov (HMM) ....................................................................... 33
5.-DISEÑO................................................................................................................... 35
5.1. Esquema del sistema de comunicaciones.................................................................... 35
5.2. Diagrama de clases de la aplicación ........................................................................... 37
5
4-IMPLEMENTACIÓN.................................................................................................. 41
6.1. Algoritmo de localización adoptado .......................................................................... 41
6.2. Chip de radio.......................................................................................................... 45
6.3. Sistema de comunicaciones ...................................................................................... 48
6.3.1.- Estructura de los paquetes .................................................................................... 49
6.3.2.- Nodo móvil (coordenadas desconocidas) ................................................................... 51
6.3.3.- Estación Base .................................................................................................... 53
6.3.4.- Nodo de referencia (coordenadas fijas)..................................................................... 54
6.4. Aplicación cliente para la monitorización .................................................................. 54
7.- RESULTADOS......................................................................................................... 59
7.1. Experimentos con el chip de radio y la fuerza de la señal............................................. 59
7.2. Experimentos con el sistema de localización .............................................................. 64
8.-SEGUIMIENTO Y CONTROL DEL PROYECTO......................................................... 69
8.1. Control de la planificación ....................................................................................... 69
8.2. Seguimiento de la planificación................................................................................. 70
7.-CONCLUSIONES ..................................................................................................... 73
7.1. Grado de cumplimiento de los objetivos iniciales ...................................................... 73
7.2. Posibles extensiones del proyecto............................................................................. 75
A.- PROGRAMACIÓN EN nesC..................................................................................... 77
A.1. Características de nesC ........................................................................................... 77
A.2. Estructura de una aplicación .................................................................................... 79
A.2.1.- Makefile .......................................................................................................... 79
A.2.2.- Makefile.component............................................................................................ 79
A.2.3.- Configuración de la aplicación.............................................................................. 80
A.2.4.- Módulo de implementación................................................................................... 81
A.3. Componentes empleados en el proyecto................................................................... 83
A.3.1.- Componente GenericComm ................................................................................... 83
A.3.2.- Componente HPLCC2420C.................................................................................. 85
B.- PUESTA EN MARCHA DEL SISTEMA....................................................................... 87
6
Índice de Ilustraciones
Ilustración 1: Diagrama de Gantt con la planificación del proyecto desde el 13 de octubre hasta el 21 de noviembre . 16
Ilustración 2: Diagrama de Gantt con la planificación del proyecto desde el 24 de noviembre hasta 4 de enero........ 16
Ilustración 3: Diagrama de Gantt con la planificación del proyecto desde el 5 de enero hasta 15 de febrero............. 17
Ilustración 4: Diagrama de Gantt con la planificación del proyecto desde el 16 de febrero hasta el 3 de marzo ........ 17
Ilustración 5: Asignación de tareas para cada uno de los recursos. ................................................................. 18
Ilustración 6: Estación Base MIB520 ..................................................................................................... 20
Ilustración 7: Mote MICAz a 2.4 GHz ................................................................................................... 20
Ilustración 8: Sensor MDA100 ............................................................................................................. 21
Ilustración 9: DToA cálculo de distancias................................................................................................ 26
Ilustración 10: Medición de los ángulos de llegada .................................................................................... 27
Ilustración 11: Ad-hoc positioning system............................................................................................... 29
Ilustración 12: Comparativa entre las diversas opciones del APS.................................................................... 29
Ilustración 13: Sistema de triangulación/trilateración............................................................................... 30
Ilustración 14: Reducción del problema de la triangulación a una trilateración................................................ 31
Ilustración 15: Esquema de comunicaciones entre nodos.............................................................................. 36
Ilustración 16: Esquema de comunicaciones entre la red de motes y el XServe ................................................... 37
Ilustración 17: Diagrama de clases de la aplicación................................................................................... 38
Ilustración 18: Esquema de las partes de un Mote Micaz............................................................................. 42
Ilustración 19: RSSI calculado teóricamente frente al RSSI real.................................................................... 43
Ilustración 20: Refinamiento de la localización ........................................................................................ 45
Ilustración 21: Campos del registro de configuración del control de la ganancia ............................................... 46
Ilustración 22: Diferentes valores para la relación señal ruido...................................................................... 48
Ilustración 23: Estructura de los paquetes................................................................................................ 50
Ilustración 24: Interfaz gráfica de la aplicación ....................................................................................... 55
Ilustración 25: Formulario de carga de las coordenadas de los nodos de referencia ............................................. 56
Ilustración 26: Interfaz para la configuración del sistema ........................................................................... 56
Ilustración 27: Gráfico con los resultados de diversos canales con el máximo poder de emisión, para el control
automático de la ganancia................................................................................................................... 60
Ilustración 28: Gráfico con los resultados de diferentes potencias de emisión con un mismo canal, para el control
automático de la ganancia................................................................................................................... 60
Ilustración 29: Gráfico con los resultados de la fuerza de la señal para grandes distancias, sin y con obstáculos, para el
control automático de la ganancia......................................................................................................... 61
Ilustración 30: Proceso de recolección de datos para distancias grandes ........................................................... 61
Ilustración 31: fuerza de la señal sin control automático, con ganancia máxima............................................... 62
Ilustración 32: Fuerza de la señal sin control automático y con ganancia mínima. ............................................ 62
Ilustración 33: Camino seguido por el robot para la realización de los experimentos .......................................... 63
Ilustración 34: Posición del robot en un escenario real (1) ........................................................................... 64
Ilustración 35: Posición estimada del robot en un escenario real (1) ............................................................... 65
Ilustración 36: Posición del robot en un escenario real (2) ........................................................................... 65
Ilustración 37: Posición estimada del robot en un escenario real (2) ............................................................... 66
Ilustración 38: Posición del robot en un escenario real (3) ........................................................................... 66
Ilustración 39: Posición estimada del robot en un escenario real (3) ............................................................... 67
Ilustración 40: Estimación del error cometido por el sistema de localización..................................................... 67
Ilustración 41: Diagrama de GANTT real del proyecto desde el 13 de octubre hasta el 30 de noviembre................. 70
Ilustración 42: Diagrama de GANTT real del proyecto desde el 1 de diciembre hasta el 18 de enero...................... 70
Ilustración 43: Diagrama de GANTT real del proyecto desde el 19 de enero hasta el 8 de marzo ......................... 71
7
Ilustración 44: Diagrama de GANTT real del proyecto desde el 9 de marzo hasta el 12 de marzo......................... 71
Ilustración 45: Variaciones de cada una de las tareas respecto a la estimación inicial......................................... 72
8
Capitulo 1. Introducción
1
1.- INTRODUCCIÓN
En este capítulo aparece descrita la motivación del proyecto, los objetivos fijados, una
recopilación de conceptos previos que son indispensables para la posterior comprensión del resto
de apartados y, finalmente, un desglose de las secciones en que se encuentra estructurado el
presente documento.
Como conceptos previos se han considerado relevantes exponer las características
detalladas de las redes ad-hoc y las ventajas e inconvenientes del estándar ZigBee.
1.1.- Motivación
La localización en interiores es una de las áreas más prometedoras en el campo de la
computación móvil. Estos sistemas permiten desarrollar innumerables aplicaciones gracias al
posicionamiento de objetos o personas en tiempo real. Alguno de los principales servicios están
relacionados con el control de accesos, gracias a la identificación de los usuarios, la seguridad en
red, basada en la localización física de los usuarios; servicios de emergencia y estadísticas.
La problemática de la localización en interiores ha sido objeto de un intenso estudio e
investigación durante los años anteriores. Hasta ahora, ninguna de las soluciones propuestas ha
conseguido el éxito que han alcanzado los sistemas de localización y navegación empleados en
exteriores, como el GPS. Las razones de este fracaso han sido técnicas, necesidad de una
evolución tecnológica, y también económicas, debido a la cantidad de infraestructuras fijas que se
precisan (sensores, puntos de control, estaciones base, …).
El enfoque que se le ha dado al proyecto apunta hacia la seguridad, de modo que se pueda
tener la localización de una persona monitorizada en cada momento, pudiendo reaccionar en caso
de que ocurriera alguna emergencia.
9
1.2.- Objetivos del proyecto
1.2.- Objetivos del proyecto
El objetivo principal del proyecto es diseñar e implementar un sistema de localización
espacial que pueda ser integrado en la plataforma proporcionada por Crossbow. Esta plataforma
dispone de un módulo de radio que puede estimar la RSS, y puede emplear placas de sensores con
diferentes prestaciones. Recibe el nombre de “MoteWorks”, en ella se incluye por una parte, el
hardware necesario para la comunicación entre los nodos y por otra, el software donde se
encuentran implementados los algoritmos de rutado, así como el procesamiento y
almacenamiento de la información entre el ordenador y la red. Otras funcionalidades soportadas
son la monitorización de la red y el almacenamiento de la información sobre una base de datos, las
cuales no van a ser utilizadas para los objetivos fijados por el proyecto.
El segundo de los objetivos consiste en la obtención de resultados lo más precisos
posibles, dentro de las limitaciones que son impuestas por la plataforma de trabajo. La precisión
del sistema vendrá marcada por la RSS, factor utilizado durante la estimación de la distancia y
sobre el cual se producen fuertes variaciones, ocasionadas por reflexiones, difracciones y
multitrayecto. Como se va a monitorizar la trayectoria que sigue un objeto móvil, peden ser
aplicados filtros que aporten una mayor calidad a los resultados generados.
Por otra parte, los nodos pueden presentar configuraciones diversas en cuanto a potencia
de envío de la señal o al canal utilizado para transmitir (modificación de la frecuencia de la señal).
La modificación de la configuración va a generar repercusiones en la variación del valor de la RSS
para una misma distancia, según los parámetros seleccionados. Esta circunstancia introduce como
objetivo que el sistema sea configurable, para así poder adaptarse al mayor número de
situaciones. Además, si se desea trabajar sobre un entorno del cual no se dispone ningún tipo de
información no supondrá ningún problema, puesto que el sistema no se encuentra ligado a una
estructura prefijada.
1.3.- Conceptos esenciales
1.3.1.- Introducción a las redes Ad-Hoc
Las redes Ad-Hoc son un conjunto autónomo y espontáneo de routers móviles,
conectados por enlaces inalámbricos que no precisan de una infraestructura fija. Se proyectan para
operar en ambientes hostiles e irregulares, siendo capaces de modificar su topología para adoptar
nuevas formas y mantener la red igual de funcional. Sus aplicaciones en la actualidad resultan ser
muy extensas, tales como redes de área personal, entornos militares, entornos ciudadanos,
operaciones de emergencia, recolección de información medioambiental, como los más
destacados.
Las características de este tipo de redes se detallan a continuación:
10
Capitulo 1. Introducción
Movilidad: Los nodos son móviles de manera que la topología de la red pueda
cambiar continuamente, creándose y destruyéndose los enlaces dinámicamente.
Nodos autónomos y sin infraestructura: No se dispone de una administración
centralizada, cada nodo opera en modo “peer-to-peer” actuando como un router
independiente.
Encaminamiento “multihop” (múltiples saltos): No se requiere un router
dedicado al encaminamiento, cada nodo de la red se comporta como un router y
envía paquetes procedentes de otros nodos.
Ancho de banda limitado: Al disponer de una interfaz inalámbrica las
comunicaciones se ven atenuadas por interferencias de señales electromagnéticas.
Consumo de energía: Los nodos están alimentados por baterías. El control de la
potencia se vuelve un aspecto clave para estas redes, puesto que se desea que los
nodos sean independientes y activos el mayor tiempo posible.
1.3.2.- ZigBee
ZigBee es el nombre de la especificación de un conjunto de protocolos de alto nivel de
comunicación inalámbrica para su utilización con radios digitales de bajo consumo, basada en el
estándar IEEE 802.15.4 de redes inalámbricas de área personal (wireless personal area network,
WPAN). Su objetivo son las aplicaciones para redes Wireless que requieran comunicaciones
seguras y fiables con baja tasa de envío de datos y maximización de la vida útil de sus baterías.
IEEE 802.15.4 es un estándar que define el nivel físico y el control de acceso al medio de
redes inalámbricas de área personal con tasas bajas de transmisión de datos (low-rate wireless
personal area network, LR-WPAN). La actual revisión del estándar se aprobó en 2006. El grupo
de trabajo IEEE 802.15 es el responsable de su desarrollo. También es la base sobre la que se
define la especificación de ZigBee, cuyo propósito es ofrecer una solución completa para este tipo
de redes construyendo los niveles superiores de la pila de protocolos que el estándar no cubre.
El nombre “ZigBee” se deriva de los patrones erráticos comunicativos que hacen muchas
abejas entre las flores durante la recogida de polen. Esto es evocador de las redes invisibles de las
conexiones existentes en un entorno totalmente inalámbrico.
Actualmente, ZigBee es un sistema ideal para redes domóticas específicamente diseñado
para reemplazar la proliferación de sensores/actuadores individuales. ZigBee fue creado para
cubrir la necesidad del mercado de un sistema de bajo coste, un estándar para redes “Wireless” de
pequeños paquetes de información, bajo consumo, seguro y fiable.
Las características detalladas son presentadas a continuación:
ZigBee, también conocido como “Homero Lite”, es una tecnología inalámbrica
con velocidades comprendidas entre 20 kB/s y 250 kB/s.
11
1.3.- Conceptos esenciales
Los rangos de alcance son de 10 a 75 metros.
Puede usar las bandas libres ISM de 2.4 GHz (Mundial), 868 MHz (Europa) y 915
MHz (EEUU).
Una red ZigBee puede estar formada por hasta 255 nodos los cuales tienen la
mayor parte del tiempo el transmisor ZigBee en modo pausado con objeto de
consumir menos que otras tecnologías inalámbricas.
Un sensor equipado con un transmisor ZigBee puede ser alimentado con dos pilas
AA durante al menos 6 meses y hasta 2 años.
Acceso de canal mediante CSMA/CA (acceso múltiple por detección de
portadora con evasión de colisiones).
Escalabilidad de red.
Fragmentación, capacidad para dividir mensajes más largos y permitir la
interacción con otros protocolos y sistemas.
Agilidad de frecuencia, las redes cambian los canales en forma dinámica en caso
que ocurran interferencias.
Recolección centralizada de datos.
1.4.- Estructura del documento
El proyecto se ha estructurado en 9 capítulos y dos anexos. A continuación se va a realizar
una breve descripción de los contenidos tratados en cada uno de ellos.
12
◊
Capítulo 1: Recoge la motivación y los objetivos del proyecto, además de
introducir los conceptos básicos relacionados con las redes inalámbricas de
sensores.
◊
Capítulo 2: Se detallan las actividades y los recursos que se han estimado para el
desarrollo del proyecto.
◊
Capítulo 3: Se describe la plataforma de desarrollo proporcionada por el
fabricante Crossbow, así como el hardware y sus características principales.
◊
Capítulo 4: Se exponen las diversas técnicas existentes para el diseño de sistemas
de localización espacial, así como la refinación de sus resultados.
Capitulo 1. Introducción
◊
Capítulo 5: Recoge los aspectos de diseño del sistema de localización
desarrollado.
◊
Capítulo 6: Se expone la solución adoptada, así como los detalles de
implementación del sistema.
◊
Capítulo 7: Aparecen recopilados los experimentos generados tras el desarrollo
del sistema, describiendo los resultados obtenidos.
◊
Capítulo 8: Se realiza un control y seguimiento de la planificación temporal
estimada en el capítulo 2 tras la finalización el proyecto.
◊
Capítulo 9: Se describen las conclusiones a las que se ha llegado tras la
finalización del sistema y se exponen las líneas futuras de trabajo disponibles.
◊
Anexo A: Recoge ejemplos de la programación en nesC, a modo de un pequeño
tutorial.
◊
Anexo B: Describe como empezar a trabajar con el sistema diseñado.
13
14
Capitulo 2. Planificación
2
2.-PLANIFICACIÓN
Tras la definición del ámbito del proyecto, en esta sección se presenta el desglose de
tareas llevado a cabo durante su desarrollo, así como, los recursos utilizados para desempeñar cada
una de ellas.
2.1.- Planificación temporal
Seguidamente se va a desglosar el desarrollo del proyecto en diversas tareas, para las
cuales se realizó una estimación previa de su duración. Estas tareas se agrupan a su vez en varias
categorías: Análisis, Estudio, Diseño e Implementación.
En el análisis se determina el ámbito del proyecto, se establecen los requisitos y se
determina la tecnología a emplear.
En el estudio, tras haber sido escogida la tecnología a emplear, se debe proceder a la
adquisición de los conocimientos necesarios para poder llevar a cabo un diseño que cumpla con las
especificaciones dictaminadas en el periodo de análisis.
El diseño recogerá los diagramas UML que definen la estructura de la aplicación a
desarrollar, mostrando las partes de que se compone, así como, las funcionalidades que presenta
cada parte.
Finalmente, la implementación consiste en la programación de los módulos que van a
integrar la aplicación, basándose en los diseños realizados tras el estudio.
El inicio del proyecto según la planificación estimada es el 13 de octubre y la fecha de
finalización el 12 de marzo. Los días empleados en la realización del proyecto ascienden a un
total de 81 días.
15
2.1.- Planificación temporal
En las ilustraciones 1, 2 y 3 se puede apreciar la planificación realizada mediante la
herramienta de Microsoft Office llamada Project 2003.
Ilustración 1: Diagrama de Gantt con la planificación del proyecto desde el 13 de octubre hasta el
21 de noviembre
La parte más extensa como se puede observar es la dedicada a la implementación, puesto
que se divide en tres partes: prototipo de comunicaciones, aplicación final y evaluación y pruebas.
El prototipo de comunicaciones sirve para verificar los aspectos estudiados sobre la plataforma y
hacer de esqueleto del sistema. En la aplicación final se reaprovecha la base de comunicaciones y
se mejora para los 4 motes de que consta el sistema final, además, en esta sección es donde se
implementa todo el algoritmo de localización espacial diseñado. Finalmente la evaluación y las
pruebas testean el sistema para verificar el cumplimiento de los requisitos y objetivos.
Ilustración 2: Diagrama de Gantt con la planificación del proyecto desde el 24 de noviembre hasta
4 de enero.
16
Capitulo 2. Planificación
El apartado del estudio, es una sección también amplia debido a que nunca se ha trabajado
anteriormente con este tipo de plataforma, además de que tampoco se ha programado para el
sistema operativo en cuestión y se desconocen sus características. Con esta decisión de conceder
este tiempo al estudio se quiere conseguir reducir el tiempo de diseño y las posibles rectificaciones
que podrían surgir por falta de conocimiento sobre el entorno de desarrollo.
El tiempo del diseño aunque sea reducido resulta suficiente para realizar unos diagramas
eficientes que cubran los requisitos especificados por el sistema a desarrollar. Además, los
diagramas deben de pasar la validación del tutor, con lo cual se obtiene un diseño completo y
validado.
Ilustración 3: Diagrama de Gantt con la planificación del proyecto desde el 5 de enero hasta 15 de
febrero.
La planificación realizada fue una buena estimación para el transcurso del proyecto, no
obstante surgieron algunos imprevistos que produjeron el retraso de ciertas tareas. Las
modificaciones sufridas por el plan original se encuentran recopiladas en el apartado de
Seguimiento y Control de la planificación.
Ilustración 4: Diagrama de Gantt con la planificación del proyecto desde el 16 de febrero hasta el 3
de marzo
17
2.2.- Estimación de recursos
2.2.- Estimación de los recursos
Para el desarrollo del proyecto aparte de realizar una estimación de las tareas, también se
hizo una planificación de los recursos necesarios.
En cuanto a los recursos humanos se disponen del programador (el propio alumno) y el
director del proyecto (el tutor). Los materiales empleados son los proporcionados por la
plataforma “Moteworks”, estos se corresponden de 4 motes (nodos) y una estación base. El
programador por su parte aporta el ordenador donde instalar el entorno de trabajo y desarrollar el
sistema.
Ilustración 5: Asignación de tareas para cada uno de los recursos.
18
Capitulo 3. Plataforma de desarrollo
3.- PLATAFORMA DE DESARROLLO
3
PLATAFORMA
DE
DESARROLLO
Este capítulo describe la tecnología sobre la que se ha basado el sistema de localización
espacial. Son detallados tanto el hardware como el software de que provee Crossbow para trabajar
con redes inalámbricas de sensores.
3.1. Hardware de la plataforma
3.1.1.- Estación base
La estación base es la encargada de actuar de mediadora entre la red inalámbrica de
sensores y el ordenador. Un nodo que se encuentre emplazado sobre la estación base es capaz de
recibir paquetes de la red o enviar paquetes vía el puerto USB hacia el ordenador. El modelo de
placa del que se dispone usa el puerto USB para las comunicaciones con el PC, pero otros
modelos existentes disponen de otros sistemas.
El modelo sobre el que se va a desarrollar el proyecto es el MIB520 (ilustración 6). El
fabricante provee de unos “drivers” para cada modelo de estación base, que generan dos COMMs
de comunicaciones, uno para la programación de los nodos y otro para escuchar los paquetes
provenientes de la red inalámbrica. Normalmente, el COMM con identificador más bajo es el
empleado para la programación y el alto para las comunicaciones.
La plataforma, así como los drivers suministrados, se encuentran disponibles sólo para
entornos Windows, por ese motivo el desarrollo se ha desenvuelto sobre este sistema operativo.
19
3.1.- Hardware de la plataforma
Ilustración 6: Estación Base MIB520
3.1.2.- Nodo inalámbrico
Los nodos inalámbricos poseen una fuente de energía propia, que no es más que un par de
baterías AA emplazadas en el nodo. Como ya se comentó anteriormente, este tipo de red se
caracteriza por reducir los costes energéticos, consiguiendo así prolongar el tiempo de vida medio
de cada uno de los nodos que integran la red.
El modelo disponible se corresponde con un MicaZ a 2.4 GHz. Se componen de un
microprocesador, una memoria flash, un modulo de radio, un pin 51 para las conexiones entre
dispositivos, tres Leds y un identificador generado por el fabricante.
Ilustración 7: Mote MICAz a 2.4 GHz
3.1.3.- Sensor
En la actualidad, Crossbow ha diseñado una amplia gamma de sensores compatibles con su
plataforma, los cuales cubren diferentes aspectos según las necesidades que se tengan. El modelo
del que se dispone es un modelo empleado en las labores de captura de valores medio
ambientales, encontrándose disponibles la medición de la temperatura y la luz ambiental.
20
Capitulo 3. Plataforma de desarrollo
El modelo recibe el nombre de MDA100 y se puede encontrar una imagen en la
ilustración 8. Para los fines fijados en el proyecto no es necesario el empleo de estos sensores,
puesto que no son tomados valores ambientales para realizar los cálculos del sistema de
localización.
Ilustración 8: Sensor MDA100
3.2. Software de la plataforma
La plataforma proporcionada por Crossbow recibe el nombre de Moteworks. Esta
plataforma esta diseñada para la creación de redes inalámbricas de sensores e incluye tres niveles
de software: Mote (Nodo), Servidor, Cliente. El software recopilado en el nivel cliente no va a
ser utilizado puesto que el algoritmo de localización espacial va a ser un software de ese mismo
nivel.
3.2.1.- XMESH
La funcionalidad en el nivel del Mote (Nodo) se encuentra recopilada en la librería
llamada XMesh. Esta librería desarrolla un protocolo para redes de sensores inalámbricos, donde
los nodos pueden comunicarse con el resto y son capaces de enviar mensajes de radio saltando
entre los nodos hacia la estación base, la cual actúa de puente entre la red y el ordenador. Esta
capacidad de salto amplia el rango de radio de las comunicaciones y reduce la potencia de
transmisión de los mensajes, lo cual alarga el tiempo de vida de las baterías que incorporan los
nodos.
XMesh proporciona dos beneficios importantes, mejora la cobertura de la radio y mejora
también la fiabilidad de las transmisiones. Dos nodos no necesitan estar en contacto directo para
poder comunicarse entre ellos. Un mensaje puede ser entregado a uno o más nodos en el camino
que sigue hasta que llega a su destino. Si existe un nodo caído entre dos nodos, ese obstáculo
puede ser salvado encontrando un nodo cercano con el que pueda continuar su camino.
Típicamente, los nodos que trabajan en modo de bajo consumo, pasan la mayor parte de su
tiempo en un estado de reposo, de modo que puedan mantener su autonomía durante años.
21
3.2.- Software de la plataforma
3.2.2.- XSERVE
El nivel del servidor por su parte, actúa de puerta de enlace entre la red inalámbrica y las
aplicaciones en el ordenador que requieran interactuar con la información que es recibida de ella.
Debido a la baja potencia y a los requisitos de memoria que presentan las redes inalámbricas de
sensores, la comunicación resulta ser más eficaz a través de mensajes sin formato y los protocolos
de la red. Este software servidor es llamado XServe, y proporciona servicios de análisis,
transformación y procesamiento de la información recibida desde la red, incluyendo una API XML
para la comunicación con otras aplicaciones clientes.
Otra funcionalidad que incorpora XServe es el almacenamiento de información en una
base de datos, de modo que la información enviada por los sensores pueda ser monitorizada para
realizar análisis con las lecturas obtenidas. Esto es muy utilizado para fines agrónomos puesto que
los sensores registran los valores medioambientales.
La plataforma de trabajo Moteworks está adaptada para funcionar sobre el sistema
operativo Windows, emplea la herramienta denominada Cygwin para proporcionar un
comportamiento similar a los sistemas Unix en cuanto a gestión de redes. Posee una biblioteca
que implementa la API POSIX usando para ello llamadas a la API nativa de Windows Win32.
3.2.3.- Herramientas de desarrollo
Las redes de tipo ad-hoc sufren ciertas limitaciones en cuanto a los recursos que disponen
los nodos, por ese motivo, se trabaja bajo un sistema operativo empotrado llamado TinyOS
programado en nesC.
La plataforma Moteworks provee de Programers Notepad 2, una herramienta que
dispone de un compilador acondicionado para el sistema operativo TinyOS.
3.3. TinyOS y nesC
El sistema operativo que poseen los nodos de la red inalámbrica, recibe el nombre de
TinyOS y permite la ejecución de programas en el hardware de que disponen. Está basado en
componentes para redes inalámbricas de sensores y escrito en el lenguaje de programación nesC,
como un conjunto de tareas y procesos que colaboran entre sí. Su diseño permite la incorporación
de nuevas innovaciones rápidamente y hace que funcione bajo las importantes restricciones de
memoria que se dan en este tipo de redes.
TinyOS proporciona interfaces, módulos y configuraciones específicas, que permiten a los
programadores construir programas como una serie de módulos que hacen tareas específicas. Los
módulos de TinyOS proporcionan interfaces para los tipos estándar de entradas y salidas de
22
Capitulo 3. Plataforma de desarrollo
hardware y sensores. Para una profundización en la programación en nesC se puede recurrir al
apéndice A que presenta el documento.
23
24
Capitulo 4. Algoritmos de localización
4.- ALGORITMOS DE LOCALIZACIÓN
4
ALGORITMOS
DE
LOCALIZACIÓN
Este capítulo recoge los diversos algoritmos de localización espacial que se han estudiado
para el desarrollo del proyecto. Se exponen los diversos factores que son empleados en este tipo
de sistemas y las diversas técnicas que posibilitan el filtrado de los resultados, para tratar de ajustar
con mayor precisión los puntos generados.
En la sección de implementación se describe la solución adoptada para cubrir los objetivos
fijados de antemano.
4.1. Introducción
Para redes del tipo ad-hoc, caracterizadas por constar de un gran número de nodos
desatendidos con ciertas capacidades de medición (incorporadas en el propio nodo o en placas
sensoras acoplables a los nodos), lo habitual, es basarse en estas mediciones a la hora de desarrollar
algoritmos de cálculo espacial de posiciones.
Estas capacidades son diversas y son enumeradas a continuación:
ToA (Tiempo de llegada)
AoA (Ángulo de llegada)
RSS (Fuerza de la señal)
La explotación de más de una de ellas incrementa la precisión obtenida en la estimación
de las posiciones. Según los dispositivos de que se disponga pueden ser combinadas.
25
4.1.- Introducción
El uso de estos recursos provee un algoritmo semejante en prestaciones al GPS o a las
brújulas magnéticas, sin la necesidad de una infraestructura extra, pero a cambio los nodos deben
colaborar entre ellos para poder encontrar sus coordenadas. Ello implica que un cierto número de
nodos en la red tenga que permanecer como puntos de referencia para el resto, con posiciones
previamente fijadas de antemano.
La pregunta que surge es cómo obtiene sus propias coordenadas un nodo. Existen
diversos modos para lograrlo. El primero es incorporar un dispositivo GPS en el propio nodo para
que obtenga su localización, y el otro es por la introducción humana de esta. El inconveniente de
la inserción de nuevas infraestructuras es que se pierde una de las ventajas que disponen las redes
ZigBee y es el factor económico. La suma de nuevos dispositivos encarece la implantación de la
red y hace que sean viables otras salidas en vez de este tipo de redes.
4.2. ToA (Tiempo de llegada)
La técnica ToA (“Time of Arrival” ) se basa en el hecho de que una señal electromagnética
tarda un tiempo en llegar de emisor a receptor. Hay una relación lineal entre tiempo de
propagación y distancia recorrida, y por ello, mediante técnicas de triangulación se puede inferir
la distancia que los separa.
Adicionalmente, está la técnica TDoA (“Time difference of Arrival”), similar pero que
hace uso de dos señales, cada una con velocidades de propagación diferentes. La primera de ellas
es una señal de radio que tiene un tiempo de propagación TR; la segunda, en cambio, es una señal
acústica cuyo tiempo de propagación se expresa como TS. La ilustración 9 muestra este
comportamiento.
Ilustración 9: TDoA cálculo de distancias
Como el tiempo que tarda en llegar una señal de radio de un transmisor a un receptor
situado a pocos metros es muy pequeña, se puede asimilar a un tiempo 0. Por ello, se observa
cuánto tiempo más ha tardado la recepción de la señal acústica, y multiplicándolo por su velocidad
de propagación, se obtiene una medida bastante precisa de la distancia.
26
Capitulo 4. Algoritmos de localización
4.3. AoA (Ángulo de llegada)
Las técnicas AoA (“Angle of Arrival”) son comunes en el procesado de señales con
“arrays”. En lugar del uso de una sola antena, se despliegan varias antenas de forma que se pueda
inferir el ángulo de llegada de la señal. Después de esto, la estimación de la localización se basa en
la triangulación de estos ángulos. Aunque el sistema es bastante preciso, no cualquier dispositivo
posee un “array” de antenas con lo que se precisaría un hardware adicional para poder implantar
un sistema de este tipo.
Un inconveniente que presenta esta técnica, es que resulta efectiva únicamente para el
caso de transmisiones donde no se produzcan multitrayectos. En caso de haberlos, cuando un
dispositivo recibe la señal puede pensar que la señal proviene de otro lugar al medir el ángulo de
una señal reflejada.
Este tipo de sistemas resultan por tanto útiles en espacios despejados donde residan el
menor número de objetos posibles para poder realizar estimaciones bastante aceptables.
Ilustración 10: Medición de los ángulos de llegada
4.4. RSS (Fuerza de la señal recibida)
Esta técnica usa la atenuación de la señal recibida para inferir la localización del nodo con
posición desconocida. En base a esta atenuación se puede estimar la distancia que separa los nodos,
pero la relación distancia/potencia de la señal recibida no es un valor estable y lineal. Se ve
afectada por las reflexiones, difracciones y multitrayectos que se presentan en las transmisiones.
27
4.4.- RSS (Fuerza de la señal recibida)
Esta opción no requiere de infraestructuras adicionales, aunque por las variaciones que se
pueden producir en la fuerza de la señal se recomienda emplear algún otro método que propicie
una mayor precisión al sistema. Esto se puede lograr mediante el empleo de alguna de las técnicas
comentadas o por medio de un filtrado de los resultados a posteriori.
4.5. APS (Ad-hoc positioning system)
El problema en las redes punto a punto (Ad Hoc), es que un nodo puede comunicarse
únicamente con sus vecinos inmediatos, los cuales puede que no sean siempre nodos de
referencia. APS es un hibrido entre dos conceptos principales: vector de distancias de rutado y
posicionamiento GPS.
Lo que lo hace similar al vector de distancias de rutado es el hecho que la información es
enviada a través de los nodos saltando entre ellos, de modo que los puntos de referencia propagan
sus datos al resto de nodos aunque ellos no estén accesibles directamente. Por otra parte, lo que lo
hace similar al posicionamiento del GPS, es que eventualmente cada nodo estima su propia
posición basada por las lecturas conseguidas de los puntos estáticos.
El APS trabaja tanto con distancias, como con orientaciones, de modo que se pueda
conseguir una mayor precisión en los resultados. Para ello, los nodos que no estén en contacto
directo con los puntos de referencia deben de poder inferir sus orientaciones. Cuando hablamos
de orientación nos encontramos ante diferentes métodos, DV-Bearing y DV-Radial. El primero
permite a cada nodo conseguir la orientación del propio eje respecto los otros nodos y el segundo
permite al nodo obtener tanto la orientación respecto los otros nodos como la orientación
respecto el Norte (radial).
El algoritmo asume que el nodo A posee una orientación propia representada por el eje
sobre A en la ilustración 11, de modo que son conocidos los ángulos ĉ y b̂ , vecinos inmediatos.
Además C y B conocen los ángulos respecto sus orientaciones y el vecino inmediato L. Con lo que
el problema es para A encontrar su orientación respecto L.
Como B y C son los vecinos de A, es factible para A obtener los ángulos del triángulo
∆ABC y ∆BCL , permitiendo de este modo calcular el ángulo LAˆ C que sumado al propio ĉ
da como resultado el ángulo respecto de la orientación de A al nodo L.
Para el caso de emplear también el radial aparte de conocer la orientación respecto B y C,
se debe de conocer también el radial de B ( BLˆ N ) y el de C ( CLˆ N ) respecto el nodo L, de modo
que se pueda calcular el radial de A ( ALˆ N ) a través de los dos triángulos que se conocen.
28
Capitulo 4. Algoritmos de localización
Ilustración 11: Ad-hoc positioning system
El problema de emplear tanto el radial como la orientación independiente de cada nodo es
que hay que enviar sobre la red inalámbrica el doble de señales, pero si se dispone de una brújula
en cada uno de los nodos, los dos métodos en efecto se convierten en idénticos porque cuando
todos los ángulos están medidos frente a la misma dirección de referencia (Norte, por ejemplo), la
orientación entre dos nodos pasa a ser la de la Ecuación 4.5.1.
orientación = π − radial
Ecuación 4.5.1
A continuación se va a presentar una ilustración que refleja cómo la utilización de uno o
los dos métodos comentados, influye sobre la congestión de la red y la precisión del algoritmo.
Ilustración 12: Comparativa entre las diversas opciones del APS
29
4.6.- Métodos de estimación para la técnica RSS
4.6. Métodos de estimación para la técnica RSS
4.6.1.- Triangulación y trilateración
La triangulación se basa en la propiedad de que si se conocen los puntos que forman los
vértices de un triángulo y los ángulos interiores de este, es posible determinar cualquier posición
interna al triángulo. La trilateración por su parte, en vez de emplear los ángulos requiere el
conocimiento de las distancias a los vértices, pero sigue unas pautas similares al anterior.
Para hallar el punto desconocido en el método de la triangulación, se debe encontrar el
punto de intersección entre los tres puntos estáticos y el punto a calcular. En la ilustración 13 se
puede observar un ejemplo de la situación comentada.
Ilustración 13: Sistema de triangulación/trilateración
Para el cálculo del punto en el caso de la trilateración, se puede recurrir a la resolución de
un sistema de ecuaciones, el cual utiliza los puntos que forman el triángulo (xi ,yi), y la distancia
que los separa de él (di), donde i representa cada uno de los vértices de triángulo. La expresión
empleada es presentada en la Ecuación 4.6.1, y se obtiene al aplicar las propiedades de la fórmula
de la distancia euclídea.
( x − xi ) 2 + ( y − yi ) 2 = d i2
{i = 1,..., n}
Ecuación 4.6.1
Si pasamos la expresión a un sistema linear, este podrá ser resulto por cualquier método
estándar de resolución de sistema de ecuaciones, como puede ser aplicar Gauss, entre otros. La
nueva expresión se corresponde con la Ecuación 4.6.2.
2 x( xi − x1 ) + 2 y ( yi − y1 ) = d12 − d i2 + xi2 − x12 + yi2 − y11
{i = 2,..., n}
30
Ecuación 4.6.2
Capitulo 4. Algoritmos de localización
La pregunta que queda por responder entonces, es cómo obtener una expresión que
permita calcular el sistema pero con los ángulos del triángulo. El modo es reducir el problema a
una trilateración mediante unas simples transformaciones.
Ilustración 14: Reducción del problema de la triangulación a una trilateración
Si disponemos del ángulo que forma D con el par de puntos de referencia A y B, se puede
inferir que su posición se encuentra en algún lugar en el círculo determinado por el ángulo y la
posición de los dos puntos fijos A y B. En la ilustración 14 se encuentra reflejada esta situación, los
puntos xa , ya , xb , yb y el ángulo ADˆ B son conocidos, lo cual ayuda a transformar el sistema de
()
un problema de triangulación de tamaño n en una trilateración de tamaño n2 , si para cada par de
de puntos de referencia observados por un nodo se crea una ecuación de trilateración usando
x, y, x0 , y0 y el radio del circulo como la distancia.
Otro método de localización que utiliza ángulos es VOR (VHS Omni-directional Range),
el cual está actualmente todavía siendo empleado en navegación de aeronaves. Su principio es muy
simple: un punto de referencia envía dos señales, una que es periódica y omnidireccional,
mientras que la otra es unidireccional y gira sobre el punto de referencia. El equipamiento de la
nave recibe las dos señales e interpreta la diferencia como un radial a la estación.
Las coordenadas de la estación son conocidas, por lo tanto se ubica en cualquier punto
dentro de la línea dada otro lector de señales. Este segundo lector proporciona una segunda línea
que debe ser intersecada con la primera. El resultado son las coordenadas y el radial al punto de
referencia i ( xi , yi , ri ) , con lo que un nodo puede construir la ecuación de la línea en la cual se
encuentra ubicado, detallada en la Ecuación 4.6.3.
ai x + bi y = ci
Ecuación 4.6.3
Además si tenemos en cuenta el radial calculado, y combinamos la ecuación de la línea
con él obtenemos lo siguiente:
if cos(ri ) = 0
ai = 1; bi = 0; ci = xi ;
else
ai = tan(ri );
31
4.6.- Métodos de estimación para la técnica RSS
bi = −1;
ci = − yi + xi tan(ri );
Donde el sistema lineal resultante se puede observar en la Ecuación 4.6.4.
x
[ aT | bT ]  = [cT ]
 y
Esta aproximación es menos cara computacionalmente que la expuesta anteriormente de
la reducción a un problema de trilateración, pero requiere la introducción de una brújula en los
puntos de referencia de modo que se puede calcular el radial.
4.6.2.- Reconocimiento de patrones
Las técnicas de reconocimiento de patrones, o “fingerprinting”, intentan encajar el vector
de potencias recibidas (RSS) procedente de varios puntos estáticos, con una muestra de
calibración sin necesidad de usar algoritmos geométricos. Para su uso, primero hay que obtener
un radio mapa patrón, que se podría almacenar en una base de datos. La RSS se puede calcular de
forma teórica, con el uso de un modelo de predicción de potencias, o bien se puede obtener de
forma práctica en cada punto de interés la potencia recibida.
La ventaja de este método frente la triangulación es que los cálculos son más reducidos, y
a diferencia del anterior, la discretización del entorno hace que no sea posible obtener una
localización que no se haya definido. Por el contrario, la ventaja de la triangulación es que puede
localizar en cualquier punto del espacio por no haberse discretizado sobre ninguna habitación.
Los cálculos que permiten la estimación de la localización en los algoritmos de
reconocimiento de patrones son sencillos y cambian según sea el método a emplear, pero se basan
en, dado un vector de potencias, encontrar la localización que tenga el vector de potencias más
parecido. El mayor reto de estos sistemas, es diferenciar entre dos posiciones con parecidos
vectores de potencia.
32
Capitulo 4. Algoritmos de localización
4.7. Refinamiento de las localizaciones
Un sistema de localización basado en ZigBee no tendrá un buen rendimiento en términos
de error cometido, si sólo se basa en la determinación de la RSS para cada uno de los puntos de
referencia. Esto, como ya se ha comentado anteriormente, está causado por las difracciones,
reflexiones y multitrayectos presentes en la señal, los cuales son impredecibles.
Existen diferentes algoritmos para el refinamiento de la localización, en base a múltiples
estimaciones de la localización en momentos consecutivos. A continuación se van a exponer los
más relevantes.
4.7.1.- Filtro de partículas
El filtro de partículas tiene como principal objetivo realizar el seguimiento de una variable
de interés, la posición del nodo móvil, y su evolución a lo largo del tiempo. Para ello, se utiliza
una función de distribución de probabilidad no gaussiana. Las acciones del nodo móvil modifican
el estado de la variable siguiendo un modelo predefinido. Cada cierto tiempo se obtienen
observaciones que comprueban el estado de la posición del nodo.
El algoritmo es recursivo, y opera en dos fases: predicción y actualización. Después de
cada acción, cada partícula se modifica de acuerdo con el modelo existente (predicción),
incluyendo una aportación de ruido aleatorio para simular el efecto del ruido en la variable de
interés. Entonces, el peso de cada partícula es evaluado basándose en la última información de
observación disponible (actualización). En cada iteración, las partículas con un peso muy bajo se
eliminan y se realiza un nuevo muestreo.
4.7.2.- Filtro de Kalman
Los filtros de Kalman, al igual que los filtros de partículas, son capaces de calcular la
distribución de probabilidad a posteriori en tiempo real. Resuelve la estimación de distribución de
probabilidad a posterior sobre los posibles mapas y posiciones del nodo móvil, en función de las
observaciones y acciones almacenadas. El inconveniente que presentan es el elevado coste
computacional.
4.7.3.- Modelos Ocultos de Markov (HMM)
El algoritmo basado en HMM (Hidden Markov Models) presenta un conjunto de estados,
correspondientes a las posiciones del nodo móvil, y observaciones que se modelan de la misma
manera que en los filtros de Kalman, pero además, se añade una matriz de probabilidad de
transición que indica la probabilidad de pasar de una estado a otro.
33
4.7.- Refinamiento de las localizaciones
Esta matriz se inicializa suponiendo que dicha probabilidad es mayor entre estados
adyacentes, ya que representa el movimiento de un usuario que se desplaza de forma lenta.
Asimismo, en el contexto de la localización, se pueden modelizar con este modelo de modo muy
natural, paredes y puertas, ya que entre dos habitaciones no comunicadas entre sí por estar
separadas por una pared, la probabilidad de transición será 0, mientras que la probabilidad de ir de
una habitación a otra, las cuales estén separadas por una puerta, será no nula.
34
Capitulo 5. Diseño
53
5.-DISEÑO
La sección de diseño recopila los diagramas UML (Unified Modeling Language) generados
como paso previo a la implementación del sistema. Además se muestra un esquema del sistema de
comunicaciones empleado entre los nodos de la red y el ordenador.
5.1. Esquema del sistema de comunicaciones
El sistema de localización espacial implementado consta de una red de 4 motes más una
estación base que hace de puente con el ordenador. La jerarquía de red esta compuesta por una
parte móvil formada por un único nodo y una parte estática (requerimiento del algoritmo de
localización) formada por los tres motes restantes. Por otro lado uno de los nodos estáticos debe
permanecer conectado a la estación base.
Los detalles sobre el algoritmo de localización espacial se verán descritos en la sección de
implementación, en la parte de diseño tan solo se describen los aspectos imprescindibles para la
compresión de los esquemas.
El sistema de comunicación se basa en la emisión por parte del nodo móvil, de una
secuencia de paquetes a cada uno de los motes que actúa de punto de referencia, recolectando de
ese modo un cierto número de muestras, el cual va a servir para obtener un valor ponderado de la
fuerza de la señal desde ese nodo a los restantes.
El motivo para hacer esto es que el algoritmo de localización espacial, precisa de las
distancias entre el nodo desconocido y los otros integrantes de la red para poder realizar sus
cálculos. Dentro del sistema diseñado se estima a partir de la fuerza de la señal el valor de la
distancia.
35
5.1.- Esquema del sistema de comunicaciones
La ilustración 15 representa el esquema de las comunicaciones que se producen entre los
puntos de la red y por otra banda la ilustración 16 se centra en las comunicaciones que se
producen una vez el ordenador ha captado la información desde la estación base.
MOTE 2
MOTE 3
MOTE 1
2
1
3
MOTE 4
4
Ilustración 15: Esquema de comunicaciones entre nodos.
Tras la recolección de información nodo a nodo, el flujo de información en la ilustración
15 numerado como 4 representa el envío de los datos finales al sistema para que realice los
cálculos pertinentes.
Los datos enviados a la estación base son transmitidos a través del cable USB conectado a
esta, hacia el software servidor proporcionado por la plataforma “Moteworks” llamado XServe.
Este módulo permite la visualización de los datos posibilitando su procesamiento para ser
expresados en las unidades correspondientes. Por otro lado, también permite la conexión de
subscriptores a un puerto determinado para la lectura de tramas XML con la información enviada.
36
Capitulo 5. Diseño
Mote
Estación Base
PC
Server Tier
SOCKET
Gateway Server SW
(“XServe”)
Serial Forwarder
APLICACIÓN
XOtap
XMesh
XML
Databas
e
Custom
Ilustración 16: Esquema de comunicaciones entre la red de motes y el XServe
5.2. Diagrama de clases de la aplicación
Tras el diseño de las comunicaciones, en este apartado se van a comentar cada una de las
clases que componen el diseño de clases realizado como paso previo a la implementación. La
ilustración 17 recoge el diseño UML (Unified Modeling Language) generado tras el análisis.
LocationEngineForm
Esta clase actúa como la ventana principal de la aplicación, consta de un componente de
gráficos donde se van a ir dibujando las posiciones de los nodos, a medida que se vayan calculando
y además se ocupa de la gestión de los hilos, de modo que pueda suspenderlos o reanudarlos según
las exigencias del usuario.
37
5.2.- Diagrama de clases de la aplicación
Permite también la configuración del algoritmo de localización para que pueda adaptarse a
las diversas configuraciones que pueden presentar los nodos.
CargaPuntosForm
Esta clase actúa de formulario para la introducción de las posiciones de los motes estáticos
de la red de sensores, los cuales son imprescindibles para los cálculos realizados por el sistema.
LocationEngineForm
CargaPuntosForm
CThreadCalculator
1
CThreadListener
1
*
1
*
CPunto
CBuffer
CSockectXml
*
CPacketXml
Ilustración 17: Diagrama de clases de la aplicación
CThreadCalculator
Esta clase es la base del algoritmo de localización, es la encargada de resolver el sistema de
ecuaciones a partir de los datos proporcionados por la clase CThreadListener y posteriormente
publicarlos en la vista principal para su visualización.
38
Capitulo 5. Diseño
CThreadListener
Esta clase se ocupa de la gestión de las comunicaciones entre la red y la aplicación.
Establece un socket con el software proporcionado por la plataforma “Moteworks” llamado
“XServe ” y almacena en un buffer los CPacketXml devueltos por este, para que el
CThreadCalculator pueda acceder a ellos y así realizar los cálculos pertinentes.
CSocketXml
Esta clase extiende la funcionalidad proporcionada por el propio objeto Socket, de modo
que aquello que es recibido como una trama xml, se procesa y convierte en una nueva estructura
llamada CPacketXml, contenedora solo de aquellos datos que son necesarios en etapas
posteriores.
CPacketXml
Esta clase es empleada como contenedor de los datos enviados por los motes, consta de
tres elementos de tipo “double” que representan la fuerza de la señal entre el nodo con posición
desconocida y un de los nodos con ubicación fija (un total de tres motes fijados).
CBuffer
Esta clase actúa de almacén de estructuras CPacketXml, para el intercambio de
información entre la clase CThreadCalculator y CThreadListener.
CPunto
Esta clase actúa de contenedor de datos, almacenado las coordenadas X e Y de las
posiciones de los nodos en el espacio.
39
40
Capitulo 6. Implementación
6
4-IMPLEMENTACIÓN
Este capítulo recoge la implementación del sistema de localización diseñado, describiendo
en detalle el sistema de comunicaciones, el algoritmo empleado, y el chip de radio subministrado
por Crossbow.
Aspectos básicos en cuanto a la programación sobre esta plataforma pueden ser
encontrados en los anexos para una mayor compresión por parte del lector.
6.1. Algoritmo de localización adoptado
En esencia, los sistemas presentados se basan para realizar los cálculos de los siguientes
factores:
Ángulo de llegada de la señal
Diferencia de tiempos de llegada
Fuerza de la señal
Como lo que se desea es aplicar un algoritmo de localización espacial sobre una
plataforma determinada, como es la proporcionada por Crossbow, se va a pasar a exponer los
dispositivos que incorpora para saber sobre que tipo de algoritmo se va a poder trabajar
posteriormente.
Los nodos de que se dispone son el modelo MicaZ a 2.4 GHz, en la ilustración 18 se
pueden observar los elementos que lo constituyen, los cuales son descritos a continuación:
41
6.1.- Algoritmo de localización adoptado
Un módulo de radio que permite la recepción y emisión de paquetes por la red, así
como la estimación de la fuerza de la señal.
Un microprocesador capaz de ejecutar instrucciones en nesC, lenguaje similar al C.
Un conector del tipo 51-pin, para la comunicación entre el propio nodo y los
sensores compatibles con él. Además es el medio por el cual se programan los nodos.
Serial ID, identificador único establecido por el fabricante.
Logger Flash, para el registro de información.
Con estos componentes que vienen de fábrica en los nodos se puede emplear un
algoritmo de localización espacial que base sus cálculos en la distancia entre los vecinos inmediatos
(trilateración), puesto que según la fuerza de la señal que se estime durante la recepción de una
paquete se puede saber, con un cierto grado de error, la distancia a la que se encuentra el emisor.
Aunque dentro de las técnicas basadas en RSS también se encuentra la de reconocimiento
de patrones, se debe descartar esta técnica porque impide el cumplimiento de uno de los objetivos
del proyecto, y es que se adapte al mayor número de situaciones posibles. Emplear este
algoritmo, obliga a que el entorno sobre el que se implante el sistema de localización sea uno del
que se hayan podido extraer muestras previamente.
El empleo de un único factor para la estimación de las posiciones ocasiona una menor
precisión en los resultados, pero para compensarlo, en la obtención de las distancias entre los
nodos se ha buscado el método que aporte mayor precisión en los cálculos y, por otro lado, que
se pueda adaptar a las diferentes configuraciones que pueden presentar los motes (los cuales varían
la frecuencia y la intensidad de envío). El empleo de un filtro para el refinamiento de las
localizaciones, aunque no es capaz de eliminar el error al cien por cien, reduce considerablemente
el error introducido.
Ilustración 18: Esquema de las partes de un Mote Micaz
42
Capitulo 6. Implementación
Como ya se expuso en la sección donde se describía la trilateración, el método para
encontrar las coordenadas de un nodo móvil entre puntos de referencia se basa en la resolución de
un sistema de ecuaciones lineal, Ecuación 6.1.1.
2 x( xi − x1 ) + 2 y ( yi − y1 ) = d12 − d i2 + xi2 − x12 + yi2 − y11
{i = 2,..., n}
Ecuación 6.1.1
El problema que se tiene en realidad no es la resolución del sistema, sino la estimación de
las distancias que son necesarias para ello, puesto que el empleo de la fuerza de la señal introduce
un elevado porcentaje de error en los cálculos. Este error viene marcado por los objetos que
puedan actuar de obstáculos en la trayectoria de los paquetes, los rebotes de las señales durante el
transcurso del envío hasta el receptor, o incluso la propia congestión del canal puede alterar los
cálculos de la fuerza de la señal debido a alteraciones sobre la señal original.
La fuerza de la señal recibida se halla en función del poder de transmisión y la distancia
entre el emisor y el receptor. Esta teóricamente, se debe reducir según se vaya incrementando la
distancia entre ambos, la ecuación 6.1.2 refleja su comportamiento teórico.
RSS = −(10n log10 d + A)
Ecuación 6.1.2
Donde las partes de la ecuación 6.1.2 son:
n:
Constante que representa la propagación de la señal.
d:
Distancia al emisor.
A:
Valor de la fuerza de la señal a una distancia de un metro.
RSS: Fuerza de la señal (Received Signal Strength)
La ilustración 19 recoge el comportamiento de la fuerza de la señal para el caso teórico
(primera figura) frente al caso real (tercera figura), el cual dista mucho de ser un comportamiento
regular.
Ilustración 19: RSS calculado teóricamente frente a la RSS real
En la práctica los valores que se obtienen cuando se mide la fuerza de la señal presentan
valores muy dispares debido a la degradación de la señal cuando se encuentra moviéndose por el
medio de difusión. Las oscilaciones que se producen dificultan a la hora de conseguir unas buenas
estimaciones de las distancias, puesto que la gráfica generada pasa de ser una recta decreciente a
ser una curva que decrece pero con muchos altibajos. La idea que se persigue al trabajar con la
43
6.1.- Algoritmo de localización adoptado
fuerza de la señal, es tratar de conseguir esa curva decreciente lo más suavizada posible
(ilustración 19 figura 2), lo cual se consigue al trabajar con valores de RSS ponderados.
El algoritmo de localización implementado trabaja con valores de RSS ponderados con 10
transmisiones, aunque cuantos más valores son empleados se obtiene una mayor precisión,
también se incorpora una mayor congestión en la red y una mayor espera en las respuestas del
sistema. Por ese motivo se decidió que 10 valores darían robustez al sistema sin resultar en una
pérdida de prestaciones por parte de él.
La expresión para el cálculo de la RSS presenta dos parámetros que confieren
configurabilidad al sistema. Se adaptan a los cambios de potencia de emisión y al propio entorno
de comunicaciones y estos son A y N.
A hace referencia a la fuerza de la señal a un metro de distancia, debería ser teóricamente
igual en todas las direcciones, pero esto en la práctica no se cumple, puesto que dicho valor es
calculado de modo diferente en cada uno de los diversos receptores, debido a que las antenas
poseen un comportamiento isotópico. En definitiva, la estimación de este valor debe obtenerse de
la ponderación de las fuerzas de la señal recibidas tras diversos envíos. Tras cada cambio de la
potencia de la señal debe reajustarse este parámetro.
N describe como la fuerza de la señal decrece cuando la distancia hacia el transmisor sube.
Es altamente dependiente del entorno de difusión. Por ejemplo, el grosor de las paredes que
envuelven a los nodos puede influenciar en los resultados. Este valor puede ser obtenido
únicamente empíricamente. Toma valores de 0 hasta 31. Para saber cual es el valor idóneo para el
entorno con el que se va a trabajar, debe de realizarse una calibración previa basada en la prueba
de diversos valores hasta encontrar el que mejor se ajuste.
En conclusión, se va a emplear la fórmula presentada con los valores de A y N que se
obtengan tras una prueba inicial del sistema para encontrar los que mejor resultados presenten.
De la expresión obtendremos las distancias que separan al nodo móvil de los puntos de referencia,
las cuales serán empleadas en el sistema de ecuaciones propuesto por el algoritmo de trilateración
ya comentado. La expresión resultante aparece ilustrada en la ecuación 6.1.3.
d = 10
RSS + A
−10 n
Ecuación 6.1.3
El punto que se obtenga tras la resolución del sistema, no es pintado inmediatamente en
la interfaz, antes de ello, debe pasar por un refinamiento para que el porcentaje de error sea
filtrado y, de ese modo, reducido. En el capítulo 4 se han expuesto diversos algoritmos para el
refinamiento de localizaciones, pero ninguno de ellos se adapta a las necesidades de que se
dispone.
Los algoritmos del tipo HMM precisan de un conocimiento previo del entorno, para la
generación de matrices de transición entre estados, los cuales representarían las habitaciones que
hay en una planta. Este motivo nos obliga a descartar este tipo de filtro, puesto que no se va a
disponer de ese conocimiento del espacio donde la red va a trabajar.
44
Capitulo 6. Implementación
Los filtros de Kalman o de partículas, por su parte, presentan un coste computacional
demasiado alto, aunque sirven como base para el filtro que se ha utilizado para refinar los puntos
calculados. La suposición que se ha hecho es la siguiente, el nodo móvil se encuentra alojado sobre
un robot móvil el cual presenta velocidades uniformes no elevadas. Esto implica que para diversas
observaciones tomadas en cortos instantes de tiempo, las posiciones que puede tomar el nodo
móvil vienen delimitadas por las posiciones adyacentes que se pueden alcanzar dada la velocidad
del robot.
Por tanto, como el tiempo entre observaciones es fijo y se puede indicar a la interfaz la
velocidad del robot, se puede conocer la distancia a la que se puede llegar entre varias emisiones
de datos. Según la posición de las ruedas del robot está distancia puede verse afectada,
aumentándola o disminuyéndola, pero el filtro ha conseguido reducir el error cometido. La
ilustración 20 muestra un esquema del comportamiento del filtro.
Ilustración 20: Refinamiento de la localización
6.2. Chip de radio
El módulo de radio integrado en los nodos es el chip CC2420 a 2.4 GHz, diseñado para
redes inalámbricas de bajo consumo (bajo voltaje y bajo poder de emisión). La señal recibida es
amplificada por el amplificador de bajo ruido que incorpora, el cual es un dispositivo electrónico
usado en sistemas de comunicación para amplificar débilmente las señales capturadas por una
antena, y posteriormente, se aplica una demodulación de amplitud en cuadratura. Esta
modulación se caracteriza por transportar los datos cambiando la amplitud de dos ondas
portadoras. Estas portadoras tienen igual frecuencia pero están desfasadas ̟/2 radianes entre sí.
Comúnmente se utiliza para la transmisión de datos a alta velocidad por canales con ancho de
banda restringido.
45
6.2.- Chip de radio
La amplificación del modelo CC2420 se realiza mediante un procesamiento variable de la
ganancia de la señal, el cual esta vinculado a un control automático de la ganancia. Los registros
internos del chip de comunicaciones permiten realizar modificaciones sobre la configuración del
control de la ganancia, pudiendo escoger entre un modo de ganancia automático y otro con
ganancia fija. Los valores para la segunda modalidad de control oscilan entre valores bajos, medios
y altos, predeterminados internamente por el hardware (aunque también existe una secuencia de
bits dentro del registro que permite fijar por el usuario un valor de ganancia a aplicar). La
ilustración 21 recoge la descripción de todos los campos dentro del registro de configuración.
Ilustración 21: Campos del registro de configuración del control de la ganancia
El envío de las señales a través del medio de difusión depende de diversos factores que
pueden ser configurados en el chip de comunicaciones, estos son el poder de emisión y el canal
empleado para transmitir. El poder de emisión es el consumo que se produce en cada emisión,
cuanto mayor sea, mas desgaste de las baterías se va a producir, por otra parte, el canal no es más
que la frecuencia que se emplea al emitir la señal, se pueden producir solapamientos de la señal
enviada con emisiones cercanas que se encuentren dentro de la misma banda, o canales contiguos.
Para el modelo de nodo que se dispone (MicaZ) y el chip de radio integrado que se posee,
existen diversas configuraciones, tanto el poder de emisión como el canal de transmisión pueden
tomar diferentes valores especificados por el hardware. A continuación se van a describir dichos
valores para el modelo CC2420, disponible para los nodos de la red inalámbrica.
46
Poder de emisión:
◊ -25 dBm
◊ -15 dBm
◊ -10 dBm
◊ -5 dBm
◊ 0 dBm
(Consumo mínimo)
(Consumo máximo)
Capitulo 6. Implementación
Canal de emisión:
◊ Canal 11 – 2405 MHz
◊ Canal 12 – 2410 MHz
◊ Canal 13 – 2415 MHz
◊ Canal 14 – 2420 MHz
◊ Canal 15 – 2425 MHz
◊ Canal 16 – 2430 MHz
◊ Canal 17 – 2435 MHz
◊ Canal 18 – 2440 MHz
◊ Canal 19 – 2445 MHz
◊ Canal 20 – 2450 MHz
◊ Canal 21 – 2455 MHz
◊ Canal 22 – 2460 MHz
◊ Canal 23 – 2465 MHz
◊ Canal 24 – 2470 MHz
◊ Canal 25 – 2475 MHz
◊ Canal 26 – 2480 MHz
Los criterios que hacen que se escoja un valor u otro, varían entre preservar el consumo
para tratar de maximizar la vida útil de las baterías y tratar de emitir a distancias lo más extensas
posibles, como los más relevantes.
Para conseguir mayores distancias se debe enviar paquetes con el máximo poder de
emisión para que la señal tarde más tiempo en degradarse y pueda así conseguir alcanzar puntos
más lejanos. Además hay que reducir la frecuencia al mínimo, empleando el canal más bajo
(siempre que la probabilidad de solapamiento con otras señales en la misma banda lo permita), de
modo que la forma de la señal presente una apariencia más estirada y se vea menos afectada al
ruido. En el caso de que se pretenda únicamente ahorrar en consumo, solamente se debe
configurar la potencia de envío como la mas baja y escoger el canal de comunicaciones que se crea
oportuno.
El sistema de localización, por tanto, enfoca su configuración hacia la emisión de paquetes
a distancias lo más extensas posibles, de modo que se pueda abarcar una mayor extensión.
Decidida la configuración de la potencia de emisión y su frecuencia, tan solo queda lidiar
entre una configuración de la ganancia automática o estática. Con una ganancia automática resulta
muy difícil eliminar las oscilaciones de la señal, puesto que al detectar que la señal va
disminuyendo se inyecta una ganancia más alta, lo cual ocasiona que para distancias más lejanas el
valor de la RSS sea más buena que para zonas más próximas. Este comportamiento no es el
deseado, el error aportado sería demasiado elevado. En conclusión, se va a configurar el chip con
un control estático de la ganancia.
La siguiente cuestión a resolver tras saber que es mejor el control estático sobre uno
automático, es averiguar que valor de ganancia se debe emplear para obtener mejores resultados.
Para ello, se va a introducir el concepto de relación señal/ruido (SNR) como el margen que hay
entre la potencia de la señal que se transmite y la potencia del ruido que la corrompe (medido en
47
6.3.- Sistema de comunicaciones
decibelios). Cuanto menor sea la diferencia entre la señal y el ruido, menor calidad va a tener la
señal transmitida. La ilustración 22 recoge este comportamiento.
Ilustración 22: Diferentes valores para la relación señal ruido
Cuando se amplifica la señal la potencia de la señal se ve aumentada, pero al mismo
tiempo el ruido es acentuado también, con lo que el valor de la relación señal/ruido se ve
disminuido y esto empeora la calidad de la señal. En conclusión, el uso del mínimo valor posible
en la inyección de ganancia va a propiciar unos gráficos más suavizados y por concluyente un
menor error en los cálculos que se realicen posteriormente con esos valores.
6.3. Sistema de comunicaciones
La red de sensores se compone de un total de 4 nodos, entre los cuales existen dos roles
diferentes, el punto de referencia y el nodo móvil. Los puntos de referencia conocen su ubicación
mediante el software cliente desarrollado, ya que para cada uno de ellos son introducidas
manualmente sus coordenadas. El nodo móvil, por su parte, se encarga de enviar paquetes a los
puntos estáticos cada cierto tiempo, para poder conseguir una estimación de la fuerza de la señal
entre ellos.
48
Capitulo 6. Implementación
Además dentro de los puntos que actúan como referencia, hay uno que posee un
comportamiento que difiere del resto, el propio nodo se encuentra acoplado a la estación base,
con lo que se convierte en el único que puede enviar paquetes hacia el ordenador. Las aplicaciones
residentes en el sistema pueden recibir información de la red de sensores, mediante el software
servidor, el cual se mantiene a la escucha de un puerto especial de comunicaciones que emplea el
nodo. Este servidor genera un socket a través del cual envía tramas en formato XML para que
aquellos que lo deseen puedan conectarse y procesar lo que se recibe desde la red de sensores.
Cuando un paquete es recibido por un nodo, este se almacena en una estructura de datos
llamada “TOS_Msg” proporcionada por el sistema operativo TinyOS, la cual se compone de los
siguientes campos:
◊
◊
◊
◊
◊
◊
◊
◊
◊
Addr (2 bytes)
Type (1)
Group (1)
Length (1)
Data[TOSH_DATA_LENGTH] (4)
CRC (2)
Strength (2)
ACK (1)
Time (2)
Para el sistema de localización que se está realizando, el campo “strength” es muy
importante, es el valor que va a permitir saber la distancia a la que se encuentra un nodo de otro.
Esta información va a ser enviada por un único nodo hacia la estación base de modo que no se
genere congestión en el canal de comunicaciones. El nodo encargado de esta tarea es el propio
nodo móvil, debido a que al recibir la información de todos los puntos de referencia puede
encapsular en un único paquete todas las RSS, minimizando los intercambios de información entre
los nodos.
A continuación, en el punto 6.3.1 se va a exponer la estructura de los paquetes para la
plataforma de trabajo empleada, y se va a realizar un estudio de los posibles campos que se pueden
emplear para contener las RSS u otros datos que se precisen intercambiar por la red.
Además en esta sección también se va a exponer la implementación de las comunicaciones
por separado, para cada tipo de nodo, estación base, nodo móvil y punto de referencia.
6.3.1.- Estructura de los paquetes
Los paquetes se componen de una cabecera y campos de datos asociados al sensor, los
cuales varían según el modelo con el que se esté trabajando. La ilustración 23 muestra esta
estructura con algo más de detalle.
49
6.3.- Sistema de comunicaciones
Bytes: 5
TinyOS
Header
0/7
XMesh
Header
4
X (según sensor)
XSensor
Data
Header
Fields
2
CRC
Ilustración 23: Estructura de los paquetes
Dentro de la cabecera existen tres grandes bloques que se distinguen por el nivel que
tratan, el primer nivel se corresponde con el del propio sistema operativo de los nodos (TinyOS),
y contiene los siguientes campos:
◊
◊
◊
◊
Destination Address (2 bytes)
Active Message Type (1)
Active Message Group (1)
Length (1)
El segundo nivel, contiene los aspectos que hacen referencia al protocolo de rutado que
emplean los nodos inalámbricos, el cual es llamado XMesh. Los campos que lo componen son los
descritos a continuación:
◊
◊
◊
◊
Source Address (2 bytes) : dirección mac del nodo
Origin Addres (2): id del nodo de origen
Sequence Number (2)
Application ID
Finalmente, el tercer nivel en las cabeceras referencia al sensor sobre el que se desea
enviar la información, los campos que lo forman son los siguientes:
◊
◊
◊
Sensor Board ID (1 byte)
Sensor Packet ID (1)
Parent (2)
El sensor del que se dispone se corresponde con el modelo MDA100, los campos de datos
que proporciona este modelo se describen a continuación:
◊
◊
◊
◊
◊
◊
50
Vref : Lectura del voltaje de la batería
Thermistor : Lectura de la temperatura.
Photo : Lectura del sensor de luz.
Adc2 : Lectura analogica/digital.
Adc3 : Lectura analogica/digital.
Adc4 : Lectura analogica/digital.
Capitulo 6. Implementación
◊
◊
Adc5 : Lectura analogica/digital.
Adc6 : Lectura analogica/digital.
Los campos que se prestan a posibles modificaciones se corresponden con los campos de
datos que presenta el sensor. En la práctica, cualquiera puede ser empleado para contener los
valores de RSS, pero por si se desea captar valores ambientales a partir de los dispositivos que
incorpora el sensor, se van a emplear únicamente los campos ADC de que dispone.
El software servidor es el encargado de recibir la información y aplicar una conversión
para que las aplicaciones clientes que accedan a los datos, reciban directamente los valores con las
unidades correctas. Esto se consigue mediante un fichero de configuración en XML, existe uno
para cada modelo de sensor soportado por la plataforma.
6.3.2.- Nodo móvil (coordenadas desconocidas)
Para este nodo se desconocen sus coordenadas, y se desea realizar una monitorización de
las diversas posiciones por las que va pasando mediante una aplicación cliente que se encuentre
escuchando los paquetes enviados por la red de sensores inalámbricos. Este nodo en cuestión, es el
encargado de recoger los valores de las RSS de cada uno de los puntos de referencia que tiene
alrededor y enviárselos a la estación base.
Como ya se comentó en la sección 6.1, la fuerza de la señal sufre muchas variaciones por
factores en el medio de transmisión, por ello siempre se debe trabajar con valores ponderados de
RSS. Esto se consigue realizando diversos envíos al mismo nodo y calculando la media entre los
valores captados en esos envíos. Para la implementación llevada a cabo se realizan 5 transmisiones
por nodo, y estas transmisiones no se originan en modo “broadcast”, hasta que no se terminan de
recibir los 5 paquetes de un nodo, no se pasa al siguiente. La ilustración 15 de la sección de diseño
recoge este comportamiento.
La posible producción de perdidas en el canal no origina ningún bloqueo en el sistema,
puesto que cada 5 segundos salta un temporizador y vuelve a inicializar las comunicaciones. Lo
único que puede suceder en ese periodo de tiempo es que la aplicación cliente no sea capaz de
pintar nada hasta el siguiente ciclo de envío. No se ha implementado un sistema con
reconocimientos (ACKs) para evitar la congestión del canal, puesto que eso repercute gravemente
sobre las mediciones que se realizan para obtener la RSS en los módulos de radio.
El sistema operativo que incorporan los nodos requiere de una programación en nesC, un
tipo de C extendido para redes de sensores, en el apéndice A se puede profundizar en los aspectos
en que se basa este lenguaje, en esta sección se va a emplear seudo código para la compresión del
código de las funciones que intervienen.
Cuando los paquetes son recibidos por el nodo, automáticamente el sistema operativo
genera un evento y se captura por el programa compilado en él. El paquete es procesado y como
respuesta se envía un nuevo paquete por la red. A continuación se va a exponer en pseudo-código
la función que es ejecutada cuando se recibe un paquete:
51
6.3.- Sistema de comunicaciones
//almacenar RSS
buffer[index] = messageReceived->data->ADC2;
buffer[index+1] = messageReceived->strength;
index += 2;
nPaquetes ++;
if (nPaquetes > 5) //se han recibido 5 paquetes cambiar de nodo
{
numValues = 1;
media = buffer[i];
if (media > 255) signed = true;
else signed = false;
for (i=1; i<10; i++)
{
if (buffer[i] > 255 and signed)
media += buffer[i];
numValues ++;
else if (buffer[i] < 256 and !signed)
media += buffer[i];
numValues ++;
}
//almacenar la media
Media[idMote-1] = media/numValues;
nPaquetes = 1;
index = 0;
//cambiar de nodo
idMote = idMote + 1;
}
if (idMote <= 3) //todavia no ha recibido de los tres motes
{
messageToSend->ADC2 = 1;
send_radio_msg();
}
else //tiene todos las RSS, mensaje a la estación base
{
messageToSend->ADC2 = Media[0];
messageToSend->ADC3 = Media[1];
messageToSend->ADC4 = Media[2];
send_toBaseStation_msg();
}
El nodo móvil almacena las RSS de los tres nodos de referencia, cuando recibe un paquete
de un nodo debe coger la RSS de la estructura TOS_Msg, que ha sido calculado por su propio
chip de radio. También debe guardar la RSS que se encuentra encapsulada en los datos del
paquete, el cual reside dentro del campo ADC2, según el modelo de sensor que se está
utilizando. Para cada nodo, si se hacen un total de 5 envíos, se van a almacenar 10 valores de RSS.
Las limitaciones de memoria que sufre el hardware obligan a que los tipos de datos con los
que se puede trabajar sean sin signo, y se representen en complemento A2. Los valores de RSS
que son recibidos pueden contener tanto valores normales, como negativos, con lo que estos no
52
Capitulo 6. Implementación
pueden ser mezclados ya que afectarían sobre el resultado real de la media. Para evitar esta
situación la media solo se realiza sobre uno de los dos tipos de valores.
Mientras que el número de paquetes recibidos sea inferior a cinco, el nodo va a proceder
a enviar un paquete al mismo nodo del cual está recibiendo la información. El significado de poner
un 1 en el campo ADC2, es que la estación base que también actúa como nodo de referencia,
pueda distinguir entre un paquete de solicitud de RSS (como es el caso cuando se envía el 1) y
uno de envió de las tres RSS, con lo cual debe enviarlo por el cable USB hacia el ordenador.
Cuando el número de paquetes recibidos alcanza el valor de cinco, entonces se almacena
el valor de la media y se modifica el identificador que especifica la dirección del nodo al que se van
a enviar los paquetes. Una vez se tienen las 3 medias se envía un paquete hacia la estación base
para que esta transmita la información hacia el ordenador. Cuando el temporizador acabe su
tiempo de espera, el proceso volverá a empezar.
Las funciones que son llamadas para el envío, tanto “send_radio_msg” como
“send_ToBaseStation_msg”, llaman a otra función que proporciona el sistema operativo para realizar
las transmisiones de los paquetes. Lo que se requiere configurar en las llamadas a dicha función es
el nodo destino al que se va enviar o se puede indicar que se desea realizar en modo broadcast. En
el caso en el que nos encontramos, solo utilizamos direcciones, para “send_radio_msg” empleamos
el identificador del mote al que se debe enviar y la otra función posee el identificador de la
estación base que siempre vale lo mismo.
6.3.3.- Estación Base
El comportamiento que sigue este nodo es más simple que el del nodo móvil. Cuando
recibe un paquete comprueba el valor del campo de datos ADC2, si este vale 1, entonces es que
debe devolver el paquete hacia el nodo emisor. Si el valor recibido es otro, se trata de una paquete
con todas las RSS, por lo tanto, debe componer un paquete con la información que ha llegado y
transmitirla hacia el ordenador, donde el software servidor estará escuchando.
El siguiente seudo código ilustra el comportamiento adoptado por este nodo en la
recepción de paquetes de la red:
if (packReceived->xData.datap1.adc2 == 1)
{
messageToSend->ADC2 = messageReceived->strength;
SendStrength();
}
else
{
messageToSend->ADC2 = messageReceived->ADC2; //RSS 1
messageToSend->ADC3 = messageReceived->ADC3; //RSS 2
messageToSend->ADC4 = messageReceived->ADC4; //RSS 3
SendDataUART();
}
53
6.3.- Sistema de comunicaciones
Las funciones “sendStrength” y “sendDataUART” siguen la misma idea que las planteadas
para el nodo móvil, la primera utiliza la función “send” del sistema operativo para devolver el
paquete al emisor con el RSSI encapsulado. La segunda emplea “TOS_UART_ADDR” para
enviar el paquete a través del cable USB que une a la estación base con el ordenador.
6.3.4.- Nodo de referencia (coordenadas fijas)
Este nodo responde a los paquetes que recibe enviando otro paquete al emisor con la
fuerza de la señal encapsulada en el campo ADC2 de los datos. En la red de que se dispone existen
dos nodos funcionando con este programa, el tercer punto de referencia es el que se encuentra
fijado a la estación base y aunque presente un comportamiento similar posee un programa
diferente como se ha expuesto en el punto anterior.
El seudo código de la función de recepción es el que aparece a continuación:
messageToSend->ADC2 = messageReceived->strength; // RSS
SendStrength();
La función “SendStrength” es la misma que la comentada en el punto anterior para la
estación base.
6.4. Aplicación cliente para la monitorización
La aplicación de monitorización cuenta con una interfaz desarrollada en C#, la cual
presenta una ventana con un componente gráfico donde se van a ir pintando los puntos a medida
que vayan siendo recogidos, una pestaña de configuración para adaptar el algoritmo de
localización espacial a diversos entornos y configuraciones de los motes (en la sección 6.1 aparece
descrito en profundidad el algoritmo empleado). Y finalmente, un formulario para la introducción
de las coordenadas de los nodos de referencia que forman la red de sensores inalámbricos.
La ventana principal posee tres botones, uno muestra el diálogo de la carga de
coordenadas para los nodos fijos comentada antes, el otro limpia los puntos generados para el
54
Capitulo 6. Implementación
nodo móvil, y el último inicia la conexión con el socket del software servidor de la plataforma
“MoteWorks”, además de iniciar la ejecución de los hilos. Por defecto el puerto sobre el que se
conecta la aplicación con el socket del software servidor es el 9001, aunque este puede ser
modificado por otro primero desde el servidor y posteriormente en la interfaz, de otro modo no
se podría proceder a la conexión. Para una visualización más detallada de los cálculos realizados
por el sistema, en la parte derecha de la interfaz se han dispuesto campos informativos con los
valores de la RSS y su respectiva estimación de la distancia. La ilustración 24 muestra la interfaz
gráfica.
Ilustración 24: Interfaz gráfica de la aplicación
Como es posible que se trabaje muchas veces sobre un mismo escenario, se ha creído
oportuno generar un modo rápido de carga de la ultima configuración de los puntos utilizada, para
ahorrar tiempo al usuario en esa labor.
El componente gráfico auto ajusta los ejes X e Y según los valores de las muestras a pintar.
Al lado derecho aparece una leyenda para asociar los colores de línea con su respectivo significado
en el dibujo. Solo existen dos series para el gráfico, por un lado el color rojo está ligado a los
nodos que actúan como referencia, solo habrá tres marcas para esta serie. El color verde está
asociado a los puntos que son calculados por el algoritmo de localización tras la recepción de las
RSS por parte de la red de nodos.
En la parte inferior aparece una barra de estado, la cual indica como se encuentra la
conexión con el servidor en cada momento. Si el socket es cerrado se verá reflejado en ella. La
aplicación no permite realizar una conexión, si como paso previo no se ha procedido a la carga de
los puntos fijos. Sin sus coordenadas no se puede resolver el sistema de ecuaciones que presenta el
algoritmo de localización espacial. El formulario de carga de las coordenadas puede observarse en
55
6.4.- Aplicación cliente para la monitorización
la ilustración 25. Una vez los puntos son guardados, estos aparecen pintados en el componente
gráfico.
Ilustración 25: Formulario de carga de las coordenadas de los nodos de referencia
La pestaña de configuración permite cambiar diversos parámetros empleados en el
algoritmo de localización espacial, los cuales se corresponden a la RSS aproximada en un metro de
distancia, el factor en que disminuye la señal al aumentar la distancia y la velocidad a la que se
mueve el robot. La ilustración 26 recoge esta interfaz.
Ilustración 26: Interfaz para la configuración del sistema
56
Capitulo 6. Implementación
Cuando se realiza una conexión tras haber cargado las coordenadas, la aplicación pone en
ejecución a dos hilos, uno que se encarga de la lectura de los paquetes desde el socket al software
servidor y otro que emplea las RSS recibidas para calcular los puntos a pintar en el componente
gráfico.
El hilo de lectura, gestiona el socket y almacena la información que le devuelve en un
buffer compartido por él y el hilo que realiza los cálculos. Si el socket no contiene nada, el hilo se
suspende temporalmente un tiempo para dar ocasión a este de llenarse con nuevos datos. A
continuación se presenta el seudo código del programa que es ejecutado por el hilo:
while( true )
{
if (socketFailed)
{
socketFailed = false
SocketConnectionFailed()
}
else
{
try
{
if (socket == null)
{
socket = new CSocketXml(server, port)
}
else
{
if ((packet = socket.SocketReceive()) != null)
buffer.Add(packet)
else Thread.Sleep(2000) //espera dos segundos
}
}
catch
{
socketFailed = true
}
}
}
Por su parte, el socket devuelve una estructura CPacketXml que contiene los valores de
las 3 RSS de los nodos de referencia, cada vez que se llama la función “SocketReceive”. Esta
función lee el “stream” XML proveniente del servidor y extrae los valores que se encuentran
recogidos dentro de los campos ADC2, ADC3 y ADC4 del documento XML.
El hilo que calcula las coordenadas del nodo con posición desconocida, coge los paquetes
del buffer compartido que tiene con el lector. Si no existen paquetes disponibles, se queda
bloqueado hasta que el lector almacena un nuevo paquete (problema productor-consumidor).
Para cada una de las RSS que contiene el paquete (en total 3), se realiza la conversión a distancia
en centimetros mediante la ecuación 6.1.3 obtenida en la sección 6.1.
d = 10
RSS + A
−10 n
Ecuación 6.1.3
57
6.4.- Aplicación cliente para la monitorización
Una vez se dispone de las distancias y se saben las coordenadas de los nodos fijos, ya que
han sido introducidas previamente en el sistema, se puede proceder a la resolución del sistema de
ecuaciones (Ecuación 6.1.2) expuesto en la sección 6.1.
2 x( xi − x1 ) + 2 y ( yi − y1 ) = d12 − d i2 + xi2 − x12 + yi2 − y11
{i = 2,..., n}
Ecuación 6.1.2
El punto que se obtiene tras la resolución no puede ser pintado directamente por el
propio hilo, esto se debe a que los controles tales como botones o gráficos están asociados a la
vista que los crea. La solución a esto es llamar un delegado que previamente se haya definido en la
vista, para que se ejecute una determinada función desde ella. El seudo código del programa del
hilo es el que aparece a continuación:
while (true)
{
packet = buffer.Get();
exp = (Abs(packet.Strength1)
distancias[0] = Pow(10, exp)
exp = (Abs(packet.Strength2)
distancias[1] = Pow(10, exp)
exp = (Abs(packet.Strength3)
distancias[2] = Pow(10, exp)
*
*
*
Abs(A)) / (10 * N);
100; //cm
Abs(A)) / (10 * N);
100; //cm
Abs(A)) / (10 * N);
100; //cm
//resolución del sistema de ecuaciones
matrixSystem = GeneratePositioningSystem(distancias);
LinearEquationSolver(matrixSystem, solution);
puntoApintar = new CPunto(Abs(solution[0]),
Abs(solution[1]));
//invocar método de la vista
mainForm.Invoke(mainForm.m_delegatePintarPunto, puntoApintar);
}
Los hilos son gestionados desde la vista, cuando se pulsa el botón de pausa la ejecución de
estos se suspende hasta que se vuelve a producir una nueva conexión, o simplemente se elimina si
la aplicación es cerrada. La configuración puede cambiarse mientras se está conectado, de modo
que se pueda realizar una calibración del sistema para ajustar los valores y conseguir una mayor
precisión en los cálculos realizados.
Como último paso antes de que el punto sea pintado en el gráfico, se procede al
refinamiento de la localización, para ello, se realiza una estimación de la distancia que puede
recorrer el robot entre cada recepción de un mensaje por parte de la red. Con ello se obtiene el
valor de la nueva ubicación, dentro del radio que puede alcanzar desde la posición donde se
encontraba anteriormente.
58
Capitulo 7. Resultados
7
7.- RESULTADOS
Tras la implementación del proyecto, este capítulo recoge las pruebas realizadas con un
robot móvil para la red inalámbrica de que se dispone. Por una parte se detallan aquellos
experimentos realizados para validar el comportamiento de las diversas configuraciones del chip
de radio integrado en los nodos, y por la otra, los experimentos que recogen el comportamiento
del sistema de localización en un escenario real.
7.1. Experimentos con el chip de radio y la fuerza de la señal
Como se ha comentado en la sección del chip de radio, es posible variar la frecuencia de
envío, así como, la potencia de emisión. Para comprobar el comportamiento que tiene la
selección de un canal con una misma potencia de envío sobre los valores recogidos en la fuerza de
la señal, se realizó un experimento en un recinto donde se pudiera ver afectado por el menor
número posible de solapamientos de señales por transmisiones en el mismo canal. La ilustración
27 recoge los resultados.
Como se puede observar en el gráfico, emplear un canal u otro no repercute
prácticamente a distancias cortas. Las oscilaciones que se producen vienen marcadas por el
carácter de la señal analógica y el ruido que la afecta. Si el muestreo se hubiera prolongado hasta
valores más grandes de la distancia, según el canal empleado se habría dejado de recibir paquetes
en unos antes que en otros.
59
7.1.- Experimentos con el chip de radio y la fuerza de la señal
Variación de le fuerza de la señal para varios canales
0
Fuerza de la señal (dBm)
-10
20
40
60
80
100
120
140
160
180
200
220
240
260
280
300
-20
-30
2405 Hz
-40
2420 Hz
2440 Hz
-50
2460 Hz
-60
2480 Hz
-70
-80
-90
-100
Distancia (cm)
Ilustración 27: Gráfico con los resultados de diversos canales con el máximo poder de emisión, para
el control automático de la ganancia
Si en vez de variar el canal, lo que se varía es la potencia de emisión, aunque la señal
presente desniveles, la tendencia general va a ser que la fuerza resultante empeore a medida que
se vaya aumentando la distancia. Los valores recogidos son a distancias relativamente cortas pero
aun así el comportamiento resulta ser es el esperado, a mayor potencia más altos serán los
resultados recogidos en la RSS. La ilustración 28 muestra el experimento.
Fuerza de la señal segun el RF Power
0
-10
20
40
60
80
100
120
140
160
180
200
220
240
260
280
300
Fuerza de la señal (dBm)
-20
-30
0dBm
-40
3dBm
-50
5dBm
10dBm
-60
15dBm
-70
25dBm
-80
-90
-100
Distancia (cm)
Ilustración 28: Gráfico con los resultados de diferentes potencias de emisión con un mismo canal,
para el control automático de la ganancia
Los experimentos anteriores han servido para validar el comportamiento de los
parámetros configurables de la radio. Como el criterio de configuración que requiere el sistema es
alcanzar la máxima distancia posible sin necesidad de preservar las baterías incorporadas en los
nodos, los valores para el poder de emisión y el canal, van a ser respectivamente, 0 dBm (la
máxima) y 2405 MHz (la mínima). Para los experimentos de aquí en adelante se va a asumir que
está es la configuración empleada, a menos que se indique lo contrario explícitamente.
60
Capitulo 7. Resultados
El experimento recopilado en la ilustración 29, muestra el comportamiento que presenta
la fuerza de la señal a medida que se va incrementando la distancia. Además, para ver como los
obstáculos afectan en el deterioro de las señales, se realizó otro registro de valores en el caso de
mantener un cuerpo justo entre el emisor y el receptor.
Potencia de la señal en varios entornos
0
Fuerza de la señal (dBm)
-10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-20
Medición Directa
-30
Medición con Cuerpo
25
-40
-50
-60
-70
-80
-90
-100
Distancia (m)
Ilustración 29: Gráfico con los resultados de la fuerza de la señal para grandes distancias, sin y con
obstáculos, para el control automático de la ganancia
En la recopilación de la información, para introducir las mínimas interferencias, se dejó
uno de los nodos que actuara como receptor encima de la plataforma de un robot, y el otro se
posicionó encima de otro robot que iba desplazándose un metro cada vez, para la anotación de los
resultados. La ilustración 30 muestra el proceso de recogida de datos.
Ilustración 30: Proceso de recolección de datos para distancias grandes
En distancias grandes se puede apreciar como el control de la ganancia, comentado al
principio de esta sección, es un control automático. A pesar de ir progresivamente alejándonos, la
fuerza de la señal presenta fluctuaciones bastante pronunciadas, las cuales son producidas por la
inyección de una ganancia sobre la señal. El valor de la ganancia viene dado por el algoritmo de
61
7.1.- Experimentos con el chip de radio y la fuerza de la señal
control automático que lleva integrado el chip, y cuyo comportamiento va ligado a la intensidad
de la señal recibida, aplicando mayor o menor valor de ganancia según sea necesaria. Para mejorar
el comportamiento del hardware sobre este aspecto, el departamento ha adquirido el modelo
CC2431. Este modelo incorpora un chip de radio más eficiente, además de un chip integrado
llamado “location engine” que realiza los cálculos de las posiciones en el hardware.
Fuerza de la señal con ganancia máxima
0
-10
RSS (dBm)
-20
-30
-40
-50
-60
-70
-80
-90
-100
1
2
3
4
5
6
7
8
9
10
Distancia (m)
Ilustración 31: fuerza de la señal sin control automático, con ganancia máxima.
Los resultados obtenidos son los esperados, por eso es mejor emplear un control estático
de la ganancia. Aunque igual pueden aparecen oscilaciones en el gráfico, están se van a producir en
menor medida y van a estar menos marcadas, dependiendo del valor de la ganancia que se inyecte
a la señal, puesto que a mayor ganancia más pronunciado va a ser el ruido.
Fuerza de la señal con ganancia mínima
0
-10
RSS (dBm)
-20
-30
-40
-50
-60
-70
-80
-90
1
2
3
4
5
6
7
8
9
10
Distancia (m)
Ilustración 32: Fuerza de la señal sin control automático y con ganancia mínima.
62
Capitulo 7. Resultados
La reducción de la ganancia implica la presencia de menos altibajos en el gráfico, aunque
también implica la reducción de la distancia que se es capaz de alcanzar. La decisión de cual
escoger vendrá pues determinada por la finalidad que se esté buscando, o bien precisión, o bien
longitud en la emisión de la señal.
La ilustración 33 muestra el recorrido de los nodos durante la realización de los
experimentos. El plano representa uno de los pasillos del edificio de profesorado que se encuentra
en las inmediaciones de la escuela superior de tecnología y ciencias experimentales.
Ilustración 33: Camino seguido por el robot para la realización de los experimentos
63
7.2.- Experimentos con el sistema de localización
7.2. Experimentos con el sistema de localización
La red inalámbrica de los experimentos se compone de tres robots fijos en una ubicación
preestablecida de antemano, y un robot móvil. Cada uno de los robots tiene incorporado un nodo
inalámbrico programado con uno de los módulos nesC diseñados según el rol que ocupe.
Se han captado 3 instantes diferentes durante la evaluación del sistema desarrollado, para
cada uno de ellos se dispone por una parte, de la captura de la interfaz de monitorización diseñada
y por otra, de la imagen de la posición real que ocupa el robot en el laboratorio donde se han
realizado las muestras. Con estas ilustraciones se pretende mostrar el comportamiento de la
aplicación frente a un escenario real de uso.
La distribución adoptada por los robots puede verse en la ilustración 34, el robot que
permanece dentro del triángulo que forman el resto, es el que actúa como el punto móvil del cual
se desconoce su ubicación y se va calculando en cada intercambio de paquetes.
El robot es controlado remotamente desde el ordenador donde se está ejecutando la
aplicación de localización. Como paso previo, se ha iniciado la aplicación servidor que permite la
comunicación entre la red inalámbrica y el propio ordenador, llamada “Xserve” y la cual fue
comentada en el capítulo de exposición de la plataforma de desarrollo.
◊
Posición 1
Ilustración 34: Posición del robot en un escenario real (1)
64
Capitulo 7. Resultados
Ilustración 35: Posición estimada del robot en un escenario real (1)
◊
Posición 2
Ilustración 36: Posición del robot en un escenario real (2)
65
7.2.- Experimentos con el sistema de localización
Ilustración 37: Posición estimada del robot en un escenario real (2)
◊
Posición 3
Ilustración 38: Posición del robot en un escenario real (3)
66
Capitulo 7. Resultados
Ilustración 39: Posición estimada del robot en un escenario real (3)
Como se puede comprobar tras las diversas posiciones mostradas, el sistema de
localización es capaz de ubicar el robot en el espacio con cierta precisión en sus cálculos, para
tratar de estimar el error producido por las señales de radio se ha realizado un experimento que
evalúe para 30 puntos en el espacio, las respectivas ubicaciones que va ocupando el nodo móvil,
de modo que se ilustre el máximo error cometido en cada uno de ellos. Para cada uno de los
puntos se muestran el error cometido en metros por parte del eje X y el error cometido por el eje
Y. La ilustración 40 recoge los resultados.
Error cometido en la evaluación de los puntos
1,6
1,4
Error (m)
1,2
1
Error en X
0,8
Eror en Y
0,6
0,4
0,2
0
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
Puntos
Ilustración 40: Estimación del error cometido por el sistema de localización
67
68
Capitulo 8. Seguimiento y control del proyecto
8.-SEGUIMIENTO Y CONTROL DEL PROYECTO
8
SEGUIMIENTO Y
CONTROL DEL
PROYECTO
Este capítulo contiene el seguimiento de la planificación realizada al inicio del proyecto,
así como el control de las tareas incluidas en la estimación. Las desviaciones surgidas en el
transcurso del proyecto son enumeradas y detalladas como parte del seguimiento realizado.
8.1. Control de la planificación
Durante la ejecución del proyecto se realizó un seguimiento para verificar que se estaba
cumpliendo la planificación y que los objetivos establecidos se estaban logrando. A continuación,
se detallan las desviaciones producidas en el transcurso del proyecto, así como, las justificaciones
de los retardos para cada una de las tareas que han superado el tiempo estimado.
Estudio de la plataforma Moteworks: Durante las pruebas del conjunto de
aplicaciones que forman el set provisto por Crossbow, se encontraron algunos
problemas de configuración que alargaron el tiempo necesario para realizar el estudio
de la plataforma. Esto solamente implicó el desvío de la planificación en un día.
Estudio de la programación en nesC: Aunque nesC es una ampliación de C, del
cual ya se disponían conocimientos, resultó presentar un comportamiento algo más
complejo de lo esperado. La concurrencia de los programas capaces de correr en los
nodos inalámbricos, supuso un estudio más profundo y costoso, para poder
aprovechar al máximo, las prestaciones proporcionadas para este tipo de
arquitecturas. El tiempo adicional requerido fue de 4 días más sobre la estimación
inicial.
Creación de la aplicación C#: La falta de experiencia en la programación con este
lenguaje, ha supuesto una desviación de 3 días sobre el coste estimado en un
principio.
69
8.2.- Seguimiento de la planificación
8.2. Seguimiento de la planificación
Las ilustraciones 41, 42, 43 y 44 recogen el seguimiento de la planificación respecto a las
estimaciones iniciales. La línea gris que aparece, actúa de línea base del proyecto y se corresponde
con los tiempos de la planificación original. Las barras azules, equivalen al coste real de las tareas
del proyecto.
Ilustración 41: Diagrama de GANTT real del proyecto desde el 13 de octubre hasta el 30 de
noviembre
Ilustración 42: Diagrama de GANTT real del proyecto desde el 1 de diciembre hasta el 18 de enero
70
Capitulo 8. Seguimiento y control del proyecto
Ilustración 43: Diagrama de GANTT real del proyecto desde el 19 de enero hasta el 8 de marzo
Ilustración 44: Diagrama de GANTT real del proyecto desde el 9 de marzo hasta el 12 de marzo
La ilustración 45 recoge las desviaciones producidas en la planificación con un mayor
detalle, para poder contrastar los retrasos sufridos en el desarrollo del proyecto.
71
8.2.- Seguimiento de la planificación
Ilustración 45: Variaciones de cada una de las tareas respecto a la estimación inicial
72
Capitulo 9. Conclusiones
9
7.-CONCLUSIONES
En este capítulo se van a recoger las conclusiones obtenidas tras el desarrollo del
proyecto. Por un lado se va a exponer el cumplimiento de los objetivos fijados de antemano,
documentando cuales y en que medida han sido superados. Además, se van a detallar posibles
extensiones del proyecto, que podrían ser llevadas a cabo en un futuro.
7.1. Grado de cumplimiento de los objetivos iniciales
Tras la finalización del proyecto, se puede afirmar que la mayor parte de los objetivos
marcados al inicio del proyecto han sido superados satisfactoriamente. En primer lugar, se ha
logrado diseñar e implementar un algoritmo de localización espacial que resulte eficiente y preciso
en la obtención de las coordenadas del nodo móvil.
La precisión del sistema ha sido ajustada a las restricciones que presenta la plataforma de
trabajo. Trabajar con la fuerza de la señal ha supuesto un gran coste a la hora del desarrollo del
algoritmo, puesto que es un parámetro que se ve afectado por muchas condiciones, tales como
reflexiones de la señal, difracciones, solapamientos en el canal, o multitrayectos.
La realización de experimentos sobre el chip de radio integrado en los nodos, ha sido la
clave para incrementar la precisión, y obtener los mejores resultados permitidos por el sistema.
Aunque los resultados obtenidos están lejos de sistemas como los que emplean ultrasonidos, si se
acercan a las prestaciones dadas por el GPS, el cual utiliza una triangulación como algoritmo de
localización. El error cometido por este sistema varia en unos metros, para nuestro caso, el error
cometido pueda alcanzar a lo sumo el mismo, pero su comportamiento normal si no hay
condiciones que alteren el comportamiento de la señal suele rondar sobre un metro de error
como promedio.
En segundo lugar, se ha conseguido que el sistema desarrollado presente un
comportamiento configurable. El algoritmo de localización ha basado los cálculos en dos
73
9.1.- Grado de cumplimiento de los objetivos
parámetros externos que pueden ser introducidos por el usuario. La interfaz presentada incluye
una pestaña de configuración donde los valores pueden ser modificados hasta encontrar aquella
combinación que aporte la mayor precisión para el entorno en que se encuentra.
La calibración inicial del sistema es un factor muy importante para la obtención de una
precisión mayor en los resultados. Por tanto, con la ayuda de este paso previo en la puesta en
marcha de la aplicación y el refinamiento de las coordenadas mediante el filtro de la velocidad
diseñado, se satisface el objetivo de la precisión aunque no se llegue al 100 %.
La programación para el sistema operativo TinyOS resultó costosa en un principio, los
programas para los sensores inalámbricos no presentan un sistema de “debug” elaborado. El único
medio de hacerlo fue empleando los leds de que dispone un nodo (el sistema operativo
proporciona una llamada para iluminar los leds cuando se pasa por una determinada función).
La realización de un diseño previo a la implementación ayudó a que se pudieran cumplir
los objetivos dentro de los plazos estipulados de antemano. Aunque la planificación llevada a cabo
resultó ser bastante buena, la producción de contratiempos y la falta de experiencia en la
plataforma de trabajo Moteworks, retrasaron algunas tareas y por consiguiente se prolongó el
tiempo empleado en el desarrollo del proyecto.
El trabajo realizado en el desarrollo de este proyecto, ha sido introducido en el artículo
“Networking aspects for localization and control of a swarm of mobile sensors and actuators: Cross-layer
desing, distance estimation, and trasport protocols” de la revista “Autonomous Robots”.
74
Capitulo 9. Conclusiones
7.2. Posibles extensiones del proyecto
El sistema de comunicaciones desarrollado en nesC, considera que los nodos son
accesibles directamente, puesto que tan solo se disponía de un total de cuatro nodos, más la
estación base. Una extensión del proyecto sería diseñar e implementar un sistema de
comunicaciones que aprovechara el sistema de saltos que dispone el protocolo XMesh. Para
nuestro caso se suponía que tres de los nodos actuaban como puntos de referencia, pero en una
red donde existen un mayor número de nodos, probablemente nunca se pueda estar alrededor de
los nodos de referencia. Los saltos permitirían que durante un breve periodo de tiempo un nodo
móvil pasara a jugar el rol de punto de referencia para que otros nodos móviles pudieran conocer
sus coordenadas.
Otra posibilidad, sería introducir otro dispositivo en el sistema de localización para así
incrementar la precisión. Para los nodos disponibles, lo mejor sería obtener un dispositivo que
actuara de brújula para poder emplear el algoritmo APS descrito en la sección 4.1.4. Posicionar el
nodo encima del soporte de un robot con brújula sería otro modo de conseguir mayor
información del entorno y poder emplear un algoritmo con mayor precisión. Dentro de los
sensores creados por Crossbow, existe el modelo MTS300 o MTS310 que incorporan un altavoz y
un micrófono entre otras funcionalidades, que permitirían el empleo de la diferencia de tiempos
de llegada para sumar precisión a la estimación de las distancias. (Hay que tener en cuenta que el
empleo de este sensor solo podría ser aplicable en entornos sin exceso de ruido).
Cuando se dispone de una red con muchos nodos, definir las coordenadas de los puntos
de referencia se convierte en una ardua tarea. Para ese caso, se debería disponer de un dispositivo
GPS conectado al nodo, el cual le indicaría sus coordenadas automáticamente. El nodo debería
enviar un paquete hacia la estación base para que almacenase el identificador del nodo con su
correspondiente coordenada para lo que pueda necesitar hacer.
Los módulos de radio empleados no poseen mucha potencia de transmisión, si se
dispusiera del modelo Mica2 a 433 MHz, se podría diseñar un sistema de localización espacial en
tres dimensiones, con lo que se podría ubicar un nodo dentro de un edificio, con diversas plantas.
El departamento ha adquirido el modelo CC2431 de la plataforma Crossbow, el cual lleva
integrado un chip denominado “location engine” que realiza los cálculos de las posiciones en el
hardware. Como trabajo futuro se pretende sustituir los nodos actuales por estos para evaluar el
rendimiento del algoritmo que lleva integrado.
Por otro lado, se va a desarrollar un sistema de localización basado en la técnica TRoA
(diferencia de tiempos de llegada) mediante el empleo de un sonar, para tratar de conseguir una
precisión de un centímetro. Su desarrollado va a ser llevado a cabo por Jorge Sales.
75
76
APÉNDICE A. Programación en nesC
A.- PROGRAMACIÓN EN nesC
A
PROGRAMACIÓN
EN nesC
Este apéndice es una introducción a la programación en nesC, en él se van a describir las
características del lenguaje, así como algún ejemplo de uso.
A.1. Características de nesC
nesC (network embedded systems C), es una extensión de C diseñada para el modelo de
ejecución y las estructuras del sistema operativo TinyOS. Sus principales características son las
siguientes:
Separación de la construcción y la composición: Los programas están compuestos
de componentes, que se montan, para formar un conjunto de programas. Los
componentes se definen en dos ámbitos, la especificación (contiene los nombres de
las instancias de sus interfaces) y la implementación.
Especificación del comportamiento de los componentes, en términos de un
conjunto de interfaces: Las interfaces pueden ser proporcionadas o usadas por el
componente. Las que son proporcionadas representan la funcionalidad que el
componente proporciona al usuario. Por otro lado, las que son usadas por el
componente representan, aquella funcionalidad que el componente requiere para
llevar a cabo su trabajo.
Las interfaces son bidireccionales: Las interfaces especifican un conjunto de
funciones a ser implementadas por el proveedor de la interfaz (comandos) y un
conjunto a ser implementado por la interfaz del usuario solicitante (eventos). Esto
permite una única interfaz para representar una interacción compleja entre
componentes.
77
A.1.- Características de nesC
78
Los componentes son enlazados entre sí a través de sus interfaces: Esto aumenta
la eficiencia en tiempo de ejecución, propicia un diseño robusto, y permite un mejor
análisis de los programas.
Uso de compiladores específicos: nesC está diseñado bajo la expectativa de que el
código será generado por los compiladores compatibles con TinyOS.
Tareas y manejadores de interrupciones: El modelo de concurrencia de nesC está
basado en ejecutar tareas al completo, y manejar interrupciones las cuales permitan
interrumpir la ejecución de las tareas y otros procedimientos por el estilo.
APÉNDICE A. Programación en nesC
A.2. Estructura de una aplicación
Dentro de la plataforma de trabajo empleada llamada Moteworks, se requieren un
mínimo de 4 archivos para poder generar una aplicación para la red de sensores inalámbricos.
Según la funcionalidad que implemente la aplicación variará en el número de módulos que la van a
componer.
El esqueleto de una aplicación en TinyOS consiste de los siguientes ficheros:
Makefile
Makefile.component
Configuración de la aplicación
Módulo con la implementación
README (opcional)
A.2.1.- Makefile
Un makefile consiste en líneas de texto que definen a un archivo o a un conjunto de ellos,
o que definen el nombre de una regla dependiendo de un conjunto de archivos. Los archivos de
salida necesitan de sus dependencias, y las dependencias también pueden tener sus propias
dependencias internas.
A continuación se muestra un ejemplo de Makefile utilizado para generar la aplicación de
los nodos:
include Makefile.component
include $(TOSROOT)/apps/MakeXbowlocal
include $(MAKERULES)
El entorno de desarrollo tiene declarado unas variables de entorno que son empleadas
para agilizar la generación de reglas (makerules), así como para referenciar rutas relativas
(tosroot). El fichero MakeXbowlocal, proporciona una vía rápida para los cambios que pueda
realizar el usuario, sobre la potencia de transmisión, canal de emisión o identificador del grupo de
sensores.
A.2.2.- Makefile.component
Este fichero describe a alto nivel la configuración del componente. Un componente se
caracteriza por poseer un nombre que lo identifica y trabajar sobre una placa de sensor en
concreto, la cual viene especificada por la marca del modelo. La directiva que identifica el sensor
79
A.2.- Estructura de una aplicación
sirve para dar información al compilador sobre las sentencias de compilación que debe utilizar a la
hora de generar el código.
Un ejemplo de programación de este archivo para el sensor MDA100 empleado en el
desarrollo del proyecto sería:
COMPONENT = MiAplicacion
SENSORBOARD = mda100
A.2.3.- Configuración de la aplicación
El nombre establecido en el Makefile.component debe de corresponderse con el
nombre del fichero de configuración, acabado con la extensión “.nc”. Este módulo emplea la
interfaz llamada StdControl, la cual proporciona las funcionalidades básicas para la inicialización,
puesta en marchada y parada, de una aplicación basada en el sistema operativo TinyOS.
Las siguientes líneas son una muestra de la programación para este módulo:
configuration MiAplicacion
{
}
implementation
{
components Main, MiAplicacionM, TimerC, LedsC;
Main.StdControl -> TimerC.StdControl;
Main.StdControl -> MiAplicacion.StdControl;
MiAplicacionM.Timer -> TimerC.Timer[unique(“Timer”)];
MiAplicacionM.Leds -> LedsC.Leds;
}
Conceptualmente las aplicaciones de TinyOS son una colección de componentes y un
planificador llamado “Main”. Este planificador ejecuta las tareas creadas por los componentes que
se incluyen en la configuración y es el primero en ejecutarse dentro del sistema operativo. La
interfaz “StdControl” utilizada por el planificador permite inicializar y arrancar los componentes
preparados para TinyOS.
En el componente llamado “MiAplicacionM”, es donde va a residir la implementación de
la aplicación. Los componentes “TimerC” y “LedsC” son módulos definidos por el sistema para
aprovechar el hardware de los nodos, de los cuales ya se dispone su implementación, actuando
como interfaces proveedoras de servicios para otros componentes nuevos.
80
APÉNDICE A. Programación en nesC
La configuración recoge todos aquellos servicios que son utilizados por un componente,
los cuales pueden ser provistos por una o más interfaces. En la implementación se deberá
especificar un nombre para la instancia de la interfaz, que debe coincidir con la empleada en este
fichero. Un ejemplo serían los nombres “Timer” o “Leds”.
La razón por la que existe de modo separado la configuración e implementación, es para
proporcionar al desarrollador un conjunto de librerías de componentes que puedan ser
reutilizadas en una amplia gama de aplicaciones.
A.2.4.- Módulo de implementación
Este módulo siguiendo con la nomenclatura del ejemplo debe ser llamado
“MiAplicacionM”, como aparece referenciado en el fichero de configuración. En él es donde se
implementa la programación de las funciones proporcionadas por la interfaz Timer, Leds y
StdControl.
A continuación se expone un ejemplo de implementación:
module MiAplicaciónM
{
provides
{
interface StdControl;
}
uses
{
interface Timer;
interface Leds;
}
implementation
{
//Inicializa el componente.
//devuelve SUCCESS siempre
command result_t StdControl.init() {
call Leds.init();
return SUCCESS;
}
//Arranca la aplicación
//devuelve SUCCESS siempre
command result_t StdControl.start() {
return call Timer.start(TIMER_REPEAT, 1000); //1s
}
//Pausa la ejecución de la aplicación
//devuelve SUCCESS siempre
command result_t StdControl.stop() {
return call Timer.stop();
}
//Se ejecuta cada vez que termina la cuenta del temporizador
//devuelve SUCCESS siempre
81
A.2.- Estructura de una aplicación
event result_t Timer.fired()
{
call Leds.redToggle();
return SUCCESS;
}
}
}
La interfaz “StdControl” provee tres funciones básicas para el sistema operativo: init(),
start(), stop(). La mayor parte de los componentes disponen también de alguna de estas llamadas
para su inicialización o parada. El Timer es un ejemplo de ello, el cual hace un start y un stop a la
par con el planificador.
Por otra parte, una interfaz puede estar formada por algunas funciones las cuales se
corresponden a eventos del sistema. La función “timer.fired” es una muestra, se produce cuando
el tiempo de reloj fijado expira. Esto es un ejemplo, de la bidireccionalidad de la interfaz
(proporciona comandos para ser llamados por el usuario y se lanzan eventos que son
implementados por él).
LedsC además de proporcionar las funciones ya comentadas, posee una funcionalidad
más, empleada en el “debug” de las aplicaciones a modo de punto de referencia para el
programador, dando idea de por donde pasa el hilo de ejecución de la aplicación. Esta
funcionalidad consiste en iluminar o apagar el led del color especificado en la placa del nodo.
82
APÉNDICE A. Programación en nesC
A.3. Componentes empleados en el proyecto
Para el desarrollo del proyecto ha sido necesaria la utilización de ciertos componentes
para aplicaciones TinyOS. En este apartado se van a recoger y describir dichos componentes,
mostrando un simple ejemplo a modo de uso.
Los componentes empleados se enumeran a continuación:
GenericComm
TimerC
LedsC
HPLCC2420C
Algunos de los componentes presentes en la lista han sido expuestos ya en la sección
anterior, como ejemplo de la estructura de una aplicación en nesC. Estos son “TimerC” y
“LedsC”. Su comportamiento resulta muy intuitivo con lo cual no se va a profundizar más en esta
sección sobre ellos.
A.3.1.- Componente GenericComm
Este componente se emplea para el envío y recepción de mensajes sobre el puerto de
comunicaciones establecido hacia el ordenador o bien por radio. El envío y la recepción residen en
dos interfaces diferentes, las cuales deben ser incluidas en la configuración.
Un ejemplo de la configuración de este componente se expone a continuación, siguiendo
con los nombres ya utilizados en ejemplos anteriores:
configuration MiAplicacion
{
}
implementation
{
components GenericComm as Comm, …;
…
MiAplicacionM.SendMsg -> Comm.SendMsg[AM_XSXMSG];
MiAplicacionM.ReceiveMsg -> Comm.ReceiveMsg[AM_XSXMSG];
…
}
Para la recepción, se implementa el evento “receive” de la interfaz “ReceiveMsg” de modo
que publique una tarea para el procesado del mensaje y mientras se mantiene a la escucha de
83
A.2.- Estructura de una aplicación
nuevos eventos. Las tareas son ejecutadas de modo síncrono, hasta que esta no haya terminada el
hilo de ejecución, el sistema se mantendrá ocupado con su evolución. Si se publican nuevas tareas,
estas son encoladas en una lista para ser procesadas en cuanto el planificador del sistema operativo
lo disponga.
La tarea de procesado de mensajes se ha declarado como “RadioRcvdTask”, en ella según
el nodo en cuestión desarrolla una tarea diferente, la cual se ha comentado con seudo código en la
sección 6.3. Aquí solo resulta relevante el modo de ejecución que hace TinyOS.
Para el envío de mensajes, se requiere de otra tarea que sea publicada cuando se precise
realizar una transmisión, ya sea por radio o vía COMM. Existe una definición de tarea diferente
para cada tipo de envío, puesto que la llamada a la interfaz “SendMsg” difiere. La interfaz provee
de un comando “send” el cual se encarga de realizar las comunicaciones, como parámetro de
entrada recibe la dirección a la que se va a enviar el paquete, pudiéndose corresponder con un
nodo vigente en la red, la propia estación base o bien el COMM de comunicaciones que existe
entre la estación base y el ordenador.
La interfaz “SendMsg”, además, dispone de un evento que se produce cada vez que un
mensaje ha sido enviado, este recibe el nombre de “sendDone”.
Un ejemplo de implementación de un módulo con la utilización de este componente
aparece a continuación:
module MiAplicaciónM
{
…
uses
{
interface SendMsg;
interface ReceiveMsg;
}
implementation
{
…
//Envía un paquete
//no devuelve nada
task void send_radio_msg(){
if (sending_packet) return;
atomic sending_packet=TRUE;
call SendMsg.send(idMote,sizeof(XDataMsg),&msg_buf);
return;
}
//Evento producido cuando se envía un mensaje satisfactoriamente
//devuelve SUCCESS siempre
event result_t SendMsg.sendDone(TOS_MsgPtr msg, result_t success)
{
atomic sending_packet = FALSE;
return SUCCESS;
}
…
84
APÉNDICE A. Programación en nesC
//Evento producido cuando se recibe un mensaje
//devuelve el Mensaje recibido
event TOS_MsgPtr ReceiveMsg.receive(TOS_MsgPtr Msg) {
packReceived = (XDataMsg *)Msg->data;
msgP = Msg;
post RadioRcvdTask();
return Msg;
}
//Procesa el mensaje recibido
//no devuelve nada
task void RadioRcvdTask ){
…
}
}
A.3.2.- Componente HPLCC2420C
Este componente es utilizado para la configuración de los parámetros del chip de la radio.
Algunos de sus parámetros ya se encuentran disponibles en el fichero “Make”, comentado en la
sección anterior, pero para el desarrollo de la aplicación se ha precisado de una configuración más
avanzada, accesible únicamente mediante la interfaz que proporciona.
Lo que se necesita es escribir en el registro encargado de gestionar el control de la
ganancia aplicada a la señal, para que cambie el algoritmo aplicado y permita introducir el valor
deseado, el cual se va a mantener constante durante todas las comunicaciones. Existe una interfaz
llamada “HPLRadio” que permite realizar dicha acción a través del comando “write”. Como
parámetros de entrada se deben indicar la dirección del registro a la que se desea acceder (dicha
dirección puede ser consultada en el manual del chip de radio integrado en la placa) y, también, el
valor a introducir en el registro.
Un ejemplo de la configuración de este componente se puede encontrar a continuación:
configuration MiAplicacion
{
}
implementation
{
components HPLCC2420C, …;
…
MiAplicaciónM .HPLRadio -> HPLCC2420C.HPLCC2420;
…
}
85
A.2.- Estructura de una aplicación
La configuración del valor del registro debe ser realizada en el proceso de inicialización de
que provee el sistema operativo, el cual se encuentra en la interfaz “StdControl”. Tras su
modificación todas las emisiones que se realicen se harán bajo esa regla.
module MiAplicaciónM
{
…
uses
{
interface HPLCC2420 as HPLRadio;;
}
implementation
{
…
//Inicialización de la aplicación
//siempre devuelve SUCCESS
command result_t StdControl.init() {
…
call HPLRadio.write(0x23, 0x1000);
…
}
…
}
}
86
APÉNDICE B. Puesta en marcha del sistema
B.- PUESTA EN MARCHA DEL
SISTEMA
PUESTA EN
MARCHA DEL
SISTEMA
B
Este apéndice expone como se debe proceder para poder utilizar el sistema de localización
desarrollado.
El primer paso fundamental para poder trabajar sobre el sistema es tener instalado el
software proporcionado por el fabricante de los nodos inalámbricos. Este se puede encontrar
dentro del CD que Crossbow proporciona en el kit de trabajo.
El segundo paso es disponer de los nodos inalámbricos con los programas desarrollados
instalados en ellos. Para la instalación de los programas se emplea la herramienta “Programmers
Notepad 2” provista por el fabricante de las placas. Se debe abrir el fichero de configuración del
módulo a instalar mediante la introducción del siguiente comando en la shell:
Make micaz install,X mib520,comY
X hace referencia al número del nodo e Y hace referencia al número del COMM de
programación. Crossbow proporciona los controladores para el puerto USB, cuando se instalan
generan dos COMM nuevos, el de numeración inferior sirve para la programación de los nodos,
el otro es empleado para la comunicación de los paquetes procedentes de la red.
Una vez se tenga los nodos dispuestos, se debe proceder a arrancar el software servidor.
Este es el encargado de generar el socket xml que se vincula a la aplicación de localización, para
que esta pueda procesar los paquetes y realizar los cálculos pertinentes para obtener los puntos en
el espacio. Para lanzar el servidor se necesario abrir el “Cigwin” y escribir el siguiente comando:
Xserve –device=comY –xmlc
Con el servidor preparado, el último paso que queda por hacer es lanzar el sistema de
localización. Para la obtención de buenos resultados, se debe proceder a la calibración del sistema,
ajustando los valores de A y N tras diversas pruebas con varios valores.
87
88
BIBLIOGRAFÍA
[1] K. Aamondt “CC2431 Location Engine” Chipcon Products from Texas Instruments.
[2] Crossbow “XServe Users Manual” Revision D, March 2007.
[3] Crossbow “Moteworks Getting Started” Revision D, March 2007.
[4] Philip Levis “TinyOS/nesC Programming Reference Manual” January 30, 2006.
[5] Crossbow “XMesh Users Manual” Revision C, March 2007.
[6] Crossbow “Moteview Users Manual” Revision A, May 2007.
[7] Chipcon Products from Texas Instruments
Transceiver ” CC2420 2007.
“2.4 GHz IEEE 802.15.4 / ZigBee-ready RF
[8] Dragos Niculescu y Badri Nath “Ad Hoc Positioning System (APS) Using AOA” DATAMAN lab,
Rutgers University.
89