计算准确的 Ibeacon 距离
calculate accurate Ibeacon distance
我在 ios 的 Beacons 的帮助下开始开发室内导航系统。我们现在有 3 个 Bluecast 信标,但我无法获得与这三个信标的准确距离。我已经通过将三个信标放在同一位置进行了测试,但它在主要时间显示了不同的距离和 rssi 值。
我尝试使用 beacon provider reveal 应用程序和我自己的应用程序,但两个应用程序都显示相同的值。
示例代码是
locationManager = CLLocationManager()
locationManager.delegate = self
let uuid = UUID(uuidString: uuidStr)
beaconRegion = CLBeaconRegion(proximityUUID: uuid!, identifier: "Beacones")
beaconRegion.notifyOnEntry = true
beaconRegion.notifyOnExit = true
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoring(for: beaconRegion)
locationManager.startUpdatingLocation()
距离计算逻辑如下
public func calculateAccuracy(txPower : Double, rssi : Double) -> Double {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}
let ratio :Double = rssi*1.0/txPower;
if (ratio < 1.0) {
return pow(ratio,10.0);
}
else {
let accuracy :Double = (0.89976)*pow(ratio,7.7095) + 0.111;
return accuracy;
}
}
注意不要对您可以获得的准确度设定不切实际的期望。使用蓝牙信号电平估算距离最多只能提供粗略的距离估算值,但存在许多可能使其无法正常工作的陷阱。
为了获得最佳效果:
将您的信标发射器设置为尽可能高的值,以增加信噪比并使 rssi 更加一致。
将信标广告率设置得尽可能高,以获得尽可能多的统计样本以平均掉噪音。
将您的 txPower 常数调整为在特定设备接收器上一米处测得的平均 RSSI,用于距离估计。
如果您发现与公式一致的高估或低估,请根据需要调整常量以获得最佳拟合。
意识到障碍物(甚至人体)、反射、无线电噪声、phone 案例,甚至不同的 phone 模型都会影响结果。估计距离在 2-3 米时效果最佳。在更远的距离处,您会看到更高的错误率,因为信号电平随距离呈指数下降。
我在 ios 的 Beacons 的帮助下开始开发室内导航系统。我们现在有 3 个 Bluecast 信标,但我无法获得与这三个信标的准确距离。我已经通过将三个信标放在同一位置进行了测试,但它在主要时间显示了不同的距离和 rssi 值。
我尝试使用 beacon provider reveal 应用程序和我自己的应用程序,但两个应用程序都显示相同的值。
示例代码是
locationManager = CLLocationManager()
locationManager.delegate = self
let uuid = UUID(uuidString: uuidStr)
beaconRegion = CLBeaconRegion(proximityUUID: uuid!, identifier: "Beacones")
beaconRegion.notifyOnEntry = true
beaconRegion.notifyOnExit = true
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoring(for: beaconRegion)
locationManager.startUpdatingLocation()
距离计算逻辑如下
public func calculateAccuracy(txPower : Double, rssi : Double) -> Double {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}
let ratio :Double = rssi*1.0/txPower;
if (ratio < 1.0) {
return pow(ratio,10.0);
}
else {
let accuracy :Double = (0.89976)*pow(ratio,7.7095) + 0.111;
return accuracy;
}
}
注意不要对您可以获得的准确度设定不切实际的期望。使用蓝牙信号电平估算距离最多只能提供粗略的距离估算值,但存在许多可能使其无法正常工作的陷阱。
为了获得最佳效果:
将您的信标发射器设置为尽可能高的值,以增加信噪比并使 rssi 更加一致。
将信标广告率设置得尽可能高,以获得尽可能多的统计样本以平均掉噪音。
将您的 txPower 常数调整为在特定设备接收器上一米处测得的平均 RSSI,用于距离估计。
如果您发现与公式一致的高估或低估,请根据需要调整常量以获得最佳拟合。
意识到障碍物(甚至人体)、反射、无线电噪声、phone 案例,甚至不同的 phone 模型都会影响结果。估计距离在 2-3 米时效果最佳。在更远的距离处,您会看到更高的错误率,因为信号电平随距离呈指数下降。