Gps wi fi para ambientes fechados (indoor)

101
UNIVERSIDADE CRUZEIRO DO SUL BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO GPS Wi-Fi para Ambientes Fechados (indoor) - Redes de Sensores sem Fio como infraestrutura Ricardo Francoti São Paulo (SP), Novembro de 2013.

Transcript of Gps wi fi para ambientes fechados (indoor)

Page 1: Gps wi fi para ambientes fechados (indoor)

UNIVERSIDADE CRUZEIRO DO SUL

BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

GPS Wi-Fi para Ambientes Fechados (indoor) - Redes de Sensores sem Fio como infraestrutura

Ricardo Francoti

São Paulo (SP),

Novembro de 2013.

Page 2: Gps wi fi para ambientes fechados (indoor)

UNIVERSIDADE CRUZEIRO DO SUL

BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

GPS Wi-Fi para Ambientes Fechados (indoor) - Redes de Sensores sem Fio como infraestrutura

Ricardo Francoti

Monografia apresentada ao Curso de Bacharelado em Ciência da Computação da Universidade Cruzeiro do Sul, como parte dos requisitos parciais para obtenção do título de Bacharel em Ciência da Computação.

Orientador: Prof. Vagner Silva

São Paulo, Novembro de 2013.

Page 3: Gps wi fi para ambientes fechados (indoor)

Agradecimentos

Ao Prof. Vagner Silva pela disposição, orientação do trabalho com paciência,

compreensão e dedicação.

Aos demais professores que contribuíram para meu aprendizado e

crescimento acadêmico.

A minha esposa, meus pais e familiares, amigos pelo apoio e compreensão

durante a realização deste trabalho para a conclusão deste curso.

Page 4: Gps wi fi para ambientes fechados (indoor)

i

RESUMO

O objetivo principal deste trabalho é propor a utilização de uma infraestrutura

de rede wireless (WLAN WiFi) como suporte para um GPS para ambientes

fechados que estime dinamicamente a localização de dispositivos móveis.

Conhecendo a localização dos access points da rede wireless já existente no

ambiente e utilizando o sinal de rádio frequência emitido por estes é possível

convertê-los em distância e então através do processo de trilateração

determinar a localização do dispositivo móvel. A aplicação deve ser capaz de

realizar este processo sem interferir ou interagir com a infraestrutura de rede

wireless (WLAN WiFi) a exemplo do que faz um GPS em relação aos satélites

do sistema. Esta aplicação pode ser integrada a uma aplicação do tipo

context-aware para fornecer informações de localização que são fundamentais

para este tipo de sistema.

Palavras chave: Redes de Sensores Sem Fio, RSSF, RSSI, Trilateração,

WLAN, WiFi, Localização baseada em RSSI, Heurística.

Page 5: Gps wi fi para ambientes fechados (indoor)

ii

ABSTRACT

The main objective of this work is to propose to use a wireless network

infrastructure (WLAN WiFi) as a support for an indoor GPS running on a mobile

device to estimate its location. Knowing the location of the access points that

are part of an infrastructure of the existing wireless network environment and

using the radiofrequency signal emitted by these it is possible to convert them

into distance and then through the process of trilateration to determine the

location of the mobile device. This application must be able to perform this

process without interfering or interacting with the infrastructure of a wireless

network (WLAN WiFi) like a GPS does with satellites that support the system.

This application can be integrated into a context-aware application to provide

localization information which is essential for this kind of system.

Keywords: Wireless Sensor Network, WSN, RSSI, Trilateration, WLAN, WiFi,

RSSI based localization, Heuristic.

Page 6: Gps wi fi para ambientes fechados (indoor)

iii

Tabela de Figuras

Figura 1 – Tipos de rede de comunicação de dados sem fio (Loureiro, et al., 2011) ................................................................................................................................ 4

Figura 2 – Componentes de um sensor (Gonçalves, et al., 2011) ....................... 5

Figura 3 – Exemplo de um sensor de energia elétrica (General Electric Company, 2011), (Libelium Comunicaciones Distribuidas S.L., 2011) ................ 6

Figura 4 – Elementos de uma RSSF (General Electric Company, 2011) .......... 7

Figura 5 – Comparação entre o RM-OSI e IEEE 802 (IEEE 802, 2001) .......... 10

Figura 6 – Componentes de uma rede Wi-Fi ......................................................... 13

Figura 7 – Personal Area Network – PAN (Kammer, et al., 2002) .................... 14

Figura 8 – Piconet Simples (Kammer, et al., 2002) ............................................... 15

Figura 9 – Piconet Multi-escravo (Kammer, et al., 2002) ..................................... 15

Figura 10 – Scatternet (Kammer, et al., 2002) ....................................................... 16

Figura 11 – Topologia Estrela (IEEE 802.15.4, 2006) .......................................... 17

Figura 12 – Topologia Estrela (IEEE 802.15.4, 2006) ......................................... 18

Figura 13 – Topologia Estrela (Farahani, 2008) .................................................... 19

Figura 14 – Comparação de características das tecnologias apresentadas (Farahani, 2008) ........................................................................................................... 20

Figura 15 – Arquitetura do BlueEyes® em alto nível (FaberNovel, LLC, 2011) 21

Figura 16 – Nucleus® da GE Gerenciamento de energia elétrica através de RSSF (General Electric Company, 2011) ................................................................ 22

Figura 17 – Console de Gerenciamento do Nucleos® (General Electric Company, 2011) ........................................................................................................... 22

Figura 18 – Processo de Monitoração (Federal Express - FedEX, 2011) ........ 23

Figura 19 – Console de Rastreamento e sensor Senseaware® (Federal Express - FedEX, 2011) ............................................................................................. 24

Figura 20 – Ângulo estimado com base em dois sensores âncora (Holger, et al., 2005) ....................................................................................................................... 27

Figura 21 – Trilateração com base em três sensores âncora (Holger, et al., 2005) .............................................................................................................................. 28

Figura 22 – Comparação das técnicas ToA one-way e two-way (Dargie, et al., 2010) .............................................................................................................................. 29

Figura 23 – Técnicas TDoA (Dargie, et al., 2010) ................................................ 30

Figura 24 – Estimativa de localização com base na intersecção de triângulos dos sensores âncoras (Dargie, et al., 2010) ........................................................... 32

Figura 25 – Exemplos de cenários do teste APIT (Dargie, et al., 2010) ............ 34

Figura 26 – Diagrama de Caso de Uso ................................................................... 39

Figura 27 – Diagrama de Classes ............................................................................ 41

Page 7: Gps wi fi para ambientes fechados (indoor)

iv

Figura 28 – Diagrama de Sequência ....................................................................... 41

Figura 29 – Tela do coletor.exe ................................................................................ 43

Figura 30 – Fenômenos que afetam a RF .............................................................. 44

Figura 31 – Valor médio de RSSI por metro .......................................................... 45

Figura 32 – Valor mais frequente de RSSI por metro ........................................... 46

Figura 33 – Valor de n calculado com base no valor médio de RSSI/metro ..... 47

Figura 34 – Valor de n calculado com base no valor mais frequente de RSSI/metro ................................................................................................................... 48

Figura 35 – Comparação da posição real e calculada para o sensor móvel .... 50

Figura 36 – Situações que a heurística evita ......................................................... 54

Figura 37 – RSSI a 1 metro ....................................................................................... 61

Figura 38 – RSSI a 2 metros ..................................................................................... 61

Figura 39 – RSSI a 3 metros ..................................................................................... 62

Figura 40 – RSSI a 4 metros ..................................................................................... 62

Figura 41 – RSSI a 5 metros ..................................................................................... 62

Figura 42 – RSSI a 6 metros ..................................................................................... 62

Figura 43 – RSSI a 7 metros ..................................................................................... 62

Figura 44 – RSSI a 8 metros ..................................................................................... 62

Figura 45 – RSSI a 9 metros ..................................................................................... 62

Figura 46 – RSSI a 10 metros .................................................................................. 62

Figura 47 – RSSI a 11 metros .................................................................................. 63

Figura 48 – Tela inicial do coletor ............................................................................ 64

Figura 49 – Drop box para selecionar o SSID para coleta ................................... 65

Figura 50 – Tela inicial do MyPlace ......................................................................... 66

Figura 51 – Opção para selecionar mapa ............................................................... 67

Figura 52 – Mapa do local de teste de campo carregado .................................... 67

Figura 53 – Tela do menu Sobre .............................................................................. 68

Figura 54 – Locais selecionados para o teste de campo ..................................... 69

Figura 55 – Notebook HP G42 i5 ............................................................................. 90

Figura 56 – Roteador sem fio (AP) TP-LINK TL-WR941ND ................................ 90

Figura 57 – Local dos testes (a) ............................................................................... 91

Figura 58 – Local dos testes (b) ............................................................................... 91

Figura 59 – Local dos testes (c) ............................................................................... 92

Figura 60 – Local dos testes (d) ............................................................................... 92

Page 8: Gps wi fi para ambientes fechados (indoor)

v

Sumário

Introdução .............................................................................................................. 1

Organização do Texto ............................................................................................ 2

Capítulo 1 – Redes de Sensores Sem Fio ............................................................ 3

1.1 Introdução ........................................................................................................ 3

1.2 Estrutura Genérica das Redes de Sensores se Fio ......................................... 4

1.3 Componentes de uma RSSF ............................................................................ 5

1.4 Características de uma RSSF .......................................................................... 7

1.5 Comunicações em uma RSSF ......................................................................... 9

1.6 Tecnologias de Comunicação Empregadas em RSSFs ..................................11

1.6.1 IEEE 802.11 WLAN – Wi-Fi ..........................................................................11

1.6.2 IEEE 802.15.1 WPAN – Bluetooth ...............................................................13

1.6.3 IEEE 802.15.4 WPAN – ZigBee ...................................................................16

1.6.3.1 Topologias .................................................................................................17

1.7 Comparações entre as tecnologias .................................................................19

1.8 Exemplos de RSSFs .......................................................................................20

1.8.1 BlueEyes® – FaberNovel (Bluetooth) ...........................................................20

1.8.2 Smart Grid - GE Nucleos® Energy Manager (ZigBee) .................................22

1.8.3 SenseAware® – FedEX (GRPS) ..................................................................23

Capítulo 2 – Localização .......................................................................................25

2.1 Os problemas para obter a localização ...........................................................25

2.2 Métodos de Localização ..................................................................................25

2.2.1 Técnicas de Localização range-based .........................................................27

2.2.1.2 Time of Arrival (ToA) .................................................................................28

2.2.1.3 Time Difference of Arrival (TDoA) .............................................................29

2.2.1.4 Received Signal Strength Indicator (RSSI) ................................................30

2.2.1.5 Angle of Arrival (AoA) ................................................................................30

2.2.2 Técnicas de Localização range-free .............................................................31

2.2.2.1 Ad Hoc Positioning System (APS) .............................................................31

2.2.2.2 Approximate Point in Triangulation (APIT) ................................................32

2.2.2.3 Localization Based on Multidimensional Scaling (MDS) ............................34

2.2.2.4 Análise de Cena ........................................................................................34

2.2.2.5 Proximidade ..............................................................................................35

Capítulo 3 – Sistema de Localização Dinâmica - MyPlace ...................................36

3.1 Introdução .......................................................................................................36

Page 9: Gps wi fi para ambientes fechados (indoor)

vi

3.2 Requisitos ........................................................................................................36

3.2.1 Requisitos Funcionais ...................................................................... 36

3.2.2 Seleção da Tecnologia para a RSSF ............................................... 36

3.2.3 Requisitos Não Funcionais ............................................................... 37

3.3 Algoritmos .......................................................................................................38

3.4 Diagrama de Caso de Uso ..............................................................................38

3.5 Diagramas de Classes ....................................................................................39

3.6 Diagrama de Sequência ..................................................................................41

3.7 Implementação ................................................................................................42

3.8 Tecnologias Utilizadas.....................................................................................51

Capítulo 4 – Conclusões e Trabalhos Futuros ......................................................52

4.1 Introdução .......................................................................................................52

4.2 Os Problemas ..................................................................................................52

4.2.1 Variável de Atenuação ..................................................................... 52

4.2.1 Trilateração ...................................................................................... 53

4.2 Trabalhos Futuros ...........................................................................................54

Bibliografia.............................................................................................................56

Apêndice A – Medições para Determinar a Variável de Atenuação ......................61

A.1 Gráficos de Dispersão do RSSI metro a metro ...............................................61

Apêndice B – Telas do Coletor.exe .......................................................................64

B.1 Gráficos de Dispersão do RSSI metro a metro ...............................................64

Apêndice C – Telas do MyPlace.exe .....................................................................66

C.1 Telas do MyPlace ...........................................................................................66

Apêndice D – Medições Realizadas pelo Aplicativo ..............................................69

D.1 Teste de Campo do MyPlace ..........................................................................69

Apêndice E – Código Coletor.exe .........................................................................71

Apêndice F – Código MyPlace.exe .......................................................................75

Apêndice F – Equipamentos Usados ....................................................................90

Page 10: Gps wi fi para ambientes fechados (indoor)

1

Introdução

Uma pesquisa revelou que os americanos usam mais seus celulares

inteligentes (smartphones) para pesquisar locais e direções, por meio de

aplicativos Global Positioning System – GPS – do que para postar fotos nas

redes sociais.

O estudo, patrocinado pelo Facebook, mostra as dez atividades mais populares

realizadas através dos smartphones entre os americanos.

São elas: enviar e-mail (78%), ver o Facebook (70%), navegar na web (73%),

achar rotas e direções (64%), jogar games (60%), pesquisar assuntos diversos

(57%), compartilhar e postar fotos (53%), pesquisar estabelecimentos locais

(46%), ler notícias (44%) e assistir a vídeos e à TV (37%).

Segundo a pesquisa, 49% da população americana possui um smartphone, o

que totaliza 155 milhões de pessoas. A estimativa é que, ao fim de 2013,

chegue a 181 milhões de habitantes, 57% dos americanos. A projeção é de

68% em 2017 (International Data Corporation (IDC) , 2013).

A utilidade de um sistema GPS disponível no smartphone é indiscutível,

encontrar um local, o melhor caminho para o destino, conhecer outros locais na

cidade ou no mundo com o auxílio de ferramentas como o Google Maps street

view.

Mas os benefícios do GPS ficam bastante limitados quando tentamos usá-lo

num ambiente fechado quer porque não temos um mapa do local (problema

esse tratado pelo Google Maps Indoor) quer porque o sinal de rádio frequência

– RF – dos satélites não alcançam o GPS.

E se esta funcionalidade estivesse disponível para os ambientes onde o GPS

tradicional não funciona pelas razões já expostas? Esta seria uma ferramenta

muito útil para um público de cerca 100 milhões de pessoas nos Estados

Unidos onde estima-se que mais de 1.000 varejistas já usam algum tipo de

localização indoor para análise e ou melhorar a experiência do consumidor na

loja (The Wall Street Journal, 2013).

Page 11: Gps wi fi para ambientes fechados (indoor)

2

Este é o foco deste trabalho, como disponibilizar os benefícios encontrados

num GPS tradicional em um ambiente fechado através de uma rede de

sensores sem fio.

Organização do Texto

O trabalho está organizado da seguinte forma: O capítulo 1 trata das principais

características de uma Rede de Sensores de Sem Fio – RSSI – e quais as

tecnologias de redes sem fio podem ser usadas para implementar uma

infraestrutura de RSSI. Ainda no capítulo 1 são apresentados exemplos de

sistemas de localização que utilizam estas tecnologias. O capítulo 2 aborda o

problema para obter a localização com redes sem fio e quais são os principais

métodos para resolver este problema. No capítulo 3 são apreasentados os

requisitos funcionais e não funcionais, seleção da tecnologia utilizada como

RSSI, diagramas, implementação e tecnologias utilizadas. Por fim no capítulo 4

são mostradas as conclusões do projeto bem como sugestões de trabalhos

futuros.

Page 12: Gps wi fi para ambientes fechados (indoor)

3

Capítulo 1 – Redes de Sensores Sem Fio

1.1 Introdução

As redes de nós sensores ou simplesmente redes de sensores sem fio – RSSF

– tornaram-se uma interface capaz de conectar o mundo físico ao mundo digital

através da captura e conversão de fenômenos num tipo de informação capaz

de ser processada e armazenada para que então ações relacionadas possam

ser executadas, decisões sejam tomadas ou simplesmente para gerar uma

base histórica e estatística que poderá servir a diversos propósitos.

Esses sensores, integrados em diversos tipos de dispositivos, máquinas e

ambientes têm um enorme potencial para produzir benefícios para a sociedade.

Podem ser usados para os mais diversos fins como monitorar sistemas críticos

de infraestrutura tais como fornecimento de água ou energia elétrica, meio-

ambiente, tráfego, localização em ambientes indoor (fechados), localização de

material num estoque, de equipamentos num hospital, de um bombeiro em um

incêndio (Hui, et al., 2005), segurança patrimonial e pessoal, aumentar a

produtividade, economizar recursos e viabilizar novas aplicações e tecnologias

context-aware (cientes do contexto) (Dargie, et al., 2010). Estas aplicações

podem utilizar sensores aplicados a ambientes outdoors (abertos) ou indoors.

Diversas iniciativas, desde estudos acadêmicos como por exemplo o

desenvolvido pelo MIT (MIT, 2011) até aplicações comerciais como o Smart

Planet da IBM tem aplicado esta tecnologia (IBM, 2011).

Sistemas de localização indoor têm se tornado muito populares em anos

recentes. Estes sistemas fornecem uma nova camada de automação chamada

automatic object location detection (detecção automática da localização do

objeto). Existem muitas aplicações que dependem deste tipo de automação,

como por exemplo, o First Responder Locator System (Worcester Polytechnic

Institute, 2011) ou o SenseAware® (rastreador de encomendas) (Federal

Express - FedEX, 2011).

Page 13: Gps wi fi para ambientes fechados (indoor)

4

1.2 Estrutura Genérica das Redes de Sensores se Fio

Uma Rede de Sensores sem Fio – RSSF pode ser definida sob diferentes

enfoques. Pode ser vista como um tipo especial de rede móvel ad hoc, i.e. com

aplicação específica, uma Mobile ad hoc Network – MANET (Rede Móvel ad

hoc). Em uma rede tradicional, a comunicação entre os elementos

computacionais é feita através de estações rádio base, que constituem uma

infraestrutura de comunicação (Figura 1 (a)). Esse é o caso de uma rede Wi-Fi

onde os elementos da rede se comunicam por meio de um Access Point – AP

(ponto-de-acesso). Já em uma rede MANET os elementos trocam dados

diretamente entre si (Figura 1 (b)). Do ponto de vista de organização, RSSFs e

MANETs são idênticas, já que possuem elementos computacionais que se

comunicam diretamente entre si através de enlaces de comunicação sem fio.

No entanto, uma MANET tem como função básica fornecer um suporte à

comunicação entre esses elementos computacionais, que individualmente,

podem estar executando tarefas distintas. Por outro lado, RSSFs tendem a

executar uma tarefa colaborativa onde os elementos, chamados sensores

fornecem dados, que são processados ou consumidos por nós especiais

chamados sink nodes (sorvedouros) (Loureiro, et al., 2011).

(a) Rede com infraestrutura (b) Rede sem infraestrutura

Figura 1 – Tipos de rede de comunicação de dados sem fio

(Loureiro, et al., 2011)

Uma RSSF é uma rede sem fio formada por um grande número de sensores

pequenos e imóveis implantados em uma MANET para detectar e transmitir

alguma característica física do ambiente. A informação contida nos sensores é

