更新:1、优化调整临时航迹质量评估逻辑;
2、航迹起始时增加航迹质量门限; Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
@@ -60,7 +60,11 @@
|
||||
#define TRACK_QUALITY_DECREASE_COEFF 0.01
|
||||
|
||||
//航迹起批质量条件
|
||||
#define TRACK_START_QUALITY 0.5
|
||||
#define TRACK_START_QUALITY_L3 0.7
|
||||
#define TRACK_START_QUALITY_L4 0.6
|
||||
#define TRACK_START_QUALITY_L5 0.5
|
||||
#define TRACK_START_QUALITY_L6 0.4
|
||||
#define TRACK_START_QUALITY_L7 0.3
|
||||
|
||||
#ifdef MECHANICAL_SCANNING
|
||||
/******************************机扫数据处理参数**************************************/
|
||||
|
||||
@@ -254,6 +254,40 @@ void Track_Init::point_temp_track_asso(std::vector <std::vector<Temp_track>>
|
||||
memcpy(asso_track_info_tmp.X, X, 4*sizeof(double));
|
||||
memcpy(asso_track_info_tmp.P, P, 4*4*sizeof(double));
|
||||
(*temp_track)[(*temp_track).size()-1].push_back(asso_track_info_tmp);
|
||||
|
||||
//计算航迹质量
|
||||
auto& temp_track_ref = (*temp_track)[(*temp_track).size()-1];
|
||||
L = static_cast<int>(temp_track_ref.size());
|
||||
|
||||
double snr_tmp = 0;
|
||||
double d_tmp = 0;
|
||||
double quality_tmp = 0;
|
||||
|
||||
d_tmp = exp(-temp_track_ref[L-1].d);
|
||||
|
||||
if(L == 3){
|
||||
double average_snr = 0;
|
||||
for(int i=0;i<L;i++)
|
||||
{
|
||||
average_snr += temp_track_ref[i].SNR;
|
||||
}
|
||||
average_snr /= L;
|
||||
snr_tmp = 1/(1+exp(-(average_snr - 16) / 1.2));
|
||||
}else{
|
||||
snr_tmp = 1/(1+exp(-(temp_track_ref.back().SNR - 16) / 1.2));
|
||||
}
|
||||
|
||||
quality_tmp = d_tmp * TRACK_QUALITY_D_WEIGHT + snr_tmp * TRACK_QUALITY_SNR_WEIGHT;
|
||||
quality_tmp /= (TRACK_QUALITY_D_WEIGHT + TRACK_QUALITY_SNR_WEIGHT);
|
||||
|
||||
if(L == 3){
|
||||
for(int i=0;i<L;i++)
|
||||
{
|
||||
temp_track_ref[i].quality = quality_tmp;
|
||||
}
|
||||
}else{
|
||||
temp_track_ref[L-1].quality = temp_track_ref[L-2].quality * TRACK_QUALITY_ITER_COEFF + quality_tmp * (1 - TRACK_QUALITY_ITER_COEFF);
|
||||
}
|
||||
}
|
||||
|
||||
//temp_track中删除关联上的临时航迹
|
||||
@@ -451,23 +485,24 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
|
||||
int L=static_cast<int>((*Iter).size());
|
||||
double range=(*Iter)[L-1].r;
|
||||
double azi=(*Iter)[L-1].azi/PI*180;
|
||||
double quality = (*Iter)[L-1].quality;
|
||||
|
||||
//计算航迹初始质量
|
||||
double average_snr = 0;
|
||||
for(int i=0;i<L;i++)
|
||||
{
|
||||
average_snr += (*Iter)[i].SNR;
|
||||
}
|
||||
average_snr /= L;
|
||||
double snr_tmp = 1/(1+exp(-(average_snr - 16) / 1.2));
|
||||
double &d = (*Iter)[L-1].d;
|
||||
double d_tmp = exp(-d);
|
||||
double quality_tmp = d_tmp * TRACK_QUALITY_D_WEIGHT + snr_tmp * TRACK_QUALITY_SNR_WEIGHT;
|
||||
quality_tmp /= (TRACK_QUALITY_D_WEIGHT + TRACK_QUALITY_SNR_WEIGHT);
|
||||
for(int i=0;i<L;i++)
|
||||
{
|
||||
(*Iter)[i].quality = quality_tmp;
|
||||
}
|
||||
// //计算航迹初始质量
|
||||
// double average_snr = 0;
|
||||
// for(int i=0;i<L;i++)
|
||||
// {
|
||||
// average_snr += (*Iter)[i].SNR;
|
||||
// }
|
||||
// average_snr /= L;
|
||||
// double snr_tmp = 1/(1+exp(-(average_snr - 16) / 1.2));
|
||||
// double &d = (*Iter)[L-1].d;
|
||||
// double d_tmp = exp(-d);
|
||||
// double quality_tmp = d_tmp * TRACK_QUALITY_D_WEIGHT + snr_tmp * TRACK_QUALITY_SNR_WEIGHT;
|
||||
// quality_tmp /= (TRACK_QUALITY_D_WEIGHT + TRACK_QUALITY_SNR_WEIGHT);
|
||||
// for(int i=0;i<L;i++)
|
||||
// {
|
||||
// (*Iter)[i].quality = quality_tmp;
|
||||
// }
|
||||
|
||||
//航迹起批条件判断
|
||||
bool track_init_flag = true;
|
||||
@@ -488,8 +523,39 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
|
||||
track_init_flag = false;
|
||||
}
|
||||
|
||||
//TODO: 航迹质量起批条件判断
|
||||
|
||||
//航迹质量起批条件判断
|
||||
switch(L){
|
||||
case 3:
|
||||
if(quality < TRACK_START_QUALITY_L3){
|
||||
track_init_flag = false;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if(quality < TRACK_START_QUALITY_L4){
|
||||
track_init_flag = false;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if(quality < TRACK_START_QUALITY_L5){
|
||||
track_init_flag = false;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if(quality < TRACK_START_QUALITY_L6){
|
||||
track_init_flag = false;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if(quality < TRACK_START_QUALITY_L7){
|
||||
track_init_flag = false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if(quality < TRACK_START_QUALITY_L7){
|
||||
track_init_flag = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//TODO: 杂波密度判断
|
||||
|
||||
|
||||
Reference in New Issue
Block a user