2013-12-13 36 views
0

最近幾天我一直在玩Estimote Beacons。我開始懷疑iBeacons的有效性,因爲它們在確定信標位置時存在很高的延遲。監控iBeacons的更新/刷新率

當您移動2-3米時,需要幾秒鐘才能獲得正確的位置。 像使用情景一樣,捕捉走過燈塔的人可能很難確定。

是否可以操縱CLLocationManager或CLBeaconRegion的更新/刷新率?例如每0.1秒

+0

類似的:http://stackoverflow.com/a/19213367/2700842 –

+0

因此,您使用信標功能讓iOS喚醒您的應用程序,發佈通知讓用戶將您移動到活動狀態,然後使用Core藍牙獲取詳細和當前的數據。 –

回答

8

您看到它需要這麼長時間才能使iOS距離測量(CLBeacon對象中稱爲「準確性」)穩定的原因是因爲它基於RSSI的運行平均值 - - 接收到的信號強度。這種信號強度測量本質上是嘈雜的,它會四處跳動。這就是爲什麼收集多個樣品來平滑它的原因。

但由於這種平均,有一個滯後。最近的估計是基於幾秒前的測量結果。

您無法更改CLLocationManager或CLBeaconRegion的刷新率,但是您可能會獲得比1s基線更頻繁發送的iBeacon。更多的傳輸爲您提供更多的RSSI測量結果,並有助於消除噪音。由於我不確定CoreLocation的內部實施情況,因此我不確定更高的iBeacon傳輸速率是否會降低距離測量的噪聲。

根據RSSI和iBeacon發送的功率校準值,您總是可以計算自己的距離測量值。如果您使用單個RSSI樣本,那麼與先前測量的平均值相比不會有任何滯後,但您將具有高度的可變性。基本上,必須在濾除噪聲和根據不同位置過濾舊測量之間進行權衡。

如果你想嘗試自己的計算,你可以使用類似下面的東西(詳見我的回答this question)。

distanceInMeters = 0.89976 * (rssi/txPower)**7.7095 + 0.111 

你必須設定現實的預期,估計這個估計會有多準確。 Apple一般建議您不要在CLBeacon內使用它們的「精度」測量,除非它與其他更粗糙的測量結合使用,例如將距離測量值分割爲「直接」,「接近」和「遠」組的「接近度」。