更新:1、修复取消TAS时的判断条件问题;

2、修复TWS时错误的将TAS航迹外推的问题;
3、修复非重点航迹消亡的条件判断的问题;
4、修改航迹指纹计算的问题;

Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
2026-11-05 14:39:32 +08:00
parent 2c0d2c26a5
commit 4449312791
4 changed files with 9 additions and 15 deletions
+4 -12
View File
@@ -205,7 +205,7 @@ void TAS_Ctrl::tas_target_del(std::vector<Trust_Track> *trust_track,
for (size_t j=0;j<trust_track->size();j++){
if(tas_target_queue[i].Index==(*trust_track)[j].Track_Index){
track_index = static_cast<int>(j);
if((*trust_track)[j].Track_Mode == 1 && (*trust_track)[j].manual_tracking_flag == 1){
if((*trust_track)[j].Track_Mode == 1 && (*trust_track)[j].manual_untracking_flag != 1){
flag=1;
}
break;
@@ -362,7 +362,6 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
if(earliest_track_idx == -1)
{
Tracking_beam->open_flag = 0;
// RDP_LOG_INFO("TAS close {} {} {}", CPI_time, earliest_CPI_time, delta_T_last_track);
return;
}
@@ -378,19 +377,12 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
//目标距离
Tracking_beam->Range=(float)range;
//目标方位
Tracking_beam->Azi=(float)amzi/PI*180;
// Tracking_beam->Azi+=6;
//目标俯仰角
double elev=asin(H_track/range)/PI*180;
// if(elev<=0)
// elev=0;
// else if(elev>=40)
// elev=40;
// else
// elev=elev;
Tracking_beam->Elev= max((float)elev, rdp_parameter.tas_beam_pitch_min);
//跟踪波束类型
@@ -402,7 +394,7 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
//跟踪波束开关开启
Tracking_beam->open_flag=1;
// RDP_LOG_INFO("TAS <{}> output: range: {} azi: {} pit: {}", Tracking_beam->TAS_track_index, Tracking_beam->Range, Tracking_beam->Azi, Tracking_beam->Elev);
RDP_LOG_DEBUG("TAS <{}-{}> : range: {} azi: {} pit: {}", (*trust_track)[earliest_track_idx].Track_Index, Tracking_beam->TAS_track_index, Tracking_beam->Range, Tracking_beam->Azi, Tracking_beam->Elev);
}
int TAS_Ctrl::tas_auto_start(double v, double r, double h)
+1 -1
View File
@@ -775,7 +775,7 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track, long long
//未关联上的航迹 进行外推 tws
for (size_t i =0; i<(*trust_track).size();i++ )
{
if((*trust_track)[i].point_flag == 0 && (*trust_track)[i].manual_tracking_flag == 0) //未关联上点迹的航迹进行外推
if((*trust_track)[i].point_flag == 0 && (*trust_track)[i].Track_Mode == 0) //未关联上点迹的航迹进行外推
{
double delta_T = 0;
+2 -1
View File
@@ -1,6 +1,7 @@
#include "track_die.h"
#include "kalman.h"
#include "coor_trans.h"
#include "rdp_log.h"
#include <cmath>
#include <cstring>
#include <vector>
@@ -32,7 +33,7 @@ void Track_Die::track_die_process( std::vector <Trust_Track> *trust_track,
}else{
//按圈数条件消亡
//非重点航迹自动消亡
if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Extrapolate_round < rdp_parameter.track_die_round)
if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Extrapolate_round > rdp_parameter.track_die_round)
{
die_flag = true;
}
+2 -1
View File
@@ -1,6 +1,7 @@
#include "track_init.h"
#include "kalman.h"
#include "coor_trans.h"
#include "rdp_log.h"
#include <cmath>
#include <cstring>
#include <vector>
@@ -633,7 +634,7 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
memcpy(trust_track_tmp.P, P, 6*6*sizeof(double));
//计算航迹指纹
trust_track_tmp.Track_fingerprint = computeFingerprint(Track_to_start[i][L-1].r, Track_to_start[i][L-1].azi, Track_to_start[i][L-1].vr, Track_to_start[i][L-1].RCS, Track_to_start[i][L-1].CPI_time);
trust_track_tmp.Track_fingerprint = computeFingerprint(Track_to_start[i][0].r, Track_to_start[i][0].azi, Track_to_start[i][0].vr, Track_to_start[i][0].RCS, Track_to_start[i][0].CPI_time);
trust_track_tmp.track_id = Track_to_start[i][L-1].temp_track_id;
trust_track_tmp.point_id = Track_to_start[i][L-1].point_id;