• Nenhum resultado encontrado

3.2 Odometria num smartphone

3.2.1 Deteção de Passos

Como estudado na secção 2.3.3, os MEMS presentes nos smartphones permitem que sejam criados pedómetros para a localização assistida por movimento.

Para a detecção do movimento do utilizador, tipicamente são desenvolvidos algorit- mos com base na informação do acelerómetro. A partir do Android KitKat foram adicio- nados mais alguns módulos de software associados a componentes de hardware à lista de APIs que permitem a detecção de passos. Apesar de alguns smartphones ainda não con- terem estes sensores de passos, no futuro, isso irá gradualmente tornar-se habitual. Para efeitos de teste foram implementados três métodos que permitem estimar o movimento do utilizador: baseados em acelerómetro, sensor SD e sensor SC, que são abordados nas subsecções abaixo.

3.2.1.1 Acelerómetro

O Acelerómetro é dos sensores mais antigos presentes na API Android. Quando o dispo- sitivo sente uma alteração nas forças de aceleração é gerado um evento, que apresenta a aceleração ao longo dos eixos X, Y e Z (incluindo a gravidade), na orientação apresentada na figura 3.8. Na figura 3.9 está representado um conjunto de amostras de aceleração ao longo de 4 segundos nas três componentes, obtido num OnePlus 2. Ao longo destes 4 segundos foram percorridos 5 passos, para os quais o smartphone gerou 1281 eventos, ou seja, com uma frequência de aproximadamente 320Hz. Os passos foram efetuados com o ecrã para cima, e por essa razão, a componente em Z foi claramente mais afetada pela gravidade e pelo movimento vertical durante os passos, sendo fácil distinguir os passos. Caso o utilizador se deslocasse com o telemóvel numa posição intermédia, as variações fi- cariam distribuídas entre as restantes componentes, o que tornaria o processo de selecção do eixo complexo.

Uma alternativa para detetar passos quando o utilizador se desloca com o telemóvel numa orientação desconhecida, é obter um único valor de aceleração do dispositivo Ad a partir das três componentes da aceleração Fse retirar a influência da força da gravidade

g. Nesta dissertação foi adoptada a soma linear das várias componentes, usando

Ad= −g +XFs. (3.2)

A partir dos pontos Ad é possível observar as variações de direção de aceleração (os máximos e mínimos locais). Consideremos pinf um pico inferior, psup um pico superior,

pdif a diferença entre picos, isto é, pdif = psup− pinf , e upo valor da diferença entre picos

no último passo detectado (pdif anterior), inicializado a 0. Define-se que um utilizador dá um passo quando se verificam as quatro condições:

• Não ter sido detectado um passo nos últimos tmin ms. Para efeitos de teste foi consi- derado que tmin= 500 ms.

Figura 3.8: Sistema de coordenadas (relativo a um dispositivo) que é usado pela API do sensor [Goog] .

• Para se filtrar as baixas frequências, é verificado se pdif >23up.

• De forma semelhante à condição anterior, para remover as altas frequências, é veri- ficado se up>13pdif.

• O último passo detectado não ter sido num pico exatamente anterior com a mesma direção, requerendo que exista uma alternação de direção para se detetar o primeiro passo.

Este método de avaliação foi criado com o objectivo de detectar passos num sistema em tempo real, sendo assim realizadas operações com baixo custo computacional, mesmo que se prescinda de alguma precisão. Foi inspirado em trabalhos [DM; Goof] nos quais se atinge maior precisão com recurso à derivação dos dados obtidos e/ou filtros passa- alto e passa-baixo, mas introduzem algum atraso, o que faz com que se obtenha piores resultados em tempo real.

3.2.1.2 Sensor Step Detector

Um sensor do tipo SD serve para detectar cada passo individual assim que é capturado, por exemplo, para executar Dead Reckoning. O SD utiliza um filtro de Kalman [Goof] para comparar padrões de passos, o que faz com que exista algum atraso na detecção de cada passo, bem como uma necessidade de calibração. Caso não exista a calibração inicial, podem ocorrer erros significativos, como os ilustrados na figura 3.10b com um sensor do tipo SD não calibrado que não foi capaz de reconhecer a maioria dos passos.

a Gráfico da aceleração ao longo do eixo X.

