Android相对定位,Wifi:到货时间

时间:2011-03-16 13:27:34

标签: android wifi relative

SRC:http://www.cisco.com/en/US/docs/solutions/Enterprise/Mobility/wifich2.html

我一直试图了解如何确定2个Android设备之间的相对位置,精确度在0.3米以内。

(注意:不是绝对的位置,所以我可以完全避免GPS,我需要在两个设备之间频繁和快速更新。)

到目前为止,我已经确定诸如“到达时间”算法之类的算法在WiFi上使用时会起作用,如果发送消息的确切时间(从HW的角度来看)是已知的。

这是我耗尽脑力的地方。有人对我如何实现这个有任何想法吗? 或任何更实际的替代方案。

提前致谢。

2 个答案:

答案 0 :(得分:3)

无线电信号以约1英尺/纳秒(准确地说是0.983英尺/秒)的光速传播。因此,为了获得0.3米的精度(大约一英尺),您需要的采样分辨率小于半纳秒 - 这是在操作系统级别无法完成的,其中发生毫秒级处理延迟。

不幸的是,要在Wi-Fi上进行到达时间或到达时间差的位置处理,您需要一个提供时间戳字段的专用芯片组。我没有验证信息,但看看Hoene& Co.的“四路TOA和基于软件的IEEE 802.11设备的三边测量”。 Willmann on citeseer - 表1包含了实施TSF的芯片供应商列表。作者甚至在http://sourceforge.net/projects/goodtry/提供他们的代码。

答案 1 :(得分:0)

所以基本上发送者应该用它的时间向其他设备发送消息。

要做到这一点,你需要一个通用时间系统 - 每个设备总是相同的系统,这样你就可以准确地分辨出时差。最简单的方法是在每个设备上创建一个新日历,然后在每个设备上获取UTC时间(自1970年以来的毫秒)。但是,这会受到每个设备日历中的任何错误的影响。

那么您可以在发送设备上执行以下操作:

  1. 记下UTC日历时间(t1)
  2. 从服务器某处下载通用时间
  3. 再次记下UTC日历时间(t2)
  4. 通过向其添加(t2-t1)来考虑下载通用时间的时间(设备日历中的错误将取消,因为您从同一日历中减去两次)
  5. 发送通用时间
  6. 在接收设备上:

    1. 接收通用时间(ut1)的消息
    2. 执行与第一个设备相同的过程以获得通用时间(ut2)
    3. 计算差值(ut2-ut1)以获得两个设备之间的时差
    4. 注意:此系统假定通用时间的差异完全是由于WiFi信号的传播时间。实际上它不是 - 干扰,WiFi信号的处理,有限的CPU速度等都会影响这一点。