agregada em uma base central de dados. Sob o enfoque de sistemas

Page 14: Gps wi fi para ambientes fechados (indoor)

5

distribuídos uma RSSF pode ser definida também como uma classe particular

de sistemas distribuídos, onde as comunicações de baixo nível não dependem

da localização topológica da rede (Pereira, et al., 2003).

1.3 Componentes de uma RSSF

As RSSFs possuem como elementos principais: o sensor, o observador e o

fenômeno, definidos a seguir:

Sensor: é o dispositivo que implementa a monitoração física de um

fenômeno. Um sensor produz uma resposta mensurável às mudanças em

condições físicas, tais como temperatura, campo magnético e iluminação.

Os dispositivos de detecção, geralmente, têm características físicas e

teóricas diferentes. Muitos modelos de complexidade variada podem ser

construídos baseados na necessidade da aplicação e nas características

dos dispositivos. Na maioria dos modelos de dispositivos sensores a

habilidade de detecção diminui com o aumento da distância do sensor em

relação ao fenômeno e melhora com o aumento do tempo que o sensor fica

exposto para coletar informações. A Figura 2 a seguir ilustra os

componentes típicos de um sensor;

Figura 2 – Componentes de um sensor

(Gonçalves, et al., 2011)

Page 15: Gps wi fi para ambientes fechados (indoor)

6

A Figura 3 a seguir exibe um exemplo de um sensor de fabricação da empresa Libelium e sua aplicação prática.

(a) Aplicação do sensor que

mede o consumo de energia

elétrica

(b) Unidade sensitiva

(c) Unidade de

processamento, energia e

TX/RX

Figura 3 – Exemplo de um sensor de energia elétrica

(General Electric Company, 2011),

(Libelium Comunicaciones Distribuidas S.L., 2011)

Observador: é o usuário final interessado em obter as informações

disseminadas pela RSSF em relação a um fenômeno. Ele pode indicar

interesses ou consultas para a rede e receber respostas destas consultas.

Além disso, podem existir, simultaneamente, múltiplos observadores em

uma RSSF;

Fenômeno: é a entidade de interesse do observador, que está sendo

monitorada e cuja informação será analisada/filtrada pela RSSF. Além

disso, múltiplos fenômenos podem ser observados concorrentemente em

uma rede. Em uma RSSF típica, os sensores individuais apresentam

amostras de valores locais (medidas) e disseminam informações, quando

necessário, para outros sensores e eventualmente para o observador. As

medidas realizadas pelos sensores são amostras discretas do fenômeno

físico, sujeito a medidas precisas do sensor individual, assim como a

localização com respeito ao fenômeno.

Page 16: Gps wi fi para ambientes fechados (indoor)

7

A Figura 4 ilustra os elementos de uma RSSF por meio de um produto

comercial da GE.

Figura 4 – Elementos de uma RSSF

(General Electric Company, 2011)

1.4 Características de uma RSSF

As RSSFs apresentam características peculiares dependendo de sua área

de aplicação:

Endereçamento dos nós: De acordo com a aplicação os nós poderão ser

ou não endereçados. Por exemplo, sensores colocados em encomendas

rastreadas por uma transportadora devem ser individualmente endereçados

já que se deseja conhecer a localização exata da encomenda. Por outro

lado sensores que monitoram um ambiente talvez não precisem ser

individualmente endereçados já que o ponto de interesse é conhecer o valor

de uma variável neste ambiente e não o valor sentido por um sensor em

particular;

Agregação dos Dados: Diz respeito à capacidade de uma RSSF de

consolidar e sumarizar dados coletados pelos sensores. Em uma RSSF

com esta capacidade os dados coletados podem ser sumarizados ainda na

rede, antes de serem enviados à estação base diminuindo a quantidade de

mensagens que precisam ser transmitidas pela RSSF;

Page 17: Gps wi fi para ambientes fechados (indoor)

8

Mobilidade dos sensores: Indica basicamente se os sensores podem ou

não se mover em relação ao sistema em que estão coletando dados;

Restrições dos dados coletados: Neste caso refere-se a alguma restrição

dos sensores para a coleta dos dados tal como um intervalo de tempo para

disseminar seus valores para uma entidade de supervisão;

Quantidade de sensores (escalabilidade): RSSFs destinadas a

monitoramento ambiental em oceanos e florestas podem conter milhares de

sensores, logo escalabilidade é uma questão importante;

Limitação da energia disponível: Novamente dependendo da aplicação

de uma RSSF seus sensores estarão localizados em áreas de difícil acesso

a eles. Neste cenário o tempo de vida de um sensor pode depender da

quantidade de energia disponível. Assim a escolha da aplicação, protocolos

e algoritmos são diretamente afetados por esta característica;

Auto-organização da rede: A disponibilidade de sensores em uma RSSF

pode ser comprometida pela da falta de energia do sensor ou por conta de

outro evento como sua destruição física. Podem ficar incomunicáveis devido

a problemas no canal de comunicação sem fio ou por decisão de um

algoritmo de gerenciamento da rede para economizar energia ou por já

existir outro sensor na região monitorada. Sensores inativos podem também

despertar e ingressarem na RSSF. Qualquer que seja o caso é necessário

mecanismos de auto-organização para que a rede continue a executar a

sua função. Essa capacidade deve ser automática e periódica já que a

configuração manual não é viável devido a problemas de escalabilidade e

localização;

Tarefas colaborativas: O objetivo de uma RSSF não é apenas fornecer um

sistema de comunicação, mas principalmente executar alguma tarefa

colaborativa para detectar e estimar eventos de interesse. Devido às

limitações das RSSFs, normalmente os dados são consolidados para

melhorar o desempenho no processo de detecção de eventos. Este

processo é dependente da aplicação que está sendo executada;

Page 18: Gps wi fi para ambientes fechados (indoor)

9

Capacidade de responder a consultas: Uma consulta pode ser feita

diretamente a um sensor ou a um grupo, dependendo da forma de

endereçamento. Dependendo do grau de sumarização requerido pode não

ser possível enviar a informação diretamente ao nodo sorvedouro. Assim

pode ser necessário definir vários nós sorvedouros que irão coletar os

dados em uma dada área e responderão as consultas referentes à sua

região de atuação.

1.5 Comunicações em uma RSSF

A comunicação em uma RSSF pode ser classificada em duas categorias:

de aplicação e de infraestrutura. O protocolo de rede deve suportar estes

dois tipos de comunicação:

Comunicação da aplicação: relaciona-se à transferência do dado

monitorado (ou informação obtida dele) com o objetivo de informar ao

observador algo sobre o fenômeno.

Comunicação de infraestrutura: refere-se à comunicação necessária para

configurar, manter e aperfeiçoar a operação da RSSF. Essa comunicação é

gerada pelos protocolos de rede e de enlace em resposta aos requisitos da

aplicação ou aos eventos na RSSF. Mais especificamente, devido à

natureza ad hoc das RSSFs, elas devem ser capazes de descobrir

caminhos para outros sensores de interesse, para si próprios e para o

observador, desconsiderando a mobilidade ou falha do sensor. A

comunicação de infraestrutura é necessária para manter a rede funcional,

assegurando a robustez da operação em ambientes dinâmicos e

melhorando o desempenho global.

Como a comunicação de infraestrutura representa o overhead do protocolo,

é importante minimizar esta comunicação, assegurando que a rede possa

suportar a comunicação da aplicação de forma eficiente.

Em uma RSSF o meio físico precisa ser compartilhado por diversos

sensores por isso um mecanismo de controle de acesso a este meio é

necessário. No modelo de referência Open Systems Interconnection – OSI

Page 19: Gps wi fi para ambientes fechados (indoor)

10

do Organisation Internationale de Normalisation – ISO este controle é de

responsabilidade da camada chamada Enlace de Dados (Data Link). Esta

camada por sua vez é dividida em duas outras camadas pelo padrão do

The Institute of Electrical and Electronics Engineers – IEEE – em seu

modelo de referência 802, a saber: Medium Access Control – MAC

(Controle de Acesso ao Meio) e Logical Link Control – LLC (Controle Lógico

de Enlace) (IEEE 802, 2001). Há trabalhos acadêmicos que propõem que

um mecanismo de MAC seja desenhado especificamente para RSSF, com

consumo de energia elétrica mais eficiente, um S-MAC – Sensor MAC (Ye,

et al., 2002), (Ramakrishnan, et al., 2005). Entretanto, a exemplo do padrão

IEEE 802.11 (IEEE 802.11, 2007) os padrões IEEE 802.15.1 (IEEE

802.15.1, 2005) e IEEE 802.15.4 referem-se a esta camada apenas como

MAC (Farahani, 2008) conforme ilustrado pela Figura 5.

Figura 5 – Comparação entre o RM-OSI e IEEE 802

(IEEE 802, 2001)

A camada MAC e os protocolos que a compõem trabalham diretamente

sobre a camada física e por isso assume o controle total sobre o meio

físico. Sua principal tarefa é decidir quando um nó irá acessar o meio físico

e resolver qualquer conflito entre os nós quando estes competem entre si

pelo uso do meio físico. Também têm a responsabilidade de corrigir erros

de comunicação que eventualmente ocorram na camada física e executam

outras atividades como formar frames (quadros) para transmissão,

endereçamento e controle de fluxo.

Page 20: Gps wi fi para ambientes fechados (indoor)

11

A eficiência da RSSF em termos de consumo de energia elétrica também é

afetada pela escolha do protocolo MAC. A energia no sensor não é apenas

consumida quando este recebe e transmite dados, mas também quando

este precisa verificar se pode usar o meio físico para transmitir seus dados

(comunicação de infraestrutura), ou quando necessita retransmitir dados

devido a colisões e transmissão de pacotes de controle para mencionar

alguns (Dargie, et al., 2010).

Muitas implementações de RSSF tem sido feitas sobre três padrões que

seguem a recomendação do IEEE 802 e que têm tido boa aceitação no

mercado: IEEE 802.11, IEEE 802.15.1 e o 802.15.4, descritos a seguir:

1.6 Tecnologias de Comunicação Empregadas em RSSFs

Três tecnologias de redes sem fio foram estudadas com o objetivo de

selecionar a tecnologia sobre a qual será desenvolvido um sistema de

localização indoor: IEEE 802.11 WLAN – Wi-Fi, IEEE 802.15.1 WPAN –

Bluetooth e IEE 802.15.4 WPAN – ZigBee, cujas principais características são

apresentadas a seguir.

1.6.1 IEEE 802.11 WLAN – Wi-Fi

Trata-se de um padrão de rede sem fio que pode operar na faixa de frequência

conhecida como Industrial, Scientific and Medical – ISM (Industrial, Científico e

Médico) de 2,4 GHz ou 5 GHz (Coleman, et al., 2009). O termo Wi-Fi significa

“wireless fidelity” que é uma certificação fornecida pela entidade Wi-Fi Alliance

cujo objetivo é garantir a compatibilidade entre dispositivos que usam a

tecnologia IEEE 802.11 (Wi-Fi Alliance, 2011).

Este padrão, também conhecido como Wireless Local Area Network – WLAN

(Rede Local sem Fio) (Coleman, et al., 2009), tornou-se muito popular em anos

recentes em locais públicos que oferecem acesso à Internet, chamados de hot

spots e também nas empresas de maneira geral. Dependendo das revisões do

padrão 802.11 (a,b,g e n) sua largura de banda pode alcançar 11, 54, 108, 150

Mbps. Testes realizados demonstraram que o padrão IEEE 802.11n pode

chegar até 600 Mbps (AirMagnet, 2008) e ter um alcance de até 100 m.

Page 21: Gps wi fi para ambientes fechados (indoor)

12

Este padrão pode operar em duas topologias diferentes:

MANET: Nesta topologia a comunicação entre os dispositivos ocorre

diretamente entre eles (Figura 1 (a));

Infraestrutura: Nesta topologia a comunicação entre os dispositivos ocorre

através de um terceiro dispositivo central e por meio deste conectam-se a

uma infraestrutura de rede e obtêm acesso aos serviços fornecidos por esta

rede (Figura 1 (b));

Diferentes tipos de dispositivos fazem uso deste tipo de rede sem fio tais

como desktops, notebooks, PDA’s, telefones, leitores de código de barras e

sensores entre outros;

Nesta tecnologia de rede os dispositivos que se conectam diretamente uns

aos outros e a uma infraestrutura de rede são chamados de client stations

(estações cliente) e o dispositivo que conecta as client stations a uma

infraestrutura de rede são chamados de access points – AP (ponto de

acesso). Tipicamente um AP com um ou mais client stations conectados a

ele constituem um basic service set – BSS (conjunto de serviços básicos). A

área de cobertura de serviço de uma BSS é chamada de basic area service

– BSA (área de serviços básicos);

Um AP pode fazer parte de diferentes BSSs e também disponibilizar várias

redes lógicas diferentes identificadas por um nome conhecido por service

set identifier – SSID (identificador de serviços básicos). Esta informação

identifica a qual rede lógica a client station irá conectar-se.

A Figura 6 a seguir ilustra os componentes de uma rede Wi-Fi.

Page 22: Gps wi fi para ambientes fechados (indoor)

13

Figura 6 – Componentes de uma rede Wi-Fi

Um AP pode operar em pelo menos três diferentes modos:

Bridge: O AP é convertido em uma bridge (ponte) para conectar dois AP’s

por meio de seus rádios;

Repeater: O AP é convertido num repeater (repetidor) entre outros dois

AP’s;

Scanner: O AP é convertido num sensor para ser usado num wireless

intrusion detection system – WIDS (sistema de detecção de intrusos sem

fio).

O padrão 802.11 inclui o gerenciamento de energia em suas especificações e

seu objetivo é aumentar o tempo de vida da bateria. Isto é muito importante

para dispositivos como smartphones, scanners e telefones Voice over Wi-Fi

VoWi-Fi (voz sobre Wi-Fi). O padrão 802.11 tem dois modos de gerenciamento

de energia. Outros modos de gerenciamento de energia foram adicionados

com os padrões 802.11e e 802.11n respectivamente.

1.6.2 IEEE 802.15.1 WPAN – Bluetooth

O Bluetooth foi criado com o objetivo de substituir o cabeamento necessário

para interligar diferentes dispositivos localizados em uma pequena área, por

isso é classificada como uma Personal Area Network – PAN (Rede de Área

Pessoal). Este padrão também opera na faixa de frequência conhecida como

Page 23: Gps wi fi para ambientes fechados (indoor)

14

ISM de 2,4 GHz. Sua largura de banda de 1 Mbps é menor que a do padrão

Wi-Fi bem como seu alcance.

Figura 7 – Personal Area Network – PAN

(Kammer, et al., 2002)

Por outro lado a quantidade de dispositivos eletrônicos que utilizam a

tecnologia Bluetooth é impressionante: aparelhos de telefone celular,

impressoras, notebooks, câmeras fotográficas digitais, painel de instrumentos

de automóveis, consoles de videogames, televisores e etc. Além disso, os

dispositivos Bluetooth suportam diversos serviços de rede além de TCP/IP.

Tal como acontece com o padrão IEEE 802.11 que possuem um órgão

certificador de aderência ao padrão, o padrão IEEE 802.15.1 também tem.

Trata-se do Bluetooth SIG – Special Interest Group. Através deste órgão é

possível certificar um produto que use esta tecnologia e usar sua logo marca

(Bluetooth Special Insterest Group, 2011).

Em uma rede Bluetooth todos os dispositivos são chamados de peers e

identificados por seu endereço único de 48 bits. Um dispositivo pode ser

configurado como mestre ou escravo. Um dispositivo atuando como mestre

pode conectar-se simultaneamente a sete dispositivos atuando como escravos,

formando assim uma rede piconet (Kammer, et al., 2002). O dispositivo mestre

controla as transmissões e a sincronização entre eles.

A topologia é definida de acordo com a funcionalidade dos dispositivos

(Whitaker, et al., 2003) e podem ser classificadas da seguinte maneira:

Page 24: Gps wi fi para ambientes fechados (indoor)

15

Piconet Simples: 1 dispositivo mestre e 1 dispositivo escravo;

Figura 8 – Piconet Simples

(Kammer, et al., 2002)

Piconet Multi-escravo: 1 dispositivo mestre e até 7 dispositivos escravos

ativos e até 255 escravos sem modo stand-by. Os dispositivos escravos

podem entrar no modo park para liberar a conexão com o dispositivo mestre

permitindo assim que mais que 255 escravos possam se conectar a uma

única rede piconet;

Figura 9 – Piconet Multi-escravo

(Kammer, et al., 2002)

Scatternet: Quando um dispositivo em uma rede piconet multi-escravo faz

parte de outra rede piconet, integrando as duas redes, diz-se que temos

uma topologia scatternet, situação esta em que um dispositivo mestre em

uma rede atua como escravo na outra. Um dispositivo não pode atuar como

mestre simultaneamente em duas redes piconets diferentes.

Page 25: Gps wi fi para ambientes fechados (indoor)

16

Figura 10 – Scatternet

(Kammer, et al., 2002)

Aplicações desenvolvidas para dispositivos móveis que usam a tecnologia

Bluetooth têm de lidar com o desafio do consumo de energia. Por serem

móveis estes dispositivos utilizam baterias que precisam ser recarregadas com

alguma frequência ou substituídas, eventualmente. Se o dispositivo Bluetooth

usar muita energia isto pode ser um problema para a aplicação. Por esta razão

o gerenciamento do consumo de energia é um aspecto importante que deve

ser levado em consideração durante o desenvolvimento da aplicação. Para

gerenciar o consumo de energia este padrão possui quatro modos de operação

(Kammer, et al., 2002).

1.6.3 IEEE 802.15.4 WPAN – ZigBee

Este padrão de rede sem fio opera nas faixas de frequência ISM de 868 MHz

915 MHz e 2,4 GHz. As larguras de banda suportadas por este padrão são 20,

40 e 250 kbps. Alcança tipicamente 10 m (IEEE 802.15.4, 2006), 75 m (Ergen,

2004) ou 100 m (Farahani, 2008).

Esta tecnologia também tem um órgão certificador a exemplo das tecnologias

anteriores. Trata-se do ZigBee Alliance. Por meio deste órgão é possível

certificar um produto que use esta tecnologia e usar sua logo marca (ZigBee

Alliance, 2011).

Antes deste padrão ter sido desenvolvido a ZigBee Alliance trabalhou em uma

tecnologia de comunicação de baixo custo para larguras de banda igualmente

Page 26: Gps wi fi para ambientes fechados (indoor)

17

baixas e baixo consumo de energia elétrica. O IEEE e ZigBee Alliance por fim

unificaram o padrão e ZigBee tornou-se o nome comercial da tecnologia IEEE

802.15.4.

1.6.3.1 Topologias

Dependendo dos requisitos da aplicação, uma RSSF que adote esta tecnologia

pode operar em qualquer uma das seguintes topologias: estrela ou ponto a

ponto.

Estrela: Na topologia em estrela a comunicação é estabelecida entre os

sensores e um controlador central único, chamado de coordenador da

Personal Area Network – PAN. Um sensor tem tipicamente alguma

aplicação associada a ele, e é o ponto de iniciação ou de terminação para

as comunicações da RSSF. Um coordenador PAN também pode ter uma

aplicação específica e ser utilizado para iniciar, terminar, ou encaminhar a

comunicação na RSSF. O coordenador da PAN é o controlador primário da

PAN. O coordenador da PAN pode muitas vezes ser eletricamente

alimentado pela rede de infraestrutura, enquanto que os sensores

provavelmente serão eletricamente alimentados por uma bateria.

Aplicações que se beneficiam de uma topologia em estrela incluem

