更新:1、增加扫描模式配置项;

2、优化不必要的宏定义;
3、合并机扫和相扫版本;

Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
2026-10-27 14:04:51 +08:00
parent 423c200659
commit 019af7a229
12 changed files with 65 additions and 61 deletions
+9 -21
View File
@@ -72,11 +72,16 @@ int Data_Process::data_preprocess(struct DataRev Data_Input[150])
RDP_RECORD_POINTS(rec_points);
#endif
#ifdef PHASE_SCANNING
// 相扫模式下,判断前后两帧波位号的大小,来判断是否扫描一周完成
if(Data_Input[0].Beam_index_aiz <= last_beam_num) //TWS
// 判圈:扫描模式由配置参数 scan_mode 决定(0=相扫,1=机扫),替代原编译期 PHASE_SCANNING/MECHANICAL_SCANNING 分支。
// 相扫:判断前后两帧波位号的大小,来判断是否扫描一周完成(当前波位号 <= 上一帧波位号即判满圈);
// 机扫:可能存在转台反转导致波位号变小但并未扫描一周,因此改为波位号为 0 时判满圈。
const bool circle_done = (rdp_parameter.scan_mode == 0)
? (Data_Input[0].Beam_index_aiz <= last_beam_num) //TWS 相扫
: (Data_Input[0].Beam_index_aiz == 0); //TWS 机扫
last_beam_num = Data_Input[0].Beam_index_aiz;
if(circle_done)
{
last_beam_num = Data_Input[0].Beam_index_aiz;
circle_id++;
// std::cout << Data_Input[0].CPI_time << std::endl;
// RDP_LOG<<"CPI_time: "<<Data_Input[0].CPI_time<<std::endl;
@@ -84,25 +89,8 @@ int Data_Process::data_preprocess(struct DataRev Data_Input[150])
}
else
{
last_beam_num = Data_Input[0].Beam_index_aiz;
return 2;
}
#else
// 机扫模式下,可能存在转台反转的情况,导致波位号变小,但并未扫描一周,因此改为判断波位号为0时,表示扫描一周完成
if(Data_Input[0].Beam_index_aiz == 0) //TWS
{
last_beam_num = Data_Input[0].Beam_index_aiz;
circle_id++;
// std::cout << Data_Input[0].CPI_time << std::endl;
// RDP_LOG<<"CPI_time: "<<Data_Input[0].CPI_time<<std::endl;
return 1;
}
else
{
last_beam_num = Data_Input[0].Beam_index_aiz;
return 2;
}
#endif
}
else if(Data_Input[0].point_type == 1) //tas数据
{
+2 -8
View File
@@ -7,12 +7,8 @@
/**********************************版本信息*************************************************/
#define MAJOR_VERSION 1
#define MINOR_VERSION 5
#define PATCH_VERSION 8
#ifdef PHASE_SCANNING
#define VERSION_INFO "PS"
#else
#define VERSION_INFO "MS"
#endif
#define PATCH_VERSION 9
#define VERSION_INFO "GENERIC"
#define STRINGIFY_IMPL(x) #x
#define STRINGIFY(x) STRINGIFY_IMPL(x)
@@ -95,8 +91,6 @@
#define MAX_TRACK_NUM 500
//TAS 跟踪队列容量上限(运行期配置项 tas_track_num_max 不得超过该值)
#define RDP_TAS_QUEUE_CAPACITY 30
//未确认目标类型(Track::Target_Type 的缺省语义值)
#define UNCONF_TARGET 0
#define Round(x) (((x) > 0) \
? (((int)((x) + 0.5) > (int)(x)) ? ((int)(x) + 1) : ((int)(x))) \
@@ -140,6 +140,7 @@ const FloatField kFloatFields[] = {
const IntField kIntFields[] = {
// [radar_params] 雷达工作参数
{"radar_params", "radar_work_mode", &RDP_parameter::radar_work_mode},
{"radar_params", "scan_mode", &RDP_parameter::scan_mode},
// [track_associate] 航迹关联参数
{"track_associate", "extrapolate_max", &RDP_parameter::extrapolate_max},
{"track_associate", "extrapolate_max_tas", &RDP_parameter::extrapolate_max_tas},
@@ -357,6 +358,8 @@ bool validate_parameter(const RDP_parameter& p, LoadContext& ctx)
// 雷达工作参数
if (p.radar_work_mode < 0 || p.radar_work_mode > 2)
return ctx.fail("参数 radar_work_mode 必须在 0~2 之间(实际 " + std::to_string(p.radar_work_mode) + ")");
if (p.scan_mode != 0 && p.scan_mode != 1)
return ctx.fail("参数 scan_mode 必须为 0(相扫模式)或 1(机扫模式)(实际 " + std::to_string(p.scan_mode) + ")");
if (!(p.freq_0_GHz > 0.0f))
return ctx.fail("参数 freq_0_GHz 必须大于 0");
if (p.radar_system_delay < 0.0f)
+1
View File
@@ -194,6 +194,7 @@ struct RDP_parameter
{
// ******************* 雷达工作参数 ************************//
int radar_work_mode; //工作模式
int scan_mode; //扫描模式 0=相扫模式 1=机扫模式(决定判圈逻辑,替代原编译期 PHASE_SCANNING/MECHANICAL_SCANNING 分支)
float freq_0_GHz; //频点0频率
float radar_height; //雷达平台高度 (m)
float radar_system_delay; //系统延迟 (s)
+1 -1
View File
@@ -667,7 +667,7 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
trust_track_tmp.Unupdated_time = 0;
trust_track_tmp.point_flag=1; //实点
trust_track_tmp.Track_Mode=0; //跟踪模式 TWS 0
trust_track_tmp.Target_Type=UNCONF_TARGET;
trust_track_tmp.Target_Type=0;
trust_track_tmp.Track_Index=index;
trust_track_tmp.Height=Track_to_start[i][L-1].height;
trust_track_tmp.Extrapolate_round=0;
@@ -338,7 +338,7 @@ void Track_Init_Direct_Tracking::tmp_track_to_trust_track( std::vector<Trust_Tr
trust_track_tmp.T_track = (*Iter)[L-1].CPI_time;
trust_track_tmp.point_flag=1; //实点
trust_track_tmp.Track_Mode=1; //跟踪模式 TWS 0
trust_track_tmp.Target_Type=UNCONF_TARGET;
trust_track_tmp.Target_Type=0;
trust_track_tmp.Height=(*Iter)[L-1].height;
trust_track_tmp.Extrapolate_round=0;
trust_track_tmp.approach_flag = -1;