[ios] ibeacon 간격 이해

ibeacon (beacon / Bluetooth-lowenergy / BLE)으로 거리를 두는 방법에 대한 기본 개념을 파악하려고합니다. ibeacon이 얼마나 정확하게 측정 할 수 있는지에 대한 실제 문서가 있습니까? 내가 300 피트 떨어져 있다고 가정 해 봅시다 … 아이 비콘이 이것을 감지 할 수 있습니까?

특히 v4 및. v5 및 iOS이지만 일반적으로 모든 BLE 장치.

Bluetooth 주파수 및 처리량은 이에 어떤 영향을 줍니까? 비콘 장치가 기본 BLE를 개선하거나 거리를 제한 할 수 있습니까?

               | Range       | Freq       | T/sec      | Topo       |      
               |–—–––––––––––|–—––––––––––|–—––––––––––|–—––––––––––|
Bluetooth v2.1 | Up to 100 m | < 2.481ghz | < 2.1mbit  | scatternet |
               |-------------|------------|------------|------------|
Bluetooth v4   |     ?       | < 2.481ghz | < 305kbit  | mesh       |
               |-------------|------------|------------|------------|
Bluetooth v5   |     ?       | < 2.481ghz | < 1306kbit | mesh       |



답변

iOS에서 제공하는 거리 추정치는 보정 된 송신기 전력 (txPower)에 대한 비콘 신호 강도 (rssi)의 비율을 기반으로합니다. txPower는 1 미터 거리에서 rssi 단위로 측정 된 알려진 신호 강도입니다. 정확한 거리 추정을 허용하려면 각 비콘을이 txPower 값으로 보정해야합니다.

거리 추정치는 유용하지만 완벽하지는 않으며 다른 변수를 제어해야합니다. 반드시이 될 복잡성 및 제한 사항에 읽어 이를 오용 전에.

Android iBeacon 라이브러리를 구축 할 때 iOS CoreLocation 소스 코드를 사용할 수 없기 때문에 독자적인 알고리즘을 만들어야했습니다. 우리는 알려진 거리에서 많은 rssi 측정을 측정 한 다음 데이터 포인트와 일치하는 최적의 곡선을 만들었습니다. 우리가 생각 해낸 알고리즘은 아래에 Java 코드로 표시됩니다.

여기서 “정확도”라는 용어는 iOS가 미터 단위의 거리를 의미합니다. 이 공식은 완벽하지는 않지만 iOS가하는 일과 거의 비슷합니다.

protected static double calculateAccuracy(int txPower, double rssi) {
  if (rssi == 0) {
    return -1.0; // if we cannot determine accuracy, return -1.
  }

  double ratio = rssi*1.0/txPower;
  if (ratio < 1.0) {
    return Math.pow(ratio,10);
  }
  else {
    double accuracy =  (0.89976)*Math.pow(ratio,7.7095) + 0.111;
    return accuracy;
  }
}   

주 : 값 0.89976, 7.7095 및 0.111로는 가장 적합한 곡선 풀 때 계산 세 상수 우리의 측정 된 데이터 포인트. YMMV


답변

저는 iBeacons의 정확성 / rssi / 근접성 문제를 매우 철저히 조사하고 있으며 인터넷의 모든 리소스 (블로그, StackOverflow의 게시물)가 잘못되었다고 생각합니다.

davidgyoung (수락 된 답변,> 100 개 찬성) 말한다 :

여기서 “정확도”라는 용어는 iOS가 미터 단위의 거리를 의미합니다.

사실, 대부분의 사람들이 이것을 말하지만 나는 이유를 모릅니다! 문서에 따르면 CLBeacon.proximity는 다음과 같이 매우 명확합니다.

1 시그마 수평 정확도를 미터 단위로 나타냅니다. 이 속성을 사용하여 근접도 값이 동일한 비콘을 구분합니다. 비콘의 정확한 위치를 식별하는 데 사용하지 마십시오. RF 간섭으로 인해 정확도 값이 변동될 수 있습니다.

