用于监控iBeacons的更新/刷新率

Dam*_*Diz 0 cllocationmanager ios ios7 ibeacon

过去几天我一直在玩Estimote Beacons.我开始怀疑iBeacons的有效性,因为它们在确定Beacons位置时具有很高的延迟.

当你移动2-3米时,它需要几秒钟,直到它的位置正确.一个用例场景,如捕捉一个人走过灯塔的人可能很难确定.

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

dav*_*ung 8

您看到iOS距离测量(他们称之为"CLBeacon对象中的"准确度")需要很长时间才能稳定的原因是因为它基于RSSI的运行平均值 - 接收信号强度.这种信号强度测量本身就是噪声,它会四处反弹.这就是为什么要收集多个样品以使其平滑的原因.

但由于这种平均,存在滞后.最近的估计是基于几秒钟前的测量结果.

您无法更改CLLocationManager或CLBeaconRegion的刷新率,但您可能能够获得比1s基线更频繁传输的iBeacon.更多的传输可以为您提供更多的RSSI测量,它可以帮助消除噪声.因为我不确定CoreLocation的内部实现,所以我不认为更高的iBeacon传输速率是否会降低距离测量的噪声.

您也可以根据RSSI和iBeacon发出的功率校准值计算自己的距离测量值.如果您使用单个RSSI样本,那么通过早期测量的平均值将没有滞后,但您将具有高度的可变性.您基本上必须接受在滤除噪声和根据不同位置滤除旧测量之间的权衡.

如果您想尝试自己的计算,可以使用下面的内容(有关详细信息,请参阅我对此问题的回答).

distanceInMeters =  0.89976 * (rssi/txPower)**7.7095 + 0.111
Run Code Online (Sandbox Code Playgroud)

你必须对这个估计的准确程度设定切合实际的期望.Apple通常建议您不要在CLBeacon内部使用其"准确度"测量,除非它与其他更粗糙的测量相结合,例如将"距离测量"划分为"立即","近"和"远"分组.