更新:1、修改TWS外推时,时间差计算方法,不再使用固定数据率计算时间差,而是使用最新时间戳来计算;
Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
@@ -160,6 +160,7 @@ int model)
|
|||||||
&trust_track,
|
&trust_track,
|
||||||
Trust_Track_Output,
|
Trust_Track_Output,
|
||||||
Trust_track_num_Output,
|
Trust_track_num_Output,
|
||||||
|
latest_timestamp,
|
||||||
Work_Parameter
|
Work_Parameter
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
|
|||||||
std::vector <Trust_Track> *trust_track, //航迹文件
|
std::vector <Trust_Track> *trust_track, //航迹文件
|
||||||
struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //更新航迹信息
|
struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //更新航迹信息
|
||||||
int *Trust_track_num_Output, //更新航迹数
|
int *Trust_track_num_Output, //更新航迹数
|
||||||
|
long long latest_timestamp, //最新时间戳
|
||||||
struct RadarPara Work_Parameter //雷达参数
|
struct RadarPara Work_Parameter //雷达参数
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@@ -35,7 +36,7 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
|
|||||||
//IMM算法
|
//IMM算法
|
||||||
model_interaction(trust_track);
|
model_interaction(trust_track);
|
||||||
|
|
||||||
model_filter(trust_track, Work_Parameter);
|
model_filter(trust_track, Work_Parameter, latest_timestamp);
|
||||||
|
|
||||||
model_output(trust_track);
|
model_output(trust_track);
|
||||||
|
|
||||||
@@ -429,7 +430,7 @@ void Track_Asso::IMM_d_cal(double v_track,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct RadarPara Work_Parameter)
|
void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct RadarPara Work_Parameter, long long latest_timestamp)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@@ -729,23 +730,29 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
|
|||||||
if((*trust_track)[i].Extrapolate_round <= MAX_EXTRAPOLATE_NUM)
|
if((*trust_track)[i].Extrapolate_round <= MAX_EXTRAPOLATE_NUM)
|
||||||
{
|
{
|
||||||
double v_track = sqrt(pow((*trust_track)[i].X[1],2)+pow((*trust_track)[i].X[4],2));
|
double v_track = sqrt(pow((*trust_track)[i].X[1],2)+pow((*trust_track)[i].X[4],2));
|
||||||
double delta_T;
|
|
||||||
if(Work_Parameter.work_mode == 0)
|
double delta_T = (latest_timestamp - (*trust_track)[i].T_track)/1000.0;
|
||||||
{
|
if (delta_T <= 0)
|
||||||
delta_T = Work_Parameter.DATA_RATE_SHORT;
|
continue;
|
||||||
}
|
|
||||||
else if(Work_Parameter.work_mode == 1)
|
//
|
||||||
{
|
//
|
||||||
delta_T = Work_Parameter.DATA_RATE_MIDDLE;
|
// if(Work_Parameter.work_mode == 0)
|
||||||
}
|
// {
|
||||||
else if(Work_Parameter.work_mode == 2)
|
// delta_T = Work_Parameter.DATA_RATE_SHORT;
|
||||||
{
|
// }
|
||||||
delta_T = Work_Parameter.DATA_RATE_FAR;
|
// else if(Work_Parameter.work_mode == 1)
|
||||||
}
|
// {
|
||||||
else
|
// delta_T = Work_Parameter.DATA_RATE_MIDDLE;
|
||||||
{
|
// }
|
||||||
delta_T = Work_Parameter.DATA_RATE_SHORT;
|
// else if(Work_Parameter.work_mode == 2)
|
||||||
}
|
// {
|
||||||
|
// delta_T = Work_Parameter.DATA_RATE_FAR;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// delta_T = Work_Parameter.DATA_RATE_SHORT;
|
||||||
|
// }
|
||||||
|
|
||||||
double F[6][6], Q1[6][6], Q2[6][6], Q3[6][6];
|
double F[6][6], Q1[6][6], Q2[6][6], Q3[6][6];
|
||||||
IMM_F_Q_gen( v_track, delta_T, F, Q1, Q2, Q3,Work_Parameter);
|
IMM_F_Q_gen( v_track, delta_T, F, Q1, Q2, Q3,Work_Parameter);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public:
|
|||||||
std::vector <Trust_Track> *trust_track, //航迹文件
|
std::vector <Trust_Track> *trust_track, //航迹文件
|
||||||
struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //更新航迹信息
|
struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //更新航迹信息
|
||||||
int *Trust_track_num_Output, //更新航迹数
|
int *Trust_track_num_Output, //更新航迹数
|
||||||
|
long long latest_timestamp, //最新时间戳
|
||||||
struct RadarPara Work_Parameter //工作参数
|
struct RadarPara Work_Parameter //工作参数
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -30,7 +31,8 @@ private:
|
|||||||
void model_interaction(std::vector <Trust_Track> *trust_track); //模型交互
|
void model_interaction(std::vector <Trust_Track> *trust_track); //模型交互
|
||||||
|
|
||||||
void model_filter(std::vector <Trust_Track> *trust_track, //滤波
|
void model_filter(std::vector <Trust_Track> *trust_track, //滤波
|
||||||
struct RadarPara Work_Parameter
|
struct RadarPara Work_Parameter,
|
||||||
|
long long latest_timestamp
|
||||||
);
|
);
|
||||||
|
|
||||||
void model_output(std::vector <Trust_Track> *trust_track ); //模型输出
|
void model_output(std::vector <Trust_Track> *trust_track ); //模型输出
|
||||||
|
|||||||
Reference in New Issue
Block a user