반복하겠습니다. 1 시그마 정확도 (미터 단위) . 주제에 관한 구글의 상위 10 개 페이지는 모두 문서에서 인용 한 “하나의 시그마”라는 용어를 가지고 있지만, 이들 중 어느 것도 용어를 분석하지 않아서이 용어를 이해하는 데 핵심이됩니다.

실제로 1 시그마 정확도 가 무엇인지 설명하는 것이 매우 중요 합니다 . 시작할 URL : http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty

물리적 세계에서 일부 측정을 수행하면 항상 다른 결과 (노이즈, 왜곡 등으로 인해)를 얻고 결과가 가우스 분포를 형성하는 경우가 매우 많습니다. 가우스 곡선을 설명하는 두 가지 주요 매개 변수가 있습니다.

  1. 평균 (이해하기 쉬운 곡선의 피크가 발생하는 값).
  2. 표준 편차는 곡선이 얼마나 넓거나 좁은지를 나타냅니다. 모든 결과가 서로 가깝기 때문에 곡선이 좁을수록 정확도가 높아집니다. 곡선이 넓고 가파르 지 않은 경우 동일한 현상의 측정 값이 서로 크게 다르므로 측정 품질이 좋지 않습니다.

하나의 시그마 는 가우시안 곡선이 얼마나 좁거나 넓은지를 설명하는 또 다른 방법입니다.
측정의 평균이 X이고 하나의 시그마 가 σ이면 모든 측정의 68 %가 ~ 사이 X - σ에있게 X + σ됩니다.

예. 거리를 측정하고 그 결과 가우스 분포를 얻습니다. 평균은 10m입니다. σ가 4m이면 측정의 68 %가 6m에서 14m 사이에 있음을 의미합니다.

비콘으로 거리를 측정 할 때 RSSI와 1 미터 교정 값을 얻습니다.이를 통해 미터 단위로 거리를 측정 할 수 있습니다. 그러나 모든 측정은 가우시안 곡선을 형성하는 다른 값을 제공합니다. 그리고 하나의 시그마 (및 정확도)는 거리가 아니라 측정의 정확도입니다!

신호가 더 나쁘기 때문에 비콘을 더 멀리 이동할 때 실제로 하나의 시그마 가 증가하기 때문에 오해의 소지가있을 수 있습니다 . 그러나 다른 비콘 전력 수준을 사용하면 실제로 거리를 변경하지 않고도 완전히 다른 정확도 값을 얻을 수 있습니다. 전력이 높을수록 오류가 적습니다.

문제를 철저히 분석하는 블로그 게시물이 있습니다. http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

저자는 정확도가 실제로 거리라는 가설을 가지고 있습니다. 그는 Kontakt.io의 비콘이 전력을 최대 값으로 증가 시켰을 때 결함이 있다고 주장합니다. 정확도 값은 1, 5, 심지어 15 미터에서 매우 작았습니다. 힘을 높이기 전에 정확도는 거리 값에 매우 가깝습니다. 저는 개인적으로 그것이 맞다고 생각합니다. 전력 레벨이 높을수록 간섭의 영향이 적기 때문입니다. 그리고 Estimote 비콘이 이런 식으로 작동하지 않는 이유가 이상합니다.

내가 100 % 옳다는 말은 아니지만 iOS 개발자 외에는 무선 전자 공학 학위를 가지고 있으며 문서에서 “하나의 시그마”라는 용어를 무시해서는 안된다고 생각하며 이에 대해 논의를 시작하고 싶습니다.

정확도에 대한 Apple의 알고리즘은 최근 측정 값을 수집하고 그에 대한 가우스 분포를 분석 할 수 있습니다. 이것이 정확성을 설정하는 방법입니다. 나는 그들이 확실히 변경 되었기 때문에 이전 분포 거리 값을 재설정하기 위해 사용자가 움직이는 지 (그리고 얼마나 빨리) 이동 하는지를 감지하기 위해 정보 양식 가속도계를 사용할 가능성을 배제하지 않을 것입니다.


