更新:机扫和相扫程序合并,通过宏定义配置切换
Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
@@ -15,8 +15,8 @@ using namespace std;
|
||||
//数据预处理
|
||||
int Data_Process::data_preprocess(struct DataRev Data_Input[150])
|
||||
{
|
||||
// 更新当前系统时间
|
||||
latest_timestamp = Data_Input[0].CPI_time;
|
||||
//qDebug() << "latest_timestamp: " <<Data_Input[0].CPI_time;
|
||||
|
||||
//数据存入缓存区域 Data_buffer
|
||||
if(Data_Input[0].point_type == 0) //tws数据
|
||||
@@ -31,6 +31,7 @@ int Data_Process::data_preprocess(struct DataRev Data_Input[150])
|
||||
Data_buffer_temp.snr = Data_Input[i].Snr;
|
||||
Data_buffer_temp.RCS = Data_Input[i].RCS;
|
||||
Data_buffer_temp.CPI_Time = Data_Input[i].CPI_time;
|
||||
Data_buffer_temp.GNSS_time = Data_Input[i].GNSS_time;
|
||||
Data_buffer_temp.Freq_index = Data_Input[i].Freq_index;
|
||||
Data_buffer_temp.PRF_index = Data_Input[i].PRI;
|
||||
Data_buffer_temp.Range = Data_Input[i].Range;
|
||||
@@ -45,7 +46,7 @@ int Data_Process::data_preprocess(struct DataRev Data_Input[150])
|
||||
|
||||
Data_buffer.push_back(Data_buffer_temp);
|
||||
|
||||
qDebug() << "AZI: " <<Data_Input[i].Azimuth << "Encoder_value: " <<Data_Input[i].Encoder_value;
|
||||
//qDebug() << "AZI: " <<Data_Input[i].Azimuth << "Encoder_value: " <<Data_Input[i].Encoder_value;
|
||||
}
|
||||
if(Data_Input[0].Beam_index_aiz < last_beam_num) //TWS
|
||||
{
|
||||
@@ -63,7 +64,7 @@ int Data_Process::data_preprocess(struct DataRev Data_Input[150])
|
||||
else if(Data_Input[0].point_type == 1) //tas数据
|
||||
{
|
||||
// qDebug() << "TAS TARGET :" <<Data_Input[0].TAS_track_index;
|
||||
qDebug() << "TAS POINT :" <<Data_Input[0].Point_Sum;
|
||||
//qDebug() << "TAS POINT :" <<Data_Input[0].Point_Sum;
|
||||
|
||||
data_num=Data_Input[0].Point_Sum;
|
||||
TAS_track_idx = Data_Input[0].TAS_track_index;
|
||||
@@ -75,6 +76,7 @@ int Data_Process::data_preprocess(struct DataRev Data_Input[150])
|
||||
Data_buffer_temp.snr = Data_Input[i].Snr;
|
||||
Data_buffer_temp.RCS = Data_Input[i].RCS;
|
||||
Data_buffer_temp.CPI_Time = Data_Input[i].CPI_time;
|
||||
Data_buffer_temp.GNSS_time = Data_Input[i].GNSS_time;
|
||||
Data_buffer_temp.Freq_index = Data_Input[i].Freq_index;
|
||||
Data_buffer_temp.PRF_index = Data_Input[i].PRI;
|
||||
Data_buffer_temp.Range = Data_Input[i].Range;
|
||||
@@ -168,7 +170,7 @@ int model)
|
||||
// {
|
||||
// qDebug() << "point_recv_tas :" <<point_recv_tas[0].Azimuth/PI*180<<" "<<point_recv_tas[0].Range;
|
||||
// }
|
||||
qDebug() << "TAS process :" << TAS_track_idx << "p a r:"<<point_recv_tas[0].Point_Sum<<" " <<point_recv_tas[0].Azimuth/PI*180<<" "<<point_recv_tas[0].Range;
|
||||
//qDebug() << "TAS process :" << TAS_track_idx << "p a r:"<<point_recv_tas[0].Point_Sum<<" " <<point_recv_tas[0].Azimuth/PI*180<<" "<<point_recv_tas[0].Range;
|
||||
|
||||
QVector<PointRecv>().swap(Data_buffer_tas);//凝聚完毕 清除Data_buffer
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT DataRev
|
||||
float RCS; //目标RCS
|
||||
float Encoder_value; //码盘值
|
||||
int CPI_time; //CPI时间 该波位无点迹输入时也需要给出当前时间
|
||||
int GNSS_time; //GNSS时间
|
||||
int Beam_index_azi_0; //上一个cpi波位
|
||||
int Beam_index_aiz; //方位波位号(0-24) 该波位无输入点迹时 也需要给出当前波位
|
||||
int Beam_index_elev; //俯仰波位号(0-13)
|
||||
@@ -75,6 +76,7 @@ struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT Track
|
||||
float track_rcs; //rcs
|
||||
|
||||
int pitch_num; // 俯仰波位号
|
||||
int GNSS_time; //GNSS时间
|
||||
float speed_dim[129]; // 目标的十字星数据,目标点速度维129个点
|
||||
float range_dim[8]; // 目标的十字星数据,目标点距离维8个点
|
||||
};
|
||||
|
||||
@@ -27,50 +27,11 @@
|
||||
#define FREQ19 16.8
|
||||
#define FREQ20 16.8
|
||||
|
||||
//#define MECHANICAL_SCANNING
|
||||
#define PHASE_SCANNING
|
||||
|
||||
//波位
|
||||
//#define BEAM_NUM 54
|
||||
|
||||
//#define BEAM_WIDTH 6.666
|
||||
|
||||
////一个点迹区包含波位
|
||||
//#define DOT_SECTION_NUM 9
|
||||
//#define BEAM_NUM_DOT_SECTION 6
|
||||
|
||||
|
||||
//#define DOT_SECTION_1 5
|
||||
//#define DOT_SECTION_2 11
|
||||
//#define DOT_SECTION_3 17
|
||||
//#define DOT_SECTION_4 23
|
||||
//#define DOT_SECTION_5 29
|
||||
//#define DOT_SECTION_6 35
|
||||
//#define DOT_SECTION_7 41
|
||||
//#define DOT_SECTION_8 47
|
||||
//#define DOT_SECTION_9 53
|
||||
|
||||
|
||||
//航迹区划分
|
||||
//#define TRACK_SECTION_NUM 9
|
||||
//#define TRACK_SECTION_WIDTH 40
|
||||
|
||||
//#define TRACK_SECTION_1_START 13.2
|
||||
//#define TRACK_SECTION_2_START 53.2
|
||||
//#define TRACK_SECTION_3_START 93.2
|
||||
//#define TRACK_SECTION_4_START 133.2
|
||||
//#define TRACK_SECTION_5_START 173.2
|
||||
//#define TRACK_SECTION_6_START 213.2
|
||||
//#define TRACK_SECTION_7_START 253.2
|
||||
//#define TRACK_SECTION_8_START 293.2
|
||||
//#define TRACK_SECTION_9_START 333.2
|
||||
|
||||
|
||||
#ifdef MECHANICAL_SCANNING
|
||||
/******************************数据处理参数**************************************/
|
||||
|
||||
//#define DATA_RATE_SHORT 1 //三种不同模式下的 数据率
|
||||
//#define DATA_RATE_MIDDLE 1
|
||||
//#define DATA_RATE_FAR 1
|
||||
|
||||
//#define DATA_RATE_TAS 0.046875
|
||||
#define DATA_RATE_TAS 0.0625
|
||||
|
||||
#define SIGMA_R 10.0 //测量误差
|
||||
@@ -84,7 +45,52 @@
|
||||
|
||||
#define MAX_BEAM_NUM 100 //最大TWS波位数
|
||||
|
||||
#define MAX_TRACK_NUM 500
|
||||
#define MAX_TRACK_INDEX 500 //最大航迹批号
|
||||
|
||||
#define ASSOCIATE_THRESHOLD_MIN 1
|
||||
#define ASSOCIATE_THRESHOLD_MID 3 //关联波门
|
||||
#define ASSOCIATE_THRESHOLD_MAX 10
|
||||
|
||||
#define R_MIN 100
|
||||
#define R_MAX 100000
|
||||
|
||||
#define TRACK_START_THRESHOLD 8 //起航波门 3 越大越容易起批
|
||||
#define ALPHA_START 60 //起航夹角 120 越大越容易起批
|
||||
|
||||
#define TRACK_DIE_ROUND 4 // 航迹消亡时间
|
||||
#define TRACK_DIE_ROUND_TAS 96 //
|
||||
|
||||
#define ASSO_THORD 3
|
||||
|
||||
#define H_F_WIN_LEN 3
|
||||
|
||||
#define TAS_QUEUE_LENGTH 1 //Tas调用的cpi数
|
||||
#define MAX_TAS_NUM 1
|
||||
|
||||
#define T_TAS_PRED DATA_RATE_TAS
|
||||
|
||||
#define UNCONF_TARGET 0
|
||||
|
||||
#define DIRECT_TRACKING_QUEUE_LENGTH 10
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef PHASE_SCANNING
|
||||
|
||||
/******************************数据处理参数**************************************/
|
||||
#define DATA_RATE_TAS 0.3
|
||||
|
||||
#define SIGMA_R 10.0 //测量误差
|
||||
#define SIGMA_A 0.02
|
||||
#define SIGMA_E 0.2
|
||||
#define SIGMA_V 2.0
|
||||
|
||||
#define DOT_COH_RANGE 80 //点迹凝聚
|
||||
#define DOT_COH_V 2
|
||||
#define DOT_COH_AZI 6
|
||||
|
||||
#define MAX_BEAM_NUM 100 //最大TWS波位数
|
||||
|
||||
#define MAX_TRACK_NUM 500
|
||||
#define MAX_TRACK_INDEX 500 //最大航迹批号
|
||||
@@ -102,28 +108,24 @@
|
||||
#define ALPHA_START 60 //起航夹角 120 越大越容易起批
|
||||
|
||||
#define TRACK_DIE_ROUND 4 // 航迹消亡时间
|
||||
#define TRACK_DIE_ROUND_TAS 96 //
|
||||
#define TRACK_DIE_ROUND_TAS 5
|
||||
|
||||
#define ASSO_THORD 3
|
||||
|
||||
|
||||
#define H_F_WIN_LEN 3
|
||||
|
||||
|
||||
#define TAS_QUEUE_LENGTH 1 //Tas调用的cpi数
|
||||
#define MAX_TAS_NUM 1
|
||||
//#define T_TAS_PRED 0.046875
|
||||
#define T_TAS_PRED DATA_RATE_TAS
|
||||
#define TAS_QUEUE_LENGTH 4 //Tas调用的cpi数
|
||||
#define MAX_TAS_NUM 4
|
||||
#define T_TAS_PRED 0.7
|
||||
|
||||
#define UNCONF_TARGET 0
|
||||
|
||||
#define DIRECT_TRACKING_QUEUE_LENGTH 10
|
||||
|
||||
#endif
|
||||
|
||||
#define Round(x) (((x) > 0) \
|
||||
? (((int)((x) + 0.5) > (int)(x)) ? ((int)(x) + 1) : ((int)(x))) \
|
||||
: (((int)((x) - 0.5) < (int)(x)) ? ((int)(x) - 1) : ((int)(x))))
|
||||
|
||||
|
||||
|
||||
#endif // PARAMETERS_H
|
||||
|
||||
@@ -17,6 +17,7 @@ struct PointRecv
|
||||
double snr; //信噪比
|
||||
double RCS; //目标RCS
|
||||
int CPI_Time; //CPI时间
|
||||
int GNSS_time; //GNSS时间
|
||||
int Point_index; //点迹号 1~50
|
||||
int Point_Sum; //点迹总数
|
||||
int Use_Flag; //点迹使用标志 1使用 0未使用
|
||||
@@ -41,6 +42,7 @@ struct Trust_Track
|
||||
double Height; //高度
|
||||
|
||||
int T_track; //航迹时间
|
||||
int GNSS_time; //GNSS时间
|
||||
|
||||
int Track_Sum; //航迹总数
|
||||
int Point_Index; //该航迹上的第几个点
|
||||
@@ -107,6 +109,7 @@ struct Temp_track
|
||||
double RCS; //RCS
|
||||
double Amp; //幅度
|
||||
int T; //时间戳
|
||||
int GNSS_time; //GNSS时间戳
|
||||
|
||||
double d; //关联上的点的d
|
||||
|
||||
|
||||
@@ -30,17 +30,14 @@ void TAS_Ctrl::tas_ctrl_process(QVector<Trust_Track> *trust_track,
|
||||
tas_target_del(trust_track, Trust_Track_Output, Trust_track_num_Output,Work_Parameter);
|
||||
tas_beam_output(trust_track,Tracking_beam,latest_timestamp);
|
||||
|
||||
// //跟踪队列移位
|
||||
// struct Tracking_Target tas_target_tmp;
|
||||
// memcpy(&tas_target_tmp, &tas_target_queue[TAS_QUEUE_LENGTH-1], sizeof(Tracking_Target));
|
||||
// for (int i=TAS_QUEUE_LENGTH-1;i>0;i--)
|
||||
// {
|
||||
// memcpy(&tas_target_queue[i],&tas_target_queue[i-1],sizeof(Tracking_Target));
|
||||
// }
|
||||
// memcpy(&tas_target_queue[0], &tas_target_tmp, sizeof(Tracking_Target));
|
||||
|
||||
|
||||
|
||||
//跟踪队列移位
|
||||
struct Tracking_Target tas_target_tmp;
|
||||
memcpy(&tas_target_tmp, &tas_target_queue[TAS_QUEUE_LENGTH-1], sizeof(Tracking_Target));
|
||||
for (int i=TAS_QUEUE_LENGTH-1;i>0;i--)
|
||||
{
|
||||
memcpy(&tas_target_queue[i],&tas_target_queue[i-1],sizeof(Tracking_Target));
|
||||
}
|
||||
memcpy(&tas_target_queue[0], &tas_target_tmp, sizeof(Tracking_Target));
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@ int Track_Asso:: track_asso_process(QVector<PointRecv> *point_recv
|
||||
|
||||
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].track_time=(*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=(*trust_track)[i].Height+Work_Parameter.Height;
|
||||
|
||||
@@ -524,14 +525,16 @@ void Track_Asso:: model_filter(QVector <Trust_Track> *trust_track,struct RadarP
|
||||
// d_h = 1;
|
||||
|
||||
//计算俯仰门限
|
||||
bool d_p = false;
|
||||
bool d_p = true;
|
||||
|
||||
double p_track = atan2(h_track, r_track); //航迹俯仰
|
||||
double p_point = asin(h_point/point_process[loop_of_point].Range); //点迹俯仰
|
||||
// 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;
|
||||
}
|
||||
// if( (r_track > 3000 && abs(p_track - p_point)*180/PI <= 7) || \
|
||||
// (r_track > 1000 && r_track <= 3000 && abs(p_track - p_point)*180/PI <= 5) || \
|
||||
// (r_track <= 1000 && abs(p_track - p_point)*180/PI <= 10)){
|
||||
// d_p = true;
|
||||
// }
|
||||
|
||||
//计算距离门限,R=航迹点与量测点的距离,VT=航向速度乘以扫描时间差
|
||||
double& t_x0 = (*trust_track)[loop_of_track].X[0];
|
||||
@@ -683,7 +686,7 @@ void Track_Asso:: model_filter(QVector <Trust_Track> *trust_track,struct RadarP
|
||||
|
||||
//更新航迹时间
|
||||
(*trust_track)[track_index-1].T_track = point_process[point_index-1].CPI_Time;
|
||||
|
||||
(*trust_track)[track_index-1].GNSS_time = point_process[point_index-1].GNSS_time;
|
||||
|
||||
|
||||
//更新关联上的点迹信息
|
||||
@@ -793,6 +796,7 @@ void Track_Asso:: model_filter(QVector <Trust_Track> *trust_track,struct RadarP
|
||||
|
||||
|
||||
(*trust_track)[i].T_track = (*trust_track)[i].T_track+delta_T*1000.0; //更新航迹时间
|
||||
(*trust_track)[i].GNSS_time = (*trust_track)[i].GNSS_time+delta_T*1000.0; //更新航迹时间
|
||||
(*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1; //连续未用实点更新时间
|
||||
(*trust_track)[i].point_flag=0; //虚点
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ int tas_track_idx
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = (*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].track_time=(*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=(*trust_track)[i].Height+Work_Parameter.Height;
|
||||
|
||||
@@ -466,6 +467,7 @@ void Track_Asso_Tas::model_filter( QVector<Trust_Track> *trust
|
||||
|
||||
//更新航迹时间
|
||||
(*trust_track)[i].T_track = point_process[point_index-1].CPI_Time;
|
||||
(*trust_track)[i].GNSS_time = point_process[point_index-1].GNSS_time;
|
||||
|
||||
|
||||
|
||||
@@ -517,6 +519,7 @@ void Track_Asso_Tas::model_filter( QVector<Trust_Track> *trust
|
||||
memcpy((*trust_track)[i].P3,P3_pred,6*6*sizeof(double));
|
||||
|
||||
(*trust_track)[i].T_track = (*trust_track)[i].T_track+delta_T*1000.0; //更新航迹时间
|
||||
(*trust_track)[i].GNSS_time = (*trust_track)[i].GNSS_time+delta_T*1000.0; //更新航迹时间
|
||||
(*trust_track)[i].point_flag=0; //虚点
|
||||
(*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1;
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@ int Track_Init::track_init_process_logic( QVector <PointRecv> *p
|
||||
temp_track_tmp.X[2]=point_process[i].Range*sin(point_process[i].Azimuth);
|
||||
temp_track_tmp.X[3]=0;
|
||||
temp_track_tmp.T = point_process[i].CPI_Time;
|
||||
temp_track_tmp.GNSS_time = point_process[i].GNSS_time;
|
||||
temp_track_tmp.buff_round = 1;
|
||||
// temp_track_tmp.Temp_track_section_idx = floor(point_process[i].beam_index/BEAM_NUM_DOT_SECTION)+1;
|
||||
temp_track->push_back( QVector <Temp_track> ());
|
||||
@@ -273,6 +274,7 @@ void Track_Init::point_temp_track_asso(QVector <QVector<Temp_track>> *temp_t
|
||||
asso_track_info_tmp.height = point_process[asso_info[i].point_idx-1].Height;
|
||||
asso_track_info_tmp.Amp = point_process[asso_info[i].point_idx-1].Amplitude;
|
||||
asso_track_info_tmp.T = point_process[asso_info[i].point_idx-1].CPI_Time;
|
||||
asso_track_info_tmp.GNSS_time = point_process[asso_info[i].point_idx-1].GNSS_time;
|
||||
asso_track_info_tmp.vr = point_process[asso_info[i].point_idx-1].Velocity;
|
||||
asso_track_info_tmp.snr = point_process[asso_info[i].point_idx-1].snr;
|
||||
asso_track_info_tmp.RCS = point_process[asso_info[i].point_idx-1].RCS;
|
||||
@@ -464,6 +466,7 @@ void Track_Init::point_track_head_asso( QVector <QVector<Temp_track>> *temp_
|
||||
asso_track_info_tmp.snr = point_process[asso_info[i].point_idx-1].snr;
|
||||
asso_track_info_tmp.RCS = point_process[asso_info[i].point_idx-1].RCS;
|
||||
asso_track_info_tmp.T = point_process[asso_info[i].point_idx-1].CPI_Time;
|
||||
asso_track_info_tmp.GNSS_time = point_process[asso_info[i].point_idx-1].GNSS_time;
|
||||
asso_track_info_tmp.pitch_num = point_process[asso_info[i].point_idx-1].pitch_num;
|
||||
std::memcpy(asso_track_info_tmp.speed_dim, point_process[asso_info[i].point_idx-1].speed_dim, sizeof(asso_track_info_tmp.speed_dim));
|
||||
std::memcpy(asso_track_info_tmp.range_dim, point_process[asso_info[i].point_idx-1].range_dim, sizeof(asso_track_info_tmp.range_dim));
|
||||
@@ -643,6 +646,7 @@ void Track_Init::tmp_track_to_trust_track(QVector<Trust_Track> *trust_track,
|
||||
std::memcpy(trust_track_tmp.speed_dim, Track_to_start[i][L-1].speed_dim, sizeof(trust_track_tmp.speed_dim));
|
||||
std::memcpy(trust_track_tmp.range_dim, Track_to_start[i][L-1].range_dim, sizeof(trust_track_tmp.range_dim));
|
||||
trust_track_tmp.T_track = Track_to_start[i][L-1].T;
|
||||
trust_track_tmp.GNSS_time = Track_to_start[i][L-1].GNSS_time;
|
||||
trust_track_tmp.point_flag=1; //实点
|
||||
trust_track_tmp.Track_Mode=0; //跟踪模式 TWS 0
|
||||
trust_track_tmp.Target_Type=UNCONF_TARGET;
|
||||
@@ -701,6 +705,7 @@ void Track_Init::tmp_track_to_trust_track(QVector<Trust_Track> *trust_track,
|
||||
|
||||
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=(Track_to_start[i][j].T)/1000.0;
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][j].GNSS_time=Track_to_start[i][j].GNSS_time;
|
||||
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][j].x=Track_to_start[i][j].X[0];
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=Track_to_start[i][j].X[1];
|
||||
|
||||
Reference in New Issue
Block a user