automação doméstica, computadores pessoais (PC), periféricos,

brinquedos, jogos e dispositivos de cuidados de saúde pessoal;

Figura 11 – Topologia Estrela

(IEEE 802.15.4, 2006)

Page 27: Gps wi fi para ambientes fechados (indoor)

18

Ponto a ponto: Nesta topologia também há um coordenador PAN, no

entanto, diferente da topologia estrela qualquer sensor pode comunicar-se

com qualquer outro sensor, enquanto eles estão ao alcance um do outro.

Aplicações como controle industrial e monitoramento, de ativos e controle

de estoque, agricultura inteligente e segurança beneficiaria de uma RSSF

com este tipo de topologia. Este tipo de topologia permite que uma RSSF

implemente funcionalidades de self-organization (auto-organização) e self-

healing (auto-correção).

Também pode permitir o roteamento de mensagens através de múltiplos

saltos a partir de qualquer sensor para qualquer outro sensor na RSSF. Tais

funções podem ser adicionadas à camada superior, mas não fazem parte

deste padrão (IEEE 802.15.4, 2006).

Figura 12 – Topologia Estrela

(IEEE 802.15.4, 2006)

Uma rede ponto a ponto pode assumir diferentes formas a partir de restrições

impostas sobre os sensores que podem se comunicar uns com os outros. Se

não houver nenhuma restrição, a topologia ponto a ponto é conhecida como

uma topologia mesh (malha).

Outra forma de topologia ponto a ponto é a topologia em árvore, conforme

ilustrado pela Figura 13 ou cluster-tree (agrupamento de árvores) (IEEE

802.15.4, 2006). Neste caso, um coordenador PAN estabelece a rede inicial.

Sensores atuando como roteadores formam os ramos e transmitem as

Page 28: Gps wi fi para ambientes fechados (indoor)

19

mensagens. Sensores finais atuam como folhas da árvore e não participam do

roteamento de mensagens. Sensores roteadores podem expandir a RSSF para

além da RSSF inicialmente estabelecida pelo coordenador PAN (Farahani,

2008).

Figura 13 – Topologia Estrela

(Farahani, 2008)

1.7 Comparações entre as tecnologias

As redes sem fio de curto alcance podem ser divididas em duas categorias

principais: Wireless Local Area Networks – WLANs (Redes Locais sem Fio) e

Wireless Personal Area Networks – WPANs (Redes Pessoais sem Fio).

A WLAN foi criada para substituir ou estender as redes cabeadas – Local Area

Networks – LAN (redes locais) tal como a Ethernet – IEEE 802.3. Um

dispositivo WLAN, geralmente um AP, pode ser conectado a uma LAN, e uma

vez que a WLAN se torna parte da LAN esta segunda irá tratar a primeira como

qualquer outro dispositivo cabeado.

A WPAN, por outro lado, não foi desenvolvida para substituir as LANs. As

WPANs foram criadas para fornecer os meios para comunicações sem fio com

eficiência energética dentro do personal operating space – POS (espaço de

atuação pessoal).

WPANs são divididas em três classes: High-Rate – HR WPANs, Medium-Rate

MR WPANs e Low-Rate LR WPANs. Um exemplo de uma HR-WPAN é o IEEE

802.15.3 com uma taxa de transferência de 11 a 55 Mbps. O IEEE 802.15.1

Page 29: Gps wi fi para ambientes fechados (indoor)

20

com uma taxa de transferência de 1 a 3 Mbps é um exemplo de uma MR-

WLAN e o IEEE 802.15.4 que trabalha com uma taxa de transferência de 250

Kbps é classificado como uma LR-WPAN (Farahani, 2008).

Figura 14 – Comparação de características

das tecnologias apresentadas

(Farahani, 2008)

1.8 Exemplos de RSSFs

Alguns exemplos de sistemas de localização para ambientes fechados que

utilizam as tecnologias apresentadas.

1.8.1 BlueEyes® – FaberNovel (Bluetooth)

A RATP, uma das maiores empresas de transporte público do mundo,

patrocinou o desenvolvimento e experimento de uma ferramenta de localização

interna para operar nas estações de metrô de Paris para inicialmente guiar

pessoas com deficiência visual. Este sistema está sendo testado em cinco

estações de metrô da cidade de Paris. O experimento foi agora expandido para

outros perfis de usuário, incluindo os idosos, usuários de transportes

ocasionais e turistas.

O BlueEyes® usa uma RSSF onde os sensores são dispositivos Bluetooth.

Estes sensores compõem um sistema de balizamento que emite sinais com um

alcance de até 15 m com informações da sua própria localização e que são

usados pelo aplicativo no telefone celular para determinar a localização do

Page 30: Gps wi fi para ambientes fechados (indoor)

21

usuário. Estes sinais emitidos pelas balizas são chamados Bluetooth beacons

(frames que mantêm a rede sincronizada ou indicam a existência de um

dispositivo sem fio). Um web server é o responsável por armazenar

informações de mapas e respectivas balizas utilizadas para a orientação do

usuário.

Nenhum outro equipamento específico é necessário. O aplicativo informa ao

usuário a rota que deve seguir pelos corredores e salões de passageiros, da

mesma forma como os motoristas são guiados por sistemas de GPS. O

BlueEyes® atualmente não dá acesso a informações em tempo real.

(FaberNovel, LLC, 2011).

Para fazer uso desta ferramenta os usuários devem primeiro fazer o download

do aplicativo para seu telefone celular. O usuário pode então programar sua

viagem com antecedência (a partir de casa ou na rua), inserindo uma estação

de partida e uma estação de destino. Logo que chegam à entrada da estação

de partida, o usuário é identificado pelo sistema de orientação e recebe

instruções através do seu telefone móvel. Ele é guiado passo-a-passo para seu

destino final, recebendo orientações audívies e instruções visuais (setas de

direção) cada vez que se encontra ao alcance de um Bluetooth beacon. Se o

usuário cometer um erro, o sistema automaticamente o redireciona. O usuário

pode reproduzir a mensagem do último beacon, se necessário. (RATP, 2009).

Figura 15 – Arquitetura do BlueEyes® em alto nível

(FaberNovel, LLC, 2011)

Page 31: Gps wi fi para ambientes fechados (indoor)

22

1.8.2 Smart Grid - GE Nucleos® Energy Manager (ZigBee)

Smart Grid é uma iniciativa e ao mesmo tempo uma plataforma tecnológica que

pretende adicionar inteligência à forma como a energia elétrica é consumida.

Diversos produtos têm sido desenvolvidos com este objetivo.

O GE Nucleus® Energy Manager é um appliance desenvolvido para trabalhar

integrado a uma RSSF composta por um medidor inteligente, eletrodomésticos

integrados a sensores, que enviam informações de interesse desta aplicação

sobre o consumo de energia, e eventualmente outros dispositivos móveis como

smartphone que rodam o software de gerenciamento (General Electric

Company, 2011).

As Figuras 16 e 17 na página seguinte ilustram os componentes do GE

Nucleus® Energy Manager.

Figura 16 – Nucleus® da GE Gerenciamento de energia elétrica

através de RSSF

(General Electric Company, 2011)

Figura 17 – Console de Gerenciamento do Nucleos®

(General Electric Company, 2011)

Page 32: Gps wi fi para ambientes fechados (indoor)

23

1.8.3 SenseAware® – FedEX (GRPS)

SenseAware® é uma aplicação de rastreamento de cargas com capacidade

para localizar a carga em ambiente internos e externos. Utiliza a infraestrutura

da rede de telefonia celular para informar sua localização, através de GPRS ou

SMS, que é obtida através de um GPS embutido no sensor.

Enquanto a carga circula dentro das instalações da FedEX, o sensor é

monitorado pela RSSF instalada nestes locais (Federal Express - FedEX,

2011).

Por meio de uma aplicação o observador pode acompanhar o deslocamento da

carga e através de outros sensores pode ainda saber se a embalagem foi

aberta – unidade sensitiva de luz, a temperatura a que foi exposto – unidade

sensitiva de temperatura, entre outros. Em resumo, o sensor permite saber não

apenas onde a carga está, mas também como a carga “se sente”.

A monitoração muito próxima do tempo real em que os eventos ocorrem

permite que uma intervenção seja feita em algum ponto do transporte antes

que o conteúdo da carga seja comprometido.

Preparar, empacotar e despachar

Monitoração e colaboração

Receber e retornar o sensor

Figura 18 – Processo de Monitoração

(Federal Express - FedEX, 2011)

Page 33: Gps wi fi para ambientes fechados (indoor)

24

Figura 19 – Console de Rastreamento e sensor Senseaware®

(Federal Express - FedEX, 2011)

Page 34: Gps wi fi para ambientes fechados (indoor)

25

Capítulo 2 – Localização

Neste capítulo abordaremos o problema da localização e quais as principais

técnicas comumente aplicadas para solucionar este problema.

2.1 Os problemas para obter a localização

Modelar a propagação das ondas de rádio frequência não é tarefa fácil em um

ambiente indoor devido ao efeito multipath (múltiplos caminhos), pouca

probabilidade de se obter line-of-sight (LOS) (visada direta entre os dispositivos

de rádio) e informações específicas do ambiente tais como layout do andar,

objetos móveis e as várias superfícies reflexivas que podem existir no local.

Ainda não há uma técnica considerada boa para modelar o efeito multipath

num ambiente indoor. À exceção do uso da triangulação tradicional, algoritmos

de localização que usam análise de cena ou proximidade são desenvolvidos

para mitigar erros de medição. Estes três tipos de algoritmos possuem

vantagens e desvantagens únicas, por isso usar mais de um tipo deles ao

mesmo tempo pode produzir melhores resultados.

2.2 Métodos de Localização

As relações espaciais entre os sensores e os fenômenos que eles monitoram

são parte fundamental da informação que um sensor fornece. Sem saber a

posição de um sensor, suas informações revelam apenas uma parte da

história. Por exemplo, sensores implantados em uma floresta com o objetivo de

avisar sobre a ocorrência de incêndios serão muito mais úteis se forem

capazes de informar onde está acontecendo o incêndio.

O conhecimento da localização exata é fundamental para atividades tais como:

roteamento baseado em informações geográficas, rastreamento de objetos e

serviços location-aware (ciente da localização) e de localização. Localização é

a tarefa necessária para determinar as coordenadas físicas de um sensor ou

um grupo de sensores. Esta atividade compreende um conjunto de técnicas e

mecanismos que permitem a um sensor estimar a sua própria localização com

Page 35: Gps wi fi para ambientes fechados (indoor)

26

base em informações coletadas a partir da região em que o sensor se

encontra.

A localização de um sensor pode ser expressa como uma métrica global ou

relativa. Métricas globais são usadas para localizar sensores dentro de um

sistema global de referência, tais como as coordenadas de longitude e latitude

métricas fornecidas pelo Global Positioning System – GPS (Sistema de

Posicionamento Global) ou com as zonas e faixas de latitude fornecidas pelo

Universal Transverse Mercator – UTM (Sistema Universal de Mercator). Em

contraste, as métricas relativas são baseadas em sistemas de coordenadas

arbitrárias como, por exemplo, a localização de um sensor expressa como a

distância entre ele e outros sensores sem qualquer relação com um sistema

global de referência. Estas são informações de localização física. Outras

aplicações como, por exemplo, sistemas de localização interna podem requerer

apenas uma localização simbólica tal como “lanchonete”, “Quilômetro 10 da

rodovia SP-141” ou “banheiro”.

Em uma RSSF pode ser inviável que todos os sensores tenham conhecimento

de sua localização global por isso muitas RSSFs contém um subconjunto de

sensores que conhecem sua localização global. Estes sensores são chamados

de âncoras e são usados pelos outros sensores para obterem suas

localizações.

As técnicas de localização que se baseiam em sensores âncoras são

chamadas de anchor-based localization (localização baseada em âncora)

enquanto que as que não são baseadas em âncoras são chamadas de anchor-

free localization (localização livre do uso de âncora).

Um grande número de técnicas de localização é baseado em técnicas de

medição da distância, i.e. estimativa da distância entre diversos sensores.

Estas técnicas, chamadas de range-based (baseadas na medição da distância)

requerem que os sensores monitorem características mensuráveis tais como,

por exemplo, a potência do sinal de rádio (Dargie, et al., 2010).

Page 36: Gps wi fi para ambientes fechados (indoor)

27

2.2.1 Técnicas de Localização range-based

O fundamento de várias técnicas de localização é a estimativa da distância

entre dois sensores. As estimativas são obtidas através da medição de

determinadas características dos sinais trocados entre dois sensores tais como

tempo de propagação do sinal, sua potência e ângulo de chegada.

A medição da distância pode ser feita por meio de métodos conhecidos como

triangulação e trilateração.

Triangulação – Esta técnica faz uso das propriedades geométricas dos

triângulos para estimar a localização dos sensores. A triangulação baseia-

se na obtenção de ângulos a partir dos quais formará triângulos justapostos

ou sobrepostos. Pelo menos duas linhas de orientação e a localização dos

sensores âncoras ou a distância entre eles são necessárias para determinar

a localização de um sensor num espaço bidimensional (Dargie, et al., 2010);

Figura 20 – Ângulo estimado com base em dois sensores âncora

(Holger, et al., 2005)

Trilateração – No caso da trilateração é necessário estimar as distâncias

até os sensores âncoras cujas posições são conhecidas (Trilateration

Method, 2010). Dada a localização de um sensor âncora e a sua distância

até o sensor (que pode ser obtida através dos métodos RSSI, ToA e TDoA

explicados adiante neste capítulo (Holger, et al., 2005)) cuja localização se

pretende obter é sabido que o sensor deve estar localizado em algum ponto

da circunferência do circulo cujo centro é a posição do sensor âncora. A

distância entre eles é igual ao raio desta circunferência. Em um espaço

bidimensional são necessárias medições de distâncias de pelo menos três

Page 37: Gps wi fi para ambientes fechados (indoor)

28

sensores âncoras que não estejam arranjados linearmente, ou seja, é

necessária a intersecção de três círculos (Dargie, et al., 2010).

Figura 21 – Trilateração com base em três sensores âncora

(Holger, et al., 2005)

2.2.1.2 Time of Arrival (ToA)

O conceito por detrás da técnica Time of Arrival – Tempo de Chegada (ToA) é

que a distância entre o emissor e o receptor de um sinal pode ser determinado

usando a medição do tempo de propagação do sinal e a velocidade conhecida

do sinal. Por exemplo, as ondas sonoras viajam a uma velocidade de 343 m/s

(em 20º C), portanto, um sinal sonoro leva aproximadamente 30 ms para viajar

a distância de 10 m. Em contraste, um sinal de rádio viaja na velocidade da luz

(aproximadamente 300 km/s) e portanto precisa de apenas aproximadamente

30 ns para viajar 10 m. Por isso medições feitas com base em ondas de rádio

necessitam de relógios com grande precisão, aumentando o custo e a

complexidade de uma RSSF. O método one-way (sentido único) ToA mede o

tempo de propagação entre o momento de envio do sinal e o momento de

chegada deste mesmo sinal, ilustrado na Figura 22 (a) na página seguinte, por

isso requer uma sincronização altamente precisa entre os relógios do emissor e

do receptor do sinal.

Page 38: Gps wi fi para ambientes fechados (indoor)

29

(a) (b)

Figura 22 – Comparação das técnicas ToA one-way e two-way

(Dargie, et al., 2010)

Por isso o método two-way (sentido duplo) ToA é preferível. Neste caso o

tempo de ida e volta do sinal é medido no emissor do sinal Figura 22 (b) acima.

Observe que no método one-way o receptor calcula sua localização enquanto

que no método two-way o emissor é quem calcula a localização do receptor.

Portanto, uma terceira mensagem será necessária no método two-way para

informar ao receptor a sua localização (Dargie, et al., 2010).

2.2.1.3 Time Difference of Arrival (TDoA)

A técnica Time Difference of Arrival – Diferença entre o tempo de chegada

(TDoA) usa dois sinais que viajam em velocidades diferentes, como ilustrado

na Figura 23 na página seguinte. O receptor é capaz então de determinar sua

localização semelhantemente ao método ToA. Por exemplo, o primeiro sinal

