TDOA定位Taylor算法

基于TDOA的经典定位算法分为两类,一类是可以求出解析解的算法,如Fang算法、Chan算法的;另一类是迭代算法,如Taylor算法。

Taylor级数展开法是一种迭代算法,在Taylor级数展开的基础上,利用初始迭代值进行WLS估计,然后求解位置估计误差的局部最小二乘解,并对标签的位置进行更新。Taylor算法的前提是需要标签位置的初始估计值,而算法的主要思想是通过不断迭代来修正待定位标签位置的估计值,最后逐渐逼近标签真实的位置坐标。

标签与基站之间的约束关系可以通过某一函数 f i ( x , y , x i , y i ) {f_i}\left( {x,y,{x_i},{y_i}} \right) fi(x,y,xi,yi)来表达,该函数的测量值可以用 M i M_i Mi来表示, M i = M i 0 + e i {M_i} = M_i^0 + {e_i} Mi=Mi0+ei ,其中, M i 0 M_i^0 Mi0为函数的真实值, e i e_i ei表示测量误差。用 η \eta η来代表误差门限值,那么,应在满足条件: Δ x + Δ y < η {\Delta x + \Delta y} < \eta Δx+Δy<η时停止迭代计算。

假设标签坐标的初始值为 ( x 0 , y 0 ) ({x_0},{y_0}) (x0,y0),真实值为 ( x , y ) (x,y) (x,y),且 x = x 0 + Δ x x = {x_0} + \Delta x x=x0+Δx y = y 0 + Δ y y = {y_0} + \Delta y y=y0+Δy,那么函数 f i ( x , y , x i , y i ) {f_i}\left( {x,y,{x_i},{y_i}} \right) fi(x,y,xi,yi) ( x 0 , y 0 ) ({x_0},{y_0}) (x0,y0)处的Taylor级数展开结果如下:

f i ( x , y , x i , y i ) = f i ( x 0 , y 0 , x i , y i ) + ( Δ x ∂ ∂ x + Δ y ∂ ∂ y ) f i ( x 0 , y 0 , x i , y i ) + 1 2 ! ( Δ x ∂ ∂ x + Δ y ∂ ∂ y ) 2 f i ( x 0 , y 0 , x i , y i ) + ⋯ + 1 n ! ( Δ x ∂ ∂ x + Δ y ∂ ∂ y ) n f i ( x 0 , y 0 , x i , y i ) + ⋯ f_{i}\left(x, y, x_{i}, y_{i}\right)=f_{i}\left(x_{0}, y_{0}, x_{i}, y_{i}\right)+\left(\Delta x \frac{\partial}{\partial x}+\Delta y \frac{\partial}{\partial y}\right) f_{i}\left(x_{0}, y_{0}, x_{i}, y_{i}\right)\\ +\frac{1}{2 !}\left(\Delta x \frac{\partial}{\partial x}+\Delta y \frac{\partial}{\partial y}\right)^{2} f_{i}\left(x_{0}, y_{0}, x_{i}, y_{i}\right)+\cdots\\ +\frac{1}{n !}\left(\Delta x \frac{\partial}{\partial x}+\Delta y \frac{\partial}{\partial y}\right)^{n} f_{i}\left(x_{0}, y_{0}, x_{i}, y_{i}\right)+\cdots fi(x,y,xi,yi)=fi(x0,y0,xi,yi)+(Δxx+Δyy)fi(x0,y0,xi,yi)+2!1(Δxx+Δyy)2fi(x0,y0,xi,yi)++n!1(Δxx+Δyy)nfi(x0,y0,xi,yi)+

由基于TDOA的定位方法,可以得到以下的方程组:
R i = ( x − x i ) 2 + ( y − y i ) 2 R i 1 = ( x − x i ) 2 + ( y − y i ) 2 − ( x − x 1 ) 2 + ( y − y 1 ) 2 \begin{aligned} &R_{i}=\sqrt{\left(x-x_{i}\right)^{2}+\left(y-y_{i}\right)^{2}}\\ &R_{i 1}=\sqrt{\left(x-x_{i}\right)^{2}+\left(y-y_{i}\right)^{2}}-\sqrt{\left(x-x_{1}\right)^{2}+\left(y-y_{1}\right)^{2}}\\ \end{aligned} Ri=(xxi)2+(yyi)2 Ri1=(xxi)2+(yyi)2 (xx1)2+(yy1)2

