scieee AI-readable full text Open interactive document viewer

Fidelização e Ofertas em Realidade Aumentada

José Tadeu Pinto Marques

Abstract

O previlégio de estudar e prosseguir um ciclo de estudos, que apela à investigação, e as opor-tunidades de investigação que hoje em existem levam a uma cada vez maior evolução tecnológica,visível no dia-a-dia. Dos anos mais recentes, até agora, surgiram ossmartphonesque hoje em diafazem parte do quotidiano de um grande parte da população a nível Mundial. Torna-se portanto importante aproveitar este recurso para o desenvolver, e ainda mais para uma empresa, para poder inserir-se no mercado.Da mesma forma que ossmartphonescresceram nos últimos anos, está agora em emersão arealidade aumentada. Esta é recente, ainda não muito explorada, e certamente passará por aqui ofuturo da sociedade. Então torna-se fulcral perceber onde podemos intervir, nessa área, por formaa não perder o ritmo a que a comunidade se desenvolve.Face a esta realidade, é importante para uma empresa que trabalha com cupões de desconto efidelidade manter-se inovadora e por isso, investir nestas 2 grandes áreas.Assim, neste relatório será abordada uma forma de conseguir trazer propostas de fidelizaçãoatravés da realidade aumentada até aossmartphonesdos diversos utilizadores da aplicação.Para tal, serão estudados os temas de posicionamento em 2 dimensões, tanto a nível deindoorcomo deoutdoor, bem como de 3 dimensões, sendo que para isso se vai falar de como medir aaltitude a que um utilizador se encontra relativamente ao nível do mar.A orientação será também estudada, para se saber para onde está o utilizador virado, por formaa saber onde serão apresentadas as informações que se pretende exibir no ecrã dosmartphone.Para a realização do proposto, é preciso trabalhar com o conceito de realidade aumentada.Então, serão apresentadas algumas tecnologias pertinentes para o trabalho, bem como algumasaplicações já existentes com funcionalidades parecidas e interessantes para o tema proposto nesterelatório.De seguida, será apresentada de forma sucinta uma proposta de solução. Isto é, de acordo como estudado no estado de arte, falar-se-á aqui o que vai ser utilizado em cada um dos tópicos de interesse.Por fim, serão expostos alguns testes realizados com a aplicação desenvolvida e de seguida será elaborada uma conclusão sobre o trabalho realizado.

Full text

FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Fidelização e Ofertas em Realidade Aumentada José Tadeu Pinto Marques Mestrado Integrado em Engenharia Informática e Computação Orientador: António Miguel Pontes Pimenta Monteiro Co-orientador: Jorge Alves da Silva 16 de Julho de 2014 Fidelização e Ofertas em Realidade Aumentada José Tadeu Pinto Marques Mestrado Integrado em Engenharia Informática e Computação Aprovado em provas públicas pelo Júri: Presidente: Maria Cristina de Carvalho Alves Ribeiro Arguente: Paulo Miguel de Jesus Dias Vogal: António Miguel Pontes Pimenta Monteiro 16 de Julho de 2014 Resumo O privilégio de estudar e prosseguir um ciclo de estudos, que apela à investigação, e as oportunidades de investigação que hoje em dia existem levam a uma cada vez maior evolução tecnológica, visível no dia-a-dia. Dos anos mais recentes, até agora, surgiram os smartphones que hoje em dia fazem parte do quotidiano de uma grande parte da população a nível Mundial. Torna-se portanto importante aproveitar este recurso para o desenvolver, e ainda mais para uma empresa que pretenda inserir-se fortemente no mercado. Da mesma forma que os smartphones cresceram nos últimos anos, está agora em emersão a realidade aumentada. Esta é recente, ainda não muito explorada, e certamente passará por aqui o futuro da sociedade. Então torna-se fulcral perceber onde podemos intervir, nessa área, por forma a não perder o ritmo a que a comunidade se desenvolve. É também importante denotar a importância da plataforma Android nos dias de hoje, que, juntamente com o iOS, está presente a nível global em todos os continentes e países, tendo um grande impacto inclusive no quotidiano de todas as sociedades, assumindo assim um papel relevante no contexto desta tese. Face a esta realidade, é importante para uma empresa que trabalha com cupões de desconto e fidelidade manter-se inovadora e por isso, investir nestas 2 grandes áreas. Assim, neste relatório é abordada uma forma de conseguir trazer propostas de fidelização através da realidade aumentada até aos smartphones dos diversos utilizadores de aplicações que gerem essa fidelização. Para tal, serão estudados os temas de posicionamento em 2 dimensões, tanto a nível de indoor como de outdoor, bem como de 3 dimensões, sendo que para isso se vai falar de como medir a altitude a que um utilizador se encontra relativamente ao nível do mar. A orientação será também estudada, para se saber para onde está o utilizador virado, por forma a saber onde são apresentadas as informações que se pretende exibir no ecrã do smartphone. Para a realização do proposto, é preciso trabalhar com o conceito de realidade aumentada. Então, são apresentadas algumas tecnologias pertinentes para o trabalho, bem como algumas aplicações já existentes com funcionalidades parecidas e interessantes para o tema proposto neste relatório. De seguida, é apresentada de forma sucinta uma proposta de solução. Isto é, de acordo com o estudado no estado de arte, falar-se-á do que foi utilizado em cada um dos tópicos de interesse. Por fim, são expostos alguns testes realizados com a aplicação desenvolvida e de seguida é elaborada uma conclusão sobre o trabalho realizado. i ii Abstract The previlege of studying and pursuing a course of studies, that incentivates investigation, and the research opportunities that now exist leat to a continuosly increasing in technology development, visible every day. From the past recent years, to the present, smartphones emerged and nowaday are part of the everyday life of most of the World’s population. It is therefore important to take advantage of this feature to develop it, and even more for a company to be able to insert themselves into the market and compete on it. The same way that smartphones have grown in recent years, it is now emerging the augmented reality. This is recent, and still not much explored, and certainly will have an important role in the society’s future. It then becomes crucial to realize where we can intervene in this area, so as not to lose the momentum that the community develops. Given this reality, it is important for a company that works with dicount coupons and loyalty to remain innovative and therefore invest in these two major areas. Thus, in this report, it is addressed one way to show new discout coupons through augmented reality to the smartphones of as many people as possible. To do this, one studied 2 dimension positioning systems, both in indoor and outdoor. 3 dimension situations are also studied, and for that the altitude that an user is in comparison to sea level will be measured. The orientation is also studied, to know where is the user facing in order to know where the information, that you want to show in the screen, is shown. To perform the proposed work, it is essential to work with the agumented reality concept. Then, it will be presented some useful technologies to the work, as well as some already existing aplications with similar functionalities and interesting for the proposed theme in this report. Next, a solution is succinctly presented. According to the study made in the state of art, it is shared what is going to be used in each topic. Finally, some tests are exposed related with the developed application and then a conclusion about the work done is also made. iii iv Conteúdo 1 Introdução 1 1.1 Enquadramento................................... 1 1.2 Problema ...................................... 2 1.3 Motivação...................................... 2 1.4 Objetivos ...................................... 3 1.5 Benefíciosesperados ................................ 3 1.6 EstruturadaDissertação .............................. 3 2 Estado da Arte 5 2.1 Posicionamento e Orientação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Localização em espaços indoor . . . . . . . . . . . . . . . . . . . . . . 6 2.1.1.1 GPS ............................... 6 2.1.1.2 Proximidade........................... 6 2.1.1.3 Trilateração ........................... 7 2.1.1.4 RFID............................... 7 2.1.1.5 Fingerprinting.......................... 7 2.1.1.6 ToA,TDOA ........................... 8 2.1.1.7 AOA............................... 8 2.1.1.8 DeadReckoning......................... 8 2.1.1.9 MapMatching.......................... 9 2.1.2 Localização em espaços outdoor . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2.1 GPS ............................... 9 2.1.2.2 A-GPS.............................. 9 2.1.2.3 Wi-fi............................... 9 2.1.3 Google Location Services . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.4 Orientação ................................. 10 2.1.5 Altitude................................... 11 2.2 Câmara/Realidade Aumentada . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.1 Abordagens................................. 14 2.2.1.1 QR-Code............................. 14 2.2.1.2 Reconhecimento Logotipo . . . . . . . . . . . . . . . . . . . . 15 2.2.2 Tecnologias................................. 15 2.2.2.1 AppCelerator Titanium . . . . . . . . . . . . . . . . . . . . . 15 2.2.2.2 Utilização direta do Android . . . . . . . . . . . . . . . . . . 16 2.3 TrabalhosRelacionados............................... 17 2.3.1 Layar .................................... 17 2.3.2 Junaio+Valpak............................... 17 2.4 Conclusões ..................................... 18 v Introdução tiram partido desse conhecimento(location-aware). Em ambientes Indoor a aquisição de posicionamento é mais complexa, levando a um estudo mais detalhado sobre a melhor maneira de o conseguir, estudando diversos algoritmos e métodos passíveis de serem aplicados para no fim se eleger o melhor e se proceder à sua implementação. 1.2 Problema Num processo de fidelização de clientes em que uma empresa usa cupões de desconto para incentivar os seus clientes a voltarem, o problema que se destaca é a quantidade de cupões de desconto que todos os anos não são rebatidos e que a Cardmobili estima serem cerca de 1/3 (um terço) dos que são produzidos. Muitas das vezes a ocorrência deste problema está relacionada com o facto dos utilizadores não disporem desses cupões na altura ou se esquecerem que os possuem, sendo portanto útil dar aos potenciais utilizadores o conhecimento destas propostas na hora e locais oportunos. Outro motivo prende-se com o fato de que para alguns utilizadores o encontrar destes cupões pode ser um processo pouco direto, diminuindo o seu interesse e fazendo com que estes não os procurem. Também pode ser uma razão preponderante o fato de por vezes os utilizadores simplesmente não saberem onde se encontram determinadas lojas com descontos orientados para si. Ainda que saibam de alguns dos descontos, desconhecem alguns locais onde os poderiam rebater. 1.3 Motivação Com o constante crescimento tecnológico a utilidade que dispositivos como smartphones podem ter no quotidiano está também a crescer continuamente. Desta forma, acompanhar este crescimento é essencial para qualquer empresa, como o é a CardMobili. Será útil conseguir aproveitar todos os recursos possíveis com a finalidade de conseguir aumentar o número de cupões rebatidos todos os anos. Com a crescente capacidade gráfica e computacional dos smartphones, é possível a construção de aplicações práticas utilizando a realidade aumentada que também tem conhecido um crescimento já notado. Começar desde já a apostar nesta área será uma mais valia em termos de negócio uma vez que é uma área ainda pouco conhecida do público mas cuja importância começa aos poucos a aumentar. Deste modo, o desenvolvimento antecipado nesta área poderá constituir uma vantagem para a empresa no futuro. Muitas vezes o conhecimento da posição do utilizador é crucial para estas aplicações. A utilização do GPS para este efeito pode trazer dificuldades, principalmente quando o utilizador se encontra no interior de edifícios. Em ambiente indoor, há outras possibilidades de se atingir um resultado, aparentando assim ser interessante investigar dentro dessa área a fim de descobrir a melhor implementação ou implementações. Esta representa uma questão extremamente importante uma vez que o trabalho que se pretende desenvolver, sendo location-based, prevê-se que funcione em qualquer lugar, seja em espaço aberto ou não. 2 Introdução Posto isto, entende-se que a realização desta dissertação seja útil para a empresa bem como para a integração no mercado de um conceito ainda não muito explorado de ofertas de cupões de fidelização e desconto através da realidade aumentada em aplicações móveis para facilmente identificar lojas e locais de utilização desses instrumentos. 1.4 Objetivos É possível referir como principal objetivo fornecer aos utilizadores da aplicação CardMobili a possibilidade de facilmente descobrirem que programas de fidelização, ofertas e comércios têm ao dispor em seu redor utilizando a câmara do seu dispositivo smartphone, criando assim um serviço inovador para os clientes e comerciantes associados. Uma vez que a empresa pretende integrar a aplicação de realidade na sua própria aplicação já existente, o protótipo que vai ser desenvolvido não será uma aplicação base mas sim um módulo para posterior integração com qualquer aplicação Android que o pretenda fazer. Na prática, subdividindo em tópicos, pretende-se desenvolver uma aplicação que deverá: •saber a localização das lojas físicas dos comerciantes associados a programas de fidelização ou cartões que a Cardmobili disponibiliza para outras empresas; •saber a localização e orientação atual do smartphone que está a correr a aplicação, seja em ambientes interiores ou exteriores; •saber quais os cupões específicos do utilizador em cada loja; •apresentar, através de realidade aumentada, no smartphone cupões de fidelização/desconto específicos de cada loja; •testar com um dispositivo a aplicação e tirar conclusões sobre a sua utilização; À medida que se forem resolvendo estes objetivos será também escrito o relatório final da dissertação. 1.5 Benefícios esperados Uma vez concluídos os objetivos mencionados, espera-se que a empresa beneficie de uma solução funcional que mostre lojas e cupões através da realidade aumentada servindo de base para possíveis futuras apostas nesta área. Outro benefício do desenvolvimento desta tese será o estudo feito relativamente à precisão ao nível da altitude e à diferença de altitudes entre dois pontos distintos em altitudes diferentes. 1.6 Estrutura da Dissertação Para além da introdução, esta dissertação contém mais 5 capítulos. No capítulo 2, é descrito o estado da arte, são apresentados trabalhos relacionados e descritas tecnologias de interesse para o desenvolvimento da aplicação. No capítulo 3, é descrita a arquitetura geral do sistema sem especificar detalhes de implementação. Esses serão abordados no capítulo seguinte, o capítulo 4. 3 Introdução No capítulo 5serão ilustrados alguns exemplos de como evoluiu e como funciona a aplicação aquando da conclusão do período de desenvolvimento da mesma. Também serão comentados os resultados do trabalho. Por fim, no capítulo 6será feito um resumo e análise do trabalho e estudo efetuados, falando do que foi feito, do que ficou por fazer e de possíveis melhorias que poderão vir a ser implementadas no futuro. 4 Capítulo 2 Estado da Arte De modo a poder-se desenhar uma solução satisfatória para o problema descrito e alcançar os objetivos definidos, temos de estudar um conjunto de técnicas que se nos afiguram poderem ser as mais adequadas. Serão estudados os temas mais importantes para o objetivo desta dissertação como: •A obtenção fiável do posicinamento do utilizador, que será descrito na secção 2.1 ; •A aquisição de imagem real e a sua combinação com elementos gráficos sintetizados, onde se falará da sua utilização no trabalho e possibilidades de integração com a aplicação sugerida. Esta integração constituirá uma aplicação da realidade aumentada, também introduzida na secção 2.2; Por fim, serão identificados alguns trabalhos que estão relacionados com o tema desta dissertação e serão tiradas algumas conclusões pessoais sobre o material já existente sobre este tema. 2.1 Posicionamento e Orientação Como foi descrito na introdução [1], o conhecimento da posição do utilizador tem um papel preponderante para que se atinjam os objetivos propostos. A exibição da informação pretendida no local correto implica o conhecimento preciso da posição do utilizador da aplicação e qual a sua orientação,também é necessário conhecer com precisão onde estão localizadas as lojas e quais são estas. Em dispositivos móveis existem várias técnicas de localização com diferentes capacidades de precisão, custo de memória ou custo de energia por exemplo. Estes resultados podem também ser diferentes conforme as técnicas estejam a ser usadas em meios indoor ou outdoor uma vez que na primeira situação os sinais usados para determinar a posição do utilizador podem ser muito enfraquecidos devido à existência de paredes, tetos ou 5 Estado da Arte outras estruturas 1e na segunda situação os algoritmos utilizados também não são 100% precisos, apresentando diferentes capacidades de precisão. Assim, para determinar a posição será necessário recorrer a diversas tecnologias dos dispositivos móveis, como GPS, Wi-Fi, câmara e outros sensores como acelerómetro, giroscópio ou sensor de pressão. 2.1.1 Localização em espaços indoor O posicionamento também pode ter de ser feito em meios indoor como por exemplo centroscomerciais, que serão importantes para os objetivos propostos para a dissertação. Assim, é importante estudar os diferentes algoritmos existentes para resolver este tipo de localização. Quando é necessário determinar este posicionamento, uma das alternativas que existe envolve a tecnologia WLAN (wireless lan). Esta tecnologia não foi desenhada com o intuido de determinar a posição de um dispositivo. Contudo, medições de força de sinal do sinal transmitido, seja por pontos de acesso (PA) ou por estações, permitem deduzir a localização de qualquer utilizador de dispositivos móveis. [LSDR06]. 2.1.1.1 GPS "O sistema de posicionamento global (do inglês global positioning system, GPS) é um sistema de navegação por satélite que fornece a um aparelho recetor móvel a sua posição, assim como informação horária, sobre todas condições atmosféricas, a qualquer momento e em qualquer lugar na Terra, desde que o receptor se encontre no campo de visão de pelo menos quatro satélites GPS." 2 Existem vários fatores que condicionam os resultados do GPS em termos de precisão. De acordo com Kourogi, Sakata, Okuma e Kurata [KSOK06], 3 dos mais importantes são: •erro causado pelo efeito de multi-caminhos •erro causado pelo atrasa da propagação do sinal •erro causado por o dispositivo que tem GPS estar a detetar 3 ou menos satélites Ora uma vez que as paredes levam ao aparecimendo de multi-caminho e permitem o atraso de propagação de sinal, conclui-se facilmente que a funcionalidade de GPS é uma fraca opção perante os objetivos que se pretendem atingir. 2.1.1.2 Proximidade A proximidade é um dos métodos de posicionamento mais simples de implementar [FNI13]. Consiste em associar a localização do utilizador à localização de um ponto de referência. A precisão destes algoritmos depende da distância a que um ponto de referência pode ser detetado (típicamente será um valor entre 100 metros e 10 kilómetros em redes de GSM) [RD08]. 1http://en.wikipedia.org/wiki/Indoor_positioning_system/ 2http://pt.wikipedia.org/wiki/Sistema_de_posicionamento_global/ 6 Estado da Arte 2.1.1.3 Trilateração O algoritmo de trilateração também é relativamente simples. São necessárias 3 estações base (ou mais) com coordenadas conhecidas. Se uma distância R do PA ao utilizador for mensurável, é traçado um círculo com raio R. Fazendo o mesmo processo para cada um dos 3 ou mais PA, os círculos intersetar-se-ão num ponto que será a posição do utilizador. Contudo, os resultados obtidos são forças de sinal em vez de distâncias, portanto devem ser apropriadamente convertidos para unidades de distância primeiro [LSDR06]. O problema deste método prende-se com o facto de ser afetado por multi-caminhos, paredes, tectos ou até mesmo outros sinais. Como tal, em interiores continua a ser um método com algumas lacunas. 2.1.1.4 RFID Radio Frequency Identification (RFID) é um método de identificação automático. Um sistema RFID consiste numa tag, um leitor e uma antena. A tag é um transponder (aparelho que emite um sinal identificador em resposta a um sinal de interrogação recebido) que pode ser ligada a um produto, animal, ou pessoa, com o propósito de identificação usando ondas de rádio. O leitor (transceiver) é capaz de ler a informação guardada na tag quando em proximidade [GR08]. A técnica de posicionamento por RFID pode ser sub-dividida em 4 passos: •instalar tags RFID em pontos específicos •guardar informação de localização muito precisa juntamente com outras informações necessárias das tags •adicionar um módulo leitor de RFID no sistema de navegação •usar esta nova informação de localização Para usar RFID como sistema de posicionamento, uma estratégia é instalar leitores RFID em certos pontos específicos, como entradas de edifícios ou lojas, para detetar um objeto quando passar por este [CJJA04]. De notar que os autores Chon, Jun, Jung e An admitem que: "This technique, however, would not replace GPS rather it is a complementary technique" [CJJA04]. ,ou seja, "Esta técnica, contudo, não substituirá o GPS. Em vez disso será uma técnica complementar." Esta constatação diz-nos que o RFID não é utilizável indpendentemente do GPS. Assim, não faz sentido estar a usar uma tecnologia que terá mais custos para o dispositivo móvel em vez de os diminuir. 2.1.1.5 Fingerprinting De acordo com Jian [Jia12], recentemente, WLAN RSS Fingerprinting tem-se tornado uma das técnicas mais exploradas em localização indoor. É um método relativamente fácil de pôr 7 Estado da Arte em execução e é tolerante ao ruído de sinal e, portanto, consegue assim atingir resultados mais precisos. O processo consiste em 2 fases [SK08]: •Treino offline. O RSS de diversos PAs, em diferentes pontos de uma grelha imaginária, representativa da área a ser estudada, são reunidos e guardados numa base de dados de fingerprint frequentemente chamada de radio map. O vetor dos valores médios dos RSS num determinado ponto na grelha de localização fingerprint desse ponto. •Determinação online. O dispositivo online vai medir uma amostra de vetores fingerprint com os valores RSS de diferentes PAs nas suas posições. A amostra é enviada para um servidor centrar na infraestrutura WLAN. O servidor compara a fingerprint medida com as que tem na base de dados (radio map) para determinar a posição do dispositivo na grelha. Então, o resultado estimado é devolvido ao dispositivo. A grande desvantagem deste algoritmo é ter de treinar o sistema com o maior número de leituras de sinais de rádio possível. Como estes sistemas apenas permitem que a fase offline se realize antes do seu verdadeiro uso, os sistemas só serão precisos enquanto a base de dados treinada ainda fizer sentido perante os dados reais, caso contrário, terá de voltar a ser treinada. [Bol11]. 2.1.1.6 ToA,TDOA "Time of Arrival"é a quantidade de tempo que um sinal demora a percorrer o caminho entre transmissor e receptor. Como a frequência de propagação do sinal é constante e conhecida, o tempo de viagem de um sinal pode ser usado para calcular diretamente a distância. Medições múltiplas podem ser combinadas com a Trilateration referida em 2.1.1.3. Esta é a técnica usada pelo GPS e, como tal, sofre dos mesmo problemas de obstáculos de paredes ou tetos, e refração e difração do sinal em objetos tornando esta técnica muito pouco precisa em meios interiores3. 2.1.1.7 AOA É semelhante à técnica Trilateration referida em 2.1.1.3, com a diferença que os dados são medidos pelos ângulos formados entre os PA em vez das distâncias. Os problemas deste método são semelhantes também aos da Trilateration [RD08]. 2.1.1.8 Dead Reckoning Odead reckoning estima a atual posição do utilizador baseando-se na última posição determinada e incrementando essa posição baseado na velocidade conhecida ou estimada em função do tempo decorrido. Uma desvantagem deste método é que a falta de precisão é cumulativa, portanto o desvio da posição fixa aumenta com o tempo. A razão prende-se com o facto de que novas posições são calculadas inteiramente a partir de posições anteriores [FNI13]. 3http://en.wikipedia .org/wiki/Indoor_positioning_system 8 Estado da Arte 2.1.1.9 Map Matching Map Matching é o processo de alinhar uma sequência de posições do utilizador observadas, com a rede da internet, num mapa digital para suportar módulos de navegação de sistemas de transporte inteligentes que requerem informação de localização. [LZZ+09]. O propósito desta técnica é identificar o segmento de estrada correto que o veículo se encontra a percorrer e determinar a sua localização e atribuí-la a um local específico no dado mapa. Contudo, em algumas situações é difícil obter uma precisão considerável e desta forma há alguns algoritmos de map matching que permitem uma aproximação mais correta da posição real. 2.1.2 Localização em espaços outdoor Serão agora abordadas algumas das técnicas mais conhecidas para posicionamento em meios exteriores, explicando em alguns casos o seu funcionamento e falando de forma sucinta das suas vantagens/desvantagens. 2.1.2.1 GPS O GPS é uma tecnologia que está presente em quase todos os smartphones de hoje em dia. Como tal, a sua utilização permite que mais utilizadores tenham acesso às tecnologias que de si são dependentes. Segundo Reyero e Delisle [RD08], o GPS oferece uma excelente precisão no exterior, que é usualmente inferior a 10 metros em mais de 95% do tempo, sendo que Farid, Nordin e Ismail [FNI13] arriscam que a precisão deste sistema se encontra entre os 6 e os 10 metros, o que é bastante aceitável para o objetivo que se pretende alcançar. 2.1.2.2 A-GPS O A-GPS diferencia-se do GPS por uma rede a ajudar nos procedimentos, permitindo assim uma poupança a nível da bateria do dispositivo e redução da quantidade de processamento que é feita no terminal. 2.1.2.3 Wi-fi Técnicas de Wi-fi como por exemplo a Trilateration eFingerprinting também podem ser aplicadas para determinar a posição em meios exteriores da mesma forma que em meios interiores. A combinação desta técnica com o GPS como sugeriram Li, Quader e Dempster [LQD08] produzirá resultados mais precisos. Contudo, os gastos essencialmente energéticos que esta combinação acarretará não compensarão uma vez que o GPS ou ainda melhor o A-GPS por si só já produz resultados bastante satisfatórios em meios exteriores. Também o fato de ser uma funcionalidade presente na grande maioria dos smartphones facilita o acesso dos utilizadores às aplicações que dependam desta sistema. Assim, ainda que os resultados do posicionamento por Wi-fi sejam interessantes (por exemplo por Fingerprint [LQD08]), a solução do GPS parece mais útil para o caso. 9 Estado da Arte 2.1.3 Google Location Services Uma solução para implementação encontrada foram os Google Location Services. Este serviço, implementado pela Google tem como objetivo oferecer uma framework de alto nível que controla automaticamente fornecedores de localizações, movimento de utilizadores e precisão de localização. Também controla a calendarização de updates de localização baseados em parâmetros de consumo energético. Na maioria dos casos obter-se-á um melhor desempenho da bateria, assim como uma melhor precisão através deste método.4 A precisão da localização depende de quais das seguintes fontes de informação de localização estejam disponíveis a partir do dispositivo a partir do qual estão a ser chamados estes serviços. É possível melhorar a precisão ligando os serviços WiFi, especialmente quando em meios interiores onde o sinal de GPS é fraco. Não é sequer necessário estar conetado a uma rede para que a precisão melhore com o WiFi. Podem ser utilizadas as seguintes fontes de informação para obter a localização do disposivito: •GPS: a precisão do GPS ir até vários metros dependendo do sinal de GPS e da conexão. O aparelho deve suportar GPS, tê-lo ativo permitir o seu acesso ao Google Maps. •WiFi: a precisão do WiFi deve ser semelhante ao alcance de um router WiFi. O dispositivo deve suportar WiFi e tê-lo ligado. •Cell ID: A precisão de Cell ID depende da densidade da "cell tower"e da informação disponível na base de dados de localização da "cell tower"da Google. A precisão pode ser aproximada a distâncias que vão até milhares de metros. Contudo, alguns dispositivos não suportam localização por cell ID. Segundo este mecanismo de localização, alguns sensores, como o acelerómetro, bússola, giroscópio e barómetro, também são utilizados para melhorar a experiência de localização de uma forma geral. É importante também referir que a área de cobertura do Cell Id e as bases de dados de localização WiFi variam por localização e não estão completas, uma vez que há zonas que não estão abrangidas por estes métodos. 5 2.1.4 Orientação Uma vez sabida a posição do utilizador é importante descobrir a sua orientação para saber quando e onde representar no ecrã do seu dispositivo a informação dos cupões que é pretendida. Para tal, é necessário conjugar diversos sensores dos smartphones a fim de conseguir descobrir a sua orientação. Alguns desses sensores serão o de gravidade, o acelerómetro e o magnetómetro, ou então, alguns dispositivos possuem sensores sintetizados que facilitam o processo de identificação da orientação. [MS12] Com a sua utilização podemos saber de forma simples para onde está osmartphone do utilizador a apontar. Em Android é simples obter esta informação como demonstram Varga e Kostic [VK] 4http://developer.android.com/guide/topics/location/strategies.html 5https://support.google.com/gmm/answer/81873?hl=en 10 Estado da Arte 2.1.5 Altitude Quando falamos em posicionamento é preciso ter em conta um sistema de eixos segundo os quais se definirá exatamente a posição pretendida. Enquanto que em muitos casos de estudo só interessam dois desses eixos, no presente estudo interessa incluir todos os três eixos. Isto porque, a título de exemplo, em locais como centros-comerciais é importante saber o piso em que o dispositivo se encontra, para se saber que a loja que se encontra diante do dispositivo é a loja X do piso 1 e não a loja Y do piso 2 que se encontram nas mesmas coordenadas em dois dos eixos (horizontais), mas em coordenadas diferentes do terceiro eixo (vertical). Para resolver esta questão, é possível recorrer a um dos sensores do smartphone, neste caso o sensor de pressão. Sendo o GPS o sistema de posicionamento mais conhecido e utilizado atualmente, foi testada a sua precisão relativamente à altitude. Segundo Lammel e Patzelt [GL] o GPS torna-se extremamente impreciso quando o aparelho que está a utilizar esta tecnologia não consegue detetar mais de 3 satélites ou quando existem obstáculos entre o dispositivo e os satélites, podendo esta imprecisão significar não conseguir definir com precisão suficiente o piso em que o dispositivo se encontra, colocando-o num piso diferente. A figura 2.1 ilustra a precisão medida por um sensor GPS localizado fixo, numa sala, durante 800 segundos (cerca de 13 minutos). Figura 2.1: Precisão de altitude através de GPS [GL] Como se pode observar, o erro da precisão do GPS é de cerca de 20/30m, o que é muito quando os pisos de um edifício têm por altura um valor consideravelmente menor. Para resolver esta questão, os Esfandyari, Mascotto e Xu [JE10] encontraram nos sensores de pressão atmosférica uma solução com uma boa relação custo/eficiência que não requer infraestruturas adicionais para funcionar . Configurando o sensor para um determinado valor de pressão atmosféria (neste caso 0.1mbar) permite detetar uma diferença de altitudes inferiores a 1 metro, e portanto torna-se viável distinguir pisos em edifícios com mais que um. 11 Estado da Arte Junaio é um browser mobile de realidade aumentada, enquanto que a Valpak [Kat11] é uma empresa que trabalha com cupões de desconto, à semelhança da empresa proponente deste tema de dissertação - CardMobili. Depois de os utilizadores transferirem a aplicação da Junaio, poderão ver cupões, poupanças, e propostas de negócios e rebater os que lhes interessam mostrando ao vendedor da loja o cupão que têm na aplicação. Um exemplo de como funciona a aplicação de realidade aumentada é apresentado na figura 2.7. In addition to the application, Valpak also offers deals via an application as well as offers Figura 2.7: Imagem ilucidativa da interface da aplicação da Junaio SMS deals. Para além do descrito, a Valpak também oferece propostas através da aplicação, bem como propostas por SMS. Comparativamente ao caso de estudo apresentado neste relatório, a Valpak+Junaio fizeram uma aplicação muito semelhante, contudo não fornece informação para se saber como funciona em ambientes indoor, podendo ser essa a grande diferença para a aplicação proposta aqui apresentada. 2.4 Conclusões No presente capítulo foi feita uma revisão do estado de arte para o tema do relatório. Começouse por abordar as questões de posicionamento em duas dimensões. Resumindo os dados que foram adquiridos, foi obtida a seguinte tabela [FNI13]2.8: Como podemos observar, para meios interiores, apenas os algoritmos de fingerprint e TDoA apresentam uma elevada precisão, enquanto que os restantes ficam um pouco mais atrás. Dentro destes 2, podemos reparar que TDoA é afetado por caminhos-múltiplos, enquanto que fingerprint não. O custo deste último algoritmo também é mais acessível do que a grande maioria dos algoritmos estudados. Desta forma, podemos corroborar a informação de Jian [Jia12] quando afirma que WLAN RSS Fingerprinting tem-se tornado uma das técnicas mais exploradas em localização indoor por ser um método relativamente fácil de pôr em execução e que é tolerante ao ruído de sinal e, portanto, consegue assim atingir resultados mais precisos. 18 Estado da Arte Figura 2.8: Imagem representativa de uma tabela com os diversos algoritmos indoor estudados [FNI13] No entanto, podemos também concluir que o método de fingerprint precisa de cuidados de calibração que podem tornar a sua manutenção um processo custoso. Ainda relativamente às técnicas de posicionamento, também foram estudadas as alternativas de GPS, RFID e WI-fi. Na seguinte tabela [FNI13]2.9: Podemos observar que a precisão de RFID é bastante boa e seria até ideal. Contudo, Chon, Jun, Jung e An [CJJA04] afirmam que "Esta técnica, não substituirá o GPS. Em vez disso será uma técnica complementar." Além disso implicaria a instalação das tags RFID em vários locais e lojas aderentes. Utilizar as 2 tecnologias torna-se então desnecessário uma vez que o GPS, sendo bastante acessível a qualquer utilizador, também consegue obter resultados bastante satisfatórios. Relativamente ao Wi-fi, seria uma melhor solução, contudo está dependente da existência de sinais para poder fazer os seus cálculos. Portanto, a área de cobertura do Wi-fi é bastante inferior à do GPS, não compensando portanto a utilização isolada desta técnica. Também foram estudados os Utilização dos Google Location Services que segundo a investigação feita permite obter a localização pretendida tanto em meios interiores como exteriores, através da conjungação das técnias de GPS e de WiFi, permitindo assim um elevado grau de precisão num panorama mais geral de localizações possíveis a nível global. Permite também fazer uma gestão de energia algo personalizável pelo utilizador tornando-se assim este método um forte candidato a ser implementado. 19 Estado da Arte Figura 2.9: Imagem representativa de uma tabela com os diversos algoritmos outdoor estudados [FNI13] De seguida abordou-se as questões de orientação e altitude e concluiu-se que os sensores que hoje em dia já existem nos smartphones conseguem produzir resultados bastante satisfatórios para o efeito. Tratou-se também a questão da realidade aumentada e da câmara. Falou-se de duas possíveis abordagens de utilização da câmara do dispositivo e/ou realidade aumentada. Serão duas soluções que ficam em aberto caso venham a ser interessantes de voltar a abordar, contudo, para já, concluiu-se que a utilidade destas abordagens poderia ser contornada com as técnicas de posicionamento. Por fim, reviram-se algumas tecnologias que ajudarão no desenvolvimento da aplicação de realidade aumentada, e algumas tecnologias que estão de alguma forma ligadas com o tema. 20 Capítulo 3 Arquitetura A empresa Cardmobili dispõe já de uma aplicação denominada precisamente Cardmobili cujo objetivo principal é servir de carteira digital, levando os utilizadores a ter cada vez menos cartões físicos nas suas carteiras e mais cartões digitais nesta aplicação. Para além disso, esta aplicação tem propostas de ofertas para os utilizadores, como cupões de descontos em determinadas lojas ou promoções direcionadas para si através do seu cartão de fidelização com uma loja. Pretendeu-se então desenvolver um novo módulo para a aplicação, integrando, como indicações para o utilizador, gráficos inseridos na imagem real da câmara, informando acerca da proximidade e posicionamento de lojas para as quais se dispõe de cupões ou outros elementos de fidelização. Apresentamse então os principais requisitos e funcionalidades que este novo módulo deve ter, satisfazendo as necessidades do utilizador. É depois descrita a arquitetura base do módulo para se conseguir fazer uma implementação simples, capaz de ser integrada em qualquer aplicação Android, e que atinja os resultados pretendidos. A arquitetura abordada neste capítulo refere apenas a parte que diz respeito a este módulo, que utiliza técnicas de realidade aumentada, abordando qual a sua interação com a aplicação principal mas sem detalhar como foi desenvolvida a arquitetura desta. 3.1 Requisitos e Funcionalidades Para conseguir dar resposta às necessidades dos utilizadores, é importante ter em conta alguns objetivos e funcionalidades mais concretos relativamente ao que se pretende desenvolver, mais aprofundados do que os que foram mencionados na introdução. Alguns destes serão de elevada importância e outros serão considerados pontos extra que se poderia desenvolver para complementar a aplicação. Foram identificados os seguintes objetivos como sendo principais no desenvolvimento de um protótipo: •Identificar com precisão a localização dos utilizadores e lojas em meios interiores e exteriores. •Mostrar corretamente, no ecrã, a localização da loja num eixo horizontal, e uma aproximação da localização da loja segundo um eixo vertical. 21 Arquitetura •Exibir de forma agradável para o utilizador, a identificação da loja e informação relevante, como o nome da loja, logótipo do comerciante, distância a que se encontra da loja e número de pontos que o utilizador tem no cartão para aquela loja. •Integrar o módulo que se vai desenvolver com a base de dados já existente da Cardmobili, por forma a obter as localizações reais das lojas. •No caso de haver sobreposição de lojas no ecrã, exibir uma identificação de agrupamento de lojas, possivelmente adicionando um ícone que signifique explicitamente que existe mais de uma loja naquele lugar, para que o utilizador saiba que tem de selecionar esse ícone para expandir as lojas "escondidas". •Prever a situação em que o utilizador está sem internet e portanto não consegue pedir ao servidor a localização das lojas. Para além destes objetivos principais, foram definidos alguns pontos extra. Dado o limite de tempo para a realização do trabalho de dissertação, entende-se que algumas funcionalidades poderão ser acrescentadas ao protótipo depois de este estar funcional. Estas são: •Dar a possibilidade ao utilizador para mudar entre uma vista de Realidade Aumentada para uma vista de lista (onde os cupões serão exibidos, ordenados por proximidade, numa lista). •Dar a possibilidade ao utilizador para mudar entre uma vista de Realidade Aumentada para uma vista de mapa (onde o utilizador poderá ver num mapa os locais onde os cupões poderão ser redimidos). •Alternativamente ao ponto anterior, também poderá ser possível mudar entre vistas de acordo com a inclinação/rotação do dispositivo. •Implementar, no módulo desenvolvido, a medição correta da altitude tanto do utilizador como das lojas. Isto permitirá ao utilizador ter a melhor localização possível duma loja mesmo em pisos diferentes de um edifício. •Um radar que mostraria os cupões mais próximos relativamente ao utilizador. Isto permitira ao utilizador ter uma melhor perspetiva de onde se localizam os pontos de interesse perto de si. 3.2 Perspetiva Geral Na figura 3.1 mostra-se um esquema simples de como o módulo desenvolvido se integra com o restante da aplicação (Cardmobili). Este módulo deverá ter acesso e interagir com o restante da aplicação para navegação e consulta da sua base de dados. 22 Arquitetura Figura 3.1: Esquema base de interação entre as diversas componentes da aplicação. 3.3 Servidor e Aplicação A comunicação entre a aplicação que vai albergar o módulo de realidade aumentada e o servidor já está feita pela Cardmobili. Contudo, para o desenvolvimento do módulo, será necessário fazer diversos pedidos ao servidor como por exemplo das lojas que serão para mostrar no dispositivo. Para conseguir obter a informação pretendida que depois será utilizada no módulo, foi necessário implementar no servidor APIs REST que servirão para fazer a comunicação pretendida entre o módulo e o servidor. Desta forma, tornou-se possível obter a informação necessária sobre as várias lojas através do módulo. 3.4 Módulo de Realidade Aumentada O módulo implementado necessita comunicar com a aplicação a fim de saber que cupões de desconto deve exibir. De igual modo, para comunicar com o servidor, são executadas chamadas através da aplicação Cardmobili, nomeadamente o módulo de realidade aumentada faz um pedido à aplicação mãe para obter as lojas que existem nas imediações (estas são definidas pelo utilizador quando define o raio sobre o qual deve ser feita a pesquisa) e esta por sua vez fará o mesmo pedido ao servidor. A decisão de construir o código desta forma, a nível de arquitetura, resulta 23 Arquitetura do facto de a aplicação já existente dispor já de camada de webservices, ficando assim toda a lógica centralizada. Este diálogo entre o módulo de realidade aumentada e da aplicação é feito por intermédio de uma interface, como será explicado no capítulo de implementação. É também no protótipo implementado que serão feitos todos os cálculos e ajustes necessários para o mostrar uma representação gráfica das lojas no dispositivo, como por exemplo o cálculo da posição horizontal e vertical, no ecrã, onde deve ser exibida a loja. 3.5 Fluxo do Módulo Na figura seguinte representa-se o fluxo de interfaces com o utilizador desde que se entra na aplicação Cardmobili até ao módulo de realidade aumentada que se aborda nesta dissertação. 24 Arquitetura Figura 3.2: Imagem ilustrativa da interface esperada da aplicação O utilizador abre a aplicação da Cardmobili e no painel lateral esquerdo terá os diferentes módulos que pode utilizar sendo um deles, o de realidade aumentada (figura 3.2a). Abrindo o módulo de realidade aumentada, é imediatamente exibida a imagem da câmara do dispositivo. Quando o utilizador apontar para a mesma direção de uma loja existente na base de dados, deve aparecer no ecrã uma identificação da loja em questão, com alguma informação básica sobre a mesma (figura 3.2b). Se mais que uma loja estiver na direção da câmara, então também deverão ser exibidas. Clicando com o dedo na imagem de uma loja que estiver a ser exibida no ecrã, pode acontecer uma de 3 situações: •Se o utilizador possui um cartão de fidelização para a loja que está a ser exibida no ecrã, então deverá ser aberta a interface representada na figura 3.2c que representa a informação dos descontos na loja, para o respetivo cliente, com base no seu cartão de fidelização. •Se o utilizador carregar numa identificação, no ecrã, que represente um conjunto de cupões (quando há vários cupões sobrepostos, deve ser exibidauma identificação através de um ícone representativo de um agrupamento de cupões), então deve ser aberta a interface demonstrada na figura 3.2d. Esta é uma lista com os vários cupões de desconto presentes naquele agrupamento. •Há ainda a hipótese de a identificação no monitor se referir apenas a um único cupão de desconto para o utilizador. Nesse caso, deve ser aberta imediatamente a informação relativa 25 Arquitetura ao cupão em questão, como ilustrado na figura 3.2e. De notar que as interfaces ilustradas na figura 3.2c), d) e e) fazem parte da aplicação Cardmobili, estando já implementadas. Compete ao módulo executar a comunicação entre as duas componentes a fim de obter a resposta pretendida e exibir a informação pretendida. Contudo, a aplicação para funcionar deverá necessitar de uma ligação de dados WiFi ou por Dados Móveis pelo menos quando o programa for iniciado, para que seja feita a comunicação com o servidor e se obtenha informação das lojas mais próximas e dos cupões. Assim, a primeira validação que deve ocorrer, verificará se o utilizador tem as comunicações WiFi ou por Dados Móveis ativadas. Se não tiver, a aplicação não consegue comunicar com o servidor para receber a informação inicial sobre as lojas e cupões, devendo, nesse caso, ser apresentada uma notificação ao utilizador para que este saiba que tem de ativar pelo menos uma das duas opções (figura 3.3). Figura 3.3: Imagem ilustrativa da interface esperada da aplicação 3.6 Sequência de Operações No diagrama de sequência seuinte mostra-se a sequência típica de operações para um melhor entendimento de como funciona a aplicação a nível interno. 26 Arquitetura Figura 3.4: Imagem ilustrativa do diagrama de sequência esperado para o módulo O utilizador, quando inicia o módulo de realidade aumentada vê imediatamente a vista da câmara onde a realidade aumentada deverá depois ocorrer. Simultaneamente, devem ser executados os seguintes procedimentos: •O sistema de localização e os sensores são iniciados e irão continuamente atualizar a informação sobre a orientação, inclinação e posicionamento do dispositivo sempre que for detetado um deslocamento considerável por parte do utilizador. •Depois, é necessário verificar que lojas que existem nas imediações num raio que é especificado em getStores(location,radius). •Uma vez obtidas as lojas circundantes, é possível perguntar ao servidor que cupões destas lojas existem para que se mostrem na visualização do ecrã, de modo a poupar recursos ao servidor. •Ao mesmo tempo, e uma vez que as lojas podem ter um logótipo associado, é também pedido ao servidor a imagem desse logótipo das lojas que estão a ser exibidas no ecrã. •Por fim, quando o utilizador sinaliza que pretende fechar a aplicação, fecha-se o registo das atualizações de localição e dos sensores e libertam-se esses recursos para se fechar de vez a aplicação. 27 Implementação 1protected void updateCameraAngles(android.hardware.Camera camera) { 2horizontalAngle = camera.getParameters().getHorizontalViewAngle() / 2; 3verticalAngle = camera.getParameters().getVerticalViewAngle() / 2; 4} Neste caso, os valores foram divididos por 2 para obter o valor do campo de visão à esquerda e à direita do eixo ótico representativo do ponto para onde o dispositivo está a apontar. Uma vez obtido este valor, foi então possível calcular a posição horizontal onde a informação das lojas deve ser exibida. O array de lojas é percorrido e, loja a loja, é verificado se a mesma deve ou não ser exibida no ecrã. De notar que o array de lojas contém apenas as lojas retornadas pelo servidor num raio de distância especificado pelo utilizador. Dado que o azimuth tem um valor entre 0 e 360◦, o posicionamento do dispositivo para 350◦implica captar todas as imagens que se encontrem entre 350-horizontalAngle e 350+horizontalAngle. Contudo, 350+horizontalAngle será maior que 360 quando na verdade deveria reiniciar no valor 0. Para resolver esta situação, calculam-se os limites do lado esquerdo e direito da câmara e convertem-se para o valor correto caso seja necessário. 1if (leftLimit < 0) 2leftLimit += 360; 3 4if (rightLimit > 360) 5rightLimit -= 360; Posto isto, é necessário prever 2 situações: •1 - a soma ou subtração do horizontalAngle com o azimuth ultrapassa o valor 360 ou passa a valores negativos, respetivamente. •2 - a soma ou subtração do horizontalAngle com o azimuth não tem influência no resultado e o cálculo pode ser feito diretamente. 34 Implementação Figura 4.6: 1) Situação em que o campo de visão ultrapassa o valor 360 ou tem valores negativos Figura 4.7: 2) Situação em que o campo de visão não ultrapassa o valor 360 ou tem valores negativos 35 Implementação Para saber qual das 2 está a ocorrer, basta testar se o limite do lado direito tem um valor superior ao do lado esquerdo: 1if (leftLimit < rightLimit) { 2... 3} Neste caso (situação 2), é necessário verificar se a loja (targetStore) está dentro do campo de visão do dispositivo. Caso esteja, é preciso descobrir onde deve ser exibida no ecrã. Para isso, calcula-se primeiro o ângulo formado entre o limite direito de visibilidade da câmara e a loja. A partir daqui, descobre-se a percentagem do campo de visão correspondente a esse ângulo, sabendo que 100% se refere ao ângulo total do campo de visão da câmara do dispositivo. 1angulo = rightLimit - targetStore; 2percent = angulo *100 / (horizontalAngle *2); 3x = (100 - percent) / 100; A posição xonde a informação deve ser exibida é também uma percentagem onde o valor 100 em "(100-percent)"representa 100% do ecrã, ou seja, representa o limite direito do ecrã. Uma vez que se calculou o ângulo formado entre o limite direito do campo de visão e a localização da loja, então a posição xdeve subtrair ao lado direito do ecrã o valor percentual representativo de onde se encontra a loja (100-percent). A figura ?? representa o caso descrito. O resultado da implementação fica então o seguinte: 1if (leftLimit < rightLimit) { 2if (targetStore > leftLimit && targetStore < rightLimit) { 3angulo = 0; 4percent = 0; 5// calculate where the store will be displayed on screen 6angulo = rightLimit - targetStore; 7percent = angulo *100 / (horizontalAngle *2); 8x = (100 - percent) / 100; 9horizontalDraw = true; 10 }else 11 horizontalDraw = false; 12 } No caso da situação 1, em que a soma ou subtração do horizontalAngle com o azimuth ultrapassa o valor 360 ou passa a valores negativos, é preciso fazer alguns cálculos diferentes. É sabido que o valor do ângulo entre a loja e o Norte geográfico será sempre um valor entre 0 e 360◦. Assim, para a situação prevista, sabe-se que a loja se encontra no campo de visão do dispositivo se o valor do ângulo da loja for superior ao limite esquerdo deste campo, ou inferior 36 Implementação ao limite direito. Caso se verifique, há agora 2 situações que se devem prever: •a - A situação em que o ângulo da loja é maior que 0 mas menor que o limite direito do campo de visão. •b - A situação em que o ângulo da loja é maior que 0 mas o limite do campo de visão é menor do que o ângulo da loja. Figura 4.8: a) Ângulo da loja maior que 0 e menor que limite direito do campo de visão 37 Implementação Figura 4.9: b) Ângulo da loja maior que 0 e limite direito do campo de visão menor que ângulo da loja No caso a), o procedimento é exatamente igual ao da situação 1 já explicada, e não terá nada a acrescentar. Contudo, no caso b) a situação é diferente. Tendo em conta que a subtracção do ângulo da store ao limite direito resulta num valor negativo, o procedimento é efectuado com base no valor do limite esquerdo. 1angulo = targetStore - leftLimit; 2percent = angulo *100 / (horizontalAngle *2); 3x = (percent) / 100; Uma vez que neste caso o cálculo é efectuado com base no limite esquerdo, a percentagem x (representativa da posição da loja no ecrã) será igual à percentagem obtida do ângulo de visão. O resultado da situação 2 é então o seguinte: 1if (targetStore > leftLimit || targetStore < rightLimit) { 38 Implementação 2angulo = 0; 3percent = 0; 4if (rightLimit > targetStore) { 5angulo = rightLimit - targetStore; 6percent = angulo *100 / (horizontalAngle *2); 7x = (100 - percent) / 100; 8}else { 9angulo = targetStore - leftLimit; 10 percent = angulo *100 / (horizontalAngle *2); 11 x = (percent) / 100; 12 } 13 horizontalDraw = true; 14 }else 15 horizontalDraw = false; Relativamente ao posicionamento vertical da imagem das lojas no display, uma vez que de acordo com o estudo feito na secção 2.1.5 do capítulo 2se concluiu ser inviável o cálculo preciso da altitude da loja em questão, então foi decido implementar-se uma solução baseada na inclinação do dispositivo. Assim, à medida que se rodar o dispositivo para baixo (na direção que o levará a ficar paralelo ao chão) a imagem da loja é desenhada mais acima no ecrã. Vice-versa também acontece, inclinando para cima, a imagem representativa da loja desce. Desta forma o utilizador tem de apontar em frente com o dispositivo por forma a poder efetivamente ver onde estão as lojas que o rodeiam. 4.2.1.6 Overlay de imagens Ooverlay de imagens consiste em sobrepor a imagem produzida pela câmara com outras imagens e/ou texto criadas virtualmente. Existem 2 formas básicas de desenhar objetos 2D em Android. Usar diretamente uma View é uma melhor solução quando o objeto é estático. Contudo, se o objeto for dinâmico ou se for um objeto que se pretende re-desenhar regularmente, então utilizar a classe Canvas será uma solução mais adequada.3 A facilidade de desenho recorrendo a este método foi um fator importante aquando da decisão de seguir o método Canvas para a implementação que resolve o problema em questão. 4.2.2 Aplicação Cardmobili A aplicação já existente da Cardmobili contém informação preponderante para a implementação do módulo de realidade aumentada. Para ser feita a comunicação entre ambos foi implementada uma interface que será o elo de comunicação entre os 2 módulos. 3http://www.linux.com/learn/tutorials/707993howtodraw2dobjectinandroidwithacanvas 39 Implementação 1public interface AugmentedRealityInterface { 2public void startLoyalty(String cardId); 3public void startCoupons(Location loc); 4public List<Store> getStores(String latitude, String longitude, String radius); 5public Bitmap getMerchantImage(String imageId, int width, int height); 6public int getLayoutBackgroundColor(); 7public int getLayoutTextColor(); 8} Quando o utilizador toca no ecrã, é verificado se nesse ponto existe alguma loja e, no caso de existir, é aberto o respetivo programa (Fidelização ou Cupão). 1if(!TextUtils.isEmpty(store.getLoyaltyCardId())){ 2AugmentedMain.this.callback.startLoyalty(store.getLoyaltyCardId()); 3}else{ 4AugmentedMain.this.callback.startCoupons(store.getLocation()); 5} Também as cores que serão atribuídas ao desenho do overlay no ecrã são definidas na aplicação mãe e, uma vez mais, a comunicação é feita através da interface desenvolvida. 4.2.3 Servidor No protótipo desenvolvido é necessário saber a informação das lojas que rodeiam o utilizador e essa informação é pedida ao servidor através da aplicação mãe da Cardmobili. É através da mesma interface AugmentedRealityInterface que a comunicação é feita por intermédio do método getStores e assim se preenchem, com a informação necessária, os objetos Store existentes no módulo de realidade aumentada. Uma vez que esta chamada ao servidor é frequente, foi necessário recorrer a uma AsyncTask para executar num thread em background e posteriormente ser atualizado o ecrã com a informação pretendida. 40 Capítulo 5 Resultados 5.1 Primeira versão de teste No final do período estabelecido para o desenvolvimento da dissertação foram atingidos resultados satisfatórios. O módulo de realidade aumentada foi desenvolvido com sucesso tendo atingido uma versão apresentável. Numa primeira fase foi necessário construir e testar a leitura de diversos dados como os obtidos para a localização e para os sensores. Depois foi importante fazer a integração do protótipo desenvolvido com a aplicação já existente da Cardmobili e aqui testar a interface desenvolvida para o efeito. Também o overlay de imagens sobre a câmara foi desenvolvido inicialmente numa fase de teste. A figura 5.1 ilustra uma primeira versão do protótipo. 41 Resultados Figura 5.1: Primeira versão do protótipo Nesta fase, no ecrã, foram apresentadas as diversas leituras de dados feitas para confirmar se os dados de localização e orientação estavam a ser corretamente adquiridos. O botão de teste, visível na figura 5.1, serviu para validar a comunicação com a aplicação mãe através da interface, uma vez que clicando no botão abriria um cartão específico. Também o overlay estava ainda numa fase de esboço, com valores pré definidos para o nome da loja e pontos, ainda sem a comunicação com o servidor a funcionar. Na imagem acima vemos a loja Pans Company com 1000 pontos. Estes valores não vieram do servidor, foram manualmente introduzidos, nesta fase, como teste. 5.2 Versão integrada na aplicação Cardmobili Com a evolução da implementação, atingiram-se os resultados finais. 42 Resultados Figura 5.2: Aplicação Cardmobili com módulo de realidade aumentada integrado Feita a integração do módulo de realidade aumentada com a aplicação da Cardmobili, o utilizador abrindo a aplicação tem a possibilidade de escolher a opção Augmented Reality (5.2) que iniciará o protótipo desenvolvido (figuras 5.3,5.4,5.5). Figura 5.3: Versão final do protótipo 43 Conclusões e trabalhos futuros 50 Referências [Bol11] Philipp Lukas Bolliger. Robust Indoor Positioning through Adaptive Collaborative Labeling of Location Fingerprints. PhD thesis, ETH, 2011. [CJJA04] Hae Don Chon, Sibum Jun, Heejae Jung e Sang Won An. Using rfid for accurate positioning. Positioning, 1:0, 2004. [D ˛ab11] Piotr D ˛abrowski. Implementing augmented reality for visualisation of virtual buildings using android. 2011. [FNI13] Zahid Farid, Rosdiadee Nordin e Mahamod Ismail. Recent advances in wireless indoor localization techniques and system. Journal of Computer Networks and Communications, 2013, 2013. [GG13] Jens Grubert e Raphael Grasset. Augmented Reality for Android application development. Packt Publishing Ltd., November 2013. [GL] Julia Patzelt Gerhard Lammel. Pressure sensors provide indoor competency for navigation. Bosch SensorTech, Disponível em http://electroiq.com/blog/2009/07/ pressure-sensors-provide-indoor-competency-for-navigation/. [GR08] Qing Fu Guenther Retscher. Active rfid trilateration for indoor positioning. Disponível em http://mycoordinates.org/ active-rfid-trilateration-for-indoor-positioning/all/1/, Maio 2008. [JE10] Gang Xu Jay Esfandyar, Massimo Mascotto. Mems pressure sensors in pedestrian navigation. STMicroelectronics , Disponível em http://www.sensorsmag.com/electronics-computers/consumer/ mems-pressure-sensors-pedestrian-navigation-7896, Dezembro 2010. [Jia12] Landu Jiang. A WLAN Fingerprinting Based Indoor Localization Technique. PhD thesis, University of Nebraska, 2012. [Kat11] Rimma Kats. Valpak pushes geo-targeted coupons via mobile augmented reality app. Mobile Commerce Daily , Disponível em http://www.mobilecommercedaily.com/ valpak-pushes-geo-targeted-coupons-via-mobile-augmented-reality-app, Março 2011. 51 REFERÊNCIAS [KSOK06] Masakatsu Kourogi, Nobuchika Sakata, Takashi Okuma e Takeshi Kurata. Indoor/outdoor pedestrian navigation with an embedded gps/rfid/self-contained sensor system. In Advances in Artificial Reality and Tele-Existence, pages 1310–1321. Springer, 2006. [LQD08] Binghao Li, Ishrat J Quader e Andrew G Dempster. On outdoor positioning with wi-fi. Positioning, 1:0, 2008. [LSDR06] Binghao Li, James Salter, Andrew G Dempster e Chris Rizos. Indoor positioning techniques based on wireless lan. In LAN, First IEEE International Conference on Wireless Broadband and Ultra Wideband Communications. Citeseer, 2006. [LZZ+09] Yin Lou, Chengyang Zhang, Yu Zheng, Xing Xie, Wei Wang e Yan Huang. Mapmatching for low-sampling-rate gps trajectories. In Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems, pages 352–361. ACM, 2009. [MS12] Greg Milette e Adam Stroud. Professional AndroidTM Sensor Programming. John Wiley and Sons, Inc, 2012. [RD08] Lionel Reyero e Gilles Delisle. A pervasive indoor-outdoor positioning system. Journal of Networks, 3(8), 2008. [Sam13] Samsung. Developing android application using atmospheric pressure sensor. STMicroelectronics , Disponível em http: //developer.samsung.com/android/technical-docs/ Developing-Android-Application-Using-Atmospheric-Pressure-Sensor/, february 2013. [SK08] Nattapong Swangmuang e Prashant Krishnamurthy. Location fingerprint analyses toward efficient indoor positioning. In Pervasive Computing and Communications, 2008. PerCom 2008. Sixth Annual IEEE International Conference on, pages 100–109. IEEE, 2008. [Soo12] Raghav Sood. Pro Android augmented reality. Apress, 2012. [VK] Stefan Varga e Michal Kostic. Android sensors. 52