android - 联系信标 : Inconsistent and unreliable results when determining beacon distance

标签 android bluetooth bluetooth-lowenergy ibeacon android-bluetooth

使用 Kontakt SDK,我实现了一个简单的应用程序来监视和测距我所在区域的 Kontakt 信标。我注意到检测到的信标的报告距离波动很大(例如,信标实际上在 10 米处,但它返回时为 2 米,并且可能会在距离上跳得很远),即使信标不是那么远。我浏览了文档并在信标硬件端(tx 功率/频率)、SDK 端(扫描模式和相关)尝试了所有不同的变量,并尝试了多种设备——我所做的似乎都没有提高准确性。只是想知道是否有人可以为我指明正确的方向,说明可能是什么问题。

我知道信标信号会因接收设备本身的环境和硬件等诸多因素而有很大差异;但是,当似乎没有办法获得一致的距离信息时,我不知道如何创建基于与信标的准确接近度的用户体验?

我们将不胜感激任何类型的指导、意见或建议。谢谢。

最佳答案

如果您在 Android 中实现,由于 android 中缺少降噪算法,您将面临这种剧烈波动的问题。但同样你可以检查 IOS,结果会更好,因为 IOS 支持降噪算法。现在,根据从信标接收到的 RSSI/距离值,您可以做 3 件事 -

a) 自行为您的应用实现降噪算法。 (我认为这是一个艰难的过程。)

b) 为您收到的值实现高斯滤波器。我的意思是将您从信标接收到的所有 RSSI/距离值存储在数组列表中,每 10 个值按升序排序,排除 3 个最小值和 3 个最大值,其余 4 个值计算平均值和平均值将是你的最终值(value)。 (这是简单且可靠的解决方案。)

c) 为您收到的值实现卡尔曼滤波器。这是迄今为止最好的过滤器。然而,它比高斯滤波器更难实现,但该滤波器的结果是最好的。

您可以从上面选择任何解决方案:)

关于android - 联系信标 : Inconsistent and unreliable results when determining beacon distance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621732/

相关文章:

java - Android 蓝牙广播接收器未接收

android - FirebaseRecyclerAdapter 中的 FirebaseRecyclerAdapter() 无法应用于[错误的参数]

android - 我的愿望 list 未在 Android 的工具栏中对齐

android - 从GitHub导入Android项目并将其迁移到Gradle

android - 如何使用安卓动态壁纸在屏幕上随机移动一条线?

android - 在没有使用 nRF Connect 的解决方法的情况下,无法使用自定义应用程序连接到 BLE 设备

iphone - iOS Bluetooth LE peripheralManager didReceiveWriteRequests 的例子在哪里

ios - UIBackgroundModes 外部附件

ios - 在我的应用程序中未检测到新的 ibeacons

ios - CBPeripheralManager : Does add(_ service: CBMutableService) advertise peripheral?