poderia ser um sinal de rádio (emitido em t1 e recebido em t2, seguido por um

sinal acústico imediatamente ou algum intervalo de tempo depois. Esta técnica

não requer que os relógios dos sensores, emissor e receptor, sejam

sincronizados e podem obter medições bem precisas. A desvantagem do TDoA

é a necessidade de dispositivos adicionais para enviar os dois sinais, por

exemplo, um microfone e um alto-falante no caso do exemplo mencionado.

Page 39: Gps wi fi para ambientes fechados (indoor)

30

Figura 23 – Técnicas TDoA

(Dargie, et al., 2010)

Uma variação desta técnica é a utilização de um único sinal, para estimar a

localização do emissor, recebido por vários receptores com suas respectivas

localizações conhecidas. O tempo que o sinal demora em alcançar cada

receptor depende da distância entre o emissor e cada receptor. Uma análise

correlacional pode então fornecer o tempo de viagem do sinal até os

receptores. Sua principal desvantagem é que os relógios dos receptores devem

estar rigorosamente sincronizados (Dargie, et al., 2010).

2.2.1.4 Received Signal Strength Indicator (RSSI)

A técnica baseada no Received Signal Strenght Indicator – RSSI (Indicador de

Potência do Sinal Recebido) baseia-se no conceito de que um sinal perde

potência na medida em que se propaga. Esta é uma característica comum

encontrada em dispositivos de rede e pode ser usado para medir a amplitude

do sinal de rádio recebido. Os drivers de muitas placas de redes sem fio

informam o RSSI, entretanto seu significado pode variar de fabricante para

fabricante e não existe padronização dos fabricantes para os valores de RSSI e

os respectivos níveis de sinal indicados. (Dargie, et al., 2010).

2.2.1.5 Angle of Arrival (AoA)

A técnica Angle of Arrival – AoA (Ângulo de Chegada) consiste em determinar

a direção da propagação do sinal, normalmente usando um conjunto de

Page 40: Gps wi fi para ambientes fechados (indoor)

31

antenas ou microfones. O AoA é ângulo entre a direção da propagação e

alguma referência de direção conhecida como “orientação”. Por exemplo,

diversos sensores podem ser espalhados por um ambiente e todos eles

receberão o mesmo sinal, em momentos distintos e as diferenças do tempo de

chegada do sinal em cada receptor, suas amplitudes e fases serão usados

para determinar uma estimativa do ângulo de chegada, o qual por sua vez será

usado para determinar a localização de um sensor. Apesar de ser possível

obter uma precisão da ordem de poucos graus o hardware necessário para

empregar esta tecnologia pode aumentar o tamanho e encarecer

significativamente o custo do sensor (Dargie, et al., 2010).

2.2.2 Técnicas de Localização range-free

Diferentemente das técnicas apresentadas antes que procuram determinar a

distância entre os sensores por meio de técnicas de medição (ToA, TDoA,

RSSI e AoA) e, portanto, pertencem à classe dos algoritmos de localização

range-based. Existem, entretanto outras técnicas que procuram determinar a

localização dos sensores a partir das informações de conectividade e não da

medição de distâncias ou ângulos. Estas técnicas são chamadas de range-free

(não baseados na distância). As técnicas de localização range-free não

requerem hardware adicional e são, portanto, uma alternativa com melhor

custo-benefício em relação aos métodos range-based (Dargie, et al., 2010).

2.2.2.1 Ad Hoc Positioning System (APS)

O Ad Hoc Positioning System APS (Sistema de Posicionamento com

Finalidade Específica) é um exemplo de método de localização baseado em

conectividade distribuída que estima a localização dos sensores com a ajuda

de pelo menos três sensores âncoras. Maior precisão da localização é

alcançada com uma quantidade correspondentemente maior de sensores

âncoras. Neste método os sensores âncoras divulgam sua localização para

todos os outros sensores da rede usando o conceito de distance vector DV –

(Vetor de Distância) por meio do qual os sensores da rede periodicamente

trocam suas tabelas de roteamento com seus vizinhos mais próximos, a um

hop (salto) de distância (Dargie, et al., 2010).

Page 41: Gps wi fi para ambientes fechados (indoor)

32

2.2.2.2 Approximate Point in Triangulation (APIT)

O Approximate Point in Triangulation – APIT (Aproximação de um Ponto por

Triangulação) é um exemplo de método de localização area-based range-free

(baseado na área e sem medição de distância). Similar ao APS, o APIT

funciona a partir de vários sensores ancoras que conhecem sua própria

localização com o auxilio de um GPS, por exemplo. Qualquer combinação de

três sensores âncoras forma uma região triangular e a presença de um sensor

dentro ou fora desta região permite a um sensor determinar sua provável

localização. O passo chave na localização APIT é o teste Point In Triangulation

– PIT (ponto na triangulação) que permite que um sensor determine o conjunto

de triângulos dentro dos quais o sensor se encontra. Após o sensor M ter

recebido de um grupo de sensores âncoras mensagens com informações de

localização, este sensor avalia todos os possíveis triângulos formados pelos

sensores âncoras. Um sensor estará fora de um dado triângulo ABC formado

pelos sensores âncoras A, B e C, se houver outro sensor adjacente a M que

esteja simultaneamente mais longe ou mais próximo dos pontos A, B e C. Caso

contrário M estará dentro do triângulo ABC que poderá ser adicionado ao

conjunto de triângulos no qual M está inserido. Este conceito é ilustrado na

Figura 24.

Figura 24 – Estimativa de localização com base na intersecção de

triângulos dos sensores âncoras

(Dargie, et al., 2010)

Infelizmente um teste PIT perfeito é inviável uma vez seria necessário que os

sensores pudessem se mover em qualquer direção. Entretanto um teste APIT

Page 42: Gps wi fi para ambientes fechados (indoor)

33

pode ser usado em redes com uma densidade suficiente de sensores. A ideia é

simular o movimento dos sensores no teste PIT perfeito usando informações da

vizinhança que é trocada entre os sensores via beacons. Por exemplo, a força

do sinal entre os sensores e um sensor âncora pode ser usada para estimar

qual sensor está mais próximo do sensor âncora. Então, se nenhum sensor

vizinho do sensor M está mais distante ou mais próximo dos três sensores

âncoras A, B e C simultaneamente, M assume que está dentro do triângulo. A

Figura 25 ilustra este conceito.

No grafo da esquerda o sensor M tem quatro sensores vizinhos que não se

encontram simultaneamente mais próximos ou distantes de qualquer um dos

três sensores âncoras. Portanto, o sensor M conclui que está dentro do

triângulo ABC.

A situação é diferente no grafo da direita no qual o vizinho 4 está mais próximo

de todos os três sensores âncoras do que o sensor M, enquanto que o sensor

2 está mais distante dos sensores âncoras do que o sensor M, portanto, o

sensor M conclui que deve estar fora do triângulo ABC. Porém, este método

pode levar o sensor a conclusões erradas porque o número de sensores

vizinhos que podem ser avaliados é finito.

Por exemplo, na Figura 25 o grafo da esquerda, se a força do sinal do sensor 4

indicar que ele está mais distante do sensor âncora B do que o sensor M,

talvez por conta de um obstáculo entre o sensor âncora B e o sensor 4, o

sensor M concluiria estar fora do triângulo ABC.

Ao final do teste APIT uma posição estimada pode ser calculada com o centro

de gravidade da intersecção de todos os triângulos nos quais M esteja inserido

(Dargie, et al., 2010).

Page 43: Gps wi fi para ambientes fechados (indoor)

34

Figura 25 – Exemplos de cenários do teste APIT

(Dargie, et al., 2010)

2.2.2.3 Localization Based on Multidimensional Scaling (MDS)

Multidimensional scaling – MDS (escala multidimensional) tem sua origem na

psicometria e psicofísica, trata-se de um conjunto de técnicas de análise de

dados que exibem a estrutura dos dados de distância como uma figura

geométrica. Aplicada à localização o MDS pode ser usado em técnicas

centralizadas de localização, onde um dispositivo com grande capacidade de

processamento, como uma estação rádio base, coleta informações da rede,

determina a localização dos sensores e divulga esta informação de volta para a

rede. A rede é representada como um grafo não direcionado de n sensores (m

< n que são sensores âncoras e que conhecem sua própria localização) e as

arestas representam as informações de conectividade. Dadas as distâncias

entre todos os pares de sensores, a meta do MDS é preservar a informação de

distância de tal forma que a rede possa ser recriada num espaço

multidimensional. O resultado do MDS será uma versão do layout original da

rede (Dargie, et al., 2010).

2.2.2.4 Análise de Cena

O método análise de cena refere-se aos tipos de algoritmos que inicialmente

coletam as características peculiares dos sinais de rádio, i.e. fingerprints

(impressões digitais) para um local específico e depois as combina com

Page 44: Gps wi fi para ambientes fechados (indoor)

35

medições online realizadas neste mesmo local. O RSSI, por exemplo, é uma

característica usada comumente para análise de cena.

Location fingerprinting (identificação do local) refere-se às técnicas que

combinam o fingerprint de alguma característica do sinal que é peculiar de um

local específico.

Há duas fases no location fingerprinting: offline e online. Durante o estágio

offline um estudo do local (site survey ou treinamento) é realizado no local. As

coordenadas e suas identificações bem como as respectivas medições do

RSSI próximas dos sensores âncoras são coletadas. Depois, durante a fase

online uma técnica de localização usa o RSSI observado neste momento e o

RSSI coletado na fase anterior para estimar a localização. O maior desafio

desta técnica é que o RSSI pode ser afetado pela difração, reflexão e

scattering (espalhamento) existente nos ambientes indoor.

Existem pelo menos cinco algoritmos de localização baseados no fingerprinting

que utilizam o padrão de reconhecimento do local: métodos probabilísticos, k-

nearest-neighbor – kNN, redes neurais, support vector machine – SVM e

smallest M-vertex polygon – SMP (Hui, et al., 2005).

2.2.2.5 Proximidade

Esta técnica utiliza informação simbólica realtiva a locais específicos do

ambiente. Normalmente depende de uma densidade grande de sensores

âncora cada qual tendo uma posição bem conhecida. Quando um sensor

móvel é detectado por mais de um sensor âncora o sensor móvel é

considerado na região do sensor âncora que recebeu o RSSI mais forte. Este

método é relativamente simples de implementar e pode ser implementado

sobre diferentes tipos de meios físicos. Em particular, os sistemas que usam

infravermelho – IR e identificação por rádio frequência (RFID) são

frequentemente baseados neste método. Outro exemplo é o método cell

identification – Cell-ID (identificação de célula) ou cell of origin – COO (célula

de origem). Este método baseia-se no fato de que redes celulares móveis

podem identificar a localização aproximada de um dispositivo móvel ao

identificar qual célula o dispositivo está usando num determinado instante.

Page 45: Gps wi fi para ambientes fechados (indoor)

36

Capítulo 3 – Sistema de Localização Dinâmica - MyPlace

3.1 Introdução

O MyPlace é uma aplicação que determina a localização de dispositivos

móveis (sensores móveis) através de uma RSSF e pode ser usado como parte

de um sistema de localização indoor empregado para auxiliar a movimentação

de pessoas, localização de objetos ou ainda fornecer informações tais como a

localização de uma loja, de sanitários, a proximidade de uma escada ou de

elevadores.

3.2 Requisitos

3.2.1 Requisitos Funcionais

A aplicação deve ser capaz de indicar a localização física do sensor móvel

usando como referência sensores âncora instalados no ambiente em que se

pretende que a localização seja realizada.

A localização deve ser exibida em um mapa e ser atualizada à medida que

o equipamento ou o usuário se movimenta no local.

A localização deve ser possível sem que seja necessário que a aplicação

no sensor móvel conecte-se, por um enlace de rádio, a qualquer um dos

sensores âncora.

3.2.2 Seleção da Tecnologia para a RSSF

Para a compor a infraestrutura da RSSF foram avaliadas três tecnologias:

Bluetooth, ZigBee e WiFi, cujas características estão descritas no capítulo 1

deste trabalho.

As seguintes características presentes em cada uma destas tecnologias foram

usadas para compará-las e então selecionar qual delas seria mais apropriada

para este trabalho:

Page 46: Gps wi fi para ambientes fechados (indoor)

37

Tabela 1 – Características Comparadas para Seleção da Tecnologia (A

Software Framework for Application Development using ZigBee Protocol, 2009)

Consumo de Energia – Embora o consumo de energia no Wi-Fi seja maior

que no ZigBee e Bluetooth, embora importante não é proibitivo;

Alcance – O alcance limitado do Bluetooth praticamente inviabiliza sua

aplicação;

Escalabilidade – ZigBee e Wi-Fi permitem um crescimento dos nós

âncoras bastante grande. O crescimento da quantidade de dispositivos

Bluetooth aumenta muito a complexidade da infraestrutura;

Facilidade de Desenvolvimento – Este item diz respeito à disponibilidade

de ferramentas, compiladores, exemplos e suporte ao desenvolvimento;

Capilaridade – A maioria dos ambientes fechados já possui um ou mais

Access Points – AP – Wi-Fi.

3.2.3 Requisitos Não Funcionais

A infraestrutura para a RSSF deve ser composta de pelo menos três

sensores âncora (APs) padrão IEEE 802.11 WLAN – Wi-Fi. O sensor móvel

deve ter uma interface de rede padrão IEEE 802.11.

O protótipo desta aplicação foi escrita em C# e compatível com os sistemas

operacionais: Microsoft Windows XP SP 3, Windows Vista e Windows 7.

Para obter a informação do RSSI foi usada a biblioteca Managed Wifi API

Page 47: Gps wi fi para ambientes fechados (indoor)

38

(Monfort Software Engineering, 2007) que por sua vez usa a Native Wifi API

(Microsoft Corporation).

O método de localização usado deve ser o da trilateração com uso do RSSI

como informação para obter a localização do objeto dentro área de atuação da

RSSF.

Para a aplicação da trilateração devem ser usados três sensores âncora,

instalados não linearmente, em uma topologia de infraestrutura e cuja

localização física é conhecida a priori. A localização deverá ser obtida na forma

de um par ordenado (x, y) usado para indicar a posição estimada do

equipamento em um mapa em escala que represente área de interesse da

RSSF como um plano cartesiano.

3.3 Algoritmos

Na classe LeRssi lemos 10 amostras de RSSI, classificamos estas amostras

através do logaritmo Insertion Sort de complexidade de tempo O(n2).

Na classe CalcPos basicamente temos cálculos sem laços ou repetições.

3.4 Diagrama de Caso de Uso

O diagrama de caso de uso é apresentado na Figura 26.

Ator Usuário: Consulta sua posição, i.e. a do equipamento em que é

executado o aplicativo.

Page 48: Gps wi fi para ambientes fechados (indoor)

39

Figura 26 – Diagrama de Caso de Uso

Ator Sensor Âncora (1, 2 e 3): Fornece o sinal RSSI que será usado pelo

aplicativo para calcular sua própria posição.

3.5 Diagramas de Classes

O diagrama de classes é apresentado na Figura 27.

O aplicativo é composto por três classes:

Classe MyPlace/Form – Esta classe cria o objeto formulário que inicia a

aplicação, carrega o mapa sobre o qual se pretende exibir a localização do

sensor móvel.

Principais Métodos:

o openToolStripMenuItem_Click – Permite selecionar o mapa que será

usado.

o IniciarLocToolStripMenuItem_Click – Exibe o mapa carregado na tela

e inicia o processo recursivo de localização do sensor móvel. Recebe

de LeRssi.listBSS() o RSSI de três sensores. Envia para

CalcPos.calcPos(): a variável de atenuação do ambiente (path loss

exponent), o valor da atenuação do RSSI a um metro do sensor

móvel e os valores de RSSI por sensor âncora âncoras para o

Page 49: Gps wi fi para ambientes fechados (indoor)

40

cálculo da localização do sensor móvel. Por fim recebe a localização

dos sensores âncoras na forma de um par ordenado (x, y).

Classe leRSSI – Esta classe lê uma quantidade específica de amostras

com o valor do RSSI de cada um dos sensores âncora e seleciona o melhor

sinal, i.e. o mais frequente em relação a cada um dos sensores âncora;

Principais Métodos:

o listBSS() – Procura por 3 sensores âncoras com o BSS MyPlace,

obtém 10 amostras de RSSI de cada um deles e armazena num

vetor;

o ordenaAmostrasPorRSSI() – Classifica os valores das amostras de

RSSI;

o obtemModa() – Conta quantas vezes um valor de RSSI ocorre no

vetor;

o ordenaAmostrasPorCont() – Classifica os valores das amostras de

por sua quantidade de ocorrências;

Classe calcPos – A partir do sinal obtido por leRSSI, esta classe converte o

sinal em metros e calcula a posição do sensor móvel na forma de um par

ordenado (x, y).

Principal Método:

o CalcPos() – Recebe a variável de atenuação do ambiente, o valor da

atenuação do RSSI a um metro do sensor móvel e os valores de

RSSI por sensor âncora âncoras para o cálculo da localização do

sensor móvel. A partir destas informações calcula a posição do

sensor móvel e devolve sua coordenada na forma de um par

ordenado (x, y).

Page 50: Gps wi fi para ambientes fechados (indoor)

41

Figura 27 – Diagrama de Classes

3.6 Diagrama de Sequência

O diagrama de sequência é apresentado na Figura 28.

Figura 28 – Diagrama de Sequência

Page 51: Gps wi fi para ambientes fechados (indoor)

42

3.7 Implementação

Um desafio peculiar para desenvolver este trabalho é obter os valores do RSSI

a partir da interface de rede sem fio visto que há pouca documentação que

explique como usar as APIs do Windows para interagir com a interface de

WLAN. Uma biblioteca fácil de usar é a Advanced WiFi-Manager provida pela

Nicomsoft (Nicomsoft Ltd.), entretanto ela foi descontinuada. Por esta razão

optamos por usar a biblioteca Managed Wifi API (ikonst, 2010) que usa a

Native Wifi API disponível no Microsoft Windows desde as versões XP SP2 e

Vista.

Para obter a posição do sensor móvel utilizando a trilateração é necessário

determinar sua posição em relação a posição de cada sensor âncora. Esta

informação é obtida a partir da leitura do RSSI proveniente de cada um dos

sensores âncoras. O RSSI de cada sensor âncora é então convertido para

metros e com esta informação a trilateração pode determinar a posição do

objeto móvel. Quando não existe nenhum obstáculo entre o sensor âncora e o

objeto móvel, o RSSI é inversamente proporcional ao quadrado da distância, d,

pela lei do inverso do quadrado da distância.

RSSI d-2 (1)

Entretanto num ambiente real o RSSI varia em uma taxa mais rápida ou mais

lenta conforme as características peculiares do ambiente.

RSSI d-n (2)

Onde n é a variável de atenuação. Uma relação simplificada entre RSSI e

distância para o caso de uma medição de referência de um metro é a seguinte:

RSSI(d) (dBm) = A – 10n x log10(d) (3)

Onde A = RSSI em dBm a um metro de distância, n é a variável de atenuação e

d é a distância entre o sensor âncora e o objeto móvel. Para uma aplicação real

os valores de A e n podem apenas ser obtidos empiricamente (Pu, et al., 2011).

Por esta razão é realizada inicialmente uma fase de treinamento ou site survey

para obter a variável n de atenuação para o ambiente da RSSF. Esta fase de

Page 52: Gps wi fi para ambientes fechados (indoor)

43

treinamento consiste em observar o valor do RSSI emitido pelo sensor âncora

a intervalos de 1 metro.

Quanto maior a quantidade de amostras e o intervalo de observação melhor

poderemos observar o comportamento da RF naquele local, por isso para esta

fase de treinamento foi escrito um programa (coletor.exe) para auxiliar na

coleta dos valores de RSSI x distância. As amostras coletadas são gravadas

num arquivo texto coleta.txt, para posterior tabulação no Microsoft Excel.

A figura 29 exibe a tela do programa coletor. Este programa permite selecionar

os sensores âncoras através de seu SSID ou nome de rede. Identifica ainda

seu MAC address, importante para conhecer cada sensor âncora

individualmente pois sua posição física é fundamental para os cálculos de

distância.

É possível ainda determinar a que distância aquela amostra foi tomada,

quantas amostras serão tomadas e qual o intervalo de tempo entre cada

amostra.

Figura 29 – Tela do coletor.exe

A partir da coleta realizada foi possível determinar o valor mais frequente do

RSSI:

a) A um metro de distância;

Page 53: Gps wi fi para ambientes fechados (indoor)

44

b) A intervalos de um metro de distância em visada livre (LOS – line-of-

sight), i.e. sem obstáculos.

c) Calcular o valor da variável de atenuação do ambiente.

Ainda que cada um dos sensores âncora sejam do mesmo modelo e fabricante

não é possível garantir que cada um deles transmita o sinal de RF da mesma

maneira, o procedimento acima foi realizado para cada um dos sensores

âncora para determinar em cada caso qual é seu correspondente valor da

variável de atenuação.

Os gráficos de dispersão para as coletas de RSSI dos três sensores âncora

realizados nesta fase de treinamento são apresentados no apêndice A. Estes

gráficos demonstram o comportamento da RF num ambiente fechado e como

os fenômenos da reflexão, difração e dispersão (Santi, 2005) afetam a leitura

do RSSI dificultando o estabelecimento de uma relação simples RSSI x

distância.

Figura 30 – Fenômenos que afetam a RF

O impacto desta dificuldade é observado no cálculo da variável de atenuação

usada para calcular a distância a partir do RSSI. As tabelas a seguir

demonstram a inconsistência obtida no cálculo da variável de atenuação a

partir dos valores de RSSI coletados.

Para tentar obter um valor consistente com a variação da distância as amostras

coletadas foram tabuladas de duas maneiras diferentes: média aritmética

simples e maior frequência.

Page 54: Gps wi fi para ambientes fechados (indoor)

45

Valores de RSSI Tabulados pelo valor médio n empiricamente observado

m B0487AABDA36 F81A6795CD98 F4EC38D0D762

RSSI n RSSI n RSSI n

1 -26 0 -28 0 -26 0

2 -33 7 -42 14 -33 7

3 -31 2 -43 1 -32 1

4 -34 3 -47 4 -34 2

5 -38 4 -46 1 -44 10

6 -34 4 -48 2 -41 3

7 -40 6 -43 5 -40 1

8 -43 3 -49 6 -42 2

9 -42 1 -47 2 -41 1

10 -44 2 -48 1 -43 2

11 -41 3 -44 4 -43 0

Tabela 2 – Valor médio de RSSI por metro

Figura 31 – Valor médio de RSSI por metro

-60

-50

-40

-30

-20

-10

0

1 2 3 4 5 6 7 8 9 10 11

Valores de RSSI Tabulados pela média

B0487AABDA36 RSSI F81A6795CD98 RSSI F4EC38D0D762 RSSI

Page 55: Gps wi fi para ambientes fechados (indoor)

46

Valores de RSSI Tabulados pela maior frequência n empiricamente observado

