存在站址误差下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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: TDOA时差到达)是一种测量技术,用于确定目标的位置,其中多个传感器测量目标信号的到达时间差。而CRLB(Cramer-Rao下界)是一种理论方法,用于评估给定测量模型的最佳估计精度。 TDOA站址误差CRLB代码是用来计算TDOA定位站址误差CRLB的计算代码。这个代码使用数学方法和统计模型,考虑到误差源的影响,用于估计站址误差的下界。CRLB代码可以用于指导实际应用中的传感器布置和性能评估。 在TDOA定位中,传感器的精确位置是非常重要的,因为这些位置信息用于计算目标的位置。然而,实际应用中由于各种因素,传感器的位置可能存在一定的误差TDOA站址误差CRLB代码能够提供一个下界的估计,即目标位置估计的最佳精度,给出了不同传感器布置和站址误差条件下的理论性能。 通过使用TDOA站址误差CRLB代码,我们可以更好地了解并优化传感器的站址布置,以提高TDOA定位的精度和可靠性。这个代码可以帮助我们评估不同情况下的定位性能,并为实际部署提供指导。 总而言之,TDOA站址误差CRLB代码是用于计算TDOA定位站址误差CRLB的计算代码,用于估计传感器布置和定位精度。通过使用这个代码,我们可以优化传感器布置和选择合适的定位算法,以提高TDOA定位的性能。 ### 回答2: TDOA(Time Difference of Arrival)是一种基于到达时间差异的测量方法,可以用来确定信号源的位置。在利用TDOA测量站址误差CRLB(Cramer-Rao Lower Bound)的过程中,可以使用以下代码来计算。 首先,我们需要确定信号传输的速度v,通常情况下可以假设信号传输的速度为光速。 然后,我们需要收集到不同接收点的到达时间差异,可以通过不同接收点的时间戳来计算。假设我们有n个接收点,并且每个接收点的时间戳分别为t1, t2, ..., tn。 接下来,我们可以使用以下公式来计算站址误差CRLBCRLB = v / (2 * pi * f * sqrt(n)), 其中v为信号传输速度,f为信号的频率,n为接收点的数量。 最后,我们可以根据给定的信号传输速度、频率和接收点数量,使用上述公式来计算站址误差CRLB。 需要注意的是,这只是计算站址误差CRLB的一个基本方法,具体的代码可能会根据具体的应用场景和需求而有所不同。因此,在实际应用中,还需要根据具体情况来选择适合的计算方法和代码实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我觉得我很优秀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值