我正在尝试使用RSSI值在家里创建一个定位系统。
我使用neXenio库作为基础,我所做的唯一更改是实现了对数据库的日志记录:https://github.com/neXenio/BLE-Indoor-Positioning
我使用了4台Minewi7的信标,它们目前设置为仅以300ms的速度播放iBeacon类型的广告。它们位于一个方形的房间和十字型布局中,每个信标间隔约2.2米。除了普通的起居室家具外,没有明显的障碍物。对于每一次测试,我会把手机放在房间的中央,一次收集大约10-15分钟的数据。数据被发送到数据库,供我查看。
我遇到的问题是信号强度一直都有很大的波动,以至于数据基本上无法使用。Graphs from a typical test run。
当手机完全静止时,会有这么大的区别吗?我希望信号传播的本质会有一些细微的不同,但不会有这么大的差异。
这是意料之中的,还是可以通过某种方式加以改进?如果这是预期的,那么我将不得不考虑结合一些其他传感器数据来帮助提高准确性。
谢谢
编辑:
在运行了更多的测试之后,我比较了一段时间内的值(我之前只比较了rssi、距离和mac地址)。这导致发现了一种辅音振荡模式Newest test run。
这也引出了这个叠加问题:Is there an explanation for the regular oscillation experienced in Bluetooth RSSI
如果我只做iBeacon类型的广告,那么这不适用吗?但这似乎很奇怪,它是如何匹配我的问题。
发布于 2020-04-15 03:36:10
RSSI值波动很大,您对此无能为力。不幸的是,采用的速度一直很慢。
发布于 2020-04-21 14:06:52
你不能用当前使用的设备做很多事情。即使你静态地稳定信号,在移动过程中也会有很多噪声。您可以尝试:
稳定rssi信号的方法有很多。如果你对这个话题感兴趣,我建议你看看下面的文章:
https://scholar.google.com/scholar?hl=pl&as_sdt=0%2C5&q=stabilization+rssi+method&btnG=
在我看来,这种方法对你最有用:
https://www.wouterbulten.nl/blog/tech/kalman-filters-explained-removing-noise-from-rssi-signals/ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5461075/
您可能还会对AoA和AoD方法感兴趣:
https://www.bluetooth.com/blog/new-aoa-aod-bluetooth-capabilities/
我希望这将是有用的。
发布于 2020-08-09 10:39:38
它的实践方法,我尝试并实现了,我得到了适当的结果,所以这就是为什么要写这个解决方案。如果可能的话,尝试同样的方法。我在一个BLE路由器和一个信标标签上实现了它。我需要做最多3米的计算,意味着3*3.2英尺。I在没有使用卡尔曼滤波器的情况下将波动最小化。
对于上面的实现,我们需要经历如下步骤:
步骤1.将信标标签保持在1米的距离处,取rssi的最大读数为10,并将其存储在一个excel中。
步骤2.保持信标标签在2米的距离,取rssi的最大读数10次,并将其存储在第二个excel中。
现在你有3个excel。取一个excel,观察RSSI值,计算其中位数。同样的事情也需要为另外两个excel计算。
我的Becon标签频率是4 dbm。我从上面的excel中得到了RSSI的读数,如下所示:
来自一个excel:-58
来自两个excel:-64来自第三个excel:-70
如你所见,当我改变计量器,差值为6。,。
现在我使用上面的结果来写逻辑,比如如果值在-58到-64之间波动,那么它就表示为1M,2m和3m也是如此。但这不是正确的计算方法。
所以我把日志用在
计算介于-58到-64之间的值
结果= log(rssi*-1,58)。即58为碱基。
实际距离=结果*1(米)*3.2(英尺)
对于2米的情况相同,但对于2米的原木,底数是64
结果= log(rssi*-1,64)。即以64为基数。
实际距离=结果*2(米)*3.2(英尺)
3米相同,但3米长的原木底部为70
结果= log(rssi*-1,70)。即以70为碱基。
实际距离=结果*3(米)*3.2(英尺)
这可以通过编程来完成。对于rssi信号的稳定性,我得到了正确的结果。
https://stackoverflow.com/questions/61210451
复制相似问题