其中, ( x , y ) (x,y) (x,y)表示标签的坐标, R i 1 = R i − R 1 {R_{i1}} = {R_i} - {R_1} Ri1=RiR1表示标签到第 i i i个基站与到第1个基站的距离差值。

由上式构造函数 f i ( x , y , x i , y i ) {f_i}\left( {x,y,{x_i},{y_i}} \right) fi(x,y,xi,yi)

f i ( x , y , x i , y i ) = c ( t i − t j ) = R i − R j = ( x i − x ) 2 + ( y i − y ) 2 − ( x j − x ) 2 + ( y j − y ) 2 \begin{aligned} &f_{i}\left(x, y, x_{i}, y_{i}\right)=c\left(t_{i}-t_{j}\right)=R_{i}-R_{j}\\ &=\sqrt{\left(x_{i}-x\right)^{2}+\left(y_{i}-y\right)^{2}}-\sqrt{\left(x_{j}-x\right)^{2}+\left(y_{j}-y\right)^{2}}\\ \end{aligned} fi(x,y,xi,yi)=c(titj)=RiRj=(xix)2+(yiy)2 (xjx)2+(yjy)2

f i ( x , y , x i , y i ) {f_i}\left( {x,y,{x_i},{y_i}} \right) fi(x,y,xi,yi) ( x 0 , y 0 ) ({x_0},{y_0}) (x0,y0)处进行泰勒展开,并忽略二阶以上的分量,有:

f i ( x , y , x i , y i ) = f i ( x 0 , y 0 , x i , y i ) + ( Δ x ∂ ∂ x + Δ y ∂ ∂ y ) f i ( x 0 , y 0 , x i , y i ) {f_i}\left( {x,y,{x_i},{y_i}} \right) = {f_i}\left( {{x_0},{y_0},{x_i},{y_i}} \right) + \left( {\Delta x\frac{\partial }{{\partial x}} + \Delta y\frac{\partial }{{\partial y}}} \right){f_i}\left( {{x_0},{y_0},{x_i},{y_i}} \right) fi(x,y,xi,yi)=fi(x0,y0,xi,yi)+(Δxx+Δyy)fi(x0,y0,xi,yi)

转化为矩阵的形式,有:

ψ = h i − G i δ \psi = {{\bf{h}}_i} - {{\bf{G}}_i}{\bf{\delta }} ψ=hiGiδ

其中, ψ \psi ψ为误差矢量,另有

h i = [ R 2 , 1 − ( R 2 − R 1 ) R 3 , 1 − ( R 3 − R 1 ) ⋮ R L , 1 − ( R L − R 1 ) ] G i = [ x 1 − x R 1 − x 2 − x R 2 y 1 − y R 1 − y 2 − y R 2 x 1 − x R 1 − x 3 − x R 3 y 1 − y R 1 − y 3 − y R 3 ⋮ ⋮ x 1 − x R 1 − x L − x R L y 1 − y R 1 − y L − y R L ] δ = [ Δ x Δ y ] \begin{aligned} &\mathbf{h}_{i}=\left[\begin{array}{c}R_{2,1}-\left(R_{2}-R_{1}\right) \\ R_{3,1}-\left(R_{3}-R_{1}\right) \\ \vdots \\ R_{L, 1}-\left(R_{L}-R_{1}\right)\end{array}\right]\\ &\mathbf{G}_{i}=\left[\begin{array}{cc}\frac{x_{1}-x}{R_{1}}-\frac{x_{2}-x}{R_{2}} & \frac{y_{1}-y}{R_{1}}-\frac{y_{2}-y}{R_{2}} \\ \frac{x_{1}-x}{R_{1}}-\frac{x_{3}-x}{R_{3}} & \frac{y_{1}-y}{R_{1}}-\frac{y_{3}-y}{R_{3}} \\ \vdots & \vdots \\ \frac{x_{1}-x}{R_{1}}-\frac{x_{L}-x}{R_{L}} & \frac{y_{1}-y}{R_{1}}-\frac{y_{L}-y}{R_{L}}\end{array}\right]\\ &\delta=\left[\begin{array}{c}\Delta x \\ \Delta y\end{array}\right]\\ \end{aligned} hi=R2,1(R2R1)R3,1(R3R1)RL,1(RLR1)Gi=R1x1xR2x2xR1x1xR3x3xR1x1xRLxLxR1y1yR2y2yR1y1yR3y3yR1y1yRLyLyδ=[ΔxΔy]

