我想计算一下建筑物内移动设备的确切位置(所以没有GPS接入)
我想用至少3个固定wifi信号的信号强度(以dBm为单位)来做这个(我知道位置的3个固定路由器)
谷歌已经这样做了,我想知道他们是如何根据这些数据找出确切位置的
查看此文章了解更多详情:http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets
我想计算一下建筑物内移动设备的确切位置(所以没有GPS接入)
我想用至少3个固定wifi信号的信号强度(以dBm为单位)来做这个(我知道位置的3个固定路由器)
谷歌已经这样做了,我想知道他们是如何根据这些数据找出确切位置的
查看此文章了解更多详情:http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets
5 回答
FSPL取决于两个参数:第一个是无线电信号的频率;第二个是无线传输距离 . 以下公式可以反映它们之间的关系 .
根据衰落余量方程,可以使用以下等式计算自由空间路径损耗 .
自由空间路径损耗= Tx Power-Tx电缆损耗Tx天线增益Rx天线增益 - Rx电缆损耗 - Rx灵敏度 - 衰落余量
通过上述两个自由空间路径损耗方程,我们可以找出以km为单位的距离 .
菲涅耳区是视线周围的区域,无线电波在离开天线后会扩散到视线范围内 . 您需要清晰的视线来保持强度,特别是对于2.4GHz无线系统 . 这是因为2.4GHz的波被水吸收,就像树上的水一样 . 根据经验,60%的菲涅耳区必须没有障碍物 . 通常,20%菲涅耳区域阻塞会给链路带来很少的信号损失 . 超过40%的阻塞信号损失将变得非常重要 .
资料来源:http://www.tp-link.com/en/support/calculator/
要计算距离,您需要信号强度和信号频率 . 这是java代码:
使用的公式是:
示例:frequency = 2412MHz,signalLevel = -57dbm,result = 7.000397427391188m
该公式是Free Space Path Loss(FSPL)公式的转换形式 . 这里的距离以米为单位,以频率为单位 - 以兆赫为单位 . 对于其他措施,您必须使用不同的常数(27.55) . 读取常量here .
有关更多信息,请阅读here .
这里:
K
- 常量(32.44,当f
以MHz为单位,d
以km为单位,当f
以MHz为单位时变为-27.55,d
以m为单位)FSPL
- 自由空间路径损耗Ptx
- 发射机功率,dBm(最高20 dBm(100mW))CLtx
,CLrx
- Launcher 和接收器的电缆损耗,dB(0,如果没有电缆)AGtx
,AGrx
- 发射机和接收机的天线增益,dBiPrx
- 接收器灵敏度,dBm(低至-100 dBm(0.1pW))FM
- 衰落余量,dB(大于14 dB(正常)或大于22 dB(良好))f
- 信号频率,MHzd
- 距离,m或km(取决于K的值)注意:TP-Link支持站点(mising
^
)的公式中存在错误 .用接收到的信号强度替换
Prx
以获得与WiFi AP的距离 .Example: 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可能会有所帮助 .
Example: (以前的数据)一个木墙(5 dB,从表中) . 结果:FSPL = FSPL - 5 dB = 44 dB,d = 1.548 m
还请注意,天线增益不会增加功率 - 它描述了辐射模式的情况(全向天线的情况下的甜甜圈,定向天线情况下的齐柏林飞艇等) .
这些都没有考虑到信号反射(不知道如何做到这一点) . 噪音也可能不见了 . 所以这个数学可能只适用于粗略的距离估计 .
你的问题的简单答案是三角测量 . 这本质上是所有GPS设备中的概念,我会阅读本文,以了解更多有关Google如何执行此操作的信息:http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber=2 .
根据我的理解,他们使用类似于Skyhook的服务,这是一种位置软件,可根据您的wifi /手机信号确定您的位置 . 为了实现这些服务的准确性,这些服务拥有大型数据库服务器,可以在这些手机信号塔和无线接入点上存储位置信息 - 他们实际上调查大都市区域以使其保持最新状态 . 为了让你获得类似的东西,我认为你必须使用像Skyhook这样的服务 - 你可以使用他们的SDK(http://www.skyhookwireless.com/location-technology/) .
但是,如果你想做一些内部的事情(比如使用你自己的路由器' locations) - then you'可能需要创建一个模拟三角测量的算法 . 你必须找到一种方法来获取设备的
signal_strength
和mac_address
并使用该信息路由器提供位置的位置 . 您可以通过执行与此类似的操作(http://www.makeuseof.com/tag/check-stealing-wifi/)获取有关连接到路由器的设备的信息 .距离(km)= 10 ^((自由空间路径损耗 - 92.45 - 20log10(f))/ 20)