原
三角定位算法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/anitinaj/article/details/84396532 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<div class="htmledit_views" id="content_views">
<p>作者:胡玉林</p>
这是一种常见的定位算法
平面上有三个不共线的基站 A,B,C,和一个未知终端 D,并已测出三个基站到终端D的距离分别为R1,R2,R3,则以三个基站坐标为圆心,三基站到未知终端距离为半径可以画出三个相交的圆,如图下图所示,未知节点坐标即为三圆相交点
在实际测量中,往往由于测量的误差,使三个圆并不交于一点,而相交于一块区域,如下图所示。在此种情况下,便需用其他算法进行估计,这里采用最小二乘法进行求解。
- 建立方程,得到如下方程组:
- 用上述的前n-1个方程依次减去第n个方程,可以得到如下的矩阵表示形式:
其中:
对其采用最小二乘求解,则是求 AX-b 二范数的最小值。 即:
- 用最小二乘法求解上边方程得:
X 便是未知终端的坐标计算值。
在TD应用 wifi定位库:今天的行为库+昨天的定位库
对于今天的行为库:经纬度不为0的, 以(bssid, ssid) 为key,可以得Array((time,alt,lat,lng,acc,level))。我们需要在后面有一堆经纬度,找到一个。如果(bssid, ssid)后面的array点少于3,则取信号强度最强的那个点的经纬度。 否则会进行三点定位。
根据信号强度计算出距离。
根据经纬度建立。
最后得到一个唯一的经纬度。