本文主要是介绍基于AOA定位的GDOP计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
AOA-GDOP
基本原理
AOA定位
AoA(angle of arrival)定位方法,即基于信号到达角度的定位方法,通过阵列天线获取到达信号的相位差,换算成到达角度。此方法优势在于精度较高,所需基站数量少,不需时钟同步。但AoA 测角需使用昂贵的阵列天线;信号解算计算复杂度高,难以支撑大容量、高并发的定位场景;
基于信号到达角度(AOA)的无线传感器网络定位——最大似然估计_aoa测角_脑壳二的博客-CSDN博客
GDOP
几何因子是表征空间各部分介质对测量结果相对影响大小的一个参数。
用户解的误差 = 几何因子 ∗ 用户等效距离误差 用户解的误差=几何因子*用户等效距离误差 用户解的误差=几何因子∗用户等效距离误差
AOA定位原理
针对我们面临的具体问题,实质上是角度的误差引起的。
针对求解,已知的参数有各个测向站的坐标和各个测向站接收到的角度。
即N个测向站的坐标均已知,分别为 ( x i , y i ) i = 1 、 2... N (x_i,y_i) \quad i=1、2... N (xi,yi)i=1、2...N
目标点位置为 ( x , y ) (x,y) (x,y)
因此各个测向站收到的入射角度满足如下关系:
t a n ( α i ) = y − y i x − x i tan(\alpha_i) = \frac{y-y_i}{x-x_i} tan(αi)=x−xiy−yi
即化简后为:
y i − x i ∗ t a n ( α i ) = − x ∗ t a n ( α i ) + y y_i-x_i*tan(\alpha_i) = -x*tan(\alpha_i) +y yi−xi∗tan(αi)=−x∗tan(αi)+y
将N个测向站的式子都列出来,并用矩阵形式表示:
[ y 1 − x 1 ∗ t a n ( α 1 ) y 2 − x 2 ∗ t a n ( α 2 ) . . . y N − x N ∗ t a n ( α N ) ] N ∗ 1 = [ − t a n ( α 1 ) 1 − t a n ( α 2 ) 1 . . . − t a n ( α N ) 1 ] N ∗ 2 ∗ [ x y ] 2 ∗ 1 \begin{bmatrix} y_1-x_1*tan(\alpha_1)\\ y_2-x_2*tan(\alpha_2) \\ ... \\ y_N-x_N*tan(\alpha_N)\\ \end{bmatrix}_{N*1}= \begin{bmatrix} -tan(\alpha_1) & 1\\ -tan(\alpha_2) & 1 \\ ... \\ -tan(\alpha_N) & 1\\ \end{bmatrix}_{N*2} * \begin{bmatrix} x\\ y \\ \end{bmatrix}_{2*1} y1−x1∗tan(α1)y2−x2∗tan(α2)...yN−xN∗tan(αN) N∗1= −tan(α1)−tan(α2)...−tan(αN)111 N∗2∗[xy]2∗1
可以根据最小二乘法来求解上述式子:
设上述式子为:
B = A ∗ X \boldsymbol{B} = \boldsymbol{A}*\boldsymbol{X} B=A∗X
即最小二乘法的求解公式为:
X = ( A T A ) − 1 ( A T B ) \boldsymbol{X}=(\boldsymbol{A}^T\boldsymbol{A})^{-1}(\boldsymbol{A}^T\boldsymbol{B}) X=(ATA)−1(ATB)
GDOP求解
α i = a r c t a n ( y − y i x − x i ) \alpha_i = arctan(\frac{y-y_i}{x-x_i}) αi=arctan(x−xiy−yi)
对上式子左右两边同时微分:
d ( α i ) = − ( y − y i ) ( x − x i ) 2 + ( y − y i ) 2 d x + − ( x − x i ) ( x − x i ) 2 + ( y − y i ) 2 d y + k i d(\alpha_i)=\frac{-(y-y_i)}{(x-x_i)^2+(y-y_i)^2}dx +\frac{-(x-x_i)}{(x-x_i)^2+(y-y_i)^2}dy+ki d(αi)=(x−xi)2+(y−yi)2−(y−yi)dx+(x−xi)2+(y−yi)2−(x−xi)dy+ki
k i = ( y − y i ) ( x − x i ) 2 + ( y − y i ) 2 d x i + ( x − x i ) ( x − x i ) 2 + ( y − y i ) 2 d y i k_i=\frac{(y-y_i)}{(x-x_i)^2+(y-y_i)^2}dx_i +\frac{(x-x_i)}{(x-x_i)^2+(y-y_i)^2}dy_i ki=(x−xi)2+(y−yi)2(y−yi)dxi+(x−xi)2+(y−yi)2(x−xi)dyi
假设有N个测向站,即可以将上面两个式子写为矩阵的形式:
d A = F ∗ d r + d X \boldsymbol{dA}=\boldsymbol{F}*\boldsymbol{dr}+\boldsymbol{dX} dA=F∗dr+dX
d A = [ d ( α 1 ) d ( α 2 ) . . . d ( α N ) ] N ∗ 1 d r = [ d x d y ] 2 ∗ 1 d X = [ k 1 k 2 . . . k N ] N ∗ 1 \boldsymbol{dA}= \begin{bmatrix} d(\alpha_1)\\ d(\alpha_2) \\ ... \\ d(\alpha_N)\\ \end{bmatrix}_{N*1} \quad \boldsymbol{dr}= \begin{bmatrix} dx\\ dy \\ \end{bmatrix}_{2*1} \quad \boldsymbol{dX}= \begin{bmatrix} k_1\\ k_2 \\ ... \\ k_N\\ \end{bmatrix}_{N*1} dA= d(α1)d(α2)...d(αN) N∗1dr=[dxdy]2∗1dX= k1k2...kN N∗1
F = [ − ( y − y 1 ) ( x − x 1 ) 2 + ( y − y 1 ) 2 − ( x − x 1 ) ( x − x 1 ) 2 + ( y − y 1 ) 2 − ( y − y 2 ) ( x − x 2 ) 2 + ( y − y 2 ) 2 − ( x − x 2 ) ( x − x 2 ) 2 + ( y − y 2 ) 2 . . . − ( y − y N ) ( x − x N ) 2 + ( y − y N ) 2 − ( x − x N ) ( x − x N ) 2 + ( y − y N ) 2 ] N ∗ 2 \boldsymbol{F}= \begin{bmatrix} \frac{-(y-y_1)}{(x-x_1)^2+(y-y_1)^2} & \frac{-(x-x_1)}{(x-x_1)^2+(y-y_1)^2}\\ \frac{-(y-y_2)}{(x-x_2)^2+(y-y_2)^2} & \frac{-(x-x_2)}{(x-x_2)^2+(y-y_2)^2} \\ ... \\ \frac{-(y-y_N)}{(x-x_N)^2+(y-y_N)^2} & \frac{-(x-x_N)}{(x-x_N)^2+(y-y_N)^2}\\ \end{bmatrix}_{N*2} F= (x−x1)2+(y−y1)2−(y−y1)(x−x2)2+(y−y2)2−(y−y2)...(x−xN)2+(y−yN)2−(y−yN)(x−x1)2+(y−y1)2−(x−x1)(x−x2)2+(y−y2)2−(x−x2)(x−xN)2+(y−yN)2−(x−xN) N∗2
求解目标:目标点定位误差 d r \boldsymbol{dr} dr
伪逆法提示如下:
A + A^+ A+是 A A A的左逆: A + = ( A T ⋅ A ) − 1 ⋅ A T A^+=(A^T\cdot A)^{-1}\cdot A^T A+=(AT⋅A)−1⋅AT
A + A^+ A+是 A A A的右逆: A + = A T ⋅ ( A ⋅ A T ) − 1 A^+=A^T\cdot(A\cdot A^T)^{-1} A+=AT⋅(A⋅AT)−1
故利用伪逆法可得:
d r = ( F T F ) − 1 F T ( d A − d X ) \boldsymbol{dr} = (\boldsymbol{F}^T\boldsymbol{F})^{-1}\boldsymbol{F}^T(\boldsymbol{dA}-\boldsymbol{dX}) dr=(FTF)−1FT(dA−dX)
令 C = ( F T F ) − 1 F T = ( c i j ) 2 ∗ 2 \boldsymbol{C} = (\boldsymbol{F}^T\boldsymbol{F})^{-1}\boldsymbol{F}^T=(c_{ij})_{2*2} C=(FTF)−1FT=(cij)2∗2,因此公式可化为:
P d r = E [ d r ⋅ d r T ] = C { E [ d A ⋅ d A T ] + E [ d X ⋅ d X T ] } C T \boldsymbol{P_{dr}} = E[\boldsymbol{dr}·{\boldsymbol{dr}}^T] = \boldsymbol{C}\{ E[\boldsymbol{dA} · \boldsymbol{{dA}}^T]+E[\boldsymbol{dX}·{\boldsymbol{dX}}^T]\}\boldsymbol{C}^T Pdr=E[dr⋅drT]=C{E[dA⋅dAT]+E[dX⋅dXT]}CT
其中:
E [ d A ⋅ d A T ] = [ σ α 1 2 0 . . . 0 0 σ α 2 2 . . . 0 . . . . . . . . . . . . 0 0 0 σ α N 2 ] N ∗ N E[\boldsymbol{dA} · \boldsymbol{{dA}}^T]=\begin{bmatrix} {\sigma^2_{\alpha_1}} & 0 &...& 0\\ 0 & {\sigma^2_{\alpha_2}} &...& 0\\ ...&...&...&...\\ 0 &0&0&{\sigma^2_{\alpha_N}} \\ \end{bmatrix}_{N*N} E[dA⋅dAT]= σα120...00σα22...0.........000...σαN2 N∗N
E [ d X ⋅ d X T ] = [ k 1 ∗ k 1 k 1 ∗ k 2 . . . k 1 ∗ k N k 2 ∗ k 1 k 2 ∗ k 2 . . . k 2 ∗ k N . . . . . . . . . . . . k N ∗ k 1 k N ∗ k 2 . . . k N ∗ k N ] N ∗ N E[\boldsymbol{dX} · \boldsymbol{{dX}}^T]=\begin{bmatrix} k_1*k_1 & k1*k_2 &...& k_1*k_N\\ k_2*k_1 & k_2*k_2 &...& k_2*k_N\\ ...&...&...&...\\ k_N*k_1 &k_N*k_2&...&k_N*k_N \\ \end{bmatrix}_{N*N} E[dX⋅dXT]= k1∗k1k2∗k1...kN∗k1k1∗k2k2∗k2...kN∗k2............k1∗kNk2∗kN...kN∗kN N∗N
因为 E [ d X ⋅ d X T ] E[\boldsymbol{dX} · \boldsymbol{{dX}}^T] E[dX⋅dXT]中:
d x i dx_i dxi与 d y j dy_j dyj之间相互独立,且 d x i dx_i dxi与 d x j dx_j dxj在 i ≠ j i\neq j i=j的时候也相互独立,即:
d x i ∗ d y j = 0 i = 1 , 2 , . . . N j = 1 , 2 , . . . , N d x i ∗ d x j = 0 i ≠ j dx_i*dy_j=0 \quad i=1,2,...N\quad j=1,2,...,N\\ dx_i*dx_j=0 \quad i\neq j dxi∗dyj=0i=1,2,...Nj=1,2,...,Ndxi∗dxj=0i=j
假设各测向站在各个分量上的标准差大小一样,故设:
σ x i 2 = σ y i 2 = σ s 2 i = 1 , 2 , . . . , N d x i ∗ d x i = σ s 2 = d y i ∗ d y i \sigma^2_{x_i} = \sigma^2_{y_i} = \sigma^2_{s} \quad \quad i=1,2,...,N \\ dx_i*dx_i = \sigma^2_{s} = dy_i*dy_i σxi2=σyi2=σs2i=1,2,...,Ndxi∗dxi=σs2=dyi∗dyi
故:
E [ d X ⋅ d X T ] = σ s 2 ∗ [ 1 ( x − x 1 ) 2 + ( y − y 1 ) 2 0 . . . 0 0 1 ( x − x 2 ) 2 + ( y − y 2 ) 2 . . . 0 . . . . . . . . . . . . 0 0 . . . 1 ( x − x N ) 2 + ( y − y N ) 2 ] N ∗ N E[\boldsymbol{dX} · \boldsymbol{{dX}}^T]=\sigma^2_{s}*\begin{bmatrix} \frac{1}{(x-x_1)^2+(y-y_1)^2} & 0 &...& 0\\ 0 & \frac{1}{(x-x_2)^2+(y-y_2)^2} &...& 0\\ ...&...&...&...\\ 0 &0&...&\frac{1}{(x-x_N)^2+(y-y_N)^2} \\ \end{bmatrix}_{N*N} E[dX⋅dXT]=σs2∗ (x−x1)2+(y−y1)210...00(x−x2)2+(y−y2)21...0............00...(x−xN)2+(y−yN)21 N∗N
设
E [ d A ⋅ d A T ] + E [ d X ⋅ d X T ] = ( α i j ) 2 ∗ 2 E[\boldsymbol{dA} · \boldsymbol{{dA}}^T]+E[\boldsymbol{dX}·{\boldsymbol{dX}}^T] = (\alpha_{ij})_{2*2} E[dA⋅dAT]+E[dX⋅dXT]=(αij)2∗2
这篇关于基于AOA定位的GDOP计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!