python - 稳定 iBeacons 上的 rssi
问题描述
我们尝试稳定几个信标的信号强度。我们有来自 kontakt.io 的信标,并扫描来自树莓派零的信标。我们得到 -40db 和 -87db 之间的信号强度,我们希望它更稳定。我们希望 rssi 的差异不超过 + -10db,最好尽可能低。这是我们正在研究的室内定位系统,这就是我们试图稳定 rssi 信号强度时代码的样子。它是用python编写的。这两个是我们在代码中使用的公式:
distance = 10^((rssi at 1m - rssi)/20)
distance = rssi *fiterFactor + oldDistance *(1 - FilterFactor)
解决方案
BLE 检测的 RSSI 相差很大范围是正常的,并且是预期的。离信标越远,这个范围就越大,因为信噪比越低。
在使用信标进行距离估计时,正确设置期望值至关重要。在 1 米的实际范围内,您可能在 95% 的时间里估计距离在 0.5 到 2 米之间。在 10 米等较大范围内,您的估计值可能在 5 米到 40 米之间变化。
您的用例是否适用于上述结果?如果没有,您可能需要改进您的用例或查看其他技术,如 RSSI 指纹识别。
即使达到上述非常粗略的结果也需要做一些事情:
- 将您的发射机功率设置为制造商允许的最佳信噪比。这应该是在 1 米处为您提供约 -59 dBm 的水平。
- 将您的广告频率设置得尽可能高,至少 10Hz
- 只要您的用例允许,平均所有 RSSI 测量值 - 至少需要 1 秒才能获得约 10 个样本,如果您的用例允许,甚至需要 20 秒。(Apple Core Location 平均超过 20 秒)。平均可减少测量中的噪声。
推荐阅读
- javascript - 在 ReactJS 中解构数组
- javascript - 如何正确解析 Javascript 中的 view_state
- node.js - 安装新模块后找不到docker-compose node js模块
- python - 列中的 Groupby 有条件返回布尔值?
- python - 无法将输入数组从形状 (0) 广播到形状 (100)
- sql - sql语句中的错误
- c# - 如何在 WPF 中的 ListBox 中创建 ListBox
- java - Java - 在二维数组中查找连续元素
- java - MainActivity 中未访问 dashbord.xml 中的按钮
- arrays - 在 VBA 中使用 AutoFilter 来包含所有 Array