R i ( i = 1 , 2 , 3 , ⋯   , L ) {R_i}(i = 1,2,3, \cdots ,L) Ri(i=1,2,3,,L)表示在一次迭代计算中标签和第i个基站之间的距离。

上式的加权最小二乘解为:

δ = [ Δ x Δ y ] = ( G i T Q − 1 G i ) − 1 G i T Q − 1 h i \delta=\left[\begin{array}{c}\Delta x \\ \Delta y\end{array}\right]=\left(\mathbf{G}_{i}^{T} \mathbf{Q}^{-1} \mathbf{G}_{i}\right)^{-1} \mathbf{G}_{i}^{T} \mathbf{Q}^{-1} \mathbf{h}_{i} δ=[ΔxΔy]=(GiTQ1Gi)1GiTQ1hi

其中, Q {\bf{Q}} Q表示TDOA测量值的协方差矩阵。在下一次递归计算中,令 x ′ = x 0 + Δ x x' = {x_0} + \Delta x x=x0+Δx y ′ = y 0 + Δ y y' = {y_0} + \Delta y y=y0+Δy,更新标签的坐标值进行迭代计算。重复以上过程,直到误差满足设定的门限值时停止迭代计算,即: ∣ Δ x ∣ + ∣ Δ y ∣ < η \left| {\Delta x} \right| + \left| {\Delta y} \right| < \eta Δx+Δy<η

References
[1] 宋洋. 超宽带室内定位技术研究[D].西安科技大学,2019.

代码实现(matlab)

X_estimate = 50;
Y_estimate = 50;
Xb = [200 200];
X = [200 0; -100 173; -100 -173];
Noise = 0.1*randn(3,1);
Real_ms = [20 20];

BSN = size(X,1);      
x = X_estimate;
y = Y_estimate;

MS = [x,y];   
iEP = MS;

%% 
Rb = sqrt((Real_ms(1) - Xb(1))^2+(Real_ms(2) - Xb(2))^2);
RD = zeros(BSN,1);
for i = 1:BSN                
    RD(i) = -Rb+sqrt((Real_ms(1)- X(i,1))^2+(Real_ms(2) - X(i,2))^2)+Noise(i);
end
%%
% TDOA协方差矩阵Q
Q = 0.01*eye(BSN);   
delta = [1 1];   
kk = 0;   
% Taylor级数展开法
while ((abs(delta(1)) + abs(delta(2))) > 0.01)   
    R1 = sqrt((iEP(1) - Xb(1))^2 + (iEP(2) - Xb(2))^2);   
    R = zeros(1,BSN);
    kk = kk+1;
    for i = 1: BSN 
        R(i) = sqrt((iEP(1) - X(i,1))^2 + (iEP(2) - X(i,2))^2);
    end
    
    % hi
    hi = zeros(BSN,1);
    for i = 1: BSN
        hi(i) = RD(i) - (R(i) - R1);
    end
    
    % Gi
    Gi = zeros(BSN,2);
    for i = 1: BSN
        Gi(i, 1) = (Xb(1)-iEP(1))/R1 - (X(i,1) - iEP(1))/R(i);
        Gi(i, 2) = (Xb(2)-iEP(2))/R1 - (X(i,2) - iEP(2))/R(i);
    end
    
    % delta
    delta = inv(Gi'*inv(Q)*Gi)*Gi'*inv(Q)*hi;   
    if (abs(delta(1))+abs(delta(2))) > 0.01   
        EP = iEP + delta';   
        iEP = EP;   % 更新迭代值
    end
end

% 输出
z_out = iEP;   % 标签坐标估计值
mse = sqrt((z_out(1)-Real_ms(1))^2+(z_out(2)-Real_ms(2))^2);   % 均方误差

配套pdf下载
https://download.csdn.net/download/gongshouxiayin/13658167

评论 79
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值