From eb9f30c273660d9324dd0779562947ba1fddd10e Mon Sep 17 00:00:00 2001 From: waiwaylee Date: Thu, 29 Oct 2026 14:43:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9A1=E3=80=81=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E8=88=AA=E8=BF=B9=E6=89=8B=E5=8A=A8=E8=BD=ACTAS?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E8=BE=93=E5=87=BA=E8=88=AA=E8=BF=B9=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BF=A1=E6=81=AF=E6=97=B6=E6=B2=A1=E6=9C=89=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E6=9B=B4=E6=96=B0=E8=88=AA=E8=BF=B9=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: waiwaylee --- data_process_class_dll/tas_ctrl.cpp | 82 ++++++++++++++++++++++++----- 1 file changed, 70 insertions(+), 12 deletions(-) diff --git a/data_process_class_dll/tas_ctrl.cpp b/data_process_class_dll/tas_ctrl.cpp index edffd07..c8b5d22 100644 --- a/data_process_class_dll/tas_ctrl.cpp +++ b/data_process_class_dll/tas_ctrl.cpp @@ -86,22 +86,80 @@ void TAS_Ctrl::tas_target_add(std::vector *trust_track, //目标跟踪状态发生改变 对外输出航迹更新信息 *Trust_track_num_Output= *Trust_track_num_Output+1; - double r_output,azmi_output; - coor_trans Coor_trans; - Coor_trans.cart2polar((*trust_track)[i].X[0],(*trust_track)[i].X[3],&r_output,&azmi_output); Trust_Track_Output[*Trust_track_num_Output-1][0].Point_Sum=1; - Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast(r_output); - Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast(azmi_output/PI*180); - Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index; //航迹号 - Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V= - static_cast(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4])); - Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude=static_cast((*trust_track)[i].Amplitude); - Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point=(*trust_track)[i].point_flag; + + double x,y; + x=(*trust_track)[i].X[0]+(*trust_track)[i].X[1]*rdp_parameter.radar_system_delay; + y=(*trust_track)[i].X[3]+(*trust_track)[i].X[4]*rdp_parameter.radar_system_delay; + coor_trans Coor_trans; + double r, azi; + Coor_trans.cart2polar(x, y, &r, &azi); + Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast(r); + Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast(azi/PI*180); + + if((*trust_track)[i].Height(asin((*trust_track)[i].Height/r)/PI*180); + else + Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast((*trust_track)[i].elev_point); + + Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index; + + Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V = static_cast(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4])); + Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = static_cast((*trust_track)[i].Amplitude); + Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Mode=(*trust_track)[i].Track_Mode; - Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=static_cast(asin((*trust_track)[i].Height/r_output)/PI*180); + Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=static_cast((*trust_track)[i].T_track/1000.0); + Trust_Track_Output[*Trust_track_num_Output-1][0].GNSS_time=(*trust_track)[i].GNSS_time; + Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point = (*trust_track)[i].point_flag; Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast((*trust_track)[i].Height+rdp_parameter.radar_height); - Trust_Track_Output[*Trust_track_num_Output-1][0].Target_Type=(*trust_track)[i].Target_Type; + Trust_Track_Output[*Trust_track_num_Output-1][0].Quality = static_cast((*trust_track)[i].Quality * rdp_parameter.track_quality_max); + + double Direction_Angle; + Direction_Angle=atan2((*trust_track)[i].X[4], (*trust_track)[i].X[1]); + if(Direction_Angle<0){Direction_Angle=Direction_Angle+2*PI;} + Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=static_cast(Direction_Angle/PI*180); + + //关联点信息 + Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=static_cast((*trust_track)[i].range_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=static_cast((*trust_track)[i].azi_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=static_cast((*trust_track)[i].elev_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=static_cast((*trust_track)[i].vr_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].point_type=0; + Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = static_cast((*trust_track)[i].prf_point); Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast((*trust_track)[i].snr_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].amp_asv_point = static_cast((*trust_track)[i].amp_asv_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].prn_fftn_point = static_cast((*trust_track)[i].prn_fftn_point); + + //输出平滑后的高度 + Trust_Track_Output[*Trust_track_num_Output-1][0].z = static_cast((*trust_track)[i].Height+rdp_parameter.radar_height); + Trust_Track_Output[*Trust_track_num_Output-1][0].x=static_cast((*trust_track)[i].X[0]); + Trust_Track_Output[*Trust_track_num_Output-1][0].y=static_cast((*trust_track)[i].X[3]); + Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=static_cast((*trust_track)[i].X[1]); + Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=static_cast((*trust_track)[i].X[4]); + + if(acos((-x * cos(Direction_Angle) - y * sin(Direction_Angle)) / r ) < PI / 2) + { + Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=1; + // if(r*abs(sin(azi - Direction_Angle))<500) + // { + // Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=1; + // } + // else + // { + // Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=0; + // } + } + else + { + Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=0; + } + + Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = static_cast((*trust_track)[i].RCS); + Trust_Track_Output[*Trust_track_num_Output-1][0].pitch_num = (*trust_track)[i].pitch_num; + + std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim, (*trust_track)[i].speed_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim)); + std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].range_dim, (*trust_track)[i].range_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].range_dim)); + break; }