存在站址误差下TDOA定位的CRLB

存在站址误差下观测模型

在三维直角坐标系中,考虑利用M个观测站对一个目标进行定位。
i个观测站位置向量记为 s i o = [ s x , i o , s y , i o , s z , i o ] T , 1 ≤ i ≤ M \boldsymbol{s}_i^o=[s_{x,i}^o,s_{y,i}^o,s_{z,i}^o]^T,1\leq i \leq M sio=[sx,io,sy,io,sz,io]T,1iM,目标位置向量记为 u o = [ u x o , u y o , u z o ] T \boldsymbol{u}^o=[u_{x}^o,u_{y}^o,u_{z}^o]^T uo=[uxo,uyo,uzo]T

将第一个观测站作为TDOA测量的参考观测站,则目标到达其余观测站和参考观测站之间的TDOA可以表示为:
τ j 1 o = ∣ ∣ u o − s j o ∣ ∣ 2 c − ∣ ∣ u o − s 1 o ∣ ∣ 2 c , 2 ≤ j ≤ M \tau_{j1}^o= \frac{||\boldsymbol{u}^o-\boldsymbol{s}_j^o||_2}{c}- \frac{||\boldsymbol{u}^o-\boldsymbol{s}_1^o||_2}{c} , 2\leq j \leq M τj1o=c∣∣uosjo2c∣∣uos1o2,2jM
其中c表示信号传播速度,通常是已知的,因此TDOA可以转换为到达距离差(Range Difference Of Arrival,RDOA):
r j 1 o = ∣ ∣ u o − s j o ∣ ∣ 2 − ∣ ∣ u o − s 1 o ∣ ∣ 2 , 2 ≤ j ≤ M r_{j1}^o= ||\boldsymbol{u}^o-\boldsymbol{s}_j^o||_2 -||\boldsymbol{u}^o-\boldsymbol{s}_1^o||_2 , 2\leq j \leq M rj1o=∣∣uosjo2∣∣uos1o2,2jM
因此建立RDOA观测模型为:
r = r o + n r = [ r 21 o , r 31 o , . . . , r M 1 o ] T + [ δ r 21 , δ r 31 , . . . , δ r M 1 ] T \boldsymbol{r}= \boldsymbol{r^o}+\boldsymbol{n}_{\boldsymbol{r}} =[r_{21}^o,r_{31}^o,...,r_{M1}^o]^T +[\delta{r_{21}},\delta{r_{31}},...,\delta{r_{M1}}]^T r=ro+nr=[r21o,r31o,...,rM1o]T+[δr21,δr31,...,δrM1]T
n r \boldsymbol{n}_{\boldsymbol{r}} nr表示测量噪声向量,协方差矩阵表示为 Q \boldsymbol{Q} Q

在实际过程中,观测站可能处于运动状态,从而获得的观测站位置是带有误差的,将带有误差的观测站位置建模为: s i = s i o + n s i = [ s i , x o , s i , y o , s i , z o ] T + [ δ s i , x , δ s i , y , δ s i , z ] T \boldsymbol{s_i}=\boldsymbol{s_i^o}+\boldsymbol{n_{\boldsymbol{s}_i}}=[s_{i,x}^o,s_{i,y}^o,s_{i,z}^o]^T+[\delta s_{i,x},\delta s_{i,y},\delta s_{i,z}]^T si=sio+nsi=[si,xo,si,yo,si,zo]T+[δsi,x,δsi,y,δsi,z]T。其中 s i o \boldsymbol{s_i^o} sio表示观测站真实位置向量, n s i \boldsymbol{n_{\boldsymbol{s}_i}} nsi表示随机误差。则将所有观测站向量组合得到:
s = s o + n s = [ ( s 1 o ) T , ( s 2 o ) T , . . . , ( s M o ) T ] T + [ n s 1 T , n s 2 T , . . . , n s M T ] T \boldsymbol{s} =\boldsymbol{s}^o+\boldsymbol{n}_{\boldsymbol{s}} =[(\boldsymbol{s_1^o})^T,(\boldsymbol{s_2^o})^T,...,(\boldsymbol{s_M^o})^T]^T +[\boldsymbol{n^T_{\boldsymbol{s}_1}},\boldsymbol{n^T_{\boldsymbol{s}_2}},...,\boldsymbol{n^T_{\boldsymbol{s}_M}}]^T s=so+ns=[(s1o)T,(s2o)T,...,(sMo)T]T+[ns1T,ns2T,...,nsMT]T
n s \boldsymbol{n}_{\boldsymbol{s}} ns的协方差矩阵表示为 Q s \boldsymbol{Q}_{\boldsymbol{s}} Qs

