python-3.x - 如何使用 rssi 和 tx_power 计算信标与信标接收器的距离
问题描述
我有 RSSI 和 TX_Power 来计算信标的距离,但问题是我没有得到准确的距离。
我尝试以下代码使用 txpower 和 RSSI 值查找距离。
import math
rssi= -61
txpower = -64
if rssi == 0:
print(-1)
else:
ratio = rssi*1.0 / txpower
if ratio < 1.0:
ans= math.pow(ratio, 10)
print(ans)
else:
ans2=(0.89976 (ratio ** 7.7095)) + 0.111
print(ans2)
使用上面的公式,我得到的距离输出为 0.6187m,但 Beacon Scanner 应用程序显示 rssi= -61 和 txpower = -64 为 1.40m。
解决方案
您并不能真正从 BLE RSSI 测量中获得良好的距离精度。有太多的变量需要应对:每个设备都不同,天线轮廓是奇怪的形状(因此相对旋转会产生巨大的影响),两端存在恒定且非正态分布的功率波动。
这是一篇关于缓解这些问题的一些尝试的有趣且相当近期的论文,但即便如此,准确性也不是很好,但这与您所需的应用有关:基于改进的 RSSI 距离模型的室内定位算法(2018 年)。李国权等。
推荐阅读
- kubernetes - Kubernetes pod 和他的主机之间通信的最快方式是什么?
- haskell - 有没有更好的方法来添加两种自定义数据类型的值,其中两者都是 MonoFunctor 的实例?
- vba - 在类模块中使用带参数的 Sub
- java - Android 测试运行失败:没有测试结果
- nested - 如何验证空手道中嵌套 json 数组中的元素?
- rust - 在 Rust 中返回 Result<_, impl Error> 而不是 Result<_, &str> 的最佳实践?
- python - 熊猫匹配两列并创建另一列
- mysql - SUM 属于同一组的产品数量(group_id)
- javascript - 使用 .filter 删除 React 中的函数
- php - 为什么 Shell_exec() 和 exec() 在 php 中不起作用?$return_val 为 0