85

我想计算建筑物内移动设备的确切位置(所以没有 GPS 访问)

我想使用至少 3 个固定 wifi 信号(我知道位置的 3 个固定路由器)的信号强度(以 dBm 为单位)来执行此操作

谷歌已经这样做了,我想知道他们如何根据这些数据找出确切的位置

查看这篇文章了解更多详情: http: //www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets

4

7 回答 7

47

FSPL取决于两个参数:一是无线电信号的频率;二是无线传输距离。下面的公式可以反映它们之间的关系。

FSPL (dB) = 20log10(d) + 20log10(f) + K

d = distance
f = frequency
K= constant that depends on the units used for d and f
If d is measured in kilometers, f in MHz, the formula is:

FSPL (dB) = 20log10(d)+ 20log10(f) + 32.44

根据 Fade Margin 方程,可以使用以下方程计算自由空间路径损耗。

自由空间路径损耗=Tx 功率-Tx 电缆损耗+Tx 天线增益+Rx 天线增益 - Rx 电缆损耗 - Rx 灵敏度 - 衰减余量

通过上述两个自由空间路径损失方程,我们可以找出以 km 为单位的距离。

Distance (km) = 10(Free Space Path Loss – 32.44 – 20log10(f))/20

菲涅耳区是无线电波在离开天线后扩散到的视线周围的区域。您需要清晰的视线以保持强度,尤其是对于 2.4GHz 无线系统。这是因为 2.4GHz 波被水吸收,就像树木中的水一样。经验法则是 60% 的菲涅耳区必须没有障碍物。通常,20% 的菲涅耳区阻塞对链路几乎没有信号损失。超过 40% 的阻塞信号损失将变得显着。

FSPLr=17.32*√(d/4f)

d = distance [km]
f = frequency [GHz]
r = radius [m]

来源:http ://www.tp-link.com/en/support/calculator/

于 2012-06-28T16:28:59.617 回答
35

要计算距离,您需要信号强度和信号频率。这是java代码:

public double calculateDistance(double signalLevelInDb, double freqInMHz) {
    double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb)) / 20.0;
    return Math.pow(10.0, exp);
}

使用的公式是:

距离 = 10 ^ ((27.55 - (20 * log10(频率)) + signalLevel)/20)

示例:频率 = 2412MHz,信号电平 = -57dbm,结果 = 7.000397427391188m

该公式是自由空间路径损耗(FSPL)公式的变换形式。这里距离以米为单位,频率以兆赫为单位。对于其他措施,您必须使用不同的常数 (27.55)。阅读这里的常量。

欲了解更多信息,请阅读此处

于 2013-08-21T14:05:40.197 回答
16
K = 32.44
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM
d = 10 ^ (( FSPL - K - 20 log10( f )) / 20 )

这里:

  • K- 常数(32.44,f以 MHz 和km 为单位时,以 MHz 和md为单位时更改为 -27.55 )fd
  • FSPL- 自由空间路径损失
  • Ptx- 发射机功率,dBm(高达 20 dBm (100mW))
  • CLtx, CLrx- 发射器和接收器的电缆损耗,dB(如果没有电缆,则为 0)
  • AGtx, AGrx- 发射机和接收机的天线增益,dBi
  • Prx- 接收器灵敏度,dBm(低至 -100 dBm (0.1pW))
  • FM- 衰减余量,dB(超过 14 dB(正常)或超过 22 dB(良好))
  • f- 信号频率,MHz
  • d- 距离,米或公里(取决于 K 的值)

注意:TP-Link 支持网站的公式有错误(缺失^)。

用接收到的信号强度代替Prx,以获得与 WiFi AP 的距离。

示例: Ptx = 16 dBm,AGtx = 2 dBi,AGrx = 0,Prx = -51 dBm(接收信号强度),CLtx = 0,CLrx = 0,f = 2442 MHz(第 7 个 802.11bgn 通道),FM = 22. 结果:FSPL = 47 dB,d = 2.1865 m

注意:FM(淡入淡出)在这里似乎无关紧要,但由于原始公式,我将其保留。

您应该考虑一下墙壁,表http://www.liveport.com/wifi-signal-attenuation可能会有所帮助。

示例:(以前的数据)+ 一堵木墙(5 dB,来自表格)。结果:FSPL = FSPL - 5 dB = 44 dB,d = 1.548 m

另请注意,天线增益不会增加功率 - 它描述了辐射模式的形状(全向天线的甜甜圈,定向天线的齐柏林飞艇等)。

这些都没有考虑到信号反射(不知道如何做到这一点)。可能噪音也不见了。所以这个数学可能只适用于粗略的距离估计。

于 2014-12-01T21:59:02.963 回答
7

您的问题的简单答案是三角测量。这基本上是所有 GPS 设备中的概念,我会阅读这篇文章以了解更多关于谷歌如何做到这一点:http ://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

据我了解,他们使用类似于Skyhook的服务,这是一种定位软件,可根据您的 wifi/手机信号确定您的位置。为了达到其准确性,这些服务拥有大型数据库服务器,用于存储这些蜂窝塔和 wifi 接入点的位置信息——它们实际上会调查大都市地区以使其保持最新状态。为了让您实现类似的目标,我假设您必须使用 Skyhook 之类的服务 - 您可以使用他们的 SDK ( http://www.skyhookwireless.com/location-technology/ )。

然而,如果你想做一些内部的事情(比如使用你自己的路由器的位置)——那么你可能必须创建一个模仿三角测量的算法。您必须找到一种方法来获取设备的signal_strengthmac_address,并使用该信息以及路由器的位置来确定位置。您可能可以通过执行与此类似的操作(http://www.makeuseof.com/tag/check-stealing-wifi/)来获取有关连接到路由器的设备的信息。

于 2012-06-27T16:21:05.453 回答
5

距离 (km) = 10^((自由空间路径损耗 – 92.45 – 20log10(f))/20)

于 2013-02-28T22:10:10.747 回答
1

一般来说,由于多径干扰,这是一种非常糟糕的做事方式。这绝对是一个射频工程问题,而不是编码问题。

Tl;博士,wifi射频能量在从墙壁、人、地板等反弹后分散到不同的方向。没有办法单独通过三角测量来判断你在哪里,除非你在一个放置了wifi信标的空房间里完全正确的地方。

谷歌能够逃脱这一点,因为当任何安卓用户(选择加入他们的服务)进入范围时,他们基本上可以将每个 wifi SSID 的位置映射到 GPS 位置。这样,下次用户经过那里时,即使没有完美的 GPS 信号,谷歌母舰也能告诉你你在哪里。通常,他们会将其与糟糕的 GPS 信号结合使用。

我所看到的是一个 Zigbee 或 BTLE 设备网格。如果您知道它们的布局,您可以使用组合的 RSS 来确定您最接近的相对位置,然后从那里开始。

于 2019-04-18T23:07:55.890 回答
-5

别管你是不是版主。我不是以技术作家的身份写给我的听众的

你们所有人都需要学习使用 GPS 之前的工具进行导航。像六分仪、八分仪、后备人员或星盘之类的东西。

如果您从 3 个不同的位置接收到信号,那么您只需要测量信号强度并从这些位置计算一个比率。简单的三角形计算,其中 a2+b2=c2。信号强度越强,设备离接收器越近。

于 2019-04-18T22:07:28.723 回答