Várias aplicações precisam determinar a distância aproximada entre o celular e o beacon. A estimativa de distância pode ter uma margem significante de erro, muitas vezes maior em alguns metros (dependendo de vários fatores para melhoria da precisão).
As razões para essa variação de distância e as medidas que podem ser tomadas para reduzi-la, são algumas das perguntas mais frequentes sobre beacons. Dentre os fatores que influenciam o erro na estimativa, temos: reflexões do sinal do rádio, obstruções que atenuam o sinal do rádio e orientação tanto do celular quanto do beacon.
O principal fator que afeta o cálculo da distância é o ruído do rádio. O motivo deste ruído existe em qualquer outro dispositivo (em uma antiga TV analógica por exemplo), podendo variar de acordo com a distância entre o dispositivo e o beacon. Se o dispositivo estiver próximo ao beacon, a chance de obter um melhor sinal será maior, do que se estivessem à 10 metros de distância.
Recomendações da Apple
Quando a Apple anunciou a tecnologia iBeacon no IOS 7, em sua documentação não recomendavam diretamente o uso da estimativa de distância. A classe CLBeacon, que prove o acesso às informações dos beacons na região de leitura, tem um campo chamado estimativa de distância do beacon em metros.
No entanto, ao invés de nomear essa propriedade de “distância”, a Apple decidiu intitular de “estimativa”, indicando que se tratava de uma informação sem muita precisão. A recomendação é usa-la apenas para comparação entre os beacons e os dispositivos. A classe CLBeacon também prove uma propriedade chamada proximidade, onde classifica a distância como muito próximo, próximo e longe. A Apple é vaga quanto a essas definições, mas experimentos mostram que o “muito próximo” seja algo em torno de 0,5 metros ou menos, “próximo” em torno de 3 metros ou menos e “longe” acima de 3 metros.
Apesar das informações mencionadas anteriormente, não significa que você não deve utilizar a distância do beacon diretamente. É necessário apenas compreender os fundamentos do seu funcionamento e as limitações da qualidade da informação.
Potência do Transmissor
Na transmissão de sinal de um beacon, há a transmissão do campo de potência, que indica o quão forte o sinal deveria ser em determinada distância. Por exemplo, quando se utiliza a tecnologia iBeacon, o padrão de medida é o nível do sinal do iPhone 5s (o último modelo disponível quando o IOS 7 foi lançado), medido do beacon a uma distância de 1 metro.
Beacons devem ser calibrados medindo seu nível de sinal, conhecido como Received Signal Strength Indicator (RSSI), a referência de distância e configurando o Trasnsmit Power com este valor de referência. Valores de RSSI são medidos em dBm. Um valor médio de calibração à um metro, deveria ser algo em torno de -59 dBm.
Atualmente, o valor de calibração pode variar de acordo com o fabricante do beacon, pois cada marca possui transmissores e antenas com diferentes taxas de potência de rádio.
Lembramos que no Taggen Beacon, o valor da potência de saída do transmissor pode ser configurável, portanto essa é mais uma variável a ser considerada pelos clientes que desejam efetuar cálculos de distância.
Como funciona o cálculo da estimativa?
Dispositivos móveis podem estimar a distância do beacon, comparando o nível de sinal que eles recebem com um nível de sinal de referência. Cada vez que um pacote de advertisement do beacon é recebido, o chipset do bluetooth provê a medida do nível do sinal do beacon, o RSSI. Como toda transmissão do beacon inclui o valor de calibração citado anteriormente, é possível comparar o nível do sinal atual com o nível do sinal esperado à 1 metro e assim estimar a distância.
Por exemplo, vamos dizer que no pacote de advertisement do beacon recebemos um nível de sinal de -65 dBm e o valor da calibração do transmissor de potência for -59 dBm. Como -65 dBm representa um nível de sinal mais fraco que -59 dBm, significa que o beacon provavelmente está a mais de 1 metro de distância.
As 3 constantes da fórmula (0.89976, 7.7095 e 0.111) são baseadas em uma curva de "best fit", feita a partir de diversas medidas de sinais em diferentes distâncias, nos laboratórios da Taggen. Essa curva pode variar de acordo com a marca e modelo do celular utilizado, assim como pode variar de acordo com diferentes configurações do Taggen Beacon. Neste artigo mostramos como obter a curva de "best fit" e como obter as constantes utilizadas nesta fórmula.
Algoritmo padrão para obtenção do cálculo de distância:
protected static double calculateDistance(int txPower, double rssi, bool isEddystone) {
float a=1.3173765600;
float b = 7.0280800100;
float c = -0,6409702466;
if (rssi == 0) {
return -1.0; // if we cannot determine distance, return -1.
}
double ratio;
if (isEddystone) {
ratio = = rssi*1.0/(txPower-36);
}
else {
ratio = = rssi*1.0/txPower;
}
//if (ratio < 1.0) {
// return Math.pow(ratio,10);
//}
//else {
double accuracy = a*Math.pow(ratio,b) + c;
return accuracy;
//}
}
Caso utilize -65 para o txPower e -59 para RSSI, a distância estimada será de 2 metros.
Filtro de ruído
Devido ao ruído de sinal, não é uma boa ideia calcular a estimativa de distância baseada em uma simples medida RSSI, pois os valores do RSSI dos pacotes do beacon variam muito, dependendo do lugar em que se está. Uma maneira simples de filtrar esse ruído, seria obter uma média de várias medidas do RSSI, por exemplo: uma média dos pacotes recebidos nos 20 primeiros segundos, para ajudar amenizar o ruído. Outra medida seria descartar as medidas muito altas e muito baixas desse intervalo. Uma dica de algoritmo é descartar as medidas fora dos 10% abaixo e acima da média, obtida durante os 20 segundos de leituras RSSI.
A vantagem desse método é que as estimativas de distância serão mais apuradas e estáveis. A desvantagem é que o dispositivo móvel se move muito rápido em relação ao beacon, e esperar 20 segundos para estimar a distância pode apresentar valores atrasados com um certo delay.
20 segundos como parâmetro é similar ao que é feito pelo IOS. O gráfico abaixo mostra como a classe CLBeacon muda ao longo do tempo, quando um iPhone 4s move-se rapidamente de 0,5 metros a 3 metros (linha vermelha). Como pode observar, leva aproximadamente 20 segundos para a estimativa de distância (linha azul) se estabilizar após o dispositivo se mover.
Variação de dispositivos
A estimativa de distância do beacon se comporta de maneira consistente na maioria dos dispositivos IOS, pois não há muita variação no chipset do bluetooth e nas antenas entre os modelos 4s, 5 e 6, mas isso não é totalmente verdade. Estimativas de distância de um iPod Touch, por exemplo, subestimam a distância dos beacons, provavelmente porque suas antenas são colocadas de forma diferente a fim de fornecer um pouco mais de ganho na recepção dos sinais de rádio do bluetooth.
A variação de dispositivos é um problema muito maior para aparelhos com o Android. Cada modelo Android pode ter um chipset bluetooth, antena e o desenho do case totalmente diferentes. Todos esses fatores afetam o recebimento de nível de sinal e a estimativa de distância. Os modelos Nexus 4, Nexus 5 e Samsung Galaxy S4 recebem consideráveis diferenças de nível de sinal do mesmo beacon a uma mesma distância.
Definindo expectativas
Embora seja possível estimar a distância de um beacon, deve-se salientar que estas são apenas suposições. À medida que os dispositivos se afastam do beacon, as estimativas se tornam cada vez menos precisas. Um dispositivo que está a 20 metros de distância de um beacon pode obter uma estimativa de distância com um erro de +/- 10 metros. Dependendo se um telefone está em um bolso, orientado em uma direção diferente, atrás de uma exibição de vendas, ou bloqueado por uma multidão de pessoas, a estimativa da distância do beacon pode ser afetada.
Notas importantes:
- Se um beacon está a 1 ou 10 metros de distância, não espere ser capaz de afirmar que ele está a 10 ou 20 metros exatamente.
- Como utilizamos médias de sinal para filtrar o ruído, as estimativas de distância podem não mudar em tempo real, toda vez que um usuário se mover.
- Não espere ser capaz de determinar a direção de um beacon. Como os transmissores dos beacons são multidirecionais, embora você possa estimar a distância, não é possível estimar a direção.
- Perceba que ser capaz de estimar a distância a um beacon, não lhe diz exatamente onde um dispositivo móvel está em uma sala. Enquanto os beacons podem ser usados como um bloco de construção dentro de um sistema de localização indoor, as estimativas de distância do beacon não solucionam por si mesmas este problema.
- Não espere ser capaz de usar triangulação com alguns beacons, para criar um sistema de localização indoor preciso. Como a precisão das estimativas piora em distâncias maiores, o uso de triangulação para determinar a posição dentro de uma sala, não fornece estimativas precisas de posição.
Dito isto, há coisas que podemos fazer ou afirmar em relação às estimativas de distância do beacon. Aqui estão alguns exemplos:
- Acionar uma ação para executar algo quando um beacon está próximo, ou seja, 5 metros ou menos.
- Determinar qual dos vários beacons visíveis está mais próximo, desde que o beacon mais próximo esteja há poucos metros de distância.
- Fornecer feedbacks de distância para um usuário que esteja procurando um local específico, por exemplo, uma caça ao tesouro.
Melhores Práticas
Para obter as melhores estimativas de distância, recomenda-se :
- Usar o nível de potência do transmissor mais forte suportado pelo seu beacon, se possível e se o caso de uso permitir. Níveis de sinal mais fortes significam maiores relações sinal x ruído e melhores estimativas de distância.
- Utilize a frequência de transmissão mais alta suportada pelo seu beacon. Quanto mais pacotes de broadcast forem recebidos por um dispositivo móvel, mais amostras terão de média para filtrar o ruído.
- Prefira beacons com baterias novas, para que você possa transmitir com alta potência e alta frequência.
- Calibre seus beacons corretamente (clique aqui e veja como fazer isso).
- Coloque os beacons em locais com uma clara linha de visão, onde os sinais deverão ser recebidos.
Comentários
0 comentário
Por favor, entre para comentar.