我正在开发一个iOS应用程序,我需要知道设备与信标的确切距离和方向。我正在使用Estimote beacon。
我使用过iOS的CLLocation以及Estimote的框架,但它们都给出了不正确的距离值。而且,这些值波动很大,信标甚至很多次都进入了未知状态(精度-1000)。
我也试过使用这里给出的公式:
Understanding ibeacon distancing
但在iOS中,似乎没有办法获得bex的txPower或测量功率。
我搜索了很多,但没有找到一个令人满意的方法来准确找到距离。
有没有其他方法可以帮助我从Beacon准确找到iOS设备的距离和方向?
答案 0 :(得分:2)
通过比较接收信号强度(RSSI)与信标的通告发射功率(txPower)来计算距离,因为理论上信号强度与距离的平方成反比。
但是还有许多其他因素会影响RSSI,包括障碍物,天线的方向以及可能的多路径(反射)。因此,根据这些信息准确测量距离很困难。
测量距离的另一种方法是使用往返时间(RTT):您向信标发送内容,然后测量返回所需的时间。但这需要一个固定的响应时间,并且在这种规模(米)上,可能存在足够的可变延迟,这可能会严重影响计算。
方向需要三角测量或多个定向天线,我不相信这种情况就是这种情况。
简而言之,您可以大致了解距离(这就是为什么它对接近警报有用),但准确的距离或方向需要不同的技术。
你为什么需要它们?根据您的具体情况,可能有其他选择。
修改强>
如果您周围有大量信标,并且您知道它们的确切位置,则可以实现以下目标:
当然,根据SDK提供的信标距离测量的实际精度,结果可能或多或少准确。您拥有的信标越多,您应该获得的信息就越精确(通过选择那些返回距离的信息,或者在计算解决方案时消除那些与其他信号无关的信号)。
答案 1 :(得分:0)
即使有3个或更多固定位置的信标,如果没有严重和复杂的降噪,您仍然无法获得非常准确的定位。这是因为无线电波容易受到衍射,多径传播,干扰和吸收的影响 - 主要是金属物体和水粒子(因此人体是强信号阻断剂)。即使手机的对齐(天线位置)也会对接近读数产生重大影响。因此,如果不实施降噪算法,三边测量可以提供大约5米的精度。
您可以在Obj-C(https://github.com/MatVre/MiBeaconTrilaterationDemo)和Swift(https://github.com/a34729t/TriangulatorSwift)中找到一些示例,并查看它们如何为您工作。
干杯。