ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

无线感知理论基础笔记(六)——无线定位:三边定位算法

2022-03-21 13:33:05  阅读:237  来源: 互联网

标签:三边 定位 right 标签 坐标 基站 无线 left


三边定位基本原理

三边定位算法的基本原理如下图所示,假设我们要定位图中电子标签(红色天线),图中各基站的位置为已知。在计算标签位置之前,我们先通过上一章介绍的测距方法,得到各基站到标签的距离\(d_i\)。根据测距结果,我们以基站的位置为圆心,做半径为\(d_i\)的圆。通过搜索空间中多个基站处绘制圆弧的焦点,我们可以最终求出标签的位置。下图展示了已知基站1,2,3的坐标以及标签到基站的距离,通过三圆求交的方法得到标签的位置。

image-20220320232926472

三边定位搜索圆弧交点的过程实际上等价于求解方程组:假设三个基站的坐标已知,分别记为\((x_1,y_1), (x_2,y_2), (x_3,y_3)\)。待定位标签的坐标记为(x,y),到三个网关的距离分别为\(d_1\), \(d_2\), \(d_3\)。则我们可以联立方程组:

\[\left\{\begin{array}{l} d_{1}=\sqrt{\left(x_{1}-x\right)^{2}+\left(y_{1}-y\right)^{2}} \\ d_{2}=\sqrt{\left(x_{2}-x\right)^{2}+\left(y_{2}-y\right)^{2}} \\ d_{3}=\sqrt{\left(x_{3}-x\right)^{2}+\left(y_{3}-y\right)^{2}} \end{array}\right. \]

通过求解上述方程组,可以得到标签坐标。上述三边定位算法可以很容易地推广到三维场景。在进行三维定位时,我们只需要在测量出基站到节点的距离后,在每个基站处用圆球去建模,即以基站坐标和球心做半径为d的圆球,标签一定位于球面的某个点上。因此我们通过求多个球面的唯一交点,即可确定标签在三维空间中的位置。

三边定位的在实际系统中实现这一算法仍然面临许多困难和挑战:

  1. 考虑到测距误差的存在,以不同基站为中心绘制的圆弧或球面可能不交于一点。实际上,由于测距算法只能得到实际距离在一定误差范围内的结果,给定一个基站坐标,我们通常只能假设标签在以基站为中心的、具有一定宽度的圆环范围内。这样一来,如何设计坐标计算方法以最小化定位误差就成了实际系统部署时必须考虑的问题。

  2. 在实际环境中,基站的数量可能多于三个,当基站数量多于坐标维度时,如何选择最优基站也成为在定位时必须要解决的问题。

在实现时,为了解决测距误差对定位的影响,我们通常采用最优化二乘法的方法求解目标标签的坐标。不妨假设已知的基站坐标为\(P_{ai} (i=1,2,3...N)\),N为基站数量。待求解的目标标签坐标为\(P_t\)。那么我们可以计算理论上标签到各个基站的距离\(d_i\)。

\[d_i=||P_t-P_{ai}|| \]

同时我们知道测量得到的标签到各个基站的距离\(d_i\),这样我们就可以根据已有的信息,把理论值和测量值最接近的位置P作为最后的定位结果:

\[P_{t}=\underset{p}{\operatorname{argmin}} \sum_{i=1}^{N}\left(d_{i}-\hat{d}_{i}\right)^{2} \]

下面我们展示一种解上述最优化方程的解法示例。先回忆一下最朴素的坐标求解方法,由于标签位置\((x,y)\)在基站位置\((x_i,y_i)\)的定位圆的交点上,标签到各基站测量对应的距离分别为\(d_i\)。最朴素的做法是解下面的方程组(一共n个基站)直接得到标签坐标:

\[\left\{\begin{array}{l} \left(x-x_{1}\right)^{2}+\left(y-y_{1}\right)^{2}=d_{1}^{2} \\ \vdots \\ \left(x-x_{n}\right)^{2}+\left(y-y_{n}\right)^{2}=d_{n}^{2} \end{array}\right. \]

但由于测量误差的存在,基于基站的定位圆并不会刚好交于一点。因此,在计算时,我们需要对其进行近似求解。常见方法有加权法、最小二乘法、质心法等。这里我们使用最小二乘法进行计算,在上式的基础上,我们将前n-1个方程减去第n个方程,得到线性化方程:\(AX=b\)。其中:

\[\begin{array}{c} A=\left[\begin{array}{cc} 2\left(x_{1}-x_{n}\right) & 2\left(y_{1}-y_{n}\right) \\ \vdots & \vdots \\ 2\left(x_{n-1}-x_{n}\right) & 2\left(y_{n-1}-y_{n}\right) \end{array}\right] \\ b=\left[\begin{array}{c} x_{1}^{2}-x_{n}^{2}+y_{1}^{2}-y_{n}^{2}+d_{n}^{2}-d_{1}^{2} \\ \vdots \\ x_{n-1}^{2}-x_{n}^{2}+y_{n-1}^{2}-y_{n}^{2}+d_{n}^{2}-d_{n-1}^{2} \end{array}\right] \end{array} \]

则,利用最小二乘法可以解得:

\[X=(A^TA)^{−1}A^Tb \]

上述最小二乘解法的MATLAB实现代码如下

nodeNumber = 3;   %定位信标的数量
nodeList = [0, 0; 2, 0; 1, 1.732];   %三个定位信标的坐标
disList = [1.155, 1.155, 1.155];    %定位目标点到三个定位信标的距离

A = [];
B = [];
xn = nodeList(nodeNumber, 1);
yn = nodeList(nodeNumber, 2);
dn = disList(nodeNumber);
for i=1:nodeNumber-1
    xi = nodeList(i, 1);
    yi = nodeList(i, 2);
    di = disList(i);
    A = [A; 2 * (xi - xn), 2 * (yi - yn)];
    B = [B; xi * xi + yi *yi - xn * xn - yn * yn + dn * dn - di * di];
end    %计算线性方程组的参数A和B

X = inv(A'*A)*A'*B   %根据最小二乘法公式计算结果X

上述代码中,nodeList表示基站的位置坐标,nodeNumber表示基站的数量,disList表示标签到各基站的距离。分别求得A和B以后,根据

\[X=(A^TA)^{−1}A^Tb \]

即可求得定位点的坐标X。

在实际应用中,我们需要根据实际情况选择更合适的方法,代替最小二乘法实现位置的近似计算,实现更高的定位精度。对于某些近似方法,可能无法实现对方程的直接求解,或是直接求解方程很困难,此时可以使用数值方法进行近似求解,常见的方法有梯度下降法等。

标签:三边,定位,right,标签,坐标,基站,无线,left
来源: https://www.cnblogs.com/G-Y-C/p/16034277.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有