更新:1、TWS模式下,点航关联时增加俯仰门限,限制俯仰大幅度跳变的点迹关联

Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
2026-06-25 11:30:05 +08:00
parent 958ff6b11b
commit 7c10ae919c
+65 -55
View File
@@ -467,61 +467,71 @@ void Track_Asso:: model_filter(QVector <Trust_Track> *trust_track,struct RadarP
IMM_d_cal(v_track,X1,P1,X2,P2, X3,P3,Z,prt,freq_ind,delta_T,&d1,&d2,&d3,Work_Parameter); IMM_d_cal(v_track,X1,P1,X2,P2, X3,P3,Z,prt,freq_ind,delta_T,&d1,&d2,&d3,Work_Parameter);
//计算高度门限 //计算高度门限
double d_h; // double d_h;
if (r_track<1000) // if (r_track<1000)
{ // {
if(abs(h_track-h_point)<=150) // if(abs(h_track-h_point)<=150)
{ // {
d_h = 1; // d_h = 1;
} // }
else // else
{ // {
d_h = 0; // d_h = 0;
} // }
} // }
else if (r_track<2000 && r_track>=1000) // else if (r_track<2000 && r_track>=1000)
{ // {
if(abs(h_track-h_point)<=200) // if(abs(h_track-h_point)<=200)
{ // {
d_h = 1; // d_h = 1;
} // }
else // else
{ // {
d_h = 0; // d_h = 0;
} // }
} // }
else if(r_track>=2000 && r_track<3000 ) // else if(r_track>=2000 && r_track<3000 )
{ // {
if(abs(h_track-h_point)<=200) // if(abs(h_track-h_point)<=200)
{ // {
d_h = 1; // d_h = 1;
} // }
else // else
{ // {
d_h = 0; // d_h = 0;
} // }
} // }
else if(r_track>=3000 && r_track<5000) // else if(r_track>=3000 && r_track<5000)
{ // {
if(abs(h_track-h_point)<=300) // if(abs(h_track-h_point)<=300)
{ // {
d_h = 1; // d_h = 1;
} // }
else // else
{ // {
d_h = 0; // d_h = 0;
} // }
} // }
else // else
{ // {
d_h = 1; // d_h = 1;
} // }
qDebug() << delta_T<<" "<<d1<<" "<<d2<<" "<<d3; // qDebug() << delta_T<<" "<<d1<<" "<<d2<<" "<<d3;
qDebug() << h_track<<" "<<h_point<<" "<<d_h; // qDebug() << h_track<<" "<<h_point<<" "<<d_h;
d_h = 1; // d_h = 1;
//计算俯仰门限
bool d_p = false;
double p_track = atan2(h_track, r_track); //航迹俯仰
double p_point = asin(h_point/point_process[loop_of_point].Range); //点迹俯仰
if(abs(p_track - p_point)*180/PI <= 5){
d_p = true;
}
//计算距离门限,R=航迹点与量测点的距离,VT=航向速度乘以扫描时间差 //计算距离门限,R=航迹点与量测点的距离,VT=航向速度乘以扫描时间差
double& t_x0 = (*trust_track)[loop_of_track].X[0]; double& t_x0 = (*trust_track)[loop_of_track].X[0];
@@ -549,9 +559,9 @@ void Track_Asso:: model_filter(QVector <Trust_Track> *trust_track,struct RadarP
//小于关联门限 保存关联信息 //小于关联门限 保存关联信息
if( if(
( r_track<=500 && (d1*d1<ASSO_THORD*ASSO_THORD || d2*d2<ASSO_THORD*ASSO_THORD || d3*d3<ASSO_THORD*ASSO_THORD/1000) && d_h == 1 && d_r)// ( r_track<=500 && (d1*d1<ASSO_THORD*ASSO_THORD || d2*d2<ASSO_THORD*ASSO_THORD || d3*d3<ASSO_THORD*ASSO_THORD/1000) && d_p && d_r)//
||( (r_track>500&&r_track<1000) && (d1*d1<ASSO_THORD*ASSO_THORD || d2*d2<ASSO_THORD*ASSO_THORD || d3*d3<ASSO_THORD*ASSO_THORD/100) && d_h == 1 && d_r)// ||( (r_track>500&&r_track<1000) && (d1*d1<ASSO_THORD*ASSO_THORD || d2*d2<ASSO_THORD*ASSO_THORD || d3*d3<ASSO_THORD*ASSO_THORD/100) && d_p && d_r)//
||( r_track>=1000 && (d1*d1<ASSO_THORD*ASSO_THORD || d2*d2<ASSO_THORD*ASSO_THORD || d3*d3<ASSO_THORD*ASSO_THORD) && d_h == 1 && d_r)// ||( r_track>=1000 && (d1*d1<ASSO_THORD*ASSO_THORD || d2*d2<ASSO_THORD*ASSO_THORD || d3*d3<ASSO_THORD*ASSO_THORD) && d_p && d_r)//
) )
{ {
qDebug() << "asooooooooooo"; qDebug() << "asooooooooooo";