m B0487AABDA36 F81A6795CD98 F4EC38D0D762

RSSI n RSSI n RSSI n

1 -23 0 -27 0 -25 0

2 -33 10 -39 12 -31 6

3 -31 2 -43 4 -31 0

4 -35 4 -45 2 -33 2

5 -37 2 -47 2 -43 10

6 -33 4 -47 0 -41 2

7 -39 6 -43 4 -41 0

8 -43 4 -49 6 -41 0

9 -41 2 -45 4 -41 0

10 -43 2 -47 2 -43 2

11 -41 2 -45 2 -43 0

Tabela 3 – Valor mais frequente de RSSI por metro

Figura 32 – Valor mais frequente de RSSI por metro

O propósito de usar dois métodos para coletar o valor de RSSI foi observar

qual destes dois métodos produziria o melhor resultado em função do tempo.

Como a variável de atenuação do ambiente é calculada em função do RSSI

lido de cada sensor âncora, esta variável também terá um valor diferente

também para cada sensor âncora, conforme demonstrado a seguir:

-60

-50

-40

-30

-20

-10

0

1 2 3 4 5 6 7 8 9 10 11

Valores de RSSI Tabulados pela maior frequência

B0487AABDA36 RSSI F81A6795CD98 RSSI F4EC38D0D762 RSSI

Page 56: Gps wi fi para ambientes fechados (indoor)

47

RSSI valor médio n calculado com a fórmula para Path Loss

m B0487AABDA36 F81A6795CD98 F4EC38D0D762

n m n m n m

1 0 1 0 1 0 1

2 2,33 2 4,65 2 2,33 2

3 1,05 3 3,14 3 1,26 3

4 1,33 4 3,16 4 1,33 4

5 1,72 5 2,58 5 2,58 5

6 1,03 6 2,57 6 1,93 6

7 1,66 7 1,77 7 1,66 7

8 1,88 8 2,33 8 1,77 8

9 1,68 9 1,99 9 1,57 9

10 1,80 10 2,00 10 1,70 10

11 1,44 11 1,54 11 1,63 11

Tabela 4 – Valor de n calculado com base no valor médio de RSSI/metro

Figura 33 – Valor de n calculado com base no valor médio de RSSI/metro

0

1

2

3

4

5

1 2 3 4 5 6 7 8 9 10 11

n calculado com a fórmula para Path Loss para RSSI valor médio

B0487AABDA36 F81A6795CD98 F4EC38D0D762

Log. (B0487AABDA36) Log. (F81A6795CD98) Log. (F4EC38D0D762)

Page 57: Gps wi fi para ambientes fechados (indoor)

48

RSSI maior frequência n calculado com a fórmula para Path Loss

m B0487AABDA36 F81A6795CD98 F4EC38D0D762

n M n m n m

1 0 1 0 1 0 1

2 3,32 2 3,99 2 1,99 2

3 1,68 3 3,35 3 1,26 3

4 1,99 4 2,99 4 1,33 4

5 2,00 5 2,86 5 2,58 5

6 1,29 6 2,57 6 2,06 6

7 1,89 7 1,89 7 1,89 7

8 2,21 8 2,44 8 1,77 8

9 1,89 9 1,89 9 1,68 9

10 2,00 10 2,00 10 1,80 10

11 1,73 11 1,73 11 1,73 11

Tabela 5 – Valor de n metro calculado com base no valor mais frequente de

RSSI/metro

Figura 34 – Valor de n calculado com base no valor mais frequente de

RSSI/metro

Observa-se que quando n é calculado a partir do valor mais frequente de RSSI

é possível gerar uma linha de tendência logarítmica discretamente melhor do

que quando usamos o valor médio de RSSI, por esta razão utilizamos o

método do valor mais frequente para coletar os valores de RSSI no momento

de convertê-los de volta para metros para então obtermos a localização do

sensor móvel.

0

1

2

3

4

5

1 2 3 4 5 6 7 8 9 10 11

n calculado com a fórmula para Path Loss para RSSI maior frequência

B0487AABDA36 F81A6795CD98 F4EC38D0D762

Log. (B0487AABDA36) Log. (F81A6795CD98) Log. (F4EC38D0D762)

Page 58: Gps wi fi para ambientes fechados (indoor)

49

A varíavel de atenuação foi obtida aplicando a lei do inverso do quadrado com

a seguinte formula:

(4)

Onde n é a variável de atenuação, Pr(d) é o RSSI informado pelo sensor

âncora, expresso em dBm, medido na distância d até o sensor móvel; d0

geralmente é medido a 1 metro de distância. Depois que Pr(d0) é obtido o

sensor móvel é colocado em outros locais para encontrar n para cada um

destes locais.

Após obter obtido a variável de atenuação n a seguinte fórmula é usada para

converter o RSSI, obtido pelo sensor móvel, em metros:

(5)

Para realizar uma prova de conceito foi utilizado um local com cerca 60 m2 em

que 3 APs foram estratégicamente instalados para servirem como sensores

âncoras e cuja localização era conhecida. O mapa com as localizações estão

no Apêndice D.

Em seguida definiram-se 10 posições neste local onde o sensor móvel seria

colocado (posição real) e o aplicativo executado para obter sua localização

(posição calculada) e os resultados anotados (tabela do apêndice D).

Em cada posição o aplicativo era executado com o sensor móvel colocado em

quatro posições diferentes, norte, sul, leste e oeste. O melhor resultado, i.e.

aquele que apresentou as coordenadas calculadas mais próximas das

coordenadas reais, dentre as quatro medições foi selecionado para compor o

gráfico da figura 34 a qual exibe o resultado produzido pelo aplicativo

identificando o local real do sensor móvel e o local calculado pela aplicação.

Neste gráfico cada par ordenado x, y representa a posição real do sensor

móvel se azul e a posição calculada pelo sensor móvel se vermelha. Para

Page 59: Gps wi fi para ambientes fechados (indoor)

50

facilitar a comparação entre a posição real e calculada os pares ordenados

foram identificados por uma letra minúscula.

Por exemplo, os dois pares ordenados “f” referem-se respectivamente à

posição real do sensor móvel e a posição que o sensor móvel calculou estar.

Figura 35 – Comparação da posição real e calculada para o sensor móvel

Posição Real Posição Calculada Erro

x y x y metros

7 1 1 4 7

3 6 3 5 1

6 11 5 5 6

13 8 12 6 2

13 16 11 13 3

20 11 22 12 2

27 11 28 10 2

26 3 20 5 6

24 3 21 4 9

22 5 19 6 3

Tabela 6 – Coordenadas reais, calculadas e erro

Page 60: Gps wi fi para ambientes fechados (indoor)

51

Observou-se durante os testes de campo que, não apenas as características

de cada sensor âncora afetam de maneira diversa o cálculo da variável de

atenuação, mas também a direção em que o sensor móvel realiza a medição

do RSSI.

O Apêndice D contém uma tabela com todas as medições realizadas durante o

teste de campo com os diferentes valores obtidos para o RSSI em uma mesma

distância em função da posição em que o sensor móvel realizava a medição.

O programa realiza a leitura de 10 de amostras de RSSI de cada sensor âncora

e então seleciona o valor com a maior frequência. São estes valores que são

usados para calcular a distância do sensor móvel até cada sensor âncora e

então com a aplicação da trilateração estimar sua localização.

3.8 Tecnologias Utilizadas

O Sensor Móvel foi desenvolvido num equipamento HP G42 Notebook PC,

Intel ® Core™ i5 CPU M 460 @ 2,53GHz, RAM 3 GB, 64 Bits. O software foi

desenvolvido com os seguintes software:

Microsotf ® Windows 7 Home Basic ©

CodePlex Managed Wifi API

Microsoft Native Wifi API

Microsoft Visual Studio 2010 Premium

Microsoft Visual C# 2010

Para os Sensores Âncoras foram usados 3 roteadores wireless TP-Link modelo TL-WR941ND (N 300Mbps).

Page 61: Gps wi fi para ambientes fechados (indoor)

52

Capítulo 4 – Conclusões e Trabalhos Futuros

4.1 Introdução

A localização dinâmica de objetos baseada em RSSF, em locais fechados,

pode ser muito útil e se prestar a diversas aplicações, entretanto, sua

dependência de uma infraestrutura de sensores, quando baseada em uma

infraestrutura de rede wireless (WLAN WiFi), pode tornar o investimento tão

alto, devido a escalabilidade necessária, que a solução se torna

economicamente inviável.

Por esta razão o objetivo deste trabalho foi apresentar uma proposta de

aproveitamento da infraestrutura de rede wireless (WLAN WiFi) existente como

uma infraestrutura de RSSF para prover as informações necessárias para

determinar a localização de um sensor móvel.

Sua principal vantagem reside no fato de que os sensores móveis não

precisam estar conectados aos sensores âncoras para obter sua posição

reduzindo assim o custo da infraestrutura da rede wireless (WLAN WiFi) e

aumentando sua escalabilidade.

4.2 Os Problemas

Durante o desenvolvimento deste trabalho encontramos algumas dificuldades

resumidas a seguir:

Variável de atenuação (path loss);

Trilateração.

4.2.1 Variável de Atenuação

Presumimos um comportamento uniforme e constante para a variável de

atenuação, mas durante a implementação do trabalho constatamos que esta

consideração não é válida para ambientes reais onde esta variável pode e de

fato muda subitamente devido a influência de próprio ambiente tais como

pessoas circulando entre o sensor móvel e os sensores âncoras.

Page 62: Gps wi fi para ambientes fechados (indoor)

53

De fato modelar o comportamento do sinal de RF tem sido historicamente uma

das tarefas mais dificeis para os projetistas de redes sem fio (Santi, 2005).

Portanto, esta característica da propagação da RF em um ambiente fechado

impõem a necessidade de uma modelagem mais precisa do que aquela usada

neste trabalho.

Para tratar este problema verificamos métodos diferentes de tabulação para

encontrar uma relação direta do valor de RSSI x distância: média aritmética

simple e maior frequência do valor de RSSI por distância. Usamos a

frequência.

Ainda assim os valores coletados e tabulados não apresentaram uma curva

logarítmica perfeita da atenuação, i.e. a atenuação calculada não é uniforme

devido aos fenômenos já mencionados. A polarização da antena dos

dispositivos móveis também agrava a situação visto que mudando a direção

destes, ainda que no mesmo local, a medição do RSSI sofre alterações

significativas que impactam a precisão dos cálculos.

Uma das soluções encontradas foi a aplicação de uma heurística. Ela consiste

em um valor diferente de RSSI e da variável de atenuação (threshold), obtida

na tabulação inicial também, a partir de uma certa distância para compensar

esta distorção da medição do RSSI. E isso para cada sensor âncora diferente.

A escolha do threshold foi feita a partir da observação da curva de atenuação

do RSSI e de n (tabela 5 e figura 33). Com isso conseguimos melhorar o

resultado do programa.

4.2.1 Trilateração

No caso da trilateração o algoritmo implementado presume que sempre haverá

uma interscção perfeita dos circulos formados pelos três sensores âncora o

que na prática não é verdade.

O que observamos é que se o valor de RSSI obtido e convertido para metros

for um sinal ruim, que não representa bem a distância entre o sensor âncora e

o sensor móvel, poderemos ter uma situação em que não exista a intersecção

dos 3 círculos que é condição sine qua non para o algoritmo.

Page 63: Gps wi fi para ambientes fechados (indoor)

54

Também neste caso adotamos uma heurística para garantir que sempre haja

uma intersecção entre os círculos formados pelos sensores.

Figura 36 – Situações que a heurística evita

A heurística basicamente não admite valores para as distâncias entre os

sensores que sejam maiores que os limites do ambiente de testes. A partir das

coordenadas dos sendores, que presume-se estejam localizados não

linearmente e nos extremos do ambiente, é calculada a distância máxima entre

o sensor móvel e os sensores âncoras de modo a garantir a intersecção dos

círculos.

4.2 Trabalhos Futuros

Para o tratamento do problema com a variável de atenuação sugerimos a

aplicação de filtros estatísticos tais como os filtros de Kalman e a aplicação de

métodos matemáticos como o método dos mínimos quadrados para melhor

estimação dos valores de RSSI (Azenha, et al., 2010).

Já para tratar o problema da trilateração sugerimos a adição de sensores

âncoras adicionais e consequentemente a mudança do algoritmo para usar

matrizes.

Do ponto de vista de aplicações, seria bastante útil que os parâmetros do

ambiente para os cálculos fossem obtidos a partir de um web service. O

mesmo se aplica ao mapa do ambiente no qual a aplicação permite a

Page 64: Gps wi fi para ambientes fechados (indoor)

55

localização dos sensores móveis. Esta aplicação pode ainda ser integrada com

um sistema context-aware (ciente do contexto) e ser portada para dispositivos

móveis, smartphone ou tablet.

Esta aplicação pode ser usada em campanhas de venda e ou para auxiliar

pessoas a se localizar em shopping centers, escolas, terminais rodoviários e

estações de trem ou metrô.

Além dos mapas ajudas audíveis podem estar disponíoveis para auxiliar a

mobilidade de pessoas com algum tipo de deficiência visual.

Traçar rotas para destinos específicos nestes ambientes fechados e fornecer

informações contextualizadas ao longo da rota podem ser fornecidas tais como:

elevadores, sanitários, equipamentos de segurança, telefones públicos,

comércio, ofertas, hora, temperatura entre outras.

Page 65: Gps wi fi para ambientes fechados (indoor)

56

Bibliografia

A Software Framework for Application Development using ZigBee Protocol. Bastin, Savarimuthu Tony Roy, Bruce, Morgan e Maryam, Purvis. 2009. Number 2009/03, Dunedin : University of Otago - Department of Information Science, 2009. ISSN 1177-455X.

AirMagnet. 2008. 802.11n Primer. WLAN Design, Security and Analysis. [Online] Fluke Networks, 5 de Agosto de 2008. http://www.airmagnet.com/assets/whitepaper/WP-802.11nPrimer.pdf.

Azenha, Abílio, Peneda, Luis e Carvalho, Adriano. 2010. IECON 2010 - 36th Annual Conference on IEEE Industrial Electronics Society. IEEE Xplore. [Online] 7-10 de 11 de 2010. [Citado em: 27 de 03 de 2013.] http://ieeexplore.ieee.org.

Bluetooth Special Insterest Group. 2011. Bluetooth. Bluetooth SIG. [Online] Bluetooth SIG, 2011. [Citado em: 20 de Outubro de 2011.] http://www.bluetooth.com/Pages/Basics.aspx.

Coleman, David D. e Westcott, David A. 2009. Certified Wireless NetWork Administrator Official Study Guide. Indiana : Wiley Publishing Inc., 2009. 978-0-470-43890-9.

Dargie, Waltenegus e Poellabauer, Christian. 2010. Fundamentals of wireless sensor networks : theory and practice. Chichester : John Wiley & Sons Ltd., 2010. 978-0-470-99765-9.

Dargie, Waltenegus e Schill, Alexander. 2009. Scientific Commons: Building the Senceive System (2010), 2010-02-27 [Waltenegus Dargie, Alexander Schill]. Scientific Commons. [Online] 17 de Abril de 2009. [Citado em: 28 de Agosto de 2011.] http://en.scientificcommons.org/55059786.

Delicato, Flávia, et al. 2003. Middleware Orientado a Serviços para Redes de Sensores sem Fio. Campus Virtual Cruzeiro do Sul - Blackboard Cruzeiro do Sul. [Online] 8 de Dezembro de 2003. [Citado em: 14 de Outubro de 2011.] http://bb.cruzeirodosulvirtual.com.br/.

Ergen, Sinem Coleri. 2004. Suman Banerjee Web page. Universitie of Wisconsin-Madison - Department of Computer Sciences. [Online] 10 de September de 2004. [Citado em: 29 de February de 2012.] http://pages.cs.wisc.edu/~suman/courses/838/papers/zigbee.pdf. FaberNovel, LLC. 2011. BlueEyes Projets parallèles. BlueEyes. [Online] FaberNovel, LLC, 2011. [Citado em: 26 de Outubro de 2011.] http://www.blueeyes.fr/. Farahani, Shahin. 2008. ZigBee Wireless Networks and Transceivers. Burlington : Elsevier Ltd., 2008. 978-0-7506-8393-7.

Page 66: Gps wi fi para ambientes fechados (indoor)

57

Federal Express - FedEX. 2011. SenseAware. SenseAware. [Online] Federal Express - FedEX, 2011. [Citado em: 21 de Outubro de 2011.] http://www.senseaware.com/. General Electric Company. 2011. Energy Monitor, Home Energy Monitors | GE Nucleus. Nucleus . [Online] General Electric Company, 2011. [Citado em: 27 de Outubro de 2011.] http://www.geappliances.com/home-energy-manager/index.htm. Gonçalves, Prof. Paulo André da S., Dias, Gustavo Neves e Pessôa Filho, Joaquim. 2011. Tópicos Especiais em Computação. Campus Virtual Cruzeiro do Sul - Blackboard Cruzeiro do Sul. [Online] Universidade Federel de Pernambuco, Universidade Federal do Rio de Janeiro e Universidade Cruzeiro do Sul, 2011. [Citado em: 28 de Outubro de 2011.] http://bb.cruzeirodosulvirtual.com.br/. Holger, Karl e Willig, Andreas. 2005. Protocols and architectures for wireless sensor networks. West Sussex : John Wiley & Sons Ltd, 2005. 978-0-470-09510-2. Hui, Liu, et al. 2005. Survey of Wireless Indoor Positioning Techniques and Systems. School of Information Sciences | University of Pittsburgh. [Online] 27 de Setembro de 2005. [Citado em: 17 de Março de 2011.] http://www.sis.pitt.edu/~dtipper/2011/Survey1.pdf. IBM. 2011. IBM - Smarter Planet - United States. IBM Welcome to a smarter planet. [Online] IBM, 2011. [Citado em: 17 de mARÇO de 2011.] http://www.ibm.com/smarterplanet/us/en/?ca=v_smarterplanet. IEEE 802. 2001. 802 IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture. IEEE - The world's largest professional association for the advancement of technology. [Online] Institute of Electrical and Electronics Engineers, 2001. [Citado em: 29 de February de 2012.] http://standards.ieee.org/getieee802/download/802-2001.pdf. IEEE 802.11. 2007. IEEE Std 802.11™-2007, Telecommunications and information exchange between systems--LANs and MANs--Specific requirements--Part 11: WLAN MAC and PHY Specifications. IEEE - The world's largest professional association for the advancement of technology. [Online] 12 de Junho de 2007. [Citado em: 25 de Março de 2011.] http://standards.ieee.org/getieee802/download/802.11-2007.pdf. IEEE 802.15.1. 2005. IEEE Std 802.15.1™ - 2005, Part 15.1: Wireless medium access control (MAC) and physical layer (PHY) specifications. IEEE - The world's largest professional association for the advancement of technology. [Online] 14 de June de 2005. [Citado em: 24 de February de 2012.] http://standards.ieee.org/getieee802/download/802.15.1-2005.pdf. IEEE 802.15.4. 2006. Part 15.4: Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (WPANs). IEEE - The world's largest professional association for the

Page 67: Gps wi fi para ambientes fechados (indoor)

58