站址误差下的DOA定位的CRLB

存在站址误差时的未知向量为 κ o = [ ( u o ) T , ( s o ) T ] T \boldsymbol{\kappa}^o=[(\boldsymbol{u}^o)^T,(\boldsymbol{s}^o)^T]^T κo=[(uo)T,(so)T]T,测量向量为TDOA测量值,记为 r \boldsymbol{r} r。则此时对数似然函数表示为:
l n ( p ( r ∣ κ o ) ) = κ − ( 1 / 2 ) ( r − r o ) T Q − 1 ( r − r o ) − ( 1 / 2 ) ( s − s o ) T Q s − 1 ( s − s o ) ln(p(\boldsymbol{r}|\boldsymbol{\kappa}^o)) =\kappa-(1/2)(\boldsymbol{r}-\boldsymbol{r}^o)^T \boldsymbol Q^{-1}(\boldsymbol{r}-\boldsymbol{r}^o) -(1/2)(\boldsymbol{s}-\boldsymbol{s}^o)^T \boldsymbol Q_{\boldsymbol{s}}^{-1}(\boldsymbol{s}-\boldsymbol{s}^o) ln(p(rκo))=κ(1/2)(rro)TQ1(rro)(1/2)(sso)TQs1(sso)
Fisher信息矩阵表示为:
F = [ F 1 F 2 F 2 T F 3 ] \boldsymbol{F}= \begin{gathered} \begin{bmatrix} \boldsymbol{F}_1 & \boldsymbol{F}_2 \\ \boldsymbol{F}_2^T & \boldsymbol{F}_3 \end{bmatrix} \quad \end{gathered} F=[F1F2TF2F3]
其中:
{ F 1 = ( ( ∂ r o ∂ ( u o ) T ) Q − 1 ( ∂ r o ∂ ( u o ) T ) T ) F 2 = ( ( ∂ r o ∂ ( u o ) T ) Q − 1 ( ∂ r o ∂ ( s o ) T ) T ) F 3 = ( ( ∂ r o ∂ ( s o ) T ) Q − 1 ( ∂ r o ∂ ( s o ) T ) T ) + Q s − 1 \begin{cases} \boldsymbol{F}_1 =\left( \left(\frac {\partial \boldsymbol{r^o}}{\partial (\boldsymbol{u^o})^T}\right) \boldsymbol Q^{-1} \left(\frac {\partial \boldsymbol{r^o}}{\partial (\boldsymbol{u^o})^T}\right)^T \right)\\ \boldsymbol{F}_2 =\left( \left(\frac {\partial \boldsymbol{r^o}}{\partial (\boldsymbol{u^o})^T}\right) \boldsymbol Q^{-1} \left(\frac {\partial \boldsymbol{r^o}}{\partial (\boldsymbol{s^o})^T}\right)^T \right)\\ \boldsymbol{F}_3 =\left( \left(\frac {\partial \boldsymbol{r^o}}{\partial (\boldsymbol{s^o})^T}\right) \boldsymbol Q^{-1} \left(\frac {\partial \boldsymbol{r^o}}{\partial (\boldsymbol{s^o})^T}\right)^T \right)+\boldsymbol{Q}^{-1}_{\boldsymbol{s}}\\ \end{cases} F1=(((uo)Tro)Q1((uo)Tro)T)F2=(((uo)Tro)Q1((so)Tro)T)F3=(((so)Tro)Q1((so)Tro)T)+Qs1
存在站址误差下的TDOA定位CRLB表示为:

C R L B = [ X 1 X 2 X 2 T X 3 ] \boldsymbol{CRLB}= \begin{gathered} \begin{bmatrix} \boldsymbol{X}_1 & \boldsymbol{X}_2 \\ \boldsymbol{X}_2^T & \boldsymbol{X}_3 \end{bmatrix} \quad \end{gathered} CRLB=[X1X2TX2X3]
其中:
C R L B ( u o ) = X 1 = ( F 1 − F 2 F 3 − 1 F 2 T ) − 1 = F 1 − 1 + F 1 − 1 F 2 ( F 3 − F 2 T F 1 − 1 F 2 ) − 1 F 2 T F 1 − 1 \boldsymbol{CRLB}(\boldsymbol{u}^o)=\boldsymbol{X}_1 =\left(\boldsymbol{F}_1-\boldsymbol{F}_2\boldsymbol{F}_3^{-1}\boldsymbol{F}_2^T \right)^{-1} =\boldsymbol{F}_1^{-1}+\boldsymbol{F}_1^{-1}\boldsymbol{F}_2 \left(\boldsymbol{F}_3-\boldsymbol{F}_2^T\boldsymbol{F}_1^{-1}\boldsymbol{F}_2 \right)^{-1}\boldsymbol{F}_2^T\boldsymbol{F}_1^{-1} CRLB(uo)=X1=(F1F2F31F2T)1=F11+F11F2(F3F2TF11F2)1F2TF11

C R L B ( s o ) = X 3 = ( F 3 − F 2 F 1 − 1 F 2 T ) − 1 = F 3 − 1 + F 3 − 1 F 2 ( F 1 − F 2 T F 3 − 1 F 2 ) − 1 F 2 T F 3 − 1 \boldsymbol{CRLB}(\boldsymbol{s}^o)=\boldsymbol{X}_3 =\left(\boldsymbol{F}_3-\boldsymbol{F}_2\boldsymbol{F}_1^{-1}\boldsymbol{F}_2^T \right)^{-1} =\boldsymbol{F}_3^{-1}+\boldsymbol{F}_3^{-1}\boldsymbol{F}_2 \left(\boldsymbol{F}_1-\boldsymbol{F}_2^T\boldsymbol{F}_3^{-1}\boldsymbol{F}_2 \right)^{-1}\boldsymbol{F}_2^T\boldsymbol{F}_3^{-1} CRLB(so)=X3=(F3F2F11F2T)1=F31+F31F2(F1F2TF31F2)1F2TF31
C R L B ( u o ) \boldsymbol{CRLB}(\boldsymbol{u}^o) CRLB(uo) 表示目标估计的CRLB, C R L B ( s o ) \boldsymbol{CRLB}(\boldsymbol{s}^o) CRLB(so)表示观测站估计的CRLB。

matlab仿真

clc;
clear all;
close all;
%%
% 测向站数量
M=6;
% 目标数量
N=1;
% 光速m/s
c=3*10^8;
s1=[1500 -1900 1400].';
s2=[-1600 2000 1700].';
s3=[1800 -1500 -1600].';
s4=[-1200 1400 -2000].';
s5=[1700 1600 2000].';
s6=[-1800 -1400 -1800].';
% 目标位置
u1=[4000 4000 3000].';

S1=[0,1,0].';
S2=[1,0,0].';
S3=[0,0,1].';
%%     对目标位置的导数
% 时差对目标位置的导数
differ_t_u=zeros(M-1,3);
diff_s1_u1=u1-s1;
for i=2:M
    %     组合字符串,得到接收站的变量名,以便循环
    str_si=['s',mat2str(i)];
    %    返回变量名对应的值
    si_value=eval(str_si);   
    diff_si_u=u1-si_value;
    differ_t_u(i-1,:)=diff_si_u.'/osjl(u1,si_value)-diff_s1_u1.'/osjl(u1,s1);
end

F_u=[differ_t_u];

%%     对观测站位置的导数
% 时差
differ_t_s=zeros(M-1,3*M);
diff_s1_u1=u1-s1;
for i=2:M
    %     组合字符串,得到接收站的变量名,以便循环
    str_si=['s',mat2str(i)];
    %    返回变量名对应的值
    si_value=eval(str_si);
    
    diff_si_u=u1-si_value;
    differ_t_s(i-1,1:3)=diff_s1_u1.'/osjl(u1,s1);
    differ_t_s(i-1,3*(i-1)+1:3*(i-1)+3)=-diff_si_u.'/osjl(u1,si_value);
end
F_s=[differ_t_s];
%%
deta1_more=1:5:50;
for jjj=1:1:length(deta1_more)    
    deta_s=10;
    Rs_a=deta_s^2*eye(3*M,3*M);
    
    deta_r=deta1_more(jjj);
    R_t_a=(deta_r)^2*(eye(M-1,M-1)+ones(M-1,M-1))/2;
     
    Rn_a=blkdiag(R_t_a);
    
    F1=F_u.'*inv(Rn_a)*F_u;
    F2=F_u.'*inv(Rn_a)*F_s;
    F3=F_s.'*inv(Rn_a)*F_s+inv(Rs_a);
    
    CRLB_a=inv(F1-F2*inv(F3)*F2.');
    crb_a(1,jjj)=(sqrt(trace(CRLB_a)));    
    
    CRLB_b=inv(F1);
    crb_b(1,jjj)=sqrt(trace(CRLB_b));
end
figure
plot(deta1_more,crb_a,'b.-','MarkerSize',15)
hold on;
plot(deta1_more,crb_b,'r.-','MarkerSize',15)
xlabel('TDOA测量误差(m)')
ylabel('RMSE(m)')
% ylim([0 160])
legend('存在站址误差CRLB(TDOA)','不存在站址误差CRLB(TDOA)')
%%
function [distance]=osjl(object,source)
% 输入均为列向量
distance=sqrt(sum((object-source).^2));
end

随TDOA噪声变化结果

clc;
clear all;
close all;
%%
% 测向站数量
M=6;
% 目标数量
N=1;
% 光速m/s
c=3*10^8;
s1=[1500 -1900 1400].';
s2=[-1600 2000 1700].';
s3=[1800 -1500 -1600].';
s4=[-1200 1400 -2000].';
s5=[1700 1600 2000].';
s6=[-1800 -1400 -1800].';
% 目标位置
u1=[4000 4000 3000].';

S1=[0,1,0].';
S2=[1,0,0].';
S3=[0,0,1].';
%%     对目标位置的导数
% 时差对目标位置的导数
differ_t_u=zeros(M-1,3);
diff_s1_u1=u1-s1;
for i=2:M
    %     组合字符串,得到接收站的变量名,以便循环
    str_si=['s',mat2str(i)];
    %    返回变量名对应的值
    si_value=eval(str_si);   
    diff_si_u=u1-si_value;
    differ_t_u(i-1,:)=diff_si_u.'/osjl(u1,si_value)-diff_s1_u1.'/osjl(u1,s1);
end

F_u=[differ_t_u];

%%     对观测站位置的导数
% 时差
differ_t_s=zeros(M-1,3*M);
diff_s1_u1=u1-s1;
for i=2:M
    %     组合字符串,得到接收站的变量名,以便循环
    str_si=['s',mat2str(i)];
    %    返回变量名对应的值
    si_value=eval(str_si);
    
    diff_si_u=u1-si_value;
    differ_t_s(i-1,1:3)=diff_s1_u1.'/osjl(u1,s1);
    differ_t_s(i-1,3*(i-1)+1:3*(i-1)+3)=-diff_si_u.'/osjl(u1,si_value);
end
F_s=[differ_t_s];
%%
deta1_more=1:5:50;
for jjj=1:1:length(deta1_more)    
    deta_s=deta1_more(jjj);
    Rs_a=deta_s^2*eye(3*M,3*M);
    
    deta_r=10;
    R_t_a=(deta_r)^2*(eye(M-1,M-1)+ones(M-1,M-1))/2;
     
    Rn_a=blkdiag(R_t_a);
    
    F1=F_u.'*inv(Rn_a)*F_u;
    F2=F_u.'*inv(Rn_a)*F_s;
    F3=F_s.'*inv(Rn_a)*F_s+inv(Rs_a);
    
    CRLB_a=inv(F1-F2*inv(F3)*F2.');
    crb_a(1,jjj)=(sqrt(trace(CRLB_a)));    
    
    CRLB_b=inv(F1);
    crb_b(1,jjj)=sqrt(trace(CRLB_b));
end
figure
plot(deta1_more,crb_a,'b.-','MarkerSize',15)
hold on;
plot(deta1_more,crb_b,'r.-','MarkerSize',15)
xlabel('TDOA测量误差(m)')
ylabel('RMSE(m)')
% ylim([0 160])
legend('存在站址误差CRLB(TDOA)','不存在站址误差CRLB(TDOA)')
%%
function [distance]=osjl(object,source)
% 输入均为列向量
distance=sqrt(sum((object-source).^2));
end

随站址误差变化结果

参考:
DOA定位CRLB
TDOA定位CRLB
存在站址误差的DOA定位CRLB

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我觉得我很优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值