b Gráfico da aceleração ao longo do eixo Y.

c Gráfico da aceleração ao longo do eixo Z.

d Gráfico da aceleração Ad.

3.2.1.3 Sensor Step Counter

O sensor do tipo SC existe apenas nas versões mais recentes de Android. Este sensor é uma combinação de hardware e software [Goof] que sempre que gera um evento, retorna o número de passos caminhados pelo utilizador desde a última reinicialização da aplicação juntamente com o timestamp do último passo antes do evento ter sido disparado. Tendo em conta que grande parte do processamento deste sensor é realizado em hardware, não gasta muita energia [Nag]. Mesmo em background, este sensor continua a trabalhar e a contar o número de passos, e quando se volta à aplicação é disparado um evento com todos os passos realizados. Só pára quando é cancelado o registo no sensor.

De forma semelhante ao SD, é utilizado um filtro de Kalman, mas que compara grupos de passos, como se analisasse um padrão de caminhada do utilizador. Desta forma, é possível eliminar alguns movimentos que embora se assemelhem a um passo, não o são.

3.2.1.4 Comparação entre métodos

Para a validação da robustez dos três métodos de detecção de passos, foram desenvol- vidas classes individuais que escutam cada um dos sensores, realizam o processamento devido, e no final geram eventos do tipo passo. Utilizando as classes desenvolvidas, foram realizados múltiplos testes no cenário descrito acima. Todos os métodos apresentaram resultados precisos na estimação do número de passos, sendo que em diversos testes, os três sensores detectaram que o utilizador realizou 33 passos.

As principais diferenças entre os métodos são:

1. Precisão : Todos os métodos mostraram resultados semelhantes neste ponto, con- tudo, em camainhadas com mais do que ≈ 100 passos o SD mostrou-se relativa- mente mais preciso que os restantes, sendo o acelerómetro o menos preciso. O SD e o SC também são mais robustos na filtragem de movimentos semelhantes a passos. O acelerómetro na figura 3.10a apresenta 1 passo a mais do que o realizado, pois considerou que o movimento de paragem foi um passo.

2. Tempo de Resposta : Este é o ponto mais diferenciador. Como é possível observar na figura 3.10a, foram realizados 33 passos e tanto o SD, como o SC não registaram o último passo .

3. Delay inicial: Os novos sensores Android usam filtros de Kalman, o que faz com que inicialmente tenham um regime transitório onde não enviam informações sobre passos. Este efeito é geralmente ultrapassado ao fim de cerca de 20 passos. Este efeito pode ser visualizado na figura 3.10b, onde o SD e o SC ainda não conseguiram descodificar o padrão do passo do utilizador, e encontram-se bastante atrasados face ao acelerómetro.

4. Reset: Para o SD teve que ser implementado um sistema para conseguir obter uma contagem parcial de passos, guardando o valor de passos até um momento, pois este sensor reporta sempre todos os passos, como está ilustrado na figura 3.10c.

Tendo em conta que para a aplicação em causa (Odometria), é necessário um tempo de resposta muito rápido (caso contrário a orientação do dispositivo θ pode ter mudado significativamente) e a precisão dos métodos ser similar, o acelerómetro foi o sensor esco- lhido para a realização da aplicação e é usado nos restantes testes ao longo da dissertação.

a Funcionamento Normal. b Funcionamento sem treino

inicial.

c Funcionamento normal sem reset do SC.

Figura 3.10: Testes de detecção de passos realizados na aplicação WiFi Finder num One- Plus2, sendo demonstrado os resultados do acelerómetro, do SD e do SC.

De um modo geral, o acelerómetro é um bom sensor para aplicações em que é ne- cessário estar constantemente a observar o movimento do dispositivo. Quase todos os dispositivos Android têm um acelerómetro, e ele usa cerca de 10 vezes menos energia do que os outros sensores de movimento [Goof]. Uma desvantagem é que dependendo da utilização, é normalmente necessário implementar filtros passa-baixo e/ou passa-alto para eliminar as forças gravitacionais e reduzir o ruído. Em comparação com os métodos estudados no capítulo 2, o algoritmo desenvolvido para a deteção de passos utilizando o acelerómetro é computacionalmente mais leve, visto que os filtros de partículas requerem processamento adicional.