菜鸟教程小白 发表于 2022-12-12 21:44:41

android - 查找两个蓝牙设备之间的方向(定位)


                                            <p><p>我有一个应用程序,它可以扫描另一部手机正在广播的特定 UUID,并测量它们之间的信号强度,并告诉你是离它们越来越近还是越来越远。我想为方向添加一个箭头。我知道如果你有 3 个点,你可以使用三角测量,但我想用 2 个点得到一些准确的东西。</p>

<p>有什么算法或建议有用吗?</p>

<p>我目前的想法(因为对于这个应用程序的用例,一个节点将相对静止)是在你走路时进行一些算法学习。就像如果你走得更远,箭头知道会忽略这个方向,并在你走不同的方向时不断完善自己。</p>

<p>我找到了一堆关于该主题的研究论文,但我不是电气工程师,所以很容易迷路。我也阅读了这篇文章并了解了许多陷阱 <a href="https://stackoverflow.com/questions/3624945/how-to-measure-distance-between-two-iphone-devices-using-bluetooth" rel="noreferrer noopener nofollow">How to measure distance between two iphone devices using bluetooth?</a> </p>

<p>谢谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这样的解决方案非常复杂。</p>

<p>获取信号的方向需要的数据量远远超过正常应用程序所能提供的数据量。用户必须缓慢旋转手机,同时从各个方向采集许多样本。</p>

<p>使用下面发布的公式可以在 12 米范围内获得相对距离,如您所说的“越来越近”或“越来越远”。超过 12 米,它变得非常有问题。但它相当复杂,需要您使用长度合适的移动平均解决方案。</p>

<p>您可以使用以下公式计算RSSI与距离之间的关系:</p>

<pre><code>RSSI = -(10*n*log10(d) + A)
</code></pre>

<p>在这种情况下,
n = 路径损耗指数,因为您不需要精确的距离,只是一种检查距离是否更近或更远的方法,您可以使用 2 作为值,我发现这是大多数情况下最现实的值。
A = 在 1 米距离处测得的 RSSI 值,您需要提前测量该值以进行计算,但由于这变化很大,请使用 -60dB 之类的值。在大多数情况下,这也是平均水平。</p>

<p>因此可以通过以下公式来粗略地猜出以米为单位的距离:</p>

<pre><code>distance = 10 ^ ((-RSSI - 60) / (10 * 2));
</code></pre>

<p>这不是很准确,但足以告诉您它是否在有限范围内更近/更远。</p></p>
                                   
                                                <p style="font-size: 20px;">关于android - 查找两个蓝牙设备之间的方向(定位),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23121547/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23121547/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: android - 查找两个蓝牙设备之间的方向(定位)