advancement of technology. [Online] Institute of Electrical and Electronics Engineers, 2006. [Citado em: 29 de February de 2012.] http://standards.ieee.org/getieee802/download/802.15.4-2006.PDF. ikonst. 2010. Managed Wifi API. CodePlex. [Online] Microsoft Corporation, 01 de 2010. [Citado em: 10 de 12 de 2012.] http://managedwifi.codeplex.com/. International Data Corporation (IDC) . 2013. Case Studies. IDC. [Online] International Data Corporation (IDC) , 29 de 03 de 2013. [Citado em: 12 de 12 de 2013.] www.idc.com/prodserv/custom_solutions/download/case_studies/PLAN-BB_Always_Connected_for_Facebook.pdf. Kammer, David, et al. 2002. Bluetooth Application Developer’s Guide: The Short Range Interconnect Solution. . Rockland : Publishing, Inc, 2002. 1-928994-42-3. Libelium Comunicaciones Distribuidas S.L. 2011. Libelium - Wireless Sensor Networks - ZigBee - Smart Cities. Libelium Comunicaciones Distribuidas Web site. [Online] Libelium Comunicaciones Distribuidas S.L., 2011. [Citado em: 15 de 10 de 2011.] http://www.libelium.com/products/waspmote/. Loureiro, Antonio A.F., et al. 2011. Redes de Sensores Sem Fio. SensorNet. [Online] CNPq e grupos de pesquisa em Computação Móvel, Robótica Móvel e Comunicação Sem Fio da UFMG e UFPE., 2011. [Citado em: 22 de Agosto de 2011.] http://www.sensornet.dcc.ufmg.br/publica/pdf/179_Loureiro_Nogueira_Ruiz_Mini_Nakamura_Figueiredo.pdf. Microsoft Corporation. About the Native Wifi API. MSDN - Microsoft Developer Network. [Online] Microsoft Corporation. [Citado em: 23 de Março de 2013.] http://msdn.microsoft.com/en-us/library/ms705969.aspx. MIT. 2011. MIT SENSEable City Lab. MIT SENSEable City Lab. [Online] MIT – Massachusetts Institute of Technology, 2011. [Citado em: 17 de Março de 2011.] http://senseable.mit.edu/. Monfort Software Engineering. 2007. CodePlex Project Hosting for Open Source Software. CodePlex. [Online] Microsoft Corporation, 14 de Outubro de 2007. [Citado em: 23 de Março de 2013.] http://managedwifi.codeplex.com. Neves, Ricardo Vilar. 2008. http://dspace.c3sl.ufpr.br:8080/dspace. Universidade Federal do Paraná. [Online] 2008. [Citado em: 15 de Março de 2012.] http://dspace.c3sl.ufpr.br/dspace/bitstream/handle/1884/15657/RICARDO%20VILAR%20NEVES_CorrigidoFinal.pdf?sequence=1. Nicomsoft Ltd. Advanced WiFi-Manager. Nicomsoft. [Online] Nicomsoft. [Citado em: 23 de 03 de 2013.] http://www.nicomsoft.com/products/wifi-manager/advanced/.

Page 68: Gps wi fi para ambientes fechados (indoor)

59

Pereira, Marluce R., de Amorim, Cláudio L. e de Castro, Maria Clicia Stelling. 2003. Tutorial sobre Redes de Sensores. Instituo de Matemática e Estatística UFRJ. [Online] Universidade Federal do Rio de Janeiro, Junho de 2003. [Citado em: 17 de Março de 2011.] http://www.ime.uerj.br/cadernos/cadinf/vol14/3-clicia.pdf. ISSN 1413-9014. Pollin, Sofie, et al. 2005. Performance Analysis of Slotted IEEE 802.15.4. UCSC Computer Communication Research Group (CCRG). [Online] University of California, Santa Cruz, 24 de Setembro de 2005. [Citado em: 2 de Abril de 2011.] http://ccrg.soe.ucsc.edu/DAWN/papers/ZigBee_MACvPV.pdf. Pu, Chuan-Chin, Pu, Chuan-Hsian e Lee, Hoon-Jae. 2011. Indoor Location Tracking Using Received Signal Strength Indicator, Emerging Communications for Wireless Sensor Networks. IntechOpen. [Online] 2011. [Citado em: 20 de 05 de 2013.] http://www.intechopen.com/books/emerging-communications-for-wireless-sensornetworks/. ISBN: 978-953-307-082-7. Ramakrishnan, Subah, et al. 2005. Web.NMSU.Edu Web Publishing Services. New Mexico State University. [Online] 24 de June de 2005. [Citado em: 24 de February de 2012.] http://web.nmsu.edu/~jomullen/MyPapers/Ramakrishnan-%20VTC04.pdf. RATP. 2009. BlueEyes: Geolocation for people with reduced mobility. RATP Web site. [Online] RATP (Industrial and commercial public undertaking), 2009. [Citado em: 01 de March de 2012.] http://www.ratp.fr/en/ratp/r_6335/blueeyes-geolocation-for-people-with-reduced-mobility/. Salmi, Jussi. 2006. Radio Communications. Department of Communications and Networking. [Online] 21 de Fevereiro de 2006. [Citado em: 1 de Abril de 2011.] http://www.comlab.hut.fi/opetus/4210/presentations/25_wpan.pdf. Santi, Paolo. 2005. Topology Control in Wireless Ad Hoc and Sensor Networks. West Sussex : John Wiley & Sons Ltd, 2005. 978-0-470-09453-2. Tanenbaum, Andrew S. e Wetherall, David. 2011. Redes de computadores: Comunicação de dados. [trad.] Daniel Vieira e Isaías (Revisão técnica) Lima. s.l. : Pearson Education do Brasil, 2011. 978-85-7605-924-0. The Wall Street Journal. 2013. Business. The Wall Street Journal. [Online] The Wall Street Journal, 9 de 12 de 2013. [Citado em: 9 de 12 de 2013.] http://online.wsj.com/news/article_email/SB10001424052702303332904579230401030827722-lMyQjAxMTAzMDAwODEwNDgyWj-lMyQjAxMTAzMDEwMjExNDIyWj. Trilateration Method. Mardeni, Roslee e Othman, Shaifull Nizam, [ed.]. 2010. Victoria Mahé, Seychelles : EuroJournals Publishing, Inc. 2010, 2010. European Journal of Scientific Research. Vol. 46 No. 1, pp. pp.048-061. http://www.eurojournals.com/ejsr.htm. ISSN 1450-216X Vol.46 No.1 (2010), pp.048-061.

Page 69: Gps wi fi para ambientes fechados (indoor)

60

Whitaker, Roger M., Hodge, Leigh e Chlamtac, Imrich. 2003. Bluetooth scatternet formation: A Survey. Department of Computer Science. [Online] The University of Texas at San Antonio, 1 de Outubro de 2003. http://www.cs.utsa.edu/~korkmaz/teaching/cn-resources/survey-papers/bluutooth-survey05.pdf . Wi-Fi Alliance. 2011. Wi-Fi Alliance: Glossary. Wi-Fi Alliance. [Online] Wi-Fi Alliance, 2011. [Citado em: 28 de Setembro de 2011.] http://www.wi-fi.org/news_articles.php?f=media_news&news_id=64. Wikipedia. 2007. ZigBee. Wikipedia. [Online] Wikipedia, 24 de Janeiro de 2007. [Citado em: 2 de Abril de 2011.] http://en.wikipedia.org/wiki/ZigBee. WNS. 2011. Security in 802.15.4 and ZigBee networks. Wireless Sensor Networks Research Group. [Online] Wireless Sensor Networks Research Group, 2011. [Citado em: 2 de Abril de 2011.] http://sensor-networks.org/index.php?page=0903503549. Worcester Polytechnic Institute. 2011. Precision Personnel Locator - Precision Indoor/Outdoor Personnel Location Project. Precision Personnel Locator. [Online] Worcester Polytechnic Institute, 15 de Setembro de 2011. [Citado em: 21 de Outubro de 2011.] http://www.wpi.edu/academics/ece/ppl/. Ye, Wei, Heidemann, John e Estrin, Deborah. 2002. An Energy-Efficient MAC protocol for Wireless Sensor Networks. USC University of Southern California. [Online] 4 de February de 2002. [Citado em: 24 de February de 2012.] http://www.isi.edu/div7/publication_files/tr-543.pdf. ZigBee Alliance. 2011. ZigBee Certified Program. ZigBee Alliance. [Online] ZigBee Alliance, 2011. [Citado em: 20 de Outubro de 2011.] http://www.zigbee.org/Products/ZigBeeCertifiedProgram.aspx.

Page 70: Gps wi fi para ambientes fechados (indoor)

61

Apêndice A – Medições para Determinar a Variável de Atenuação

A.1 Gráficos de Dispersão do RSSI metro a metro

Com o objetivo de determinar a relação do valor de RSSI x distância

posicionamos o equipamento com o programa coletor a um metro de distância

de cada coletor e realizamos a coleta de 200 amostras a um intervalo de 1

segundo. Este procedimento foi repertido separadamente para cada sensor

âncora.

Depois as amostras de cada sensor âncora foram agrupadas de acordo com a

distância para produzir os gráficos abaixo.

O objetivo aqui era demonstrar como o RSSI varia no mesma posição em

função do tempo por conta da influência dos fenômenos da reflexão, difração e

dispersão (Santi, 2005).

Figura 37 – RSSI a 1 metro Figura 38 – RSSI a 2 metros

Page 71: Gps wi fi para ambientes fechados (indoor)

62

Figura 39 – RSSI a 3 metros Figura 40 – RSSI a 4 metros

Figura 41 – RSSI a 5 metros Figura 42 – RSSI a 6 metros

Figura 43 – RSSI a 7 metros Figura 44 – RSSI a 8 metros

Figura 45 – RSSI a 9 metros Figura 46 – RSSI a 10 metros

Page 72: Gps wi fi para ambientes fechados (indoor)

63

Figura 47 – RSSI a 11 metros

Page 73: Gps wi fi para ambientes fechados (indoor)

64

Apêndice B – Telas do Coletor.exe

B.1 Gráficos de Dispersão do RSSI metro a metro

No início deste trabalho percebemos que não seria possível coletar as

amostras de RSSI manualmente em quantidade com qualidade e precisão. Por

isso foi escrito um programa, o coletor, para mecanizar esta tarefa. O coletor

permite selecionar:

Os sensores âncora de acordo com seu SSID, i.e. o nome da rede

WLAN Wi-Fi;

Informar a que distância aquelas amostras foram tomadas;

A quantidade de amostras para aquela distância;

O intervalo de tempo em segundos entre cada amostra.

Estas amostras são gravadas num arquivo texto para serem importadas e

tabuladas numa planilha de cálculo para obtermos o valor de RSSI a um

metros e calcular o valor da variável de atenuação no ambiente.

Figura 48 – Tela inicial do coletor

Page 74: Gps wi fi para ambientes fechados (indoor)

65

Figura 49 – Drop box para selecionar o SSID para coleta

Page 75: Gps wi fi para ambientes fechados (indoor)

66

Apêndice C – Telas do MyPlace.exe

C.1 Telas do MyPlace

A tela inicial do MyPlace tem um painel que destina-se a exibir o mapa da

região de interesse em que a localização será realziada. No painel de Setup há

um conjunto de parâmetros para cada sensor âncora. Estes parâmetros

servem paras o cálculo da distância e localização do sensor móvel.

Figura 50 – Tela inicial do MyPlace

Para cada sensor deve ser informado:

RSSI a um metro – Valor obtido na coleta realizada na fase de

treinamento;

RSSI Threshold – Valor de RSSI usado para calibrar o RSSI a um

metro;

Variável de Ambiente A – Variável de atenuação obtida com RSSI a

um metro;

Variável de Ambiente B – Variável de atenuação obtida com RSSI

Threshold;

Coordenada X – Coordenada X do sensor âncora, o mapa foi do local

foi convertido em um plano cartesiano;

Coordenada Y – Coordenada Y do sensor âncora.

Page 76: Gps wi fi para ambientes fechados (indoor)

67

Após iniciar o processo de localização o MyPlace indica no painel “Localização

do Sensor Móvel” as coordenadas do sensor móvel. Esta localização será

indica por um cursor sobre o mapa exibido no painel central.

Figura 51 – Opção para selecionar mapa

Figura 52 – Mapa do local de teste de campo carregado

Page 77: Gps wi fi para ambientes fechados (indoor)

68

Figura 53 – Tela do menu Sobre

Page 78: Gps wi fi para ambientes fechados (indoor)

69

Apêndice D – Medições Realizadas pelo Aplicativo

D.1 Teste de Campo do MyPlace

A tabela a seguir é resultado da utilização do MyPlace no local selecionado

para o teste de campo da aplicação.

Dez pontos diferentes no local foram selecionados e suas coordenadas

anotadas. Em seguida o computador com o MyPlace foi posicionado em cada

uma destas coordenadas e o MyPlace executado para obter a localização do

computador ou sensor móvel.

Figura 54 – Locais selecionados para o teste de campo

Em cada coordenada o programa foi executado 4 vezes variando-se a direção

em que o sensor móvel era colocado, norte, sul, leste e oeste.

As coordenadas obtidas foram então comparadas com as coordenadas reais

do sensor móvel.

Page 79: Gps wi fi para ambientes fechados (indoor)

70

RSSI medido em 4 direções Posição Real Posição Calculada

B0487AABDA36 F81A6795CD98 F4EC38D0D762 x y x y

Posição 1 (a) -37 -53 -59 7 1 1 4

Posição 1 (b) -39 -53 -57 7 1 1 4

Posição 1 (c) -39 -59 -55 7 1 1 4

Posição 1 (d) -31 -47 -49 7 1 4 7

Posição 2 (a) -25 -55 -47 3 6 3 5

Posição 2 (b) -29 -51 -41 3 6 4 4

Posição 2 (c) -27 -51 -44 3 6 4 4

Posição 2 (d) -24 -49 -45 3 6 3 5

Posição 3 (a) -39 -51 -49 6 11 5 5

Posição 3 (b) -39 -53 -49 6 11 5 5

Posição 3 (c) -37 -55 -49 6 11 4 4

Posição 3 (d) -37 -59 -51 6 11 1 4

Posição 4 (a) -45 -55 -47 13 8 12 6

Posição 4 (b) -43 -51 -41 13 8 13 4

Posição 4 (c) -49 -51 -41 13 8 23 6

Posição 4 (d) -43 -45 -51 13 8 6 9

Posição 5 (a) -47 -41 -53 13 16 9 13

Posição 5 (b) -51 -41 -53 13 16 9 13

Posição 5 (c) -51 -39 -49 13 16 11 13

Posição 5 (d) -51 -43 -54 13 16 9 13

Posição 6 (a) -49 -51 -41 20 11 23 6

Posição 6 (b) -51 -47 -39 20 11 22 12

Posição 6 (c) -47 -47 -47 20 11 14 9

Posição 6 (d) -47 -45 -47 20 11 14 11

Posição 7 (a) -49 -49 -38 27 11 23 8

Posição 7 (b) -51 -51 -33 27 11 28 10

Posição 7 (c) -47 -53 -33 27 11 25 6

Posição 7 (d) -50 -47 -39 27 11 22 12

Posição 8 (a) -41 -51 -39 26 3 11 4

Posição 8 (b) -44 -53 -37 26 3 15 4

Posição 8 (c) -47 -55 -35 26 3 19 6

Posição 8 (d) -47 -59 -41 26 3 20 5

Posição 9 (a) -47 -53 -37 24 3 21 4

Posição 9 (b) -51 -53 -37 24 3 29 7

Posição 9 (c) -51 -53 -41 24 3 28 7

Posição 9 (d) -43 -54 -39 24 3 13 4

Posição 10 (a) -47 -53 -41 22 5 14 11

Posição 10 (b) -53 -53 -38 22 5 25 12

Posição 10 (c) -43 -51 -41 22 5 13 4

Posição 10 (d) -47 -55 -37 22 5 19 6

Tabela 7 – Valores obtidos no teste de campo

Page 80: Gps wi fi para ambientes fechados (indoor)

71

Apêndice E – Código Coletor.exe