답변

iBeacon 출력 전력은 1 미터 거리에서 측정 (보정)됩니다. 이것이 -59dBm이라고 가정 해 봅시다 (예제 일뿐입니다). iBeacon은 LE 광고의 일부로이 번호를 포함합니다.

청취 장치 (iPhone 등)는 장치의 RSSI를 측정합니다. 예를 들어 이것이 -72dBm이라고 가정 해 봅시다.

이 숫자는 dBm 단위이므로 전력 비율은 실제로 dB의 차이입니다. 그래서:

ratio_dB = txCalibratedPower - RSSI

이를 선형 비율로 변환하기 위해 dB에 대한 표준 공식을 사용합니다.

ratio_linear = 10 ^ (ratio_dB / 10)

에너지 보존을 가정하면 신호 강도는 1 / r ^ 2로 떨어집니다. 그래서:

power = power_at_1_meter / r^2. r을 구하면 다음을 얻습니다.

r = sqrt(ratio_linear)

Javascript에서 코드는 다음과 같습니다.

function getRange(txCalibratedPower, rssi) {
    var ratio_db = txCalibratedPower - rssi;
    var ratio_linear = Math.pow(10, ratio_db / 10);

    var r = Math.sqrt(ratio_linear);
    return r;
}

강철 건물 내부에 있다면 신호 감쇠를 1 / r ^ 2보다 느리게 만드는 내부 반사가있을 수 있습니다. 신호가 인체 (물)를 통과하면 신호가 감쇠됩니다. 안테나가 모든 방향에서 동일한 이득을 갖지 못할 가능성이 큽니다. 실내의 금속 물체는 이상한 간섭 패턴을 생성 할 수 있습니다. 기타 등등 … YMMV.


답변

iBeacon은 Bluetooth Low Energy (LE)를 사용하여 위치를 인식하고 Bluetooth LE의 거리 / 범위는 160ft입니다 ( http://en.wikipedia.org/wiki/Bluetooth_low_energy ).


답변

iBeacon 형식의 광고 패킷 소스까지의 거리는 측정 된 수신 신호 강도를 송신기가 광고 데이터에서 인코딩해야하는 청구 된 전송 전력과 비교하여 계산 된 신호 경로 감쇠로부터 추정 됩니다.

이와 같은 경로 손실 기반 체계는 근사치 일 뿐이며 안테나 각도, 중간 물체 및 아마도 잡음이있는 RF 환경과 같은 요인에 따라 달라질 수 있습니다. 이에 비해 실제로 거리 측정 용으로 설계된 시스템 (GPS, 레이더 등)은 전파 시간의 정확한 측정에 의존하며 동일한 경우 신호의 위상을 검사합니다.

Jiaru가 지적했듯이 160 피트는 아마도 의도 된 범위를 벗어 났을 것입니다. 그러나 이것이 반드시 패킷이 통과 하지 못할 것이라는 것을 의미하지는 않으며 그 거리에서 작동 할 것으로 기 대해서는 안됩니다.


답변

가능하지만 수신하는 비콘의 전력 출력, 근처의 다른 RF 소스, 장애물 및 기타 환경 요인에 따라 다릅니다. 가장 좋은 방법은 관심있는 환경에서 사용해 보는 것입니다.


답변

같은 위치에 여러 대의 전화기와 비콘이 있으면 높은 정확도로 근접성을 측정하기가 어려울 것입니다. Android ‘b 및 l 블루투스 르 스캐너’앱을 사용하여 여러 비콘에 대한 신호 강도 (거리) 변화를 시각화하면 모든 형태의 일관된 근접 측정을 제공하는 데 복잡한 적응 알고리즘이 필요할 수 있음을 빠르게 발견 할 수 있습니다. .

고객의 불만을 줄이기 위해 단순히 사용자에게 “휴대 전화를 여기에 두십시오”라고 지시하는 많은 솔루션을 보게 될 것입니다.