【问题标题】:calculate accurate Ibeacon distance计算准确的信标距离
【发布时间】:2017-08-04 12:45:27
【问题描述】:

我正在开始借助 ios 中的 Beacons 开发室内导航系统。我们现在有 3 个 Bluecast 信标,我无法从这三个信标中获得准确的距离。我已经通过将三个信标放在同一位置进行测试,但它在主要时间显示不同的距离和 rssi 值。

我对信标提供者显示应用程序和我自己的应用程序进行了同样的尝试,但两个应用程序都显示出相同的价值。

示例代码是

 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;
        }
    }

【问题讨论】:

    标签: ios swift core-location ibeacon


    【解决方案1】:

    注意不要对可以获得的准确度设定不切实际的期望。使用蓝牙信号水平估计距离最多只能粗略估计距离,但有许多陷阱可能使其无法正常工作。

    为了获得最佳效果:

    • 将信标发射器设置为尽可能高的值,以提高信噪比并使 rssi 更加一致。

    • 将信标广告率设置为尽可能高,以获取尽可能多的统计样本来平均噪声。

    • 将您的 txPower 常数调整为在特定设备接收器上在一米处测量的平均 RSSI,以用于距离估计。

    • 如果您发现该公式的估计值过高或过低,请根据需要调整常数以获得最佳拟合。

    意识到障碍物(甚至是人体)、反射、无线电噪音、手机壳,甚至不同的手机型号都会影响结果。估计 2-3 米的距离效果最好。在更远的距离,您会看到更高的错误率,因为信号电平会随着距离呈指数下降。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多