/******************************************************************************** * Ricardo Francoti - RGM 95836-1 * Trabalho de conclusão de curso CCP * Universidade Cruzeiro do Sul - 2013 * Professor Orientador: Vagner Silva * * Programa: Coletor * * Este coleta várias amostras de RSSI em função da distância. Estes valores serão * usados para poder calcular a posição do sensor móvel. * *********************************************************************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using NativeWifi; using System.IO; using System.Threading; namespace WindowsFormsApplication4 { public partial class Form1 : Form { public String ssid; public int aux; public String nomeArq = "c:coleta.txt"; public int dist = 0; public string cont = ""; public string ts = ""; public string rede = ""; public string qdd = ""; public string rssi = ""; public string bss = ""; public string mac = ""; public int qtdeAmostras = 1; public int segundos = 0; public int rssid0 = 0; //potência recebida em 1 m public Form1() { InitializeComponent(); carregaLista(); } private void btScan(object sender, EventArgs e) { lv.Items.Clear(); lv.Items.Add(""); listBSS(); } //fim Scan private void listView1_SelectedIndexChanged(object sender, EventArgs e) { } //Seleciona o SSID private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { ssid = cB.SelectedItem.ToString().ToUpper();

Page 81: Gps wi fi para ambientes fechados (indoor)

72

} //fim public void carregaLista() { cB.Items.Clear(); ssid = ""; WlanClient client = new WlanClient(); try { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); wlanIface.Scan(); foreach (Wlan.WlanBssEntry network in wlanBssEntries) { cB.Items.Add(System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString()); } //foreach end } cB.Items.Add("Todos"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // fim carregaLista //Realiza a coleta public void listBSS() { WlanClient client = new WlanClient(); try { qtdeAmostras = int.Parse(textBox3.Text); // quantas amostras de sinal vamos obter segundos = int.Parse(textBox1.Text); // quantas amostras de sinal vamos obter //Grava um cabeçalio no log em c:coleta.txt cont = "Contador"; ts = "Time Stamp"; rede = "Nome da Rede"; qdd = "Qualidade do Sinal"; rssi = "RSSI"; bss = "Tipo de Rede"; mac = "MAC Address"; gravaColeta(ts, cont, "Distância", rede, qdd, rssi, bss, mac); dist = int.Parse(textBox2.Text); Form2 f2 = new Form2(); f2.Show(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Início do for ----------------------------------------------------------- for (int l = 0; l < qtdeAmostras; l++) { Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (Wlan.WlanBssEntry network in wlanBssEntries) { wlanIface.Scan(); //Verifica se foi selecionado um SSID específico if ((!ssid.Equals("")) && (!ssid.Equals("TODOS"))) { //Coleta informações apenas do SSID selecionado if ((System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString().ToUpper().TrimEnd().Equals(ssid))) { getNICinfo(network); } } else // lista todos que encontrar { getNICinfo(network); } } //foreach end

Page 82: Gps wi fi para ambientes fechados (indoor)

73

System.Threading.Thread.Sleep(1000 * segundos); // Intervalo entre scans } // fim do for ------------------------------------------------------------ } //foreach end f2.Close(); aux = 0; } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void radioButton6_CheckedChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { Application.Exit(); } private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } private void arquivoToolStripMenuItem_Click(object sender, EventArgs e) { } private void sairToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } private void button3_Click(object sender, EventArgs e) { carregaLista(); } private void montaListView() { lv.Items[aux].SubItems.Add(cont); lv.Items[aux].SubItems.Add(ts); lv.Items[aux].SubItems.Add(rede); lv.Items[aux].SubItems.Add(qdd); lv.Items[aux].SubItems.Add(rssi); lv.Items[aux].SubItems.Add(bss); lv.Items[aux].SubItems.Add(mac); lv.Items.Add(""); aux++; } private void gravaColeta(String ts, String cont, String dist , String rede, String qdd, String rssi, String bss, String mac) { StreamWriter sw = new StreamWriter(nomeArq, true); sw.WriteLine(ts + "\t" + cont + "\t" + dist + "\t" + rede + "\t" + qdd + "\t" + rssi + "\t" + bss + "\t" + mac); sw.Close(); } private void Form1_Load(object sender, EventArgs e) { } private void ajudaToolStripMenuItem_Click(object sender, EventArgs e) { Form3 f3 = new Form3();

Page 83: Gps wi fi para ambientes fechados (indoor)

74

f3.Show(); } public void getNICinfo(Wlan.WlanBssEntry network) { int rss = network.rssi; byte[] macAddr = network.dot11Bssid; string tMac = ""; for (int i = 0; i < macAddr.Length; i++) { tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper(); } cont = aux.ToString(); DateTime hoje = DateTime.Now; ts = hoje.ToLocalTime().ToString(); rede = System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString(); qdd = (network.linkQuality).ToString(); rssi = rss.ToString(); bss = (network.dot11BssType).ToString(); mac = tMac; gravaColeta(ts, cont, textBox2.Text, rede, qdd, rssi, bss, mac); montaListView(); } //Consistência para garantir que seja entrado apenas valores numéricos. private void verificaDigitos(object sender, KeyPressEventArgs e) { char ch = e.KeyChar; if (!Char.IsDigit(ch) && ch != 8) { e.Handled = true; } if (ch == 13) { SelectNextControl((Control)sender, true, true, true, true); } } //Consistência para evitar que o campo seja deixado vazio private void verificaConteudo(object sender, EventArgs e) { if (textBox1.Text.Equals("")) { textBox1.Text = "1"; } if (textBox2.Text.Equals("")) { textBox2.Text = "100"; } if (textBox3.Text.Equals("")) { textBox2.Text = "5"; } } } }

Page 84: Gps wi fi para ambientes fechados (indoor)

75

Apêndice F – Código MyPlace.exe /******************************************************************************** * Ricardo Francoti - RGM 95836-1 * Trabalho de conclusão de curso CCP * Universidade Cruzeiro do Sul - 2013 * Professor Orientador: Vagner Silva * * Programa: MyPlace * * Este programa exibe um mapa em escala, consulta os sensores âncora através da classe LeRssi, e obtém * a localização de um sensor móvel através da classe CalcPos. * * ********************************************************************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.IO; // Minhas classes using LeRssinamespace; //Busca o valor de RSSI nos sensores âncoras mais próximos using CalcPosnamespace; //Com base nos valores de 3 sensores âncoras cálcula a localização do sensor móvel namespace MyPlace { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Thread thr; public string caminhoNomeArq = "Layout2.bmp"; //Seleciona o mapa que será usado private void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog arquivo = new OpenFileDialog(); arquivo.InitialDirectory = "C:\\"; arquivo.Filter = "bmp files (*.bmp) | *.bmp | All files (*.*) | *.*"; arquivo.FilterIndex = 2; arquivo.RestoreDirectory = true; if (arquivo.ShowDialog() == DialogResult.OK) { caminhoNomeArq = arquivo.FileName; lbMensagem.Text = "Arquivo selecionado: " + caminhoNomeArq; } else { lbMensagem.Text = "Nenhum arquivo selecionado: "; } } //Carrega o mapa do andar e posiciona cursor em X=10 e Y=40 //e inicia o processo de localizar private void IniciarLocToolStripMenuItem_Click(object sender, EventArgs e) { Bitmap bitmap = new Bitmap(caminhoNomeArq); this.CreateGraphics().DrawImage(bitmap, 10, 40); thr = new Thread(threadr); thr.Start();

Page 85: Gps wi fi para ambientes fechados (indoor)

76

} //Inicia a thread que irá interar o movimento do sensor móvel. public void threadr() { //Exibe o mapa do local no formulário Icon newIcon = new Icon("finger.ico"); int x = 10; int y = 40; this.CreateGraphics().DrawIcon(newIcon, x, y); lbMensagem.Invoke((MethodInvoker)(() => lbMensagem.Text = "Calculando a posição")); //Busca os valores de RSSI dos sensores âncora //myTupleA.Item1 - identificação do Sensor A //myTupleA.Item2 - RSSI do Sensor A //myTupleA.Item3 - identificação do Sensor B //myTupleA.Item4 - RSSI do Sensor B //myTupleA.Item5 - identificação do Sensor C //myTupleA.Item6 - RSSI do Sensor C LeRssi lerRSSI = new LeRssi(); var myTupleA = lerRSSI.listBSS(); //Calcula a localização do sensor móvel //tbVarAtenuacao é informada na tela principal if ((myTupleA.Item2 == 0) || (myTupleA.Item4 == 0) || (myTupleA.Item6 == 0)) lbMensagem.Invoke((MethodInvoker)(() => lbMensagem.Text = "Verifique o(s) sensor(es) com RSSI = 0: " + "[Sensor A: " + myTupleA.Item1 + " " + myTupleA.Item2 + " ] - " + "[Sensor B: " + myTupleA.Item3 + " " + myTupleA.Item4 + " ] - " + "[Sensor C: " + myTupleA.Item5 + " " + myTupleA.Item6 + " ]")); else { // os três sensores entregaram um valor diferente de zero, pode prosseguir. CalcPos calculaPos = new CalcPos(); var myTupleB = calculaPos.calcPos(tbSensorAX.Text, tbSensorAY.Text, tbSensorBX.Text, tbSensorBY.Text, tbSensorCX.Text, tbSensorCY.Text, myTupleA.Item1, myTupleA.Item2, tbd0Sensor1.ToString(), tbThresholdSensor1.ToString(), tbVarAtenSensor1a.ToString(), tbVarAtenSensor1b.ToString(), myTupleA.Item3, myTupleA.Item4, tbd0Sensor2.ToString(), tbThresholdSensor2.ToString(), tbVarAtenSensor2a.ToString(), tbVarAtenSensor2b.ToString(), myTupleA.Item5, myTupleA.Item6, tbd0Sensor3.ToString(), tbThresholdSensor3.ToString(), tbVarAtenSensor3a.ToString(), tbVarAtenSensor3b.ToString() ); //Arredonda as coordenadas e então converte para inteiro int coordX = (int)(Math.Round(myTupleB.Item1, 0)); int coordY = (int)(Math.Round(myTupleB.Item2, 0)); //Escreve as coordenadas em labels de outra thread label15.Invoke((MethodInvoker)(() => label15.Text = coordX.ToString())); label16.Invoke((MethodInvoker)(() => label16.Text = coordY.ToString())); //Multiplicado por 25 porque os valores obtidos para as coordenadas são em metros //e cada grupo de 13 pixels corresponde à 0,5 metro. //A multiplicação é apenas para manter a proporção entre os números de pixels e os metros. this.CreateGraphics().DrawIcon(newIcon, (coordX * 25 + 25), (Math.Abs(coordY * 25 - 495))); lbMensagem.Invoke((MethodInvoker)(() => lbMensagem.Text = "Posição calculada")); //Thread.Sleep(100); } }

Page 86: Gps wi fi para ambientes fechados (indoor)

77

//Para o formulário ocupar toda a tela no início do programa. private void Form1_Load(object sender, EventArgs e) { /* this.Location = new Point(0, 0); this.Size = Screen.PrimaryScreen.WorkingArea.Size; */ lbMensagem.Text = "Nenhum arquivo selecionado ainda. Será usado o arquivo " + caminhoNomeArq; } //Consistência para garantir que seja entrado apenas valores numéricos. private void verificaDigitos(object sender, KeyPressEventArgs e) { char ch = e.KeyChar; if (!Char.IsDigit(ch) && ch != 8 && ch != 44) { e.Handled = true; } if (ch == 13) { SelectNextControl((Control) sender, true, true, true, true); } } //Consistência para evitar que o campo seja deixado vazio private void verificaConteudo(object sender, EventArgs e) { if (tbSensorAX.Text.Equals("")) { tbSensorAX.Text = "3"; } // Coordenada X para o Sensor âncora A if (tbSensorAY.Text.Equals("")) { tbSensorAY.Text = "5"; } // Coordenada Y para o Sensor âncora A if (tbd0Sensor1.Text.Equals("")) { tbd0Sensor1.Text = "-23"; } // RSSI em distância 0 do Sensor âncora no ambiente monitorado if (tbVarAtenSensor1a.Text.Equals("")) { tbVarAtenSensor1a.Text = "2.03"; } // Variável de atenuação obtida no site survey if (tbVarAtenSensor1b.Text.Equals("")) { tbVarAtenSensor1a.Text = "1.96"; } // Variável de atenuação obtida no site survey if (tbSensorBX.Text.Equals("")) { tbSensorBX.Text = "13"; } // Coordenada X para o Sensor âncora B if (tbSensorBY.Text.Equals("")) { tbSensorBY.Text = "13"; } // Coordenada Y para o Sensor âncora B if (tbd0Sensor2.Text.Equals("")) { tbd0Sensor2.Text = "-27"; } // RSSI em distância 0 do Sensor âncora no ambiente monitorado if (tbVarAtenSensor2a.Text.Equals("")) { tbVarAtenSensor1a.Text = "2.94"; } // Variável de atenuação obtida no site survey if (tbVarAtenSensor2b.Text.Equals("")) { tbVarAtenSensor1a.Text = "2.01"; } // Variável de atenuação obtida no site survey if (tbSensorCX.Text.Equals("")) { tbSensorCX.Text = "27"; } // Coordenada X para o Sensor âncora C if (tbSensorCY.Text.Equals("")) { tbSensorCY.Text = "9"; } // Coordenada Y para o Sensor âncora C if (tbd0Sensor3.Text.Equals("")) { tbd0Sensor3.Text = "-25"; } // RSSI em distância 0 do Sensor âncora no ambiente monitorado if (tbVarAtenSensor3a.Text.Equals("")) { tbVarAtenSensor1a.Text = "1.85"; } // Variável de atenuação obtida no site survey if (tbVarAtenSensor3b.Text.Equals("")) { tbVarAtenSensor1a.Text = "1.74"; } // Variável de atenuação obtida no site survey } //Opção de sair no menustrip private void sairToolStripMenuItem_Click(object sender, EventArgs e) { if (thr.IsAlive) { thr.IsBackground = true; Application.Exit(); } }

Page 87: Gps wi fi para ambientes fechados (indoor)

78

//Exibe o formulário sobre private void sobreToolStripMenuItem_Click(object sender, EventArgs e) { Sobre sobre = new Sobre(); sobre.Show(); } private void encerrarThread(object sender, FormClosingEventArgs e) { if (thr.IsAlive) { thr.IsBackground = true; } } private void groupBox3_Enter(object sender, EventArgs e) { } private void label21_Click(object sender, EventArgs e) { } } } /******************************************************************************** * Ricardo Francoti - RGM 95836-1 * Trabalho de conclusão de curso CCP * Universidade Cruzeiro do Sul - 2013 * Professor Orientador: Vagner Silva * * Classe: LeRssi * * Esta classe lê o sinal RSSI de três sensores âncoras (Access Points) conhecidos a priori e identificados * por um SSID específico: MYPLACE. * Serão lidas 10 amostras de RSSI de cada um dos sensores âncoras e selecionado o valor de maior frequência. * A classe retorna então os três melhores sinais RSSI com a identificação dos respectivos sensores âncoras. * * ********************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using NativeWifi; using System.Windows.Forms; using System.IO; namespace LeRssinamespace { public class LeRssi { public int RssiA { get; set; } public String SensorA { get; set; } public int RssiB { get; set; } public String SensorB { get; set; } public int RssiC { get; set; } public String SensorC { get; set; } public int rssiAux { get; set; } public String sensor1 { get; set; } public String sensor2 { get; set; } public String sensor3 { get; set; } public String nomeArq = "c:logMyPlace.txt"; public struct amostrasRSSI { public int rssi; public int cont;

Page 88: Gps wi fi para ambientes fechados (indoor)

79

} public amostrasRSSI[] amostrasSensor1; public amostrasRSSI[] amostrasSensor2; public amostrasRSSI[] amostrasSensor3; public LeRssi() { RssiA = 0; //SensorA = ""; RssiB = 0; //SensorB = ""; RssiC = 0; //SensorC = ""; // MAC addresses dos sensores âncoras para trilateração. sensor1 = "B0487AABDA36"; //Sensor âncora A sensor2 = "F81A6795CD98"; //Sensor âncora B sensor3 = "F4EC38D0D762"; //Sensor âncora C amostrasSensor1 = new amostrasRSSI[10]; amostrasSensor2 = new amostrasRSSI[10]; amostrasSensor3 = new amostrasRSSI[10]; } //Listar Sensores //Buscar o RSSI dos 3 âncoras com base no SSID e seu MAC Address public Tuple<String, int, String, int, String, int> listBSS() { String ssid = "MYPLACE"; char[] espaco = {'\u0000', '\u0020'}; //usado com TrimEnd para remover null e space à direita do SSID WlanClient client = new WlanClient(); try { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Obtém 10 amostras dos sensores âncora for (int amostra = 0; amostra < 10; amostra++) { Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (Wlan.WlanBssEntry network in wlanBssEntries) { //Atualiza as informações da rede sem fio, o RSSI basicamente é que interessa ser atualizado. wlanIface.Scan(); // Se o AP for da rede de sensores, então ler seu RSSI e devolve o par MAC / Rssi if (System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString().ToUpper().TrimEnd(espaco).Equals(ssid)) { byte[] macAddr = network.dot11Bssid; string tMac = ""; for (int i = 0; i < macAddr.Length; i++) { tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper(); } if (tMac.Equals(sensor1)) { amostrasSensor1[amostra].rssi = network.rssi; } if (tMac.Equals(sensor2)) { amostrasSensor2[amostra].rssi = network.rssi; } if (tMac.Equals(sensor3)) { amostrasSensor3[amostra].rssi = network.rssi; } }// fim do if para ssid } //foreach end

Page 89: Gps wi fi para ambientes fechados (indoor)

80

} // fim do for } //foreach end } catch (Exception ex) { Console.WriteLine(ex.Message); } troubleshooting("LeRssi - Antes de classificar RSSI"); ordenaAmostrasPorRSSI(); troubleshooting("LeRssi - Depois de classificar RSSI"); obtemModa(); troubleshooting("LeRssi - Achou a moda"); ordenaAmostrasPorCont(); troubleshooting("LeRssi - Ordenou pela moda"); gravaResultadoNoLog(); return new Tuple<String, int, String, int, String, int>(sensor1, RssiA, sensor2, RssiB, sensor3, RssiC); } // fim listBss //Ordenar Amostras //Classifica os vetores por RSSI (InsertSort) //O objetivo é colocar os RSSIs em ordem para encontrar aquele que ocorre um número maior de vezes. public void ordenaAmostrasPorRSSI() { int i, j, indice; for (i = 1; i < 10; i++) { indice = amostrasSensor1[i].rssi; j = i; while ((j > 0) && (amostrasSensor1[j-1].rssi > indice)) { amostrasSensor1[j].rssi = amostrasSensor1[j-1].rssi; j = j - 1; } amostrasSensor1[j].rssi = indice; } for (i = 1; i < 10; i++) { indice = amostrasSensor2[i].rssi; j = i; while ((j > 0) && (amostrasSensor2[j-1].rssi > indice)) { amostrasSensor2[j].rssi = amostrasSensor2[j-1].rssi; j = j - 1; } amostrasSensor2[j].rssi = indice; } for (i = 1; i < 10; i++) { indice = amostrasSensor3[i].rssi; j = i; while ((j > 0) && (amostrasSensor3[j - 1].rssi > indice)) { amostrasSensor3[j].rssi = amostrasSensor3[j - 1].rssi; j = j - 1; } amostrasSensor3[j].rssi = indice; } } //Obter Moda //Recupera a maior frequência de RSSI. //O objetivo é contar quantas vezes cada valor ocorre.

Page 90: Gps wi fi para ambientes fechados (indoor)

81

//É aqui neste método que amostras[n].cont recebe a quantidade de vezes que RSSI ocorre na leitura das amostras. public void obtemModa() { int i; int cont = 1; for (i = 0; i < 9; i++) { if (amostrasSensor1[i].rssi == amostrasSensor1[i+1].rssi) { amostrasSensor1[i].cont = cont; cont++; } else { amostrasSensor1[i].cont = cont; cont = 1; } } amostrasSensor1[9].cont = cont; cont = 1; for (i = 0; i < 9; i++) { if (amostrasSensor2[i].rssi == amostrasSensor2[i + 1].rssi) { amostrasSensor2[i].cont = cont; cont++; } else { amostrasSensor2[i].cont = cont; cont = 1; } } amostrasSensor2[9].cont = cont; cont = 1; for (i = 0; i < 9; i++) { if (amostrasSensor3[i].rssi == amostrasSensor3[i + 1].rssi) { amostrasSensor3[i].cont = cont; cont++; } else { amostrasSensor3[i].cont = cont; cont = 1; } } amostrasSensor3[9].cont = cont; } //Classificar obtemModa //Classifica os vetores por frequência de RSSI (InsertSort) //O objetivo é encontrar o valor mais significativo para usá-lo na trilateração public void ordenaAmostrasPorCont() { int i = 0; int j = 0; int indice = 0; int rssiAux = 0; for (i = 1; i < 10; i++) { indice = amostrasSensor1[i].cont; rssiAux = amostrasSensor1[i].rssi; j = i; while ((j > 0) && (amostrasSensor1[j - 1].cont > indice)) { amostrasSensor1[j].cont = amostrasSensor1[j - 1].cont; amostrasSensor1[j].rssi = amostrasSensor1[j - 1].rssi; j = j - 1; } amostrasSensor1[j].cont = indice;

Page 91: Gps wi fi para ambientes fechados (indoor)

82

amostrasSensor1[j].rssi = rssiAux; } RssiA = amostrasSensor1[9].rssi; for (i = 1; i < 10; i++) { indice = amostrasSensor2[i].cont; rssiAux = amostrasSensor2[i].rssi; j = i; while ((j > 0) && (amostrasSensor2[j - 1].cont > indice)) { amostrasSensor2[j].cont = amostrasSensor2[j - 1].cont; amostrasSensor2[j].rssi = amostrasSensor2[j - 1].rssi; j = j - 1; } amostrasSensor2[j].cont = indice; amostrasSensor2[j].rssi = rssiAux; } RssiB = amostrasSensor2[9].rssi; for (i = 1; i < 10; i++) { indice = amostrasSensor3[i].cont; rssiAux = amostrasSensor3[i].rssi; j = i; while ((j > 0) && (amostrasSensor3[j - 1].cont > indice)) { amostrasSensor3[j].cont = amostrasSensor3[j - 1].cont; amostrasSensor3[j].rssi = amostrasSensor3[j - 1].rssi; j = j - 1; } amostrasSensor3[j].cont = indice; amostrasSensor3[j].rssi = rssiAux; } RssiC = amostrasSensor3[9].rssi; } // Este método apenas exibe o conteúdo do vetor no momento em que é chamado. public void troubleshooting(String fase) { StreamWriter sw = new StreamWriter(nomeArq, true); int i; for (i = 0; i < 10; i++) { sw.WriteLine(fase + "\t" + amostrasSensor1[i].rssi + "\t" + amostrasSensor1[i].cont);} for (i = 0; i < 10; i++) { sw.WriteLine(fase + "\t" + amostrasSensor2[i].rssi + "\t" + amostrasSensor2[i].cont); } for (i = 0; i < 10; i++) { sw.WriteLine(fase + "\t" + amostrasSensor3[i].rssi + "\t" + amostrasSensor3[i].cont); } sw.Close(); } public void gravaResultadoNoLog() { StreamWriter sw = new StreamWriter(nomeArq, true); sw.WriteLine("Resultado devolvido por LeRssi: " + "\t" + sensor1 + "\t" + RssiA + "\t" + sensor2 + "\t" + RssiB + "\t" + sensor3 + "\t" + RssiC); sw.Close(); } } //fim da classe } //fim do namespace /*********************************************************************************************** * Ricardo Francoti - RGM 95836-1 * Trabalho de conclusão de curso CCP * Universidade Cruzeiro do Sul - 2013 * Professor Orientador: Vagner Silva * * Classe: CalcPos * * Esta classe calcula a posição do sensor móvel a partir do sinal obtido (RSSI) pela classe

