From 06e62e5aa94f4935607f25c237e95585396c6eec Mon Sep 17 00:00:00 2001 From: waiwaylee Date: Wed, 4 Nov 2026 14:51:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9A1=E3=80=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=87=AA=E5=8A=A8TAS=E8=B7=9F=E8=B8=AA=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BB=85Ku2304=E9=80=82=E7=94=A8?= =?UTF-8?q?=EF=BC=9B=202=E3=80=81=E6=9B=B4=E6=96=B0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: waiwaylee --- config/Ku2304_PS.toml | 18 ++++++++++++------ config/X1024_MS_4.8S.toml | 6 ++++++ config/X1024_MS_5S.toml | 6 ++++++ config/X1024_PS_3S_TAS_2Hz.toml | 6 ++++++ config/X256_MS_4S.toml | 6 ++++++ config/X256_PS_3S_TAS_1Hz.toml | 6 ++++++ config/X256_PS_3S_TAS_2Hz.toml | 6 ++++++ config/config_tmp.toml | 6 ++++++ .../rdp_parameter_loader.cpp | 7 +++++++ data_process_class_dll/struct.h | 3 +++ data_process_class_dll/tas_ctrl.cpp | 15 ++++++++++++++- 11 files changed, 78 insertions(+), 7 deletions(-) diff --git a/config/Ku2304_PS.toml b/config/Ku2304_PS.toml index 63382f6..3524032 100644 --- a/config/Ku2304_PS.toml +++ b/config/Ku2304_PS.toml @@ -19,7 +19,7 @@ radar_height = 0 # 系统延迟(s) radar_system_delay = 0 # TWS模式数据率(s) -data_rate_tws = 0.0342 +data_rate_tws = 0.0372 # TAS模式数据率(s;0 表示不做 DLL 内部 TAS 波束限速,由宿主调用频率决定) data_rate_tas = 0 # 纯跟踪模式数据率(s) @@ -41,13 +41,13 @@ point_cohesion_range_max = 100000 ## 航迹关联参数 [track_associate] # 距离量测精度(m) -sigma_range = 10.0 +sigma_range = 100.0 # 方位量测精度(弧度) sigma_azimuth = 0.02 # 俯仰量测精度(弧度) sigma_pitch = 0.2 # 速度量测精度(m/s) -sigma_velocity = 2.0 +sigma_velocity = 50.0 # 关联门限 associate_threshold = 4.0 # 最大外推点数 @@ -83,11 +83,11 @@ track_init_velocity_max = 1000 ## 航迹消亡参数 [track_die] # 航迹消亡圈数 -track_die_round = 6 +track_die_round = 25 # 重点航迹消亡圈数 -track_die_round_pramary = 10 +track_die_round_pramary = 50 # TAS航迹消亡圈数 -track_die_round_tas = 20 +track_die_round_tas = 50 # 航迹消批质量条件 track_die_quality = 0.3 # 重点航迹消批质量条件 @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 1 # TAS波束最小俯仰角度 tas_beam_pitch_min = -90.0 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 1 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 700 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 900 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/X1024_MS_4.8S.toml b/config/X1024_MS_4.8S.toml index 1239452..b68595a 100644 --- a/config/X1024_MS_4.8S.toml +++ b/config/X1024_MS_4.8S.toml @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 1 # TAS波束最小俯仰角度 tas_beam_pitch_min = 3.0 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/X1024_MS_5S.toml b/config/X1024_MS_5S.toml index 61fe752..2f2f66a 100644 --- a/config/X1024_MS_5S.toml +++ b/config/X1024_MS_5S.toml @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 1 # TAS波束最小俯仰角度 tas_beam_pitch_min = 3.0 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/X1024_PS_3S_TAS_2Hz.toml b/config/X1024_PS_3S_TAS_2Hz.toml index 6e399a7..75387f8 100644 --- a/config/X1024_PS_3S_TAS_2Hz.toml +++ b/config/X1024_PS_3S_TAS_2Hz.toml @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 4 # TAS波束最小俯仰角度 tas_beam_pitch_min = 3.0 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/X256_MS_4S.toml b/config/X256_MS_4S.toml index 091f1b9..5f0180e 100644 --- a/config/X256_MS_4S.toml +++ b/config/X256_MS_4S.toml @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 1 # TAS波束最小俯仰角度 tas_beam_pitch_min = 5.4 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/X256_PS_3S_TAS_1Hz.toml b/config/X256_PS_3S_TAS_1Hz.toml index 8315497..ab465dd 100644 --- a/config/X256_PS_3S_TAS_1Hz.toml +++ b/config/X256_PS_3S_TAS_1Hz.toml @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 4 # TAS波束最小俯仰角度 tas_beam_pitch_min = 5.4 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/X256_PS_3S_TAS_2Hz.toml b/config/X256_PS_3S_TAS_2Hz.toml index 6cad1bf..ed4e27a 100644 --- a/config/X256_PS_3S_TAS_2Hz.toml +++ b/config/X256_PS_3S_TAS_2Hz.toml @@ -125,6 +125,12 @@ default_track_beam_type = 1 tas_track_num_max = 4 # TAS波束最小俯仰角度 tas_beam_pitch_min = 5.4 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/config/config_tmp.toml b/config/config_tmp.toml index 7cf5705..e205fe7 100644 --- a/config/config_tmp.toml +++ b/config/config_tmp.toml @@ -127,6 +127,12 @@ default_track_beam_type = 1 tas_track_num_max = 4 # TAS波束最小俯仰角度 tas_beam_pitch_min = 3.0 +# 自动跟踪使能,0 = 关闭,1 = 开启 +auto_tas_enable = 0 +# 自动TAS跟踪最小速度 +auto_tas_velocity_min = 0.0 +# 自动TAS跟踪最大速度 +auto_tas_velocity_max = 0.0 ## singer模型机动参数(均必须 > 0) [singer_model] diff --git a/data_process_class_dll/rdp_parameter_loader.cpp b/data_process_class_dll/rdp_parameter_loader.cpp index d61f9ac..32a824b 100644 --- a/data_process_class_dll/rdp_parameter_loader.cpp +++ b/data_process_class_dll/rdp_parameter_loader.cpp @@ -131,6 +131,8 @@ const FloatField kFloatFields[] = { {"track_quality", "track_quality_decrease_coeff_o1", &RDP_parameter::track_quality_decrease_coeff_o1}, // [beam_control] 波束调度参数 {"beam_control", "tas_beam_pitch_min", &RDP_parameter::tas_beam_pitch_min}, + {"beam_control", "auto_tas_velocity_min", &RDP_parameter::auto_tas_velocity_min}, + {"beam_control", "auto_tas_velocity_max", &RDP_parameter::auto_tas_velocity_max}, // [singer_model] singer 模型机动参数 {"singer_model", "model_1_Q_fast", &RDP_parameter::model_1_Q_fast}, {"singer_model", "model_1_Q_slow", &RDP_parameter::model_1_Q_slow}, @@ -159,6 +161,7 @@ const IntField kIntFields[] = { // [beam_control] 波束调度参数 {"beam_control", "default_track_beam_type", &RDP_parameter::default_track_beam_type}, {"beam_control", "tas_track_num_max", &RDP_parameter::tas_track_num_max}, + {"beam_control", "auto_tas_enable", &RDP_parameter::auto_tas_enable}, // 屏蔽区数目(对应数组长度由它决定) {"track_init_prohibite_area", "track_init_prohibite_area_num", &RDP_parameter::track_init_prohibite_area_num}, {"tas_prohibite_area", "tas_prohibite_area_num", &RDP_parameter::tas_prohibite_area_num}, @@ -462,6 +465,10 @@ bool validate_parameter(const RDP_parameter& p, LoadContext& ctx) if (p.tas_track_num_max < 0 || p.tas_track_num_max > RDP_TAS_QUEUE_CAPACITY) return ctx.fail("参数 tas_track_num_max 必须在 0~" + std::to_string(RDP_TAS_QUEUE_CAPACITY) + " 之间(实际 " + std::to_string(p.tas_track_num_max) + ")"); + // if (p.auto_tas_velocity_min < 0.0f) + // return ctx.fail("参数 auto_tas_velocity_min 不能为负"); + if (!(p.auto_tas_velocity_max >= p.auto_tas_velocity_min)) + return ctx.fail("参数 auto_tas_velocity_max 必须大于等于 auto_tas_velocity_min"); // singer 模型机动参数 const float model_q[] = { diff --git a/data_process_class_dll/struct.h b/data_process_class_dll/struct.h index 7a3b6c5..90608ad 100644 --- a/data_process_class_dll/struct.h +++ b/data_process_class_dll/struct.h @@ -258,6 +258,9 @@ struct RDP_parameter int default_track_beam_type; //默认跟踪波束类型 int tas_track_num_max; //最大同时跟踪目标数 float tas_beam_pitch_min; //TAS跟踪波束俯仰最小值 + int auto_tas_enable; //自动TAS跟踪使能 + float auto_tas_velocity_min; //自动TAS跟踪最小速度 + float auto_tas_velocity_max; //自动TAS跟踪最大速度 // ******************* singer模型机动参数 ************************// float model_1_Q_fast; //模型1 diff --git a/data_process_class_dll/tas_ctrl.cpp b/data_process_class_dll/tas_ctrl.cpp index 476c4c9..4d891f9 100644 --- a/data_process_class_dll/tas_ctrl.cpp +++ b/data_process_class_dll/tas_ctrl.cpp @@ -61,7 +61,7 @@ void TAS_Ctrl::tas_target_add(std::vector *trust_track, azi=azi/PI*180; //进入跟踪的条件: 1.手动跟踪的目标 或 满足速度、距离、高度条件满足 关联点数大于2 2.不在禁止跟踪区域 - if( ( (*trust_track)[i].manual_tracking_flag == 1)//|| (tas_auto_start( v, r, h)==1 && (*trust_track)[i][k].associate_point_number>=2) + if( ( ( (*trust_track)[i].manual_tracking_flag == 1) || (tas_auto_start( v, r, h)==1)) //&& (*trust_track)[i].associate_point_number>=2)) && tas_target_num < rdp_parameter.tas_track_num_max && (*trust_track)[i].Track_Mode == 0 && tas_prohibite_area( r, azi, v, h) == 0) @@ -404,3 +404,16 @@ void TAS_Ctrl::tas_beam_output(std::vector *trust_track // RDP_LOG_INFO("TAS <{}> output: range: {} azi: {} pit: {}", 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) +{ + if(rdp_parameter.auto_tas_enable == 0){ + return 0; + } + + if(v >= rdp_parameter.auto_tas_velocity_min && v <= rdp_parameter.auto_tas_velocity_max){ + return 1; + }else{ + return 0; + } +}