Page 92: Gps wi fi para ambientes fechados (indoor)

83

LeRSSI e * devolve para o MyPlace o par ordenado (x, y). * **********************************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace CalcPosnamespace { public class CalcPos { public Double SensorAdist { get; set; } // Distância calculada entre o sensor âncora A e o sensor móvel. public Double SensorBdist { get; set; } // Distância calculada entre o sensor âncora B e o sensor móvel. public Double SensorCdist { get; set; } // Distância calculada entre o sensor âncora C e o sensor móvel. public Double VarAtenuacao { get; set; } // Valor de n ou path loss informado no formulário de entrada de dados. public int Rssid0 { get; set; } // Valor de RSSI a uma metro de distância d0. public CalcPos() { SensorAdist = 0; SensorBdist = 0; SensorCdist = 0; Rssid0 = 0; VarAtenuacao = 0; } //Recebe as coordenadas dos sensores âncoras, os três pares sensor/rssi, valor da atenuação e o valor de RSSI em d0 que serve como referência. public Tuple<double, double> calcPos(String distXa, String distYa, //Coordenadas do sensor âncora A String distXb, String distYb, //Coordenadas do sensor âncora B String distXc, String distYc, //Coordenadas do sensor âncora C String sensorA, int rssiA, String tbd0Sensor1, String tbThresholdSensor1, String tbVarAtenSensor1a, String tbVarAtenSensor1b, //MAC address do sensorA e seu RSSI obtido pelo sensor móvel String sensorB, int rssiB, String tbd0Sensor2, String tbThresholdSensor2, String tbVarAtenSensor2a, String tbVarAtenSensor2b, //MAC address do sensorA e seu RSSI obtido pelo sensor móvel String sensorC, int rssiC, String tbd0Sensor3, String tbThresholdSensor3, String tbVarAtenSensor3a, String tbVarAtenSensor3b //MAC address do sensorA e seu RSSI obtido pelo sensor móvel ) { StreamWriter sw1 = new StreamWriter("c:logMyPlace.txt", true); // Abre arquivo de log int tbd0Sensor1Aux = Int32.Parse(tbd0Sensor1); int tbThresholdSensor1Aux = Int32.Parse(tbThresholdSensor1); int tbVarAtenSensor1aAux = Int32.Parse(tbVarAtenSensor1a); int tbVarAtenSensor1bAux = Int32.Parse(tbVarAtenSensor1b); int tbd0Sensor2Aux = Int32.Parse(tbd0Sensor2); int tbThresholdSensor2Aux = Int32.Parse(tbThresholdSensor2); int tbVarAtenSensor2aAux = Int32.Parse(tbVarAtenSensor2a); int tbVarAtenSensor2bAux = Int32.Parse(tbVarAtenSensor2b); int tbd0Sensor3Aux = Int32.Parse(tbd0Sensor3); int tbThresholdSensor3Aux = Int32.Parse(tbThresholdSensor3); int tbVarAtenSensor3aAux = Int32.Parse(tbVarAtenSensor3a); int tbVarAtenSensor3bAux = Int32.Parse(tbVarAtenSensor3b); int xA = Int32.Parse(distXa); int yA = Int32.Parse(distYa);

Page 93: Gps wi fi para ambientes fechados (indoor)

84

int xB = Int32.Parse(distXb); int yB = Int32.Parse(distYb); int xC = Int32.Parse(distXc); int yC = Int32.Parse(distYc); /////////////////////////////////////////////////////////////////////////////////// // Converção dos RSSI para metros // Heurística para melhorar a precisão cálculo do path loss sw1.WriteLine(" "); sw1.WriteLine("Início da captura"); sw1.WriteLine("Valores do RSSI ................................: " + "\t" + rssiA + "\t" + rssiB + "\t" + rssiC); if (rssiA > tbThresholdSensor1Aux) { if (rssiA > tbd0Sensor1Aux) { SensorAdist = 1; } else { SensorAdist = Math.Pow(10, ((rssiA - (tbd0Sensor1Aux)) / (-10.0 * tbVarAtenSensor1aAux))); // Converte RSSI para metros sw1.WriteLine(" "); sw1.WriteLine("SensorAdist - RSSI em metros com N = ............: " + "\t" + tbVarAtenSensor1aAux + "\t" + SensorAdist); } } else { SensorAdist = Math.Pow(10, ((rssiA - (tbd0Sensor1Aux)) / (-10.0 * tbVarAtenSensor1bAux))); // Converte RSSI para metros sw1.WriteLine("SensorAdist - RSSI em metros com N = ............: " + "\t" + tbVarAtenSensor1bAux + "\t" + SensorAdist); } if (rssiB > tbThresholdSensor2Aux) { if (rssiB > tbd0Sensor2Aux) { SensorBdist = 1; } else { SensorBdist = Math.Pow(10, ((rssiB - (tbd0Sensor2Aux)) / (-10.0 * tbVarAtenSensor2aAux))); // Converte RSSI para metros sw1.WriteLine("SensorBdist - RSSI em metros com N = 2.94........: " + "\t" + SensorBdist); } } else { SensorBdist = Math.Pow(10, ((rssiB - (tbd0Sensor2Aux)) / (-10.0 * tbVarAtenSensor2bAux))); // Converte RSSI para metros sw1.WriteLine("SensorBdist - RSSI em metros com N = 2.01........: " + "\t" + SensorBdist); } if (rssiC > tbThresholdSensor3Aux) { if (rssiC > tbd0Sensor3Aux) { SensorCdist = 1; } else { SensorCdist = Math.Pow(10, ((rssiC - (tbd0Sensor3Aux)) / (-10.0 * tbVarAtenSensor3aAux))); // Converte RSSI para metros sw1.WriteLine("SensorCdist - RSSI em metros com N = 1.85........: " + "\t" + SensorCdist); } }

Page 94: Gps wi fi para ambientes fechados (indoor)

85

else { SensorCdist = Math.Round(Math.Pow(10, ((rssiC - (tbd0Sensor3Aux)) / (-10.0 * tbVarAtenSensor3bAux)))); // Converte RSSI para metros sw1.WriteLine("SensorCdist - RSSI em metros com N = 1.74........: " + "\t" + SensorCdist); } /////////////////////////////////////////////////////////////////////////////////////////////// // Heurística para estabelecer a distância máxima que um sensor móvel pode estar de um sensor âncora. // As distâncias entre o sensor móvel e os sensores âncoras deve estar dentro do limite conhecido a priori e informado // na tela inicial do programa. // Os sensores âncoras devem ser colocados no ambiente não linearmente, formando um triângulo. Suas coordenadas serão usadas para o // MaxDistA >= SensorAdist >= 1; // MaxDistB >= SensorBdist >= 1; // MaxDistC >= SensorCdist >= 1; sw1.WriteLine(" "); sw1.WriteLine("Distâncias ANTES Heurística dist min/max.........: " + "\t" + SensorAdist + "\t" + SensorBdist + "\t" + SensorCdist); int b = xA + xC; int h = yA + yB; double MaxDist1 = Math.Sqrt((Math.Pow(b, 2)) + (Math.Pow(h, 2))); // maior raio desde o sensor A e C double MaxDist2 = Math.Sqrt((Math.Pow(b,2) / 2) + (Math.Pow(h, 2))); // maior raio desde o sensor B double MaxDistA = Convert.ToInt32(MaxDist1 - xA); // Distância máxima a partir do sensor âncora A double MaxDistC = Convert.ToInt32((MaxDist1 - (b - xC))); // Distância máxima a partir do sensor âncora C double MaxDistB = Convert.ToInt32(MaxDist2 - yA); // Distância máxima a partir do sensor âncora B sw1.WriteLine(" "); sw1.WriteLine("Base.............................................: " + "\t" + b); sw1.WriteLine("Altura...........................................: " + "\t" + h); sw1.WriteLine("Distância máxima desde o sensor A................: " + "\t" + MaxDistA); sw1.WriteLine("Distância máxima desde o sensor A................: " + "\t" + MaxDistA); sw1.WriteLine("Distância máxima desde o sensor B................: " + "\t" + MaxDistB); sw1.WriteLine("Distância máxima desde o sensor C................: " + "\t" + MaxDistC); sw1.WriteLine(" "); if (SensorAdist > MaxDistA) { SensorAdist = MaxDistA; sw1.WriteLine("Distância A 1 alterada Heurística dist min/max...: " + "\t" + SensorAdist); } else { if (SensorAdist < 1) { SensorAdist = MaxDistA; sw1.WriteLine("Distância A 2 alterada Heurística dist min/max...: " + "\t" + SensorAdist); } } if (SensorBdist > MaxDistB) { SensorBdist = MaxDistB; sw1.WriteLine("Distância B 1 alterada Heurística dist min/max...: " + "\t" + SensorBdist); } else

Page 95: Gps wi fi para ambientes fechados (indoor)

86

{ if (SensorBdist < 1) { SensorBdist = MaxDistB; sw1.WriteLine("Distância B 2 alterada Heurística dist min/max...: " + "\t" + SensorBdist); } } if (SensorCdist > MaxDistC) { SensorCdist = MaxDistC; sw1.WriteLine("Distância C 1 alterada Heurística dist min/max...: " + "\t" + SensorCdist); } else { if (SensorCdist < 1) { SensorCdist = MaxDistC; sw1.WriteLine("Distância C 2 alterada Heurística dist min/max...: " + "\t" + SensorCdist); } } sw1.WriteLine("Distâncias APÓS Heurística dist min/max..........: " + "\t" + SensorAdist + "\t" + SensorBdist + "\t" + SensorCdist); // A - B ////////////////////////////////////////////////////////////////////////// double difX = xB - xA; double difY = yB - yA; double distAB = Math.Sqrt((Math.Pow(difX, 2)) + (Math.Pow(difY, 2))); //Distância entre os sensores A e B //Ajusta intersecção máximo e mínimo para AB if (SensorAdist >= (SensorBdist + distAB)) { SensorAdist = (SensorBdist + distAB - 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção A 1...........: " + "\t" + SensorAdist); } if (SensorBdist >= (SensorAdist + distAB)) { SensorBdist = (SensorAdist + distAB - 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção B 2...........: " + "\t" + SensorBdist); } if (distAB - SensorAdist >= SensorBdist) { SensorBdist = (distAB - SensorAdist + 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção A 3...........: " + "\t" + SensorBdist); } if (distAB - SensorBdist >= SensorAdist) { SensorAdist = (distAB - SensorBdist + 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção A 4...........: " + "\t" + SensorAdist); } sw1.WriteLine("Distâncias APÓS Heurística intersecção AB........: " + "\t" + SensorAdist + "\t" + SensorBdist + "\t" + SensorCdist); double distInt = (Math.Pow(distAB, 2) + Math.Pow(SensorAdist, 2) - Math.Pow(SensorBdist, 2)) / (2 * distAB); //Distância do ponto central 1 até a linha que une os pontos de intersecção double x1 = xA + difX * distInt / distAB + (difY / distAB) * Math.Sqrt((Math.Pow(SensorAdist, 2) - Math.Pow(distInt, 2))); if (x1 < 1) x1 = 1; if (x1 >= b) x1 = b - 1;

Page 96: Gps wi fi para ambientes fechados (indoor)

87

double y1 = yA + difY * distInt / distAB - (difX / distAB) * Math.Sqrt((Math.Pow(SensorAdist, 2) - Math.Pow(distInt, 2))); if (y1 < 1) y1 = 1; if (y1 >= h) x1= h - 1; sw1.WriteLine(" "); sw1.WriteLine("distXa...........................................: " + "\t" + xA); sw1.WriteLine("distYa...........................................: " + "\t" + yA); sw1.WriteLine("distXb...........................................: " + "\t" + xB); sw1.WriteLine("distYb...........................................: " + "\t" + yB); sw1.WriteLine("difX=Xb - Xa.....................................: " + "\t" + difX); sw1.WriteLine("difY=Yb - Ya.....................................: " + "\t" + difY ); sw1.WriteLine("SensorAdist......................................: " + "\t" + SensorAdist); sw1.WriteLine("SensorBdist......................................: " + "\t" + SensorBdist); sw1.WriteLine("distAB...........................................: " + "\t" + distAB); sw1.WriteLine("distInt..........................................: " + "\t" + distInt); sw1.WriteLine("x1...............................................: " + "\t" + x1); sw1.WriteLine("y1...............................................: " + "\t" + y1); // A - C ////////////////////////////////////////////////////////////////////////// difX = xA - xC; difY = yA - yC; double distAC = Math.Sqrt((Math.Pow(difX, 2)) + (Math.Pow(difY, 2))); //Distância entre os sensores A e C //Ajusta intersecção máximo e mínimo para AC if (SensorAdist >= (SensorCdist + distAC)) { SensorAdist = (SensorCdist + distAC - 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 1 A...........: " + "\t" + SensorAdist); } if (SensorCdist >= (SensorAdist + distAC)) { SensorCdist = (SensorAdist + distAC - 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 2 C...........: " + "\t" + SensorCdist); } if (distAC - SensorAdist >= SensorCdist) { SensorCdist = (distAC - SensorAdist + 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 3 C...........: " + "\t" + SensorCdist); } if (distAC - SensorCdist >= SensorAdist) { SensorAdist = (distAC - SensorCdist + 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 4 A...........: " + "\t" + SensorAdist); } sw1.WriteLine("Distâncias APÓS Heurística intersecção AC........: " + "\t" + SensorAdist + "\t" + SensorBdist + "\t" + SensorCdist); distInt = (Math.Pow(distAC, 2) + Math.Pow(SensorCdist, 2) - Math.Pow(SensorAdist, 2)) / (2 * distAC); double x2 = xC + difX * distInt / distAC + (difY / distAC) * Math.Sqrt((Math.Pow(SensorCdist, 2) - Math.Pow(distInt, 2))); if (x2 < 1) x2 = 0; if (x2 >= b) x2 = b - 1; double y2 = yC + difY * distInt / distAC - (difX / distAC) * Math.Sqrt((Math.Pow(SensorCdist, 2) - Math.Pow(distInt, 2))); if (y2 < 1) y2 = 1; if (y2 >= h) y2 = h - 1; sw1.WriteLine(" "); sw1.WriteLine("distXc...........................................: " + "\t" + xC);

Page 97: Gps wi fi para ambientes fechados (indoor)

88

sw1.WriteLine("distYc...........................................: " + "\t" + yC); sw1.WriteLine("distXa...........................................: " + "\t" + xA); sw1.WriteLine("distYa...........................................: " + "\t" + yA); sw1.WriteLine("difX=Xa - Xc.....................................: " + "\t" + difX); sw1.WriteLine("difY=Ya - Yc.....................................: " + "\t" + difY); sw1.WriteLine("SensorCdist......................................: " + "\t" + SensorCdist); sw1.WriteLine("SensorAdist......................................: " + "\t" + SensorAdist); sw1.WriteLine("distCA...........................................: " + "\t" + distAC); sw1.WriteLine("distInt..........................................: " + "\t" + distInt); sw1.WriteLine("x2...............................................: " + "\t" + x2); sw1.WriteLine("y2...............................................: " + "\t" + y2); // B - C ////////////////////////////////////////////////////////////////////////// difX = xC - xB; difY = yC - yB ; double distCB = Math.Sqrt((Math.Pow(difX, 2)) + (Math.Pow(difY, 2))); //Ajusta intersecção máximo e mínimo para BC if (SensorBdist >= (SensorCdist + distCB)) { SensorBdist = (SensorCdist + distCB - 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 1 B...........: " + "\t" + SensorBdist); } if (SensorCdist >= (SensorBdist + distCB)) { SensorCdist = (SensorBdist + distCB - 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 2 C...........: " + "\t" + SensorCdist); } if (distCB - SensorBdist >= SensorCdist) { SensorCdist = (distCB - SensorBdist + 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 3 C...........: " + "\t" + SensorCdist); } if (distCB - SensorCdist >= SensorBdist) { SensorBdist = (distCB - SensorCdist + 1.0); sw1.WriteLine(" "); sw1.WriteLine("Ajuste pela Heurística intersecção 4 B...........: " + "\t" + SensorBdist); } sw1.WriteLine("Distâncias APÓS Heurística intersecção BC........: " + "\t" + SensorAdist + "\t" + SensorBdist + "\t" + SensorCdist); distInt = (Math.Pow(distCB, 2) + Math.Pow(SensorBdist, 2) - Math.Pow(SensorCdist, 2)) / (2 * distCB); double x3 = xB + difX * distInt / distCB + (difY / distCB) * Math.Sqrt((Math.Pow(SensorBdist, 2) - Math.Pow(distInt, 2))); if (x3 < 1) x3 = 1; if (x3 >= b) x3 = b - 1; double y3 = yB + difY * distInt / distCB - (difX / distCB) * Math.Sqrt((Math.Pow(SensorBdist, 2) - Math.Pow(distInt, 2))); if (y3 < 1) y3 = 1; if (y3 >= h) y3 = h - 1; sw1.WriteLine(" "); sw1.WriteLine("distXb...........................................: " + "\t" + xB); sw1.WriteLine("distYb...........................................: " + "\t" + yB); sw1.WriteLine("distXc...........................................: " + "\t" + xC); sw1.WriteLine("distYc...........................................: " + "\t" + yC); sw1.WriteLine("difX=Xc - Xb.....................................: " + "\t" + difX); sw1.WriteLine("difY=Yc - Yb.....................................: " + "\t" + difY); sw1.WriteLine("SensorBdist......................................: " + "\t" + SensorBdist); sw1.WriteLine("SensorCdist......................................: " + "\t" + SensorCdist); sw1.WriteLine("distCA...........................................: " + "\t" + distCB); sw1.WriteLine("distInt..........................................: " + "\t" +

Page 98: Gps wi fi para ambientes fechados (indoor)

89

distInt); sw1.WriteLine("x3...............................................: " + "\t" + x3); sw1.WriteLine("y3...............................................: " + "\t" + y3); //////////////////////////////////////////////////////////////////////////////////////////////// double baricentroX; double baricentroY; Math.Round(baricentroX = (x1 + x2 + x3) / 3); Math.Round(baricentroY = (y1 + y2 + y3) / 3); sw1.WriteLine(" "); sw1.WriteLine("Coordenadas do sensor movel......................: " + "\t" + baricentroX + "\t" + baricentroY); sw1.WriteLine("Fim da captura"); sw1.Close(); return new Tuple<double, double>(baricentroX, baricentroY); } // fim listBss } //fim da classe } //fim do namespace

Page 99: Gps wi fi para ambientes fechados (indoor)

90

Apêndice F – Equipamentos Usados

Figura 55 – Notebook HP G42 i5

Figura 56 – Roteador sem fio (AP) TP-LINK TL-WR941ND

Page 100: Gps wi fi para ambientes fechados (indoor)

91

Figura 57 – Local dos testes (a)

Figura 58 – Local dos testes (b)

Page 101: Gps wi fi para ambientes fechados (indoor)

92

Figura 59 – Local dos testes (c)

Figura 60 – Local dos testes (d)