Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2943788356 | ||
|
|
c3d5b8fcff | ||
|
|
4449312791 | ||
|
|
2c0d2c26a5 | ||
|
|
4a57dd6dbe | ||
|
|
06e62e5aa9 | ||
|
|
a32085bbe8 | ||
|
|
44b4468538 | ||
|
|
95118d85cc | ||
|
|
4926e90791 | ||
|
|
a002961e01 | ||
|
|
66cabb8b45 | ||
|
|
b728ebccf1 | ||
|
|
c77b6c239e |
+62
-1
@@ -15,6 +15,67 @@
|
||||
|
||||
### Removed
|
||||
|
||||
## [1.5.11] - 2026-11-05
|
||||
|
||||
> 本次发布归档 1.5.10(a32085b)之后的改动(提交 06e62e5 … c3d5b8f)与版本号提升:自动 TAS 跟踪(仅 Ku2304 启用)、消批方式可配置、TAS 取消/出队与 TWS 外推修复、航迹指纹口径调整。
|
||||
> 版本号:`PATCH_VERSION` 10→**11**(`parameters.h`,工作区未提交),运行时 `version_info` 为 **`V1.5.11.GENERIC`**。
|
||||
|
||||
### Added
|
||||
|
||||
- **自动 TAS 跟踪(06e62e5,默认关闭,仅 Ku2304 配置启用)**:`[beam_control]` 新增 `auto_tas_enable`(int,0=关闭 / 1=开启)、`auto_tas_velocity_min` / `auto_tas_velocity_max`(float,目标合速度区间 m/s);`TAS_Ctrl::tas_auto_start(v, r, h)` 由占位实现改为「使能 + 速度区间」判定(`r`/`h` 形参保留但不参与,加载器校验 `auto_tas_velocity_max >= auto_tas_velocity_min`,而 `min >= 0` 的校验以注释形式保留、当前不生效);`tas_target_add()` 入队条件改为「`manual_tracking_flag==1` **或** `tas_auto_start()==1`」+ 队列未满 + `Track_Mode==0` + 不在 TAS 禁止区(原注释中的 `associate_point_number>=2` 约束保持不启用)。8 份配置均新增这 3 个键,**只有 `Ku2304_PS` 启用**(`auto_tas_enable=1`、700~900 m/s),其余设备为 0。
|
||||
- **航迹消批方式可配置(2c0d2c2)**:`[track_die]` 新增 `track_die_quality_enable`(int,0/1,加载器校验仅允许 0/1):**1 = 非重点 TWS 航迹按质量消批**(`Quality < track_die_quality`,此前固定行为),**0 = 改为按圈数消批**(`Extrapolate_round > track_die_round`);重点航迹与 TAS 航迹的消批条件不受该开关影响。8 份配置均写 `1`(保持现有行为),同时按设备调整 `track_die_round` 备用值(X1024 两份 5、Ku2304 25、其余 6)。
|
||||
- **TAS 波束调试日志(4449312)**:`tas_beam_output()` 每次输出波束时打印一条 `RDP_LOG_DEBUG`(`TAS <Track_Index-航迹指纹>: range/azi/elev`),便于回放时核对波束目标与角度;受 `RDP_LOG_LEVEL` 编译期级别控制(Release 默认 INFO 时不输出)。
|
||||
|
||||
### Changed
|
||||
|
||||
- **航迹指纹计算口径调整(4449312 + c3d5b8f,见 9.12)**:① 取样点由「临时航迹末点」改为「临时航迹**首点**」;② 自 c3d5b8f 起**不再使用距离与方位**(`computeFingerprint(0, 0, vr, RCS, CPI_time)`),因为 r/azi 可能被外部修正值改写、导致同一目标两次计算的指纹不一致。指纹仍为 16 bit,仍按 `vr`/`RCS`/`CPI_time` 量化后 splitmix64 混合折叠;**同一时刻仅速度、RCS 与 CPI 时间相同的两条航迹会得到相同指纹**(碰撞面比旧口径略大)。
|
||||
- **TWS 未关联航迹的外推条件改为按跟踪模式判定(4449312,`track_asso.cpp`)**:由 `point_flag == 0 && manual_tracking_flag == 0` 改为 `point_flag == 0 && Track_Mode == 0`——处于 TAS 模式(`Track_Mode==1`)的航迹不再被 TWS 通道外推,避免同一条 TAS 航迹同时出现在 TWS 输出中;手动转 TAS 但尚未入队(`Track_Mode` 仍为 0)的航迹仍按 TWS 外推,与既有输出语义一致。
|
||||
- **取消 TAS 时的出队判定修正(4449312,`tas_target_del()`)**:「仍处于跟踪」的条件由 `Track_Mode==1 && manual_tracking_flag==1` 改为 **`Track_Mode==1 && manual_untracking_flag!=1`**——自动 TAS 目标(`manual_tracking_flag` 恒为 0)不再被误判为已取消而立即出队;手动取消仍因 `manual_untracking_flag=1` 正常出队并输出完整航迹更新行(V1.5.10 行为不变)。
|
||||
- 配置键数由 65 增至 **69**(新增 `auto_tas_enable` / `auto_tas_velocity_min` / `auto_tas_velocity_max` / `track_die_quality_enable`),8 份配置同步补齐。
|
||||
- `Ku2304_PS.toml` 参数更新(06e62e5):`data_rate_tws` 0.0342→**0.0372**、`sigma_range` 10→**100**、`sigma_velocity` 2→**50**、消亡圈数 `track_die_round/pramary/tas` 6/10/20→**25/50/50**,并启用自动 TAS(700~900 m/s)。
|
||||
|
||||
### Fixed
|
||||
|
||||
- **修复取消 TAS 时的判断条件问题(4449312)**:自动 TAS 目标没有 `manual_tracking_flag`,原出队条件把它当作「已取消」而移出队列(表现为自动 TAS 只跟踪一帧即退出);改判 `manual_untracking_flag!=1` 后自动目标稳定驻留队列(见 Changed)。
|
||||
- **修复 TWS 错误外推 TAS 航迹(4449312)**:TWS 外推循环原按 `manual_tracking_flag==0` 过滤,自动 TAS 目标(该标志为 0)会被 TWS 通道当作未关联航迹外推,造成 TAS 航迹重复输出;改按 `Track_Mode==0` 过滤后不再外推 TAS 航迹(见 Changed)。
|
||||
- **修复非重点航迹按圈数消批的条件方向(4449312,`track_die.cpp`)**:`track_die_quality_enable=0` 时原判据误写为 `Extrapolate_round < track_die_round`(航迹刚建立即满足而立即消亡),已改为 `> track_die_round`,与 1.5.8 之前的圈数消批语义一致。
|
||||
- **修复航迹指纹计算(4449312 / c3d5b8f)**:原用末点且含距离/方位,末点或外部修正值变化会改变指纹、导致 TAS 命令匹配不到航迹;现固定用起批首点且只取 `vr`/`RCS`/`CPI_time`(见 Changed)。
|
||||
- 文档同步(本次文档更新):README(2/3/5.2/6.2/8.2/9.9/9.10/9.12/10.1/10.2/11.2/12/13 节)、`docs/data_process_flow_report.md`(6.1/8.1/8.2/9.1/10)、`docs/track_init_readme.md`(起批指纹口径)按源码同步自动 TAS、消批开关、指纹新口径与 69 键配置。
|
||||
|
||||
### Removed
|
||||
|
||||
- 无。
|
||||
|
||||
## [1.5.10] - 2026-11-03
|
||||
|
||||
> 本次发布归档 1.5.9(fe7e194)之后的改动(提交 c77b6c2 … 95118d8)与版本号提升:配置加载放宽 `data_rate_tas`、新增 7 份设备配置、TAS 波束俯仰下限、频点步进参数、手动取消 TAS 的时序与完整输出、单跟踪模式偶发 TWS 波束修复、用户操作日志。
|
||||
> 版本号:`PATCH_VERSION` 9→**10**(`parameters.h`,工作区未提交),运行时 `version_info` 为 **`V1.5.10.GENERIC`**。
|
||||
|
||||
### Added
|
||||
|
||||
- **新增 7 份设备配置样例(c77b6c2 / b728ebc / a002961)**:`config/` 下由 1 份样例扩展为 **8 份 TOML**——`config_tmp.toml`(通用样例)、`X256_PS_3S_TAS_1Hz`、`X256_PS_3S_TAS_2Hz`、`X256_MS_4S`、`X1024_PS_3S_TAS_2Hz`、`X1024_MS_4.8S`、`X1024_MS_5S`、`Ku2304_PS`;各份差异集中在 `scan_mode`、`data_rate_tas`、`tas_beam_pitch_min`、`tas_track_num_max` 与频点(Ku2304 为 `freq_0_GHz=16.5` / `freq_step_GHz=0.05`),其余键与样例一致。
|
||||
- **新增配置参数 `freq_step_GHz`(频点步进,4926e90)**:`[radar_params]` 必填 float(校验 >0),盲速计算 `kalman::Bind_speed()` 的频点由硬编码 `freq_0_GHz + freq_ind*0.02` 改为 `freq_0_GHz + freq_ind*freq_step_GHz`;样例配置取 0.02、Ku2304 取 0.05。7 份既有配置同步补该键(95118d8),加载器键数由 63 增至 64。
|
||||
- **新增配置参数 `tas_beam_pitch_min`(TAS 波束俯仰下限,66cabb8)**:`[beam_control]` 必填 float;`tas_beam_output()` 输出俯仰改为 `max(elev, tas_beam_pitch_min)`,避免低仰角跟踪波束打到地面;样例 3.0、X256_MS_4S 与两份 X256_PS 取 5.4、Ku2304 取 **-90**(等价于不限制)。**加载器未对该值做范围校验**(任意 float 均可);7 份既有配置同步补该键,加载器键数由 64 增至 65。
|
||||
- **用户操作日志(c77b6c2)**:手动操作与队列变动统一以 `RDP_LOG_INFO` 记录——`track_clear_all()`(All track clear)、`track_delete()`(Track <批号> deleted by user)、`primary_target_add/cancel()`(设为/取消重点目标)、`tracking_start/stop()`(转入/取消跟踪模式)、TAS 队列移除(Tatget <批号> delete from TAS queue,原文拼写如此);随 spdlog 双写同时进入标准输出与日志文件,便于复盘操作序列。
|
||||
|
||||
### Changed
|
||||
|
||||
- **手动取消 TAS 跟踪的时序与航迹状态(c77b6c2)**:`tracking_stop()` 不再立即清 `Track_Mode`,改为 `manual_tracking_flag=0` 并置新增的 `Trust_Track::manual_untracking_flag=1`;TAS 队列在下一次 `Beam_Ctrl` 的 `tas_target_del()` 中出队,此时才置 `Track_Mode=0` 并**输出一整套完整航迹更新行**(此前取消后航迹状态不对外更新)。`tracking_start()` 会清 `manual_untracking_flag`;`track_process(model=3)` 按指纹匹配航迹时要求 `manual_untracking_flag==0`,且不再顺带置 `manual_tracking_flag=1`(该标志只由 `tracking_start` 置位)。
|
||||
- **TAS 队列遍历上界改为配置项(c77b6c2)**:`tas_target_add()` / `tas_target_del()` / `tas_beam_output()` 的队列循环由遍历整个编译期容量 `RDP_TAS_QUEUE_CAPACITY`(30)改为 `rdp_parameter.tas_track_num_max`(样例 4、机扫/单跟踪 1);单跟踪模式下不再扫描未启用的队列槽位(此前可能取到槽位中的残留项而误发波束)。
|
||||
- **放宽 `data_rate_tas` 校验允许 0(c77b6c2)**:`rdp_parameter_loader.cpp` 对 `data_rate_tas` 的校验由 `>0` 放宽为 `≥0`——该值只用于 `delta_T_last_track > data_rate_tas` 门控比较(无除法),**0 表示不做 DLL 内部 TAS 波束限速,TAS 波束输出间隔由宿主 `Beam_Ctrl` 调用频率决定**;`data_rate_tws` 仍要求 >0(外推步长不可为 0),`data_rate_track_only` 保持 ≥0。修复 `config/X256_MS_4S.toml`、`config/X1024_MS_4.8S.toml` 等(`data_rate_tas = 0`)经 `parameters_reload()` 加载返回 -1 的问题;`config/config_tmp.toml` 的该键注释同步说明 0 的语义。验证(Lead 实测,2026-10-30):加载器单元测试 240 项断言全部通过(新增「`data_rate_tas=0` 允许且取值正确」「`data_rate_tas=-1` 拒绝」「`data_rate_tws=0` 拒绝」);4 配置重建 0 warning / 0 error;5 份配置(含两份机扫配置)经 DLL 公开接口 `parameters_reload()` 全部返回 0;公开接口运行期测试 4 配置 × 38 项断言全部通过(回归)。
|
||||
- **入队/取消输出的坐标不再叠加系统延迟(c77b6c2)**:`tas_target_add()` 与 `tas_target_del()` 的即时输出行改为直接用 `X[0]` / `X[3]` 求极坐标(eb9f30c 曾按 `radar_system_delay` 补偿);常规关联输出与波束外推仍按 `radar_system_delay` 补偿。
|
||||
|
||||
### Fixed
|
||||
|
||||
- **修复单跟踪模式下偶发发送 TWS 波束(c77b6c2)**:根因是 TAS 队列遍历上界为编译期容量 30 而非配置的 `tas_track_num_max`,`tas_track_num_max=1` 时仍会扫描 1~29 号槽位,取到残留目标后按 TAS 逻辑外推并下发波束;改为按配置值遍历后不再误发(见 Changed)。
|
||||
- **修复手动取消 TAS 后航迹状态不更新(c77b6c2)**:取消跟踪后原实现既不输出航迹更新行、也不及时清 `Track_Mode`,宿主界面/回放看到的状态与实际不一致;现由出队环节置 `Track_Mode=0` 并输出完整更新行(见 Changed)。
|
||||
- **修复配置加载范围判断错误导致参数加载失败(c77b6c2)**:`data_rate_tas` 原按 `>0` 校验,使 `data_rate_tas=0` 的机扫/单跟踪配置整体加载失败并保留旧参数;放宽为 `≥0` 后这些配置可正常加载(见 Changed)。
|
||||
- 文档同步(本次文档更新):README(2/3/5.2/6.2/7.1/8.2/9.10/10.1/10.2/11.2/12/13 节)、`docs/data_process_flow_report.md`(8.1/8.2/9.1/10)按源码同步 `freq_step_GHz`、`tas_beam_pitch_min`、手动取消 TAS 的 `manual_untracking_flag` 时序、TAS 队列按配置遍历、8 份配置文件与用户操作日志。
|
||||
|
||||
### Removed
|
||||
|
||||
- 无。
|
||||
|
||||
## [1.5.9] - 2026-10-29
|
||||
|
||||
> 本次发布把 1.5.8 之后的全部改动(提交 423c200 … eb9f30c)归档:参数配置方式改造 + 机扫/相扫合并为单一份构建、工作参数改为全局对象、日志组件改为 spdlog、构建脚本与 VS Code 任务适配、**航迹指纹**与手动转 TAS 输出修复。
|
||||
@@ -58,7 +119,7 @@
|
||||
- **旧宏与旧 `RadarPara` 字段的等价替换(参数配置方式改造)**:如 `SIGMA_R/A/E/V`→`sigma_range/azimuth/pitch/velocity`、`DOT_COH_RANGE/V/AZI`→`point_cohesion_range/velocity/azimuth`、`R_MIN/R_MAX`→`point_cohesion_range_min/max`、`FREQ0`→`freq_0_GHz`、`ASSO_THORD`→`associate_threshold`、`MAX_EXTRAPOLATE_NUM(_TAS)`→`extrapolate_max(_tas)`、`H_F_WIN_LEN`→`height_smooth_win`、`TRACK_START_THRESHOLD/ALPHA_START`→`track_init_threshold/track_init_angle`、`TRACK_START_QUALITY_L3~L7`→`track_init_quality_L3~L7`、`TRACK_DIE_QUALITY(_PRAMARY)/TRACK_DIE_ROUND(_PRIMARY/_TAS)`→`track_die_quality(_pramary)/track_die_round(_pramary/_tas)`、`TRACK_QUALITY_*`→`track_quality_*`、`work_mode/Height/Sys_delay`→`radar_work_mode/radar_height/radar_system_delay`、`track_start_point_num`→`track_init_point_num_min`、`V_MAX/V_MIN`→`track_init_velocity_max/min`、`track_prohibite_area_*`→`track_init_prohibite_area_*`、`TAS_prohibite_area_*`→`tas_prohibite_area_*`、`Model1/2/3_Q_fast/slow`→`model_1/2/3_Q_fast/slow`、`DATA_RATE_SHORT/MIDDLE/FAR`→`data_rate_tws`(契约确认的等价改法)、`DATA_RATE_TAS`→`data_rate_tas`;完整对照见 `README.md` 10.3 节。
|
||||
- **航迹号、TAS 队列与跟踪波束类型改为按配置分配(参数配置方式改造)**:`track_index_mangement.cpp` 的定长数组 `int List[MAX_TRACK_INDEX]` 改为按 `rdp_parameter.track_index_max` 分配的 `std::vector<int>`;TAS 队列固定容量改用编译期常量 `RDP_TAS_QUEUE_CAPACITY`(30),运行期同时跟踪目标数上限改用配置项 `tas_track_num_max`(加载器校验 0~30,原 `MAX_TAS_NUM` 相扫 4 / 机扫 1);跟踪波束 `Tracking_beam->type` 由硬编码 1 改为配置项 `default_track_beam_type`。
|
||||
- **`parameters.h` 精简为编译期常量(参数配置方式改造)**:删除全部雷达工作参数宏,仅保留 `PI`、版本宏(`MAJOR_VERSION`/`MINOR_VERSION`/`PATCH_VERSION`/`VERSION_INFO`/`VERSION_STRING`)、日志宏(`RDP_LOG_*`)、记录宏(`RDP_RECORD_*`)、接口容量常量 `MAX_TRACK_NUM`(500)/`RDP_TAS_QUEUE_CAPACITY`(30)与 `Round`;`requirements.md` 同时改写为本次参数配置方式改造的需求说明。
|
||||
- **本次改造的验证(Lead 实测,2026-10-27,机扫/相扫合并前)**:① 构建:8 个配置(X256_PS/X256_MS × Release/Debug × REC_OFF/REC_ON)全部成功、退出码 0、0 warning 0 error,每个配置均生成 `bin/data_process_class_dll.dll`;Release REC_OFF DLL 体积 331,776 字节(约 324 KB,较改造前约 178 KB 增大,原因是纯头文件的 toml++ 解析器编入 DLL),Debug REC_ON 为 4,694,016 字节。② 导出表(Release REC_OFF,共 31 个导出):新增 `parameters_reload`(`?parameters_reload@Data_process_class_dll@@UEAAHPEBD@Z`),`track_process_parameters_initial`/`track_process_parameters_modify` 与 `RadarPara` 相关符号已不存在,`Data_Process_Factory::GetB/Destroy` 等其余接口不变。③ 加载器单元测试(229 项断言全部通过):样例配置 62 个键逐字段取值正确(含整数/浮点与负的二次/一次衰减系数;该轮为 `scan_mode` 新增前的验证,新增后样例共 63 个键,见上一条 `scan_mode` 验证);文件不存在、空路径、nullptr、TOML 语法错误、缺标量键、类型错误、未知键、缺配置段、取值越界(起批点数 2、`data_rate_tas=0`)、区域数 31、区域方位 min≥max、数组长度与 `*_num` 不一致等失败路径均返回 -1 且不修改当前参数,失败后可重新加载成功;屏蔽区数组按 `*_num` 读取、未使用位置保持 0。④ 公开接口运行期测试(8 个配置逐一编译链接运行,各 29 项断言全部通过):`GetB()`/`version_info`(`V1.5.8.PS`/`V1.5.8.MS`)、`parameters_reload` 成功/失败返回值与「失败后再加载成功」、TWS/TAS 主流程冒烟、`Beam_Ctrl`、`track_clear_all`、`track_delete`/`tracking_start`/`tracking_stop`/`primary_target_add`/`primary_target_cancel`/`tracking_point`、`Destroy()` 后重新 `GetB()` 并再次加载配置均正常。⑤ 静态审计:源码无 `Work_Parameter`/`RadarPara`/旧参数宏残留(区分大小写整词审计 0 命中);首轮验证时 62 个 `RDP_parameter` 成员 ↔ 62 个加载器键 ↔ 62 个 TOML 键一一对应(新增 `scan_mode` 后为 63 个),11 个配置段与加载器一致。验证程序与日志位于 git 忽略的构建目录中,未入库。
|
||||
- **本次改造的验证(Lead 实测,2026-10-27,机扫/相扫合并前)**:① 构建:8 个配置(X256_PS/X256_MS × Release/Debug × REC_OFF/REC_ON)全部成功、退出码 0、0 warning 0 error,每个配置均生成 `bin/data_process_class_dll.dll`;Release REC_OFF DLL 体积 331,776 字节(约 324 KB,较改造前约 178 KB 增大,原因是纯头文件的 toml++ 解析器编入 DLL),Debug REC_ON 为 4,694,016 字节。② 导出表(Release REC_OFF,共 31 个导出):新增 `parameters_reload`(`?parameters_reload@Data_process_class_dll@@UEAAHPEBD@Z`),`track_process_parameters_initial`/`track_process_parameters_modify` 与 `RadarPara` 相关符号已不存在,`Data_Process_Factory::GetB/Destroy` 等其余接口不变。③ 加载器单元测试(229 项断言全部通过):样例配置 62 个键逐字段取值正确(含整数/浮点与负的二次/一次衰减系数;该轮为 `scan_mode` 新增前的验证,新增后样例共 63 个键,见上一条 `scan_mode` 验证);文件不存在、空路径、nullptr、TOML 语法错误、缺标量键、类型错误、未知键、缺配置段、取值越界(起批点数 2、`data_rate_tas<0`(0 自 2026-10-30 起允许,见本区上方))、区域数 31、区域方位 min≥max、数组长度与 `*_num` 不一致等失败路径均返回 -1 且不修改当前参数,失败后可重新加载成功;屏蔽区数组按 `*_num` 读取、未使用位置保持 0。④ 公开接口运行期测试(8 个配置逐一编译链接运行,各 29 项断言全部通过):`GetB()`/`version_info`(`V1.5.8.PS`/`V1.5.8.MS`)、`parameters_reload` 成功/失败返回值与「失败后再加载成功」、TWS/TAS 主流程冒烟、`Beam_Ctrl`、`track_clear_all`、`track_delete`/`tracking_start`/`tracking_stop`/`primary_target_add`/`primary_target_cancel`/`tracking_point`、`Destroy()` 后重新 `GetB()` 并再次加载配置均正常。⑤ 静态审计:源码无 `Work_Parameter`/`RadarPara`/旧参数宏残留(区分大小写整词审计 0 命中);首轮验证时 62 个 `RDP_parameter` 成员 ↔ 62 个加载器键 ↔ 62 个 TOML 键一一对应(新增 `scan_mode` 后为 63 个),11 个配置段与加载器一致。验证程序与日志位于 git 忽略的构建目录中,未入库。
|
||||
- **构建脚本适配机扫/相扫合并(本次构建配置调整)**:构建目录由「扫描体制 × 构建类型 × 记录模式」改为「构建类型 × 记录模式」——`build/<Debug|Release>/<REC_AUTO|REC_OFF|REC_ON>`,不再有 `X256_PS`/`X256_MS` 维度。
|
||||
- `config_paths.bat` / `configure.bat` / `build.bat` / `clean.bat` 参数改为 `<Debug|Release> [AUTO|ON|OFF]`,构建目录自动推导;`build_all.bat` 由 `build_config.bat`(单配置「配置 + 构建」)取代,失败即中止并返回非 0;`clean_all.bat` 在清理 4 种配置的同时清理旧版 `build/X256_PS`、`build/X256_MS` 目录(`build/output` 保留)。
|
||||
- VS Code 配置同步:`settings.json` 的 `cmake.buildDirectory` 改为 `${workspaceFolder}/build/${buildType}/${variant:recordMode}`、`compileCommands` 指向 `build/Debug/REC_ON/compile_commands.json`;`cmake-variants.yaml` 移除 `scanMode` 变体(仅保留 `buildType` + `recordMode`);`c_cpp_properties.json` 合并为单个「X256 (MSVC2022 x64)」配置(不再带 `PHASE_SCANNING`/`MECHANICAL_SCANNING` 宏);`launch.json` 的 `preLaunchTask` 改为「配置并构建(Debug/REC_ON)」,`program`/`symbolSearchPath` 指向 `build/Debug/REC_ON/bin`。
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# 雷达数据处理 DLL(data_process_class_dll)
|
||||
|
||||
> X256 雷达数据处理动态链接库:将雷达输出的原始点迹(TWS/TAS)处理为稳定可靠的目标航迹,并给出 TAS 跟踪波束控制指令。
|
||||
> 仓库 simianzhen256-v1.5.5-ms-vscode(目录名沿用旧版本,当前代码版本为 **V1.5.9**;已由 Qt/qmake 工程迁移为 VS Code + CMake 工程,编译器为 MSVC 2022 / v143,C++17,x64 目标)。
|
||||
> 仓库 simianzhen256-v1.5.5-ms-vscode(目录名沿用旧版本,当前代码版本为 **V1.5.11**;已由 Qt/qmake 工程迁移为 VS Code + CMake 工程,编译器为 MSVC 2022 / v143,C++17,x64 目标)。
|
||||
>
|
||||
> 版本号由 `parameters.h` 的 `MAJOR_VERSION` / `MINOR_VERSION` / `PATCH_VERSION`(当前 1.5.9)与 `VERSION_INFO`(`"GENERIC"`——机扫/相扫版本已合并为同一份 DLL,无体制后缀)拼装为 `VERSION_STRING`(`V1.5.9.GENERIC`),实例创建后可从 `Data_Process_Factory::GetB()` 返回对象的公开成员 `version_info`(`const char*`)读取。
|
||||
> 版本号由 `parameters.h` 的 `MAJOR_VERSION` / `MINOR_VERSION` / `PATCH_VERSION`(当前 1.5.11)与 `VERSION_INFO`(`"GENERIC"`——机扫/相扫版本已合并为同一份 DLL,无体制后缀)拼装为 `VERSION_STRING`(`V1.5.11.GENERIC`),实例创建后可从 `Data_Process_Factory::GetB()` 返回对象的公开成员 `version_info`(`const char*`)读取。
|
||||
>
|
||||
> **工作参数来源(参数配置方式改造后)**:全部雷达工作参数由宿主调用 `parameters_reload(配置文件路径)` 从 **TOML 配置文件**加载到 DLL 内的**全局对象 `rdp_parameter`**(`struct.h` 中 `extern` 声明、`data_process.cpp` 中定义并零初始化),不再由宿主下发 `struct RadarPara`、也不再由 `parameters.h` 编译期宏配置;各处理模块直接访问该全局对象(见 5.1、10)。
|
||||
|
||||
@@ -63,12 +63,13 @@
|
||||
- **3 模型 IMM 滤波**:三个 Singer 模型(低/中/高过程噪声),量测为「距离-方位-径向速度」三维的 EKF,多普勒残差按盲速折叠,似然用 3×3 新息协方差。
|
||||
- **最近邻数据关联**:三模型统计距离波门 `associate_threshold = 4`(配置项 `[track_associate] associate_threshold`,等效 d < 4,TWS 另按航迹距离分段收紧模型 3 波门),再叠加高度门限(≤1000 m 150 m / 2000 m 200 m / 3000 m 250 m / 5000 m 300 m,更远不约束)与 TWS 弦距-位移距离门限。ΔT ≤ 0(点迹时间戳不晚于航迹时间)的候选不更新航迹状态、仅消费该点迹(标记已使用),避免其继续起批而生成虚假 TWS 航迹。关联输出的航迹同时给出**靠近/远离方向标志**:按航迹 IMM 融合速度矢量与「雷达→目标」位置矢量的夹角判定——`acos((-x·cos(Direction_Angle) − y·sin(Direction_Angle)) / r) < π/2` 置 1(靠近),否则 0(远离),等价于「滤波速度的径向分量指向雷达」,不再使用受多普勒模糊影响的实测径向速度 `vr_point`;TWS、TAS 两通道一致(见 9.6)。
|
||||
- **重点目标与外推上限**:`primary_target_add` / `primary_target_cancel` 可按批号手动标记/取消重点目标,重点航迹的消亡轮数放宽到 `track_die_round_pramary`(默认 10);未关联航迹的外推圈数受限(TWS ≤ `extrapolate_max`=3,TAS 由 `extrapolate_max_tas` 控制,样例配置为相扫 5 / 机扫需配 48),超限后停止外推。**输出航迹只包含本圈有更新的航迹**(`Track_Update_Flag` 门控),宿主不能再用输出行数推断航迹总数(见 9.9)。
|
||||
- **航迹质量(V1.5.8)**:归一化航迹质量(0~1,内部)贯穿起始→关联→外推三阶段——临时航迹每延长一点按「统计距离 + SNR」重算,关联实点后按「统计距离 + SNR + 有效点占比」加权并指数平滑,未关联期间按未更新时长二次衰减;起批需达到**按长度分级**的最低质量,输出航迹给 0~100 的 `Quality` 字段;**普通 TWS 航迹的消亡改由质量决定**(`Quality < 0.3`),重点航迹与 TAS 航迹仍按外推圈数(见 9.11)。
|
||||
- **航迹质量(V1.5.8)**:归一化航迹质量(0~1,内部)贯穿起始→关联→外推三阶段——临时航迹每延长一点按「统计距离 + SNR」重算,关联实点后按「统计距离 + SNR + 有效点占比」加权并指数平滑,未关联期间按未更新时长二次衰减;起批需达到**按长度分级**的最低质量,输出航迹给 0~100 的 `Quality` 字段;普通 TWS 航迹默认按质量消亡(`Quality < track_die_quality`),**可用配置项 `track_die_quality_enable` 切换为按圈数消亡**(V1.5.11);重点航迹与 TAS 航迹仍按外推圈数(见 9.9、9.11)。
|
||||
- **点迹附加信息字段扩展(需同步重编译宿主)**:`DataRev` 新增 `amp_asv` / `prn_fftn`,`Track` 新增 `amp_asv_point` / `prn_fftn_point`,结构体布局随之变化,宿主必须使用同一版本头文件重新编译对接;输入侧已打通(TWS 输出有效,TAS 输出仍未写回),详见 11.2。
|
||||
- **高度维独立平滑**:按距离分段选择滑动平均窗长,TWS 为 `height_smooth_win + {2,3,4,6}`、TAS 为 `height_smooth_win + {6,8,10,12}`(样例配置 `height_smooth_win`=6 对应相扫;机扫需配 3),抑制俯仰测量跳变(见 9.7)。
|
||||
- **参数配置外置(参数配置方式改造)**:全部工作参数(原 `parameters.h` 宏 + `RadarPara` 字段)改由 TOML 配置文件提供,宿主在 `GetB()` 后调用一次 `parameters_reload(路径)` 加载(重连/换配置可再次调用);加载器严格校验 11 个配置段、键名/类型/取值范围与屏蔽区数组长度,失败返回 -1 且不改变当前参数(见 10.1)。样例配置 `config/config_tmp.toml` 为**相扫**取值(`scan_mode = 0`);机扫部署需改用 `scan_mode = 1` 并把 `extrapolate_max_tas`、`height_smooth_win`、`track_die_round_tas`、`tas_track_num_max` 配为 48 / 3 / 96 / 1(这 4 项在改造前按扫描体制取不同宏值,现在同一份配置对所有体制生效)。**判圈逻辑由配置项 `scan_mode` 决定**(不再是编译期体制),详见 4.2、7.2。
|
||||
- **TAS 波束控制**:手动转 TAS 目标入队(队列容量为编译期常量 `RDP_TAS_QUEUE_CAPACITY`、运行期上限为配置项 `tas_track_num_max`),按最新时间戳外推输出跟踪波束(距离/方位/俯仰/**航迹指纹**)。
|
||||
- **航迹指纹(V1.5.9)**:起批时用末点的 `r`/`azi`/`vr`/`RCS`/`CPI_time` 生成 16 bit `Track_fingerprint`(量化 + splitmix64 混合 + 折叠);TAS 波束改为下发**指纹**而非可复用的批号,TAS 数据帧也按指纹定位航迹,使 TAS 控制命令在回放/重连后仍对应同一目标(见 9.12)。
|
||||
- **参数配置外置(参数配置方式改造)**:全部工作参数(原 `parameters.h` 宏 + `RadarPara` 字段)改由 TOML 配置文件提供,宿主在 `GetB()` 后调用一次 `parameters_reload(路径)` 加载(重连/换配置可再次调用);加载器严格校验 11 个配置段、键名/类型/取值范围与屏蔽区数组长度,失败返回 -1 且不改变当前参数(见 10.1)。`config/` 下现提供 **8 份配置**(通用样例 + 7 份设备配置,见 3 节);`config/config_tmp.toml` 为**相扫**取值(`scan_mode = 0`),机扫/单跟踪部署可直接选用对应的 `X256_MS_*` / `X1024_MS_*` 配置。**判圈逻辑由配置项 `scan_mode` 决定**(不再是编译期体制),详见 4.2、7.2。
|
||||
- **TAS 波束控制**:手动转 TAS 目标入队(队列容量为编译期常量 `RDP_TAS_QUEUE_CAPACITY`、运行期上限与遍历上界均为配置项 `tas_track_num_max`),按最新时间戳外推输出跟踪波束(距离/方位/俯仰/**航迹指纹**);俯仰输出取 `max(计算俯仰, tas_beam_pitch_min)`,可用配置项设下限避免波束打到地面(V1.5.10)。**自动 TAS 跟踪(V1.5.11)**:`auto_tas_enable=1` 时,合速度落在 `[auto_tas_velocity_min, auto_tas_velocity_max]`(m/s)内的航迹会自动入队(无需 `tracking_start`),样例仅 `Ku2304_PS` 启用(700~900 m/s),其余设备默认关闭(见 9.10)。
|
||||
- **航迹指纹(V1.5.9,V1.5.11 调整口径)**:起批时生成 16 bit `Track_fingerprint`(量化 + splitmix64 混合 + 折叠);**V1.5.11 起取样点为临时航迹首点,且不再使用距离/方位**,只用 `vr`/`RCS`/`CPI_time`(避免外部修正 r/azi 导致指纹变化)。TAS 波束改为下发**指纹**而非可复用的批号,TAS 数据帧也按指纹定位航迹,使 TAS 控制命令在回放/重连后仍对应同一目标(见 9.12)。
|
||||
- **用户操作日志(V1.5.10)**:手动清空/删除、重点目标增删、手动转/停 TAS、TAS 队列移除等操作均以 `RDP_LOG_INFO` 记录(随 spdlog 双写进入标准输出与日志文件),便于复盘操作序列(见 9.10、7.1)。
|
||||
- **航迹生命周期管理**:外推轮数计数、超时消亡与质量消亡(普通 TWS 航迹)、手动删除、全清空(含各模块 reset,防重连后幽灵航迹)。
|
||||
- **防御性加固**:见 archived_docs/BUG_FIX_REPORT.md——越界防护、时间戳正序校验、方位角 ±π 环绕、asin 定义域钳位、IMM 概率奇异保护等已修复项。
|
||||
- **日志输出(基于 spdlog)**:内置 spdlog v1.17.0(`third_party/spdlog`,以静态库目标 `spdlog` 编译进 DLL),日志**始终同时**写到标准输出与 `RDP_LOG_DIR`(`.\rdp_logs\`)下按日期+时间命名的日志文件(`rdp_YYYYMMDD_HHMMSS.log`,每次 `GetB()` 一个文件;同一秒内文件已存在时追加 `_1`~`_999` 后缀,不复用文件):`GetB()` 调用 `rdp_log::Init()` 完成初始化、`Destroy()` 调用 `rdp_log::Shutdown()` flush 并关闭。日志行格式为 `[YYYY-MM-DD HH:MM:SS.mmm] [级别] [文件名:行号] 内容`(毫秒时间戳 + spdlog 级别 trace/debug/info/warning/error/critical + 源码位置),所有级别逐条 flush。日志宏为 `RDP_LOG_TRACE` / `RDP_LOG_DEBUG` / `RDP_LOG_INFO` / `RDP_LOG_WARN` / `RDP_LOG_ERROR` / `RDP_LOG_CRITICAL`(`RDP_LOG_ERR` 为 `RDP_LOG_ERROR` 的别名,支持 fmt 风格格式化,如 `RDP_LOG_INFO("batch: {}", id)`),原 `RDP_LOG` 流式宏已删除;日志级别由 CMake 缓存变量 `RDP_LOG_LEVEL` 映射 `SPDLOG_ACTIVE_LEVEL` 在**编译期**控制(AUTO 时 Debug=TRACE、其余构建=INFO,OFF 编译期关闭全部日志且不创建日志文件),原 `RDP_LOG_ENABLE` 布尔开关已移除(见 4.3、10.4)。
|
||||
@@ -85,8 +86,15 @@
|
||||
├── CHANGELOG.md # 变更日志(Keep a Changelog 格式,按 git 提交记录维护)
|
||||
├── README.md # 本文件:项目说明(架构、接口、流程、算法、参数)
|
||||
├── requirements.md # 需求说明:日志组件 rdp_log 改为使用 spdlog(日志同时输出标准输出与日志文件、RDP_LOG_* 级别宏、SPDLOG_ACTIVE_LEVEL 编译期控制)——已按该说明实现
|
||||
├── config/ # 参数配置文件目录
|
||||
│ └── config_tmp.toml # 参数配置样例(TOML,11 个配置段,键名与 struct RDP_parameter 成员一致;样例为相扫取值)
|
||||
├── config/ # 参数配置文件目录(共 8 份 TOML,11 个配置段、69 个键,键名与 struct RDP_parameter 成员一致)
|
||||
│ ├── config_tmp.toml # 通用样例:相扫、TAS 4 目标、data_rate_tas=1(9.2 GHz 频点)
|
||||
│ ├── X256_PS_3S_TAS_1Hz.toml # X256 相扫、3 s 扫描、TAS 1 Hz(data_rate_tas=0.85,俯仰下限 5.4)
|
||||
│ ├── X256_PS_3S_TAS_2Hz.toml # X256 相扫、TAS 2 Hz(data_rate_tas=0.3,俯仰下限 5.4)
|
||||
│ ├── X256_MS_4S.toml # X256 机扫、4 s 扫描、单跟踪(tas_track_num_max=1,data_rate_tas=0,俯仰下限 5.4)
|
||||
│ ├── X1024_PS_3S_TAS_2Hz.toml # X1024 相扫、TAS 2 Hz(data_rate_tas=0.4)
|
||||
│ ├── X1024_MS_4.8S.toml # X1024 机扫、4.8 s、单跟踪(data_rate_tas=0)
|
||||
│ ├── X1024_MS_5S.toml # X1024 机扫、5 s、单跟踪(data_rate_tas=0)
|
||||
│ └── Ku2304_PS.toml # Ku2304 相扫(16.5 GHz、频点步进 0.05 GHz、单跟踪、俯仰下限 -90 不限制、**启用自动 TAS 700~900 m/s**、消亡圈数 25/50/50)
|
||||
├── archived_docs/ # 过期文档留档(仅作历史参考;接口与流程以本 README 与 docs/ 专项说明为准)
|
||||
│ ├── BUG_REPORT.md # 全量逻辑 BUG 分析报告(P0~P3,37 项)
|
||||
│ └── BUG_FIX_REPORT.md # BUG 修复报告(修复明细 + 编译验证结果)
|
||||
@@ -173,7 +181,7 @@
|
||||
|
||||
机扫与相扫版本已合并为**同一份 DLL**:构建不再有扫描体制维度(`CMakeLists.txt` 不再有 `RADAR_SCAN_MODE` 缓存变量,也不再定义 `PHASE_SCANNING` / `MECHANICAL_SCANNING` 编译宏;`parameters.h` 的 `VERSION_INFO` 固定为 `"GENERIC"`,版本串为 `V1.5.9.GENERIC`)。扫描模式改由运行期配置项 `[radar_params] scan_mode` 决定(0 相扫 / 1 机扫),随全部工作参数由 TOML 配置文件经 `parameters_reload()` 载入(见 10);同一份 DLL 加载不同配置即可分别用于相扫 / 机扫部署,TWS 判圈行为随之切换(见 7.2)。
|
||||
|
||||
> **部署一致性提示**:DLL 不校验配置项 `scan_mode` 与实际雷达体制 / 波位号序列是否一致(不报错)。机扫部署须把 `scan_mode` 配为 1,并把 4 项体制相关参数按机扫取值:`extrapolate_max_tas=48`、`height_smooth_win=3`、`track_die_round_tas=96`、`tas_track_num_max=1`(样例 `config/config_tmp.toml` 为相扫取值,见 10.1)。判圈要求:相扫每圈波位号先增后回到起点、机扫每圈均出现 0。
|
||||
> **部署一致性提示**:DLL 不校验配置项 `scan_mode` 与实际雷达体制 / 波位号序列是否一致(不报错)。机扫部署须把 `scan_mode` 配为 1,并把 4 项体制相关参数按机扫取值:`extrapolate_max_tas=48`、`height_smooth_win=3`、`track_die_round_tas=96`、`tas_track_num_max=1`;可直接选用 `config/X256_MS_4S.toml`、`config/X1024_MS_*.toml`(已按机扫取值),相扫可选用 `config/X256_PS_*` / `config/X1024_PS_*` / `config/Ku2304_PS.toml`。TAS 波束俯仰下限 `tas_beam_pitch_min` 按设备几何配置(详见 3 节与 10.2)。判圈要求:相扫每圈波位号先增后回到起点、机扫每圈均出现 0。
|
||||
|
||||
构建只按「构建类型 × 记录模式」划分目录(见 4.3):
|
||||
|
||||
@@ -362,8 +370,8 @@ classDiagram
|
||||
| Track_Asso | TWS 点航关联 + IMM 滤波:模型交互 → 门限筛选(NN)→ 各模型 EKF → 概率更新 → 模型输出(只输出 `Track_Update_Flag==1` 的航迹);未关联航迹按上限外推;高度平滑;按滤波速度矢量写 `Flag_Direction`;ΔT≤0(乱序/重复时间戳)的候选取出后不更新滤波、不刷新航迹,仅消费该点迹 |
|
||||
| Track_Asso_Tas | TAS 航迹关联(只处理由指纹定位到的那条航迹 `tas_track_idx`,门限与 TWS 略有差异;输出同样受 `Track_Update_Flag` 门控,外推上限 `extrapolate_max_tas` 的判定方向与 TWS 相反) |
|
||||
| Track_Init | 逻辑法航迹起始,每圈顺序固定:点-临时航迹关联(延长 ≥2 点临时航迹)→ 点-航迹头关联(两点起始)→ 剩余点转新航迹头 → 长度达标者起批(三点卡尔曼初始化);另含起批屏蔽区判断与临时航迹消亡 |
|
||||
| Track_Die / Track_Die_Tas | 可靠航迹消亡:**TWS 普通航迹按航迹质量**(V1.5.8:`Quality < 0.3`)、TWS 重点航迹按未关联轮数(10)、TAS 按未关联轮数(相扫 20、机扫 96),或手动删除标志置位时输出消亡批号并删除 |
|
||||
| TAS_Ctrl | TAS 波束控制:手动目标入队(tas_target_add)、失效目标出队(tas_target_del)、跟踪波束预测输出(tas_beam_output:数据率门控 + 队内选择最早 CPI 目标)、调度时刻记录(last_track_time) |
|
||||
| Track_Die / Track_Die_Tas | 可靠航迹消亡:TWS 普通航迹的判据由配置项 `track_die_quality_enable` 选择——1(默认)按质量 `Quality < track_die_quality`、0 按圈数 `Extrapolate_round > track_die_round`;TWS 重点航迹按未关联轮数(`track_die_round_pramary`)、TAS 按未关联轮数(`track_die_round_tas`),或手动删除标志置位时输出消亡批号并删除 |
|
||||
| TAS_Ctrl | TAS 波束控制:目标入队(tas_target_add:**手动 `manual_tracking_flag==1` 或自动 `tas_auto_start()` 通过速度区间判定**,V1.5.11)、失效/手动取消目标出队(tas_target_del:以 `Track_Mode==1 && manual_untracking_flag!=1` 判定在队,出队时置 `Track_Mode=0` 并输出完整航迹更新)、跟踪波束预测输出(tas_beam_output:数据率门控 + 队内选择最早 CPI 目标 + 俯仰下限 `tas_beam_pitch_min`)、调度时刻记录(last_track_time);队列遍历上界为配置项 `tas_track_num_max` |
|
||||
| Track_Ind_Mangement | 航迹号 1~`track_index_max`(默认 500)的顺序分配与回绕复用 |
|
||||
| kalman | 两点/三点滤波初始化、线性卡尔曼预测/滤波、EKF(3 维量测含多普勒)、马氏统计距离 d、盲速 Bind_speed |
|
||||
| coor_trans | 极坐标 ↔ 直角坐标转换 |
|
||||
@@ -390,9 +398,9 @@ classDiagram
|
||||
|
||||
| 结构体 | 用途 | 关键字段 |
|
||||
|---|---|---|
|
||||
| RDP_parameter | 工作参数(唯一来源,**全局对象 `rdp_parameter`**) | 按注释分组:雷达工作参数(`radar_work_mode`/`scan_mode`/`freq_0_GHz`/`radar_height`/`radar_system_delay`/`data_rate_tws`/`data_rate_tas`/`data_rate_track_only`)、点迹凝聚参数、航迹关联参数(`sigma_*`/`associate_threshold`/`extrapolate_max(_tas)`/`height_smooth_win`)、航迹起始参数(`track_init_*`)、航迹消亡参数(`track_die_*`)、航迹质量参数(`track_quality_*`)、航迹批号(`track_index_max`)、波束调度(`default_track_beam_type`/`tas_track_num_max`)、singer 模型参数(`model_*_Q_*`)、两个屏蔽区(各 30 组距离/方位区间);与 TOML 配置段/键一一对应(见 10.2)。`struct.h` 中另有 `extern RDP_parameter rdp_parameter;` 全局对象声明(定义在 data_process.cpp,模块直接访问) |
|
||||
| RDP_parameter | 工作参数(唯一来源,**全局对象 `rdp_parameter`**) | 按注释分组:雷达工作参数(`radar_work_mode`/`scan_mode`/`freq_0_GHz`/**`freq_step_GHz`(频点步进,V1.5.10)**/`radar_height`/`radar_system_delay`/`data_rate_tws`/`data_rate_tas`/`data_rate_track_only`)、点迹凝聚参数、航迹关联参数(`sigma_*`/`associate_threshold`/`extrapolate_max(_tas)`/`height_smooth_win`)、航迹起始参数(`track_init_*`)、航迹消亡参数(`track_die_*`,含**消批方式开关 `track_die_quality_enable`(V1.5.11:1=按质量 / 0=按圈数)**)、航迹质量参数(`track_quality_*`)、航迹批号(`track_index_max`)、波束调度(`default_track_beam_type`/`tas_track_num_max`/`tas_beam_pitch_min`/**`auto_tas_enable` / `auto_tas_velocity_min` / `auto_tas_velocity_max`(自动 TAS,V1.5.11)**)、singer 模型参数(`model_*_Q_*`)、两个屏蔽区(各 30 组距离/方位区间);与 TOML 配置段/键一一对应(共 69 键,见 10.2)。`struct.h` 中另有 `extern RDP_parameter rdp_parameter;` 全局对象声明(定义在 data_process.cpp,模块直接访问) |
|
||||
| PointRecv | 内部点迹 | 距离/方位(弧度)/速度/幅度/高度/SNR/RCS/CPI/GNSS 时间、点迹号 `point_id` / 帧号 `frame_id` / 圈号 `circle_id`(记录链路用,c3c7e66 新增)、使用标志、波位/PRF/频点、跟踪模式、点迹区号、归一化幅度 `amp_asv_point` / 速度维 FFT 点数 `prn_fftn_point`、十字星数据 |
|
||||
| Trust_Track | 可靠航迹(IMM 全状态) | 航迹号、**航迹指纹 `Track_fingerprint`(16 bit,V1.5.9 新增,起批时按末点计算,TAS 波束与 TAS 数据帧用它定位航迹,见 9.12)**、标识字段 `track_id` / `point_id` / `circle_id`(b227ae1 新增,起批时取临时航迹末点的 `temp_track_id`/`point_id`/`circle_id`,关联成功时刷新为被关联点迹的 ID)、高度、极坐标量快照 `Range` / `Azimuth` / `Elevation` / `Velocity`(b227ae1 新增,仅在本圈有输出时回填)、**航迹质量相关状态(V1.5.8 新增)`Quality`(0~1)/ `Point_sum`(累计点数,含外推)/ `Valid_point_sum`(累计实点关联次数)/ `Unupdated_time`(连续未关联实点的累计毫秒)**、航迹时间 `T_track`(CPI 时间)/ `GNSS_time`、更新标志 Track_Update_Flag(**输出门控**:仅置 1 的航迹当圈被输出,输出后清零)、外推轮数 Extrapolate_round、实虚点标志、手动删除/手动 TAS/重点目标(primary_target_flag,决定消亡走质量还是 `track_die_round_pramary` 轮数)标志、关联点数、高度平滑缓冲 Hight_smooth、关联点信息、归一化幅度 `amp_asv_point` / 速度维 FFT 点数 `prn_fftn_point`、融合状态 X[6]/P[6][6]、三个子模型 X1/X2/X3、P1/P2/P3、模型概率 u[3] |
|
||||
| Trust_Track | 可靠航迹(IMM 全状态) | 航迹号、**航迹指纹 `Track_fingerprint`(16 bit,V1.5.9 新增;V1.5.11 起按临时航迹首点计算且不含距离/方位,只用 `vr`/`RCS`/`CPI_time`;TAS 波束与 TAS 数据帧用它定位航迹,见 9.12)**、标识字段 `track_id` / `point_id` / `circle_id`(b227ae1 新增,起批时取临时航迹末点的 `temp_track_id`/`point_id`/`circle_id`,关联成功时刷新为被关联点迹的 ID)、高度、极坐标量快照 `Range` / `Azimuth` / `Elevation` / `Velocity`(b227ae1 新增,仅在本圈有输出时回填)、**航迹质量相关状态(V1.5.8 新增)`Quality`(0~1)/ `Point_sum`(累计点数,含外推)/ `Valid_point_sum`(累计实点关联次数)/ `Unupdated_time`(连续未关联实点的累计毫秒)**、航迹时间 `T_track`(CPI 时间)/ `GNSS_time`、更新标志 Track_Update_Flag(输出门控:仅置 1 的航迹当圈被输出,输出后清零)、外推轮数 Extrapolate_round、实虚点标志、手动删除 `manual_delete_flag` / 手动 TAS `manual_tracking_flag` / 手动取消 TAS `manual_untracking_flag`(V1.5.10 新增:`tracking_stop` 置 1,出队后清 `Track_Mode`,TAS 输入匹配要求为 0)/ 重点目标 `primary_target_flag`(决定消亡走质量还是 `track_die_round_pramary` 轮数)标志、关联点数、高度平滑缓冲 Hight_smooth、关联点信息、归一化幅度 `amp_asv_point` / 速度维 FFT 点数 `prn_fftn_point`、融合状态 X[6]/P[6][6]、三个子模型 X1/X2/X3、P1/P2/P3、模型概率 u[3] |
|
||||
| Temp_track | 临时航迹(航迹起始阶段) | 4 维状态 X[4]/P[4][4]、极坐标点信息(`r`/`azi`/`vr`/`height`/`SNR`/`RCS`/`amplitude`)、**航迹质量 `quality`(0~1,V1.5.8 新增,起批时带给 Trust_Track)**、时间戳 `CPI_time` / `GNSS_time`、`buff_round`(已缓存圈数)、标识字段 `temp_track_id` / `point_id` / `circle_id`、区号 `temp_track_section_idx`、俯仰波位号 `pitch_num`、关联标志(c3c7e66 起字段统一更名,如原 `snr`/`Amp`/`T`) |
|
||||
| Asso_Info | 点航关联候选(track_asso.cpp / track_asso_tas.cpp 共用) | `point_id` / `track_id` / `circle_id`、三模型统计距离 `d1`/`d2`/`d3` 与最小值 `d_min`、点迹/航迹下标、`delta_T`/`delta_h`/`R`/`VT`、来源标志 `tas_flag`(1 TAS / 0 TWS,5cb67cc 新增)、门限判定结果 `thd_d`/`thd_h`/`thd_r`、是否被最近邻取中 `min_d_flag`(b227ae1 提升到 struct.h;TAS 侧 5cb67cc 起改用同一结构) |
|
||||
| Tracking_Target | TAS 队列元素 | 批号 Index、空标志 empty_flag、最近波束输出时间 last_track_time |
|
||||
@@ -412,15 +420,15 @@ classDiagram
|
||||
|---|---|---|
|
||||
| Data_Process_Factory::GetB() | 实例指针 | 获取单例(首次调用时创建,并写入 `version_info`) |
|
||||
| Data_Process_Factory::Destroy() | — | 销毁实例并将指针置空 |
|
||||
| version_info(基类公开成员) | `const char*` | DLL 版本字符串,由 `GetB()` 赋值为 `VERSION_STRING`(`V1.5.9.GENERIC`——机扫/相扫已合并,无体制后缀);只读使用,不要释放(b227ae1) |
|
||||
| version_info(基类公开成员) | `const char*` | DLL 版本字符串,由 `GetB()` 赋值为 `VERSION_STRING`(`V1.5.10.GENERIC`——机扫/相扫已合并,无体制后缀);只读使用,不要释放(b227ae1) |
|
||||
| parameters_reload(const char* path) | 0 成功 / -1 失败 | **加载全部工作参数**:解析 TOML 配置文件并校验,成功后整体写入**全局对象 `rdp_parameter`**(零初始化,失败时保持原值)并打印原因。建议 `GetB()` 后立即调用一次,重连/换配置时再次调用即可热重载;重载应与处理调用互斥(与 BUG-03 线程模型一致,见 10.1) |
|
||||
| data_preprocess(DataRev[150]) | 0/1/2/3 | 输入一帧点迹并缓存,返回处理模式(见下表) |
|
||||
| track_process(Track[][10], &num, dieIdx[], &dieNum, model) | 1 | 按 data_preprocess 的返回值执行 TWS/TAS 处理 |
|
||||
| Beam_Ctrl(TrackingBeam*, Track[][10], &num) | — | TAS 波束控制(内部清零并重填航迹输出计数) |
|
||||
| track_clear_all() | 0 | 清空全部航迹/缓存并复位各模块状态 |
|
||||
| track_delete(n, idx[]) | 0 | 按批号标记手动删除(下一轮消亡输出) |
|
||||
| tracking_start(track_index) | 0 | 手动转 TAS 跟踪(置 manual_tracking_flag,由 Beam_Ctrl 入队) |
|
||||
| tracking_stop(track_index) | 0 | 手动取消 TAS(清标志并 Track_Mode=0;队列项延至下一次 Beam_Ctrl 移除) |
|
||||
| tracking_start(track_index) | 0 | 手动转 TAS 跟踪(置 `manual_tracking_flag=1`、清 `manual_untracking_flag`,由 Beam_Ctrl 入队;记录 INFO 日志) |
|
||||
| tracking_stop(track_index) | 0 | 手动取消 TAS:清 `manual_tracking_flag` 并置 `manual_untracking_flag=1`(**不再立即清 `Track_Mode`**,V1.5.10);队列项延至下一次 Beam_Ctrl 出队,出队时置 `Track_Mode=0` 并输出完整航迹更新行;记录 INFO 日志 |
|
||||
| primary_target_add(track_index) | 0 | 手动将指定批号标为**重点目标**(置 `primary_target_flag=1`,消亡轮数放宽到 10 圈;批号不存在时不报错、无副作用) |
|
||||
| primary_target_cancel(track_index) | 0 | 取消指定批号的重点目标标记(置 `primary_target_flag=0`,恢复普通航迹的消亡判据——V1.5.8 起为 `Quality < 0.3`) |
|
||||
| tracking_point(azimuth) | 0 | 手动打跟踪波束——**未实现(保留空实现)** |
|
||||
@@ -492,16 +500,16 @@ flowchart TD
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["data_preprocess: 点迹入 Data_buffer_tas,记录 TAS 航迹指纹/latest_timestamp → model=3"] --> B["track_process(3)"]
|
||||
B --> B1["按指纹在航迹表中定位航迹 → 置 manual_tracking_flag=1、Track_Mode=1"]
|
||||
B --> B1["按指纹 + manual_untracking_flag==0 定位航迹 → 置 Track_Mode=1"]
|
||||
B1 --> C["dot_coh_tas 单帧凝聚 → point_recv_tas"]
|
||||
C --> D["track_asso_tas: 仅对该航迹做 IMM+EKF 关联(含高度门限)"]
|
||||
D --> E["未关联 → 按 latest_timestamp 外推(ΔT≤0 跳过)"]
|
||||
E --> F["track_die_tas: TAS 连续未关联超上限 / 手动删除 → 消亡输出"]
|
||||
F --> G["输出该航迹(point_type=1)"]
|
||||
G --> H["Beam_Ctrl: 数据率门控 + 队内最早 CPI 目标 + 预测波束输出(携带航迹指纹)"]
|
||||
G --> H["Beam_Ctrl: 数据率门控 + 队内最早 CPI 目标 + 预测波束输出(携带航迹指纹,俯仰不低于 tas_beam_pitch_min)"]
|
||||
```
|
||||
|
||||
TAS 输出同样受 `Track_Update_Flag` 门控:只有该航迹(由指纹定位)本圈有更新(关联到实点、或外推成功)时才向 `Trust_Track_Output` 写一行(`point_type=1`)。TAS 外推上限为配置项 `extrapolate_max_tas`(样例配置为相扫 5,机扫需配 48),判定方向与 TWS 相反(`Extrapolate_round >= 上限` 时才外推并输出),详见 9.9 与 11.2。TAS 队列内部仍以 `Track_Index` 索引,**只有对外接口(`DataRev` 输入、`TrackingBeam` 输出)使用指纹**(见 9.12)。
|
||||
TAS 输出同样受 `Track_Update_Flag` 门控:只有该航迹(由指纹定位)本圈有更新(关联到实点、或外推成功)时才向 `Trust_Track_Output` 写一行(`point_type=1`)。TAS 外推上限为配置项 `extrapolate_max_tas`(样例配置为相扫 5,机扫需配 48),判定方向与 TWS 相反(`Extrapolate_round >= 上限` 时才外推并输出),详见 9.9 与 11.2。TAS 队列内部仍以 `Track_Index` 索引,**只有对外接口(`DataRev` 输入、`TrackingBeam` 输出)使用指纹**(见 9.12);被用户取消跟踪的目标(`manual_untracking_flag=1`)不再按指纹重新置 TAS 模式(V1.5.10)。**自动 TAS 目标(V1.5.11)**不经过输入帧置位:Beam_Ctrl 入队时按 `auto_tas_enable` + 合速度区间筛选,入队后与本流程图相同。
|
||||
|
||||
### 8.3 航迹起始流程(逻辑法)
|
||||
|
||||
@@ -913,24 +921,24 @@ $$
|
||||
|
||||
#### 消亡(track_die.cpp / track_die_tas.cpp)
|
||||
|
||||
**TWS 普通航迹自 V1.5.8 起改为按航迹质量消亡**(`Quality < track_die_quality`,默认 0.3),其余通道仍按外推圈数(判据 `Extrapolate_round > 阈值`,50e0b5c 起由 `>=` 改为 `>`),满足其一即消亡:
|
||||
**TWS 普通航迹的消亡判据由配置项 `track_die_quality_enable` 选择**(V1.5.11):**1(默认)= 按航迹质量**(`Quality < track_die_quality`,样例 0.3);**0 = 按外推圈数**(`Extrapolate_round > track_die_round`,样例 6)。其余通道固定按外推圈数(判据 `Extrapolate_round > 阈值`,50e0b5c 起由 `>=` 改为 `>`),满足其一即消亡:
|
||||
|
||||
| 通道 | 条件 |
|
||||
|---|---|
|
||||
| TWS 普通航迹 | Track_Mode==0 且 primary_target_flag==0 且 **Quality < track_die_quality(样例 0.3)**(V1.5.8,782bff5) |
|
||||
| TWS 普通航迹 | Track_Mode==0 且 primary_target_flag==0 且(`track_die_quality_enable==1` → **Quality < track_die_quality(样例 0.3)**;`==0` → **Extrapolate_round > track_die_round(样例 6)**) |
|
||||
| TWS 重点航迹 | Track_Mode==0 且 primary_target_flag==1 且 Extrapolate_round > track_die_round_pramary(样例 10) |
|
||||
| TAS 航迹 | Track_Mode==1 且 Extrapolate_round > track_die_round_tas(样例配置为相扫 20;机扫需配 96) |
|
||||
| 任意航迹 | manual_delete_flag==1(手动删除标记,不区分通道) |
|
||||
|
||||
消亡批号写入 Track_die_Index_Output 并删除本地航迹。重点航迹实际连续 11 圈无实点关联才消亡(TAS 相扫 21 圈 / 机扫 97 圈,因 `Extrapolate_round` 每圈未关联只自增 1;相扫 TAS 阈值于 5d105d2 由 10 提高到 20);普通 TWS 航迹的存活时长改为由质量衰减速度决定——未关联时间越长衰减越快,`Quality` 降到 `track_die_quality` 以下即消亡,不再有固定圈数上限(`track_die_round`(原 6 圈)仍可配置但已不被引用,见 10.2)。`track_process()` 中的调用顺序为 `track_asso → track_die → track_init`(data_process.cpp),即消亡先于航迹起始执行。
|
||||
消亡批号写入 Track_die_Index_Output 并删除本地航迹。重点航迹实际连续 11 圈无实点关联才消亡(TAS 相扫 21 圈 / 机扫 97 圈,因 `Extrapolate_round` 每圈未关联只自增 1;相扫 TAS 阈值于 5d105d2 由 10 提高到 20);质量模式下普通 TWS 航迹的存活时长由质量衰减速度决定(不再是固定圈数),圈数模式下为 `track_die_round`+1 圈后消亡。各设备配置当前均为 `track_die_quality_enable = 1`,`track_die_round` 仅作备用值(X1024 两份配 5、Ku2304 配 25、其余 6)。`track_process()` 中的调用顺序为 `track_asso → track_die → track_init`(data_process.cpp),即消亡先于航迹起始执行。
|
||||
|
||||
> 重点目标标记(`primary_target_add` / `primary_target_cancel`)在 TWS 上决定「按质量消亡(普通)」还是「按 10 圈轮数消亡(重点)」,不改变关联、滤波、波束控制等其他环节,也不体现在输出航迹字段中。
|
||||
|
||||
### 9.10 TAS 波束控制(tas_ctrl.cpp)
|
||||
|
||||
- **入队条件**(仅手动):manual_tracking_flag==1 且 Track_Mode==0 且队列未满(配置项 `tas_track_num_max`,样例为相扫 4;机扫需配 1,上限 `RDP_TAS_QUEUE_CAPACITY`=30)且不在 TAS 禁止区内。入队即置 Track_Mode=1、以航迹时间初始化 last_track_time,并输出一次航迹更新。
|
||||
- **出队**:队列中目标在航迹表中不存在、或不再处于手动 TAS 状态时清除。(自动转 TAS / 自动退出的 tas_auto_start/tas_auto_end 逻辑全部注释停用——只支持手动。)
|
||||
- **波束输出**:在 TAS 队列内遍历,逐个目标先按**数据率门控**筛选——仅要求目标距上次波束输出(`last_track_time`)的时间 `delta_T_last_track = (latest_timestamp − last_track_time)/1000` 大于配置项 `data_rate_tas` 秒(单位 s,1521592 起由 Hz 改为 s,加载器校验须 >0),保证 TAS 目标输出间隔不随波束时间(Beam_Ctrl 调用频率)变化;对通过门控的目标再比较航迹时间 `T_track`,取 CPI 时间最早者,选中后按其 CPI 时间与最新时间戳之差外推到 latest_timestamp:
|
||||
- **入队条件**(手动 / 自动两种,V1.5.11):**手动**——`manual_tracking_flag==1`;**自动**——`auto_tas_enable==1` 且航迹合速度落在 `[auto_tas_velocity_min, auto_tas_velocity_max]`(m/s,`tas_auto_start()` 判定,距离/高度形参当前不参与)。两种情况都还要求 `Track_Mode==0`、队列未满(队列遍历上界为配置项 `tas_track_num_max`,样例为相扫 4;机扫/单跟踪配 1,上限 `RDP_TAS_QUEUE_CAPACITY`=30)、不在 TAS 禁止区内;原注释中的「关联点数 ≥2」约束未启用。入队即置 `Track_Mode=1`、以航迹时间初始化 last_track_time,并输出一次航迹更新(V1.5.10 起该行不再叠加 `radar_system_delay` 补偿)。
|
||||
- **出队**:队列中目标在航迹表中不存在、或「`Track_Mode==1` 但 `manual_untracking_flag==1`」(用户已取消跟踪)时清除;**目标仍存在时出队会置 `Track_Mode=0` 并输出一整套完整航迹更新行**(V1.5.10,覆盖用户手动取消跟踪的场景;若目标已消亡则只清队列项、不再输出)。出队在队判定于 V1.5.11 由 `manual_tracking_flag==1` 改为 `manual_untracking_flag!=1`,因此**自动 TAS 目标(无手动标志)不会再被误判为已取消而立即出队**。`tas_auto_start()` 仅按速度区间判定,不区分距离/高度;自动 TAS 退出仍只有「用户 `tracking_stop`」与「目标消亡」两种途径。
|
||||
- **波束输出**:在 TAS 队列内遍历,逐个目标先按**数据率门控**筛选——仅要求目标距上次波束输出(`last_track_time`)的时间 `delta_T_last_track = (latest_timestamp − last_track_time)/1000` 满足 `delta_T_last_track >= data_rate_tas`(单位 s,1521592 起由 Hz 改为 s;加载器校验须 ≥0,**0 表示不做 DLL 内部 TAS 波束限速、输出间隔改由宿主 `Beam_Ctrl` 调用频率决定**),保证非 0 时 TAS 目标输出间隔不随波束时间(Beam_Ctrl 调用频率)变化;对通过门控的目标再比较航迹时间 `T_track`,取 CPI 时间最早者,选中后按其 CPI 时间与最新时间戳之差外推到 latest_timestamp:
|
||||
|
||||
$$
|
||||
\Delta T=(latest\_timestamp-CPI\_time)/1000,\qquad
|
||||
@@ -938,9 +946,13 @@ x_p=x+v_x\Delta T,\quad y_p=y+v_y\Delta T,\quad
|
||||
r_p=\sqrt{x_p^2+y_p^2},\quad \theta_p=\operatorname{atan2}(y_p,x_p)
|
||||
$$
|
||||
|
||||
输出 TrackingBeam{open_flag=1, type=default_track_beam_type(配置项,样例 1), Range=rp, Azi=θp(°), Elev=asin(h/rp)(°), **TAS_track_index=航迹指纹**(V1.5.9 起,不再下发批号)};队空、目标不在航迹表或数据率门控未通过时 open_flag=0。输出后更新该目标队列项的 last_track_time;原每次 Beam_Ctrl 末尾的整队循环移位(队列轮转)已停用,改为按数据率门控在队列内轮换目标。
|
||||
输出 TrackingBeam{open_flag=1, type=default_track_beam_type(配置项,样例 1), Range=rp, Azi=θp(°), **Elev=max(asin(h/rp)(°), tas_beam_pitch_min)**(V1.5.10 起俯仰有下限,避免波束打到地面), **TAS_track_index=航迹指纹**(V1.5.9 起,不再下发批号)};队空、目标不在航迹表或数据率门控未通过时 open_flag=0。输出后更新该目标队列项的 last_track_time;原每次 Beam_Ctrl 末尾的整队循环移位(队列轮转)已停用,改为按数据率门控在队列内轮换目标。
|
||||
|
||||
> **入队当圈的输出(eb9f30c 修复)**:手动转 TAS 时 `tas_target_add()` 会立即输出一次该航迹的更新行;该行原只填少数字段,现与常规关联输出使用同一套字段(含 `Quality`、`Direction_Angle`、`Flag_Direction`、关联点信息、`x/y/v_x/v_y`、十字星数据等),宿主在转跟踪当圈即可拿到完整航迹信息。
|
||||
> **入队/出队当圈的输出(eb9f30c 修复,V1.5.10 扩展到出队)**:手动转 TAS 时 `tas_target_add()`、手动取消/失效出队时 `tas_target_del()` 都会立即输出一次该航迹的更新行,且与常规关联输出使用同一套字段(含 `Quality`、`Direction_Angle`、`Flag_Direction`、关联点信息、`x/y/v_x/v_y`、十字星数据等),宿主在转/停跟踪当圈即可拿到完整航迹信息;这两条路径的坐标直接用滤波位置 `X[0]`/`X[3]`(不叠加 `radar_system_delay`)。
|
||||
>
|
||||
> **用户操作日志(V1.5.10)**:`tracking_start/stop`、`track_delete`、`primary_target_add/cancel`、`track_clear_all` 以及 TAS 队列移除均以 `RDP_LOG_INFO` 记录(含批号),随 spdlog 双写落到日志文件。
|
||||
>
|
||||
> **TAS 波束调试日志(V1.5.11)**:`tas_beam_output()` 每次输出波束时打印一条 `RDP_LOG_DEBUG`(`TAS <Track_Index-航迹指纹>: range/azi/elev`),Release 默认级别(INFO)下不输出,需要时用 `RDP_LOG_LEVEL=DEBUG` 构建。
|
||||
|
||||
> e0bf227 修正:数据率门控原先同时要求「距上次波束输出」与「航迹时间 T_track 距最新时间戳」都超过 `data_rate_tas`,第二个条件与「选 CPI 最早目标」的语义冲突(航迹时间越早反倒越容易被抑制),会漏掉本应输出的波束;现已只保留前者。
|
||||
|
||||
@@ -948,7 +960,7 @@ $$
|
||||
|
||||
### 9.11 航迹质量(V1.5.8,1ae0cf2 / d9a7bd0 / 4b70b24 / 782bff5)
|
||||
|
||||
内部质量 `Quality` 为 **0~1** 的归一化值(`Temp_track::quality`、`Trust_Track::Quality`),输出时乘 `track_quality_max`(配置项,100)折算为 **0~100** 写入 `Track.Quality`。它贯穿「临时航迹 → 起批 → 关联 → 外推 → 消亡」全过程,是普通 TWS 航迹**自动**消亡的唯一依据。
|
||||
内部质量 `Quality` 为 **0~1** 的归一化值(`Temp_track::quality`、`Trust_Track::Quality`),输出时乘 `track_quality_max`(配置项,100)折算为 **0~100** 写入 `Track.Quality`。它贯穿「临时航迹 → 起批 → 关联 → 外推 → 消亡」全过程,是普通 TWS 航迹消亡的判据之一(`track_die_quality_enable==1` 时生效,见 9.9)。
|
||||
|
||||
**三个公共分量**
|
||||
|
||||
@@ -989,22 +1001,24 @@ $$
|
||||
>
|
||||
> 已知局限(详见 11.2):TAS 通道不维护质量;`track_quality_min`、`track_die_quality_pramary`、`track_die_round` 当前可配置但未参与计算;起批质量门限按**临时航迹长度**取值,而实际起批只用末点质量。
|
||||
|
||||
### 9.12 航迹指纹(V1.5.9,0f3da99)
|
||||
### 9.12 航迹指纹(V1.5.9,V1.5.11 调整口径)
|
||||
|
||||
**目的**:航迹批号(`Track_Index`,1~500)在航迹消亡后会被复用,TAS 控制命令若只带批号,回放/重连后可能指向另一条航迹。为此在起批时为目标生成一个由目标特征决定的 **16 bit 指纹**,TAS 的输入与输出均改用指纹。
|
||||
|
||||
**生成**(`track_init.cpp::computeFingerprint()`,在 `tmp_track_to_trust_track()` 起批时对**末点**计算):
|
||||
**生成**(`track_init.cpp::computeFingerprint()`,在 `tmp_track_to_trust_track()` 起批时计算;**V1.5.11 起取临时航迹首点,且距离/方位固定传 0**):
|
||||
|
||||
```cpp
|
||||
uint64_t h = kSeed; // 固定种子 0x243F6A8885A308D3
|
||||
h = mix64(h ^ quantize(r, 100.0)); // 距离:0.01 m
|
||||
h = mix64(h ^ quantize(azi, 1000.0)); // 方位:0.001°
|
||||
h = mix64(h ^ quantize(0, 100.0)); // 距离:固定 0(V1.5.11 起不参与)
|
||||
h = mix64(h ^ quantize(0, 1000.0)); // 方位:固定 0(V1.5.11 起不参与)
|
||||
h = mix64(h ^ quantize(vr, 100.0)); // 径向速度:0.01 m/s
|
||||
h = mix64(h ^ quantize(RCS, 10.0)); // RCS:0.1 dBsm
|
||||
h = mix64(h ^ (uint64_t)CPI_time); // CPI 时间:毫秒整数
|
||||
fingerprint = fold16(h); // 折叠为 uint16
|
||||
```
|
||||
|
||||
- 取样点:**临时航迹首点**(`Track_to_start[i][0]`,V1.5.11 起;此前为末点);
|
||||
- 距离/方位不再参与(V1.5.11):这两个量可能被外部修正值改写,纳入后同一目标两次计算的指纹会不一致;仍参与的是首点的 `vr` / `RCS` / `CPI_time`;
|
||||
- `quantize`:半舍入远离零(`std::round`),NaN / ±Inf 映射为固定常量,结果钳位到 ±9e18 以防止转 `int64` 溢出;
|
||||
- `mix64`:splitmix64 混合(`x^=x>>30; x*=0xBF58476D1CE4E5B9; x^=x>>27; x*=0x94D049BB133111EB; x^=x>>31`),使输入微小变化雪崩扩散;
|
||||
- `fold16`:把 64 bit 的高 32、16 位异或折叠到低 16 位(`h^=h>>32; h^=h>>16;`),充分使用熵后取 `uint16_t`。
|
||||
@@ -1015,7 +1029,7 @@ fingerprint = fold16(h); // 折叠为 uint16
|
||||
- **输入**:`data_preprocess()` 的 TAS 分支把 `DataRev::TAS_track_index` 解释为指纹存入 `TAS_track_fingerprint`;`track_process(model=3)` 遍历航迹表寻找 `Track_fingerprint` 相同的航迹,命中后置 `manual_tracking_flag=1`、`Track_Mode=1` 再走 TAS 关联/外推;未命中则该帧无对应航迹(不处理);
|
||||
- **队列内部**:`Tracking_Target::Index` 仍存 `Track_Index`,即**队列与内部处理仍按批号**,只有跨 DLL 边界的数据用指纹(见 8.2)。
|
||||
|
||||
> 指纹是 **16 bit**(0~65535),理论上存在碰撞(同一时刻航迹数远小于 65536,实际概率低);指纹不含高度/批号,同一目标在两次独立起批时(例如消亡后重新起批)指纹可能不同。记录表 `RdpRecTrustTrack` 目前**未包含** `Track_fingerprint` 字段(见 docs/data_record_debug.md 第 7 节)。
|
||||
> 指纹是 **16 bit**(0~65535),理论上存在碰撞(同一时刻航迹数远小于 65536,实际概率低);**V1.5.11 起指纹只由 `vr`/`RCS`/`CPI_time` 决定**,因此「同一帧起批、速度/RCS/CPI 时间相同」的两条航迹会得到相同指纹(旧口径含距离方位,碰撞面更小)。指纹不含高度/批号,同一目标在两次独立起批时(例如消亡后重新起批)指纹可能不同。记录表 `RdpRecTrustTrack` 目前**未包含** `Track_fingerprint` 字段(见 docs/data_record_debug.md 第 7 节)。
|
||||
|
||||
---
|
||||
|
||||
@@ -1038,14 +1052,14 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
|
||||
| 配置段 | 内容 |
|
||||
|---|---|
|
||||
| `[radar_params]` | 雷达工作参数:工作模式、**扫描模式 `scan_mode`**、频点、平台高度、系统延迟、TWS/TAS/纯跟踪数据率 |
|
||||
| `[radar_params]` | 雷达工作参数:工作模式、**扫描模式 `scan_mode`**、频点 `freq_0_GHz` 与**频点步进 `freq_step_GHz`(V1.5.10)**、平台高度、系统延迟、TWS/TAS/纯跟踪数据率 |
|
||||
| `[cohesion]` | 点迹凝聚参数:距离/速度/方位门限、有效量程上下限 |
|
||||
| `[track_associate]` | 航迹关联参数:量测误差 `sigma_*`、关联门限 `associate_threshold`、外推上限、高度平滑窗长 |
|
||||
| `[track_init]` | 航迹起始参数:起批波门/折角/点数、起批质量门限 L3~L7、起始速度范围 |
|
||||
| `[track_die]` | 航迹消亡参数:消亡圈数(普通/重点/TAS)、质量消亡门限 |
|
||||
| `[track_quality]` | 航迹质量参数:折算上下限、三项权重、平滑与衰减系数 |
|
||||
| `[track_index]` | 航迹批号管理:`track_index_max` |
|
||||
| `[beam_control]` | 波束调度:默认跟踪波束类型、最大同时跟踪 TAS 目标数 |
|
||||
| `[beam_control]` | 波束调度:默认跟踪波束类型、最大同时跟踪 TAS 目标数、**TAS 波束俯仰下限 `tas_beam_pitch_min`(V1.5.10)** |
|
||||
| `[singer_model]` | 三个 Singer 模型的过程噪声强度(fast/slow) |
|
||||
| `[track_init_prohibite_area]` | 起批屏蔽区:`*_num` + 4 个与成员同名的 TOML 数组 |
|
||||
| `[tas_prohibite_area]` | 禁止 TAS 跟踪区:`*_num` + 4 个与成员同名的 TOML 数组 |
|
||||
@@ -1055,7 +1069,7 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
1. 11 个配置段**全部必填**,且必须是 TOML 表;顶层出现未知配置段直接拒绝;
|
||||
2. 所有**标量键必填**,类型必须匹配(浮点参数接受整数或浮点,整数参数只接受整数),且不得超出 C++ `float`/`int` 可表示范围;
|
||||
3. 每个段内只允许登记过的键,**拼错的键按未知参数拒绝**(不会静默忽略);
|
||||
4. 取值范围校验:如 `radar_work_mode∈[0,2]`、`scan_mode∈{0,1}`、`freq_0_GHz>0`、`data_rate_tws/data_rate_tas>0`、`sigma_*>0`、`associate_threshold>0`、`height_smooth_win≥1`、`track_init_point_num_min∈[3,9]`、`track_init_angle∈(0,180]`、`track_init_quality_L3~L7∈[0,1]`、`track_init_velocity_max>min≥0`、消亡圈数≥0、质量门限∈[0,1]、质量衰减系数≤0、`track_index_max∈[1, MAX_TRACK_NUM]`、`tas_track_num_max∈[0, RDP_TAS_QUEUE_CAPACITY]`、Singer 模型 Q>0 等(完整清单以源码为准);
|
||||
4. 取值范围校验:如 `radar_work_mode∈[0,2]`、`scan_mode∈{0,1}`、`freq_0_GHz>0`、**`freq_step_GHz>0`**、`data_rate_tws>0`、`data_rate_tas≥0`(**0 表示不做 DLL 内部 TAS 波束限速、由宿主 `Beam_Ctrl` 调用频率决定**)、`sigma_*>0`、`associate_threshold>0`、`height_smooth_win≥1`、`track_init_point_num_min∈[3,9]`、`track_init_angle∈(0,180]`、`track_init_quality_L3~L7∈[0,1]`、`track_init_velocity_max>min≥0`、消亡圈数≥0、**`track_die_quality_enable∈{0,1}`**、质量门限∈[0,1]、质量衰减系数≤0、`track_index_max∈[1, MAX_TRACK_NUM]`、`tas_track_num_max∈[0, RDP_TAS_QUEUE_CAPACITY]`、**`auto_tas_velocity_max ≥ auto_tas_velocity_min`**、Singer 模型 Q>0 等(完整清单以源码为准);**`tas_beam_pitch_min` 只要求键存在且为浮点、`auto_tas_velocity_min ≥ 0` 的校验被注释停用**,两者当前均无范围校验;
|
||||
5. 屏蔽区:`*_num∈[0,30]`;4 个数组的元素个数必须**等于** `*_num`(`*_num=0` 时数组可省略,存在时必须为空数组);并逐区校验距离 `0≤min<max`、方位 `0≤min<max≤360`;
|
||||
6. 失败语义:返回 -1,并经可选 `std::string* error_msg` 给出**首条**可读原因(`Data_Process::parameters_reload` 失败时以 `RDP_LOG_ERROR` 打印到日志),**当前已加载参数保持不变**(加载过程先写入临时对象,全部成功后才整体赋值)。
|
||||
|
||||
@@ -1070,10 +1084,11 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
| radar_params | `radar_work_mode` | 0 | 工作模式:0 近程 / 1 中程 / 2 远程(当前影响凝聚是否带速度维约束;TWS 外推已改为固定 `data_rate_tws`、不再按模式三选一;原 `RadarPara.work_mode`) |
|
||||
| radar_params | `scan_mode` | 0 | **扫描模式:0 相扫 / 1 机扫**(加载器校验仅允许 0/1),决定 `data_preprocess()` 的 TWS 判圈逻辑(见 7.2);构建不区分体制,同一份 DLL 通过该配置切换扫描模式(见 4.2) |
|
||||
| radar_params | `freq_0_GHz` | 9.2 | 载波频点(GHz,盲速计算基准;原 `FREQ0`) |
|
||||
| radar_params | `freq_step_GHz` | 0.02 | **频点步进(GHz,校验 >0,V1.5.10 新增)**:盲速频点为 `freq_0_GHz + 频点号 × freq_step_GHz`(原硬编码 0.02);Ku2304 配置取 0.05 |
|
||||
| radar_params | `radar_height` | 0 | 雷达平台高度(m,输出 z 叠加;原 `Height`) |
|
||||
| radar_params | `radar_system_delay` | 0 | 系统延迟(s,输出位置按 `x + vx·delay` 补偿;原 `Sys_delay`) |
|
||||
| radar_params | `data_rate_tws` | 3 | TWS 数据率/外推步长(s;原按 `work_mode` 在 `DATA_RATE_SHORT/MIDDLE/FAR` 中三选一) |
|
||||
| radar_params | `data_rate_tas` | 1 | TAS 波束输出间隔(s,校验 >0;原 `DATA_RATE_TAS`,1521592 起单位由 Hz 改为 s) |
|
||||
| radar_params | `data_rate_tas` | 1 | TAS 波束输出间隔(s,校验 ≥0;**0 表示不做 DLL 内部限速、输出间隔由宿主 `Beam_Ctrl` 调用频率决定**;原 `DATA_RATE_TAS`,1521592 起单位由 Hz 改为 s) |
|
||||
| radar_params | `data_rate_track_only` | 0.2 | 纯跟踪模式数据率(s;当前实现保留未用) |
|
||||
| cohesion | `point_cohesion_range` | 80 | 距离凝聚门限(m;原 `DOT_COH_RANGE`) |
|
||||
| cohesion | `point_cohesion_velocity` | 2 | 速度凝聚门限(m/s;原 `DOT_COH_V`) |
|
||||
@@ -1094,9 +1109,10 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
| track_init | `track_init_quality_L3`~`L7` | 0.7 / 0.6 / 0.5 / 0.4 / 0.3 | 按临时航迹长度 3/4/5/6/≥7 的起批最低质量(原 `TRACK_START_QUALITY_L3~L7`) |
|
||||
| track_init | `track_init_velocity_min` | 1 | 航迹头关联速度下限(m/s;原 `V_MIN`,校验 < 上限) |
|
||||
| track_init | `track_init_velocity_max` | 50 | 航迹头关联速度上限(m/s;原 `V_MAX`) |
|
||||
| track_die | `track_die_round` | 6 | 普通 TWS 消亡圈数(V1.5.8 起改按质量消亡,**当前未被引用**,保留) |
|
||||
| track_die | `track_die_round` | 6 | 普通 TWS 消亡圈数(`track_die_quality_enable==0` 时生效;X1024 两份配 5、Ku2304 配 25) |
|
||||
| track_die | `track_die_round_pramary` | 10 | 重点航迹消亡圈数(原 `TRACK_DIE_ROUND_PRIMARY`) |
|
||||
| track_die | `track_die_round_tas` | 20 | TAS 航迹消亡圈数(原 `TRACK_DIE_ROUND_TAS`;机扫需配 96) |
|
||||
| track_die | `track_die_quality_enable` | 1 | **消批方式开关(V1.5.11 新增)**:1=非重点 TWS 航迹按质量消批(`Quality < track_die_quality`);0=改按圈数消批(`Extrapolate_round > track_die_round`);校验仅允许 0/1 |
|
||||
| track_die | `track_die_quality` | 0.3 | TWS 普通航迹质量消亡门限(原 `TRACK_DIE_QUALITY`) |
|
||||
| track_die | `track_die_quality_pramary` | 0.3 | 重点航迹质量门限(保留,当前未参与计算) |
|
||||
| track_quality | `track_quality_max` | 100 | 质量折算上限(输出 `Track.Quality` = 内部质量 × 该值) |
|
||||
@@ -1109,7 +1125,11 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
| track_quality | `track_quality_decrease_coeff_o1` | −0.0025 | 质量衰减一次项系数(须 ≤0) |
|
||||
| track_index | `track_index_max` | 500 | 航迹号上限(1~500;原 `MAX_TRACK_INDEX`,内部航迹号表按该值分配) |
|
||||
| beam_control | `default_track_beam_type` | 1 | 跟踪波束 `TrackingBeam.type` 取值(原硬编码 1) |
|
||||
| beam_control | `tas_track_num_max` | 4 | 最大同时跟踪 TAS 目标数(0~30;原 `MAX_TAS_NUM`,机扫需配 1) |
|
||||
| beam_control | `tas_track_num_max` | 4 | 最大同时跟踪 TAS 目标数(0~30;原 `MAX_TAS_NUM`,机扫/单跟踪需配 1);同时作为 TAS 队列遍历上界(V1.5.10) |
|
||||
| beam_control | `tas_beam_pitch_min` | 3.0 | **TAS 波束俯仰下限(°,V1.5.10 新增)**:输出俯仰取 `max(计算俯仰, 该值)`,避免波束打到地面;样例 3.0、X256_MS_4S / X256_PS_* 5.4、Ku2304 −90(等价不限制);加载器**未做范围校验** |
|
||||
| beam_control | `auto_tas_enable` | 0(**Ku2304 配 1**) | **自动 TAS 使能(V1.5.11 新增)**:0=关闭(仅手动转跟踪);1=合速度在 `[auto_tas_velocity_min, auto_tas_velocity_max]` 内的航迹自动入队(见 9.10) |
|
||||
| beam_control | `auto_tas_velocity_min` | 0.0(**Ku2304 配 700**) | 自动 TAS 合速度下限(m/s);加载器只校验与上限的大小关系,`≥0` 校验被注释停用 |
|
||||
| beam_control | `auto_tas_velocity_max` | 0.0(**Ku2304 配 900**) | 自动 TAS 合速度上限(m/s),须 ≥ 下限 |
|
||||
| singer_model | `model_1_Q_fast` | 0.000001 | 模型 1 过程噪声(**当前未参与计算**,模型 1 只用 slow) |
|
||||
| singer_model | `model_1_Q_slow` | 0.000001 | 模型 1 过程噪声(恒定,见 9.5.1) |
|
||||
| singer_model | `model_2_Q_fast` | 0.01 | 模型 2 过程噪声 fast 档 |
|
||||
@@ -1244,15 +1264,20 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
- **质量长度项含整数除法**:`1 − Valid_point_sum/Point_sum` 中两操作数均为 `int`,先做整数除法截断再乘 0.5,`Valid_point_sum/Point_sum` 的精度损失最大约 1/Point_sum;对点数很多的航迹影响可忽略,但精确复现公式时需注意。
|
||||
- **数据记录未采用关联信息裁剪与记录策略(P0-a / P2,V1.5.8 优化时明确不做)**:⑥ 关联信息仍按「每个候选一行」写入(单圈 ≈ 点迹数 × 航迹数),未裁剪为只记录取中候选,也未做按容量/时长切库与旧库清理;因此高航迹密度场景下判圈帧仍有可观记录开销(200 目标/150 点压测 p99 ≈ 13~24 ms),记录库也可能很大(60 圈约 1.06 GB)。属本轮刻意取舍,评价实时性时需区分普通帧(p99 ≈ 0.1 ms)与判圈帧。
|
||||
- **`scan_mode` 与实际雷达体制需一致(部署约束)**:DLL 不校验配置项 `scan_mode` 与实际雷达体制/波位号序列是否一致(不报错);机扫部署须把 `scan_mode` 配为 1 且 4 项数值按机扫取值(见 4.2)。机扫/相扫已合并为同一份构建,不再有编译期体制可作交叉校验。
|
||||
- **航迹指纹的复用与碰撞(V1.5.9)**:指纹为 **16 bit**(0~65535),由目标特征生成,因此 ① 理论上存在碰撞(同帧命中多条航迹时 `track_process(model=3)` 取遍历到的第一条);② 同一目标消亡后重新起批,因末点测量与 CPI 时间不同,指纹通常不同(跨起批不保证稳定);③ 指纹只用于跨 DLL 边界,**批号仍是内部主键**,`tracking_start/tracking_stop` 等手动接口仍按批号;④ 字段名 `TAS_track_index` 未改名而语义已变为指纹,对接时不要按旧含义当批号使用(见 9.12)。
|
||||
- **航迹指纹的复用与碰撞(V1.5.9,V1.5.11 口径)**:指纹为 **16 bit**(0~65535),由目标特征生成,因此 ① 理论上存在碰撞(同帧命中多条航迹时 `track_process(model=3)` 取遍历到的第一条);**V1.5.11 起只由首点的 `vr`/`RCS`/`CPI_time` 决定(不含距离/方位),同帧起批且这三项相同的航迹必得同一指纹**,碰撞面比旧口径大;② 同一目标消亡后重新起批,因首点测量与 CPI 时间不同,指纹通常不同(跨起批不保证稳定);③ 指纹只用于跨 DLL 边界,**批号仍是内部主键**,`tracking_start/tracking_stop` 等手动接口仍按批号;④ 字段名 `TAS_track_index` 未改名而语义已变为指纹,对接时不要按旧含义当批号使用(见 9.12)。
|
||||
- **自动 TAS 只按速度判定(V1.5.11)**:`tas_auto_start(v, r, h)` 只使用合速度 `v`,距离与高度形参未参与;且加载器对 `auto_tas_velocity_min` 的 `≥0` 校验以注释形式停用,配置成负值也不会报错。自动 TAS 目标入队后与手动目标走同一套关联/波束逻辑,退出只有 `tracking_stop` 与目标消亡两条途径(无自动退出条件)。
|
||||
- **消批方式开关的边界(V1.5.11)**:`track_die_quality_enable` 只切换**非重点 TWS 航迹**的消批判据;重点 TWS 与 TAS 航迹始终按圈数消亡。设 0 时 `track_die_round` 才生效(判据 `>`,即 `track_die_round`+1 圈未关联才消亡),各设备配置当前均为 1,`track_die_round` 属备用值。
|
||||
- **指纹未入记录表(V1.5.9)**:`RdpRecTrustTrack` 实体未包含 `Track_fingerprint`,记录库中只能通过 `Track_Index` / `track_id` 关联航迹;若要按指纹复盘 TAS 控制命令,需按 docs/data_record_debug.md 第 6 节配方自行加字段。
|
||||
- **`tas_beam_pitch_min` 未做范围校验(V1.5.10)**:加载器只要求该键存在且为浮点数,没有上下限;配置成 `-90` 等价于不设下限(Ku2304 配置即如此),配置成大于目标真实俯仰的值会让波束始终指向上限方向——部署时需自行核对取值合理性。
|
||||
- **`manual_untracking_flag` 与 `manual_tracking_flag` 的分工(V1.5.10)**:转跟踪由 `tracking_start` 置 `manual_tracking_flag=1`、清 `manual_untracking_flag`;取消由 `tracking_stop` 清前者、置后者(此时 `Track_Mode` 仍是 1,要到下一次 `Beam_Ctrl` 出队才清 0 并输出更新行)。因此取消后同一帧内再喂入该目标的 TAS 数据会被指纹匹配的 `manual_untracking_flag==0` 条件挡住(避免刚取消又被重新置为 TAS);如需立即恢复跟踪,应重新调用 `tracking_start`。
|
||||
- **`freq_step_GHz` 决定盲速与频点号映射(V1.5.10)**:盲速计算使用 `freq_0_GHz + freq_ind × freq_step_GHz`;如果宿主给的频点号含义与配置的步进不一致,盲速折叠会整体偏移(且不报错),换雷达/换频点计划时需同步修改该配置项。
|
||||
|
||||
### 11.3 未启用功能
|
||||
|
||||
- direct_tracking_process(引导跟踪)、tracking_point(手动打波束)为**空实现**;Track_Init_Direct_Tracking::track_init_process_logic 同样为空。
|
||||
- track_asso_direct_tracking.cpp **未加入 CMake 源列表**(与旧 .pro 一致)。
|
||||
- TAS **自动**开启/退出逻辑(tas_auto_start/tas_auto_end)注释停用,仅支持手动 tracking_start/tracking_stop。
|
||||
- 新结构体 `RDP_parameter` 已排除旧 `RadarPara` 中实现未使用的字段(`R_TAS_max/min`、`V_TAS_max/min`、`TAS_Height_1~5`、`cfar_th`、`north_angle`、`Beam_num`;其中前两组用于已停用的 TAS 自动开启/退出逻辑),这些功能仍保持停用(见 10.3)。
|
||||
- 新结构体 `RDP_parameter` 已排除旧 `RadarPara` 中实现未使用的字段(`R_TAS_max/min`、`V_TAS_max/min`、`TAS_Height_1~5`、`cfar_th`、`north_angle`、`Beam_num`)。其中 `R_TAS_*`/`V_TAS_*`/`TAS_Height_*` 原属**按距离/速度/高度阈值的 TAS 自动开启/退出逻辑**:自动**退出**仍停用,自动**开启**自 V1.5.11 起改由 `[beam_control] auto_tas_enable` + 速度区间实现(不使用上述距离/高度字段,见 9.10)。
|
||||
- build/output/ 下为早期打包导出物,其 data_process_class_dll.h 时间戳仍为 32 位 int,与当前 64 位接口不一致,勿作为对接依据。
|
||||
- **数据记录调试功能默认只在 Debug 启用**:CMake 选项 `RDP_DATA_RECORD` 的 AUTO 默认值为「Debug 启用、Release 关闭」,交付/Release 构建下记录模块(`rdp_record.cpp`、`sqlite3.c`)不参与编译、所有记录宏为空操作(导出符号与依赖均无变化);如需在 Release 构建中临时排查可显式 `-DRDP_DATA_RECORD=ON`,但正式交付应保持 AUTO/OFF(见 docs/data_record_debug.md)。记录点中的字段错误只在启用记录功能的构建中才会被检查(关闭时宏丢弃实参)。
|
||||
- **记录表的三个观察**:① 可靠航迹表 `RdpRecTrustTrack` 在输出分支内写库,而该分支入口已把 `Track_Update_Flag` 清零(`track_asso.cpp` / `track_asso_tas.cpp` 均先置 0 再输出),因此表中的 `Track_Update_Flag` 恒为 0,判断「本圈是否更新」应改用该表是否出现对应 `track_id`/`circle_id` 的记录;② `Trust_Track` 的极坐标量快照 `Range`/`Azimuth`/`Elevation`/`Velocity` 只在航迹当圈有输出时回填,长期未输出(外推超限)的航迹在表中该项为 0 或旧值;③ TAS 关联信息行中 `R`/`VT` 为占位 0、`thd_r` 恒为 true、`track_index` 存的是 TAS 目标批号(TWS 行才是航迹表下标),跨通道分析时不要按 TWS 语义解读。
|
||||
@@ -1272,18 +1297,29 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
|
||||
## 12. 版本历史
|
||||
|
||||
当前代码版本:**V1.5.9**(`parameters.h` 的 `PATCH_VERSION` = 9、`VERSION_INFO` = `"GENERIC"`,版本串 `V1.5.9.GENERIC`——机扫/相扫已合并为同一份构建,无体制后缀;版本号于 019af7a 提升,2026-10-27)。版本号自 1.5.6 起可运行时读取(`version_info`,见 7.1)。中间状态 b4aed8a 曾把版本号置为 7,但未单独发布/记录。**1.5.8 之后的全部改动已随 [1.5.9] 归档**(参数配置方式改造 + 机扫/相扫合并、工作参数全局化、日志组件 spdlog、构建脚本适配、航迹指纹、手动转 TAS 输出修复),详见 CHANGELOG `[1.5.9]`。
|
||||
当前代码版本:**V1.5.11**(`parameters.h` 的 `PATCH_VERSION` = 11、`VERSION_INFO` = `"GENERIC"`,版本串 `V1.5.11.GENERIC`——机扫/相扫已合并为同一份构建,无体制后缀;`PATCH_VERSION` 10→11 的改动**尚未提交**,工作区生效)。版本号自 1.5.6 起可运行时读取(`version_info`,见 7.1)。中间状态 b4aed8a 曾把版本号置为 7,但未单独发布/记录。**1.5.10 之后的全部改动已随 [1.5.11] 归档**(自动 TAS 跟踪、消批方式可配置、TAS 取消/出队与 TWS 外推修复、航迹指纹口径调整),详见 CHANGELOG `[1.5.11]`。
|
||||
|
||||
近期提交(git log --oneline,新→旧;仅列代码改动,纯文档提交略):
|
||||
|
||||
| 提交 | 内容 |
|
||||
|---|---|
|
||||
| 工作区(版本号 1.5.11,未提交) | `parameters.h` 的 `PATCH_VERSION` 10→11(`VERSION_STRING` 变为 `V1.5.11.GENERIC`);无功能改动 |
|
||||
| c3d5b8f | 航迹指纹计算不再使用距离、方位(改为传入 `0, 0`),避免外部修正 r/azi 导致指纹不一致 |
|
||||
| 4449312 | ① 修复取消 TAS 的出队条件(改判 `manual_untracking_flag!=1`,自动 TAS 不再被误出队);② 修复 TWS 错误外推 TAS 航迹(外推条件改按 `Track_Mode==0`);③ 修复非重点航迹按圈数消批的判据方向(`<`→`>`);④ 指纹改用临时航迹首点;⑤ 增加 TAS 波束 `RDP_LOG_DEBUG` 日志 |
|
||||
| 2c0d2c2 | 增加配置项 `track_die_quality_enable`:非重点 TWS 航迹可按质量(1,默认)或按圈数(0)消批;8 份配置补该键并调整 `track_die_round` 备用值 |
|
||||
| 06e62e5 | 增加自动 TAS 跟踪(`[beam_control]`:`auto_tas_enable` / `auto_tas_velocity_min` / `auto_tas_velocity_max`),仅 Ku2304 启用(700~900 m/s);Ku2304 配置更新 `data_rate_tws`/`sigma_*`/消亡圈数 |
|
||||
| 95118d8 | 更新 7 份配置:补齐 `freq_step_GHz = 0.02`(与 `freq_0_GHz` 配套),使既有样例与新增频点步进参数一致 |
|
||||
| 4926e90 | 增加频点步进参数 `freq_step_GHz`(`[radar_params]`,校验 >0):`Bind_speed()` 的频点由硬编码 `+freq_ind*0.02` 改为 `+freq_ind*freq_step_GHz`;Ku2304 配置取 0.05 |
|
||||
| a002961 | 新增 Ku2304 雷达配置 `config/Ku2304_PS.toml`(相扫、`freq_0_GHz=16.5`、单跟踪、俯仰下限 -90) |
|
||||
| 66cabb8 | 增加 TAS 波束俯仰下限 `tas_beam_pitch_min`(`[beam_control]`):`tas_beam_output()` 输出 `max(elev, tas_beam_pitch_min)`,避免波束打到地面;7 份配置补该键(样例 3.0、X256_MS_4S / X256_PS_* 5.4) |
|
||||
| b728ebc | 新增 X1024 配置 `X1024_MS_5S.toml`、`X1024_PS_3S_TAS_2Hz.toml` |
|
||||
| c77b6c2 | ① 放宽 `data_rate_tas` 校验为 `≥0`(0 = 不做 DLL 内部限速,由宿主调用频率决定),修复 `data_rate_tas=0` 的机扫配置加载返回 -1;② 新增 4 份配置(X256_PS 1Hz/2Hz、X256_MS_4S、X1024_MS_4.8S);③ 修复单跟踪模式偶发发送 TWS 波束(TAS 队列遍历上界由编译期 30 改为配置项 `tas_track_num_max`);④ 手动取消 TAS:`tracking_stop` 改置 `manual_untracking_flag=1`,出队时置 `Track_Mode=0` 并输出完整航迹更新行;⑤ 新增用户操作日志(清空/删除/重点目标/转停 TAS/队列移除,INFO 级) |
|
||||
| eb9f30c | 修复手动转 TAS 时输出航迹更新信息不完整:`tas_target_add()` 的即时输出行改为与常规关联输出同一套字段(含 `Quality`/`Direction_Angle`/`Flag_Direction`/关联点信息/`x,y,v_x,v_y`/十字星数据等),并补写 `point_type=0` |
|
||||
| 0f3da99 | 增加航迹指纹:`Trust_Track::Track_fingerprint`(16 bit,起批时按末点 `r`/`azi`/`vr`/`RCS`/`CPI_time` 量化 + splitmix64 + 折叠生成);TAS 波束改为下发指纹、TAS 数据帧按指纹匹配航迹(不再按批号),实现 TAS 回放(见 9.12) |
|
||||
| 24ce1e6 | **日志组件由 `std::cout` 重定向改为内置 spdlog v1.17.0**:新增内置第三方库 `third_party/spdlog`(`include/` + `src/` + `LICENSE` + `UPSTREAM.md`,MIT,spdlog v1.17.0 上游快照,含随库内置的 {fmt} 12.1.0);根 `CMakeLists.txt` 新增静态库目标 `spdlog`(`SPDLOG_COMPILED_LIB`,第三方源码以 `/w` 编译)与缓存变量 `RDP_LOG_LEVEL`(`AUTO`/`TRACE`/`DEBUG`/`INFO`/`WARN`/`ERROR`/`CRITICAL`/`OFF`,AUTO 时 Debug=TRACE、其它构建=INFO),映射为 PUBLIC 编译定义 `SPDLOG_ACTIVE_LEVEL` 同时提供给 `data_process_class_dll` 与 `rdp_record`;`data_process_class_dll/rdp_log.h/.cpp` 重写:不再重定向 `std::cout`,`rdp_log::Init()` 创建 `RDP_LOG_DIR`(`.\rdp_logs\`)下 `rdp_YYYYMMDD_HHMMSS.log`(每次 `GetB()` 一个文件,同秒冲突追加 `_1`~`_999`),默认 logger 同时输出到标准输出与文件,行格式 `"[%Y-%m-%d %H:%M:%S.%e] [%l] [%s:%#] %v"`(毫秒时间戳、级别、文件名:行号、内容),所有级别逐条 flush,文件创建失败时降级为仅标准输出并返回 false;`rdp_log::Shutdown()` flush 并关闭日志文件;原流式 `RDP_LOG` 宏改为 `RDP_LOG_TRACE` / `RDP_LOG_DEBUG` / `RDP_LOG_INFO` / `RDP_LOG_WARN` / `RDP_LOG_ERROR` / `RDP_LOG_CRITICAL`(`RDP_LOG_ERR` 为 ERROR 别名)的 fmt 风格调用;`RDP_LOG_ENABLE` 宏已删除,日志级别改由 `SPDLOG_ACTIVE_LEVEL` 在编译期控制(OFF = 编译期关闭且不创建日志文件);`Data_Process_Factory::GetB()` 中启用 `rdp_log::Init()`(在 `rdp_record::Init()` 之前)、`Destroy()` 中在 `rdp_record::Shutdown()` 之后调用 `rdp_log::Shutdown()`;调用点迁移(`data_process.cpp` 参数重载成功 INFO / 失败 ERROR、`track_asso_tas.cpp` ΔT≤0 告警 WARN、`rdp_record.cpp` 19 处 info/warn/error 分级;其余注释代码中的旧宏同步改写);`parameters.h` 删除 `RDP_LOG_ENABLE`、保留 `RDP_LOG_DIR`,注释改为说明 spdlog + `SPDLOG_ACTIVE_LEVEL`。验证(Lead 实测,2026-10-28):4 配置(Release/Debug × REC_OFF/REC_ON)0 warning 0 error;公开接口测试 38 项断言全部通过;运行期实测日志同时写入标准输出与文件、文件名/行格式正确、`Destroy()`→`GetB()` 同秒重连生成 `_1` 后缀新文件。详见 CHANGELOG `[1.5.9]` |
|
||||
| 7e4cb29 | **工作参数改为全局对象**:`struct.h` 新增 `extern RDP_parameter rdp_parameter;`(声明位于 `struct.h`),`data_process.cpp` 定义并零初始化;`Data_Process` 删除 `RDP_parameter` 成员;`parameters_reload()` 直接调用 `rdp_parameter_load(path, rdp_parameter, &error)`(loader 仅在校验全部通过后写入,失败不写入,「失败保持当前参数」语义不变);删除处理模块(kalman 11 个方法、dot_coh/dot_coh_tas、track_asso 系列、track_init 系列、track_die 系列、track_index_mangement、tas_ctrl,共 12 个模块的 24 个 .h/.cpp 文件)全部 `const RDP_parameter& rdp_parameter` 形参与调用实参,函数体内 `rdp_parameter.<field>` 一处未改、现直接解析全局对象;接口签名/公式/阈值/数值行为不变;全局对象为 DLL 内单实例、非线程安全(配置重载须与处理互斥,见 BUG-03/BUG-13)。验证(Lead 实测,2026-10-27):4 配置(Release/Debug × REC_OFF/REC_ON)重建成功、0 warning 0 error;DLL 体积 Release REC_OFF 331,264 / Release REC_ON 1,652,736 / Debug REC_OFF 1,715,200 / Debug REC_ON 4,691,968 字节;导出表仍 31 项(`parameters_reload` 在列、全局 `rdp_parameter` 不导出);加载器单测 233 项断言、公开接口运行期测试 4 配置 × 38 项断言全部通过;静态检查处理模块已无 `const RDP_parameter&` 形参(仅 loader 内部 `validate_parameter` 保留)。详见 CHANGELOG `[1.5.9]` |
|
||||
| 76b0b46 | 构建脚本适配机扫/相扫合并:构建不再区分 `PHASE_SCANNING` / `MECHANICAL_SCANNING`:`CMakeLists.txt` 删除 `RADAR_SCAN_MODE` 缓存变量与体制编译宏;构建目录改为 `build/<Debug\|Release>/<REC_AUTO\|REC_OFF\|REC_ON>`(去掉 PS/MS 维度);`config_paths.bat`/`configure.bat`/`build.bat`/`clean.bat` 参数改为 `<Debug\|Release> [AUTO\|ON\|OFF]`,新增 `build_config.bat`(单配置配置+构建,取代 `build_all.bat`),`clean_all.bat` 同时清理旧版 `build/X256_PS`、`build/X256_MS`;`tasks.json` 5 个任务改为「清理全部」+ 4 个「配置并构建(...)」;`settings.json`(buildDirectory 去掉 scanMode 维度)、`cmake-variants.yaml`(移除 scanMode 变体)、`c_cpp_properties.json`(合并为单个 X256 配置)、`launch.json` 同步。验证:5 个任务返回 0,4 种配置(Release/Debug × REC_OFF/REC_ON)0 warning 0 error,编译命令无体制宏,增量重建 0 编译步骤 |
|
||||
| 423c200 / 019af7a(参数配置方式改造 + 机扫/相扫版本合并) | **参数配置方式改造:TOML 配置文件 → `RDP_parameter`**。新增 `rdp_parameter_loader.h/.cpp`(严格校验 11 个配置段、标量键必填、类型/范围校验、未知段/键拒绝、屏蔽区数组长度等于 `*_num`,失败 -1 且不改变当前参数)与示例 `config/config_tmp.toml`;内置 toml++ v3.4.0 单头文件 `third_party/toml/toml.hpp`;公开头删除 `struct RadarPara` 与 `track_process_parameters_initial/modify`,新增 `virtual int parameters_reload(const char*)`(`Data_Process` 实现为加载成功后整体替换 `rdp_parameter`;**后于本工作区的「全局工作参数对象改造」改为写入全局对象**);`data_process.h` 删除 `Work_Parameter`,各模块(kalman 11 个方法、dot_coh、dot_coh_tas、track_asso(_tas/_direct_tracking)、track_init(_direct_tracking)、track_die(_tas)、track_index_mangement、tas_ctrl)改为 `const RDP_parameter& rdp_parameter`(**后于本工作区的「全局工作参数对象改造」删除该形参、改为直接访问全局对象**),宏与旧字段按映射等价替换;**新增配置项 `scan_mode`(0 相扫 / 1 机扫)**,`data_process.cpp` 的 TWS 判圈由编译期 `#ifdef PHASE_SCANNING` 改为按 `scan_mode` 运行时选择(行为逐分支等价);019af7a 进一步把机扫/相扫合并为**同一份代码与同一份构建**(版本号 1.5.9、`VERSION_INFO` 改为 `GENERIC`,`PHASE_SCANNING`/`MECHANICAL_SCANNING` 不再参与任何功能);`parameters.h` 仅保留 PI、版本/日志/记录宏、`MAX_TRACK_NUM`、`RDP_TAS_QUEUE_CAPACITY`、`Round`(`UNCONF_TARGET` 已删除,起批处 `Target_Type` 直接写 0);`track_index_mangement` 航迹号表改按 `track_index_max` 分配,TAS 队列容量用 `RDP_TAS_QUEUE_CAPACITY`、运行期上限用 `tas_track_num_max`,波束类型用 `default_track_beam_type`。验证(Lead 实测,2026-10-27):合并前 8 配置、合并后 4 配置均 0 warning 0 error;Release REC_OFF DLL 331,776 字节、Debug REC_ON 4,694,528 字节、导出表 31 项(新增 `parameters_reload`,旧参数接口与 `RadarPara` 符号消失);加载器单测 233 项断言、公开接口运行期测试(含判圈运行时切换)全部通过;`RDP_parameter` 成员 / 加载器键 / TOML 键均为 63 个,11 个配置段不变。详见 CHANGELOG `[1.5.9]` |
|
||||
| 423c200 / 019af7a(参数配置方式改造 + 机扫/相扫版本合并) | **参数配置方式改造:TOML 配置文件 → `RDP_parameter`**。新增 `rdp_parameter_loader.h/.cpp`(严格校验 11 个配置段、标量键必填、类型/范围校验、未知段/键拒绝、屏蔽区数组长度等于 `*_num`,失败 -1 且不改变当前参数)与示例 `config/config_tmp.toml`;内置 toml++ v3.4.0 单头文件 `third_party/toml/toml.hpp`;公开头删除 `struct RadarPara` 与 `track_process_parameters_initial/modify`,新增 `virtual int parameters_reload(const char*)`(`Data_Process` 实现为加载成功后整体替换 `rdp_parameter`;**后于本工作区的「全局工作参数对象改造」改为写入全局对象**);`data_process.h` 删除 `Work_Parameter`,各模块(kalman 11 个方法、dot_coh、dot_coh_tas、track_asso(_tas/_direct_tracking)、track_init(_direct_tracking)、track_die(_tas)、track_index_mangement、tas_ctrl)改为 `const RDP_parameter& rdp_parameter`(**后于本工作区的「全局工作参数对象改造」删除该形参、改为直接访问全局对象**),宏与旧字段按映射等价替换;**新增配置项 `scan_mode`(0 相扫 / 1 机扫)**,`data_process.cpp` 的 TWS 判圈由编译期 `#ifdef PHASE_SCANNING` 改为按 `scan_mode` 运行时选择(行为逐分支等价);019af7a 进一步把机扫/相扫合并为**同一份代码与同一份构建**(版本号 1.5.9、`VERSION_INFO` 改为 `GENERIC`,`PHASE_SCANNING`/`MECHANICAL_SCANNING` 不再参与任何功能);`parameters.h` 仅保留 PI、版本/日志/记录宏、`MAX_TRACK_NUM`、`RDP_TAS_QUEUE_CAPACITY`、`Round`(`UNCONF_TARGET` 已删除,起批处 `Target_Type` 直接写 0);`track_index_mangement` 航迹号表改按 `track_index_max` 分配,TAS 队列容量用 `RDP_TAS_QUEUE_CAPACITY`、运行期上限用 `tas_track_num_max`,波束类型用 `default_track_beam_type`。验证(Lead 实测,2026-10-27):合并前 8 配置、合并后 4 配置均 0 warning 0 error;Release REC_OFF DLL 331,776 字节、Debug REC_ON 4,694,528 字节、导出表 31 项(新增 `parameters_reload`,旧参数接口与 `RadarPara` 符号消失);加载器单测 233 项断言、公开接口运行期测试(含判圈运行时切换)全部通过;`RDP_parameter` 成员 / 加载器键 / TOML 键均为 63 个,11 个配置段不变(V1.5.10 新增 `freq_step_GHz` 与 `tas_beam_pitch_min` 后为 **65 个**)。详见 CHANGELOG `[1.5.9]` |
|
||||
| 1ffb287 | 增加航迹质量记录到数据库:`RdpRecTempTrack` 增 `quality`,`RdpRecTrustTrack` 增 `Quality`/`Unupdated_time`/`Point_sum`/`Valid_point_sum` 并同步注册 |
|
||||
| 6284f3f | 修改 TAS 模式高度平滑点数:`track_asso_tas.cpp` 分段偏移 `+2/+3/+4/+6` → `+6/+8/+10/+12`,相扫 `H_F_WIN_LEN` 3→6(相扫 TAS 窗口 12/14/16/18、机扫 9/11/13/15;TWS 相扫随之 8/9/10/12) |
|
||||
| 5d105d2 | 修改相扫模式下 TAS 航迹消亡圈数:`TRACK_DIE_ROUND_TAS` 10→20(机扫保持 96),相扫 TAS 实际连续 21 圈无实点才消亡 |
|
||||
@@ -1350,7 +1386,7 @@ DLL :rdp_parameter_load() 解析 TOML → 严格校验 → 全部通过后一
|
||||
| archived_docs/BUG_REPORT.md | 全量逻辑 BUG 分析(P0~P3 共 37 项,含位置、说明、建议、处置结论)——过期留档,仅作历史参考 |
|
||||
| archived_docs/BUG_FIX_REPORT.md | 修复明细、修复状态汇总表与 MSVC 2013 x86 编译验证记录——过期留档(对应 01d28e0 时期) |
|
||||
| requirements.md | 修改需求说明:**日志组件 rdp_log 改为使用 spdlog**(日志同时输出到标准输出与日志文件、路径与文件名规则沿用 `.\rdp_logs\` + 日期+时间、每次启动一个文件;`RDP_LOG` 宏按 spdlog 级别改为 `RDP_LOG_TRACE` / `RDP_LOG_DEBUG` / `RDP_LOG_INFO` / `RDP_LOG_WARN` / `RDP_LOG_ERROR` / `RDP_LOG_CRITICAL`;原 `RDP_LOG_ENABLE` 改为用 `SPDLOG_ACTIVE_LEVEL` 在编译期控制日志级别)——已按该说明实现(见 4.3、5.2、10.4);此前 requirements.md 中的雷达参数配置方式改造需求、以及更早的数据记录调试功能需求亦已实现,分别见 10 与 docs/data_record_debug.md(旧的日志文件输出需求已由本次 spdlog 改造取代,见 12 的 1521592 行) |
|
||||
| config/config_tmp.toml | 参数配置样例(TOML,11 个配置段、63 个键与 `RDP_parameter` 成员一一对应,样例为相扫取值(`scan_mode=0`);机扫差异项见 10.1 兼容性提示)——参数表见 10.2 |
|
||||
| config/*.toml | 参数配置文件(共 **8 份**:`config_tmp.toml` 通用相扫样例 + `X256_PS_3S_TAS_1Hz` / `X256_PS_3S_TAS_2Hz` / `X256_MS_4S` / `X1024_PS_3S_TAS_2Hz` / `X1024_MS_4.8S` / `X1024_MS_5S` / `Ku2304_PS` 设备配置;11 个配置段、**69 个键**与 `RDP_parameter` 成员一一对应,各份差异见 3 节)——参数表见 10.2,机扫差异项见 10.1 兼容性提示 |
|
||||
| third_party/toml/toml.hpp | 内置 toml++ v3.4.0 单头文件(MIT,上游原样保存);仅参数加载器 `rdp_parameter_loader.cpp` 以 `#pragma warning(push, 0)` 包裹使用,来源与许可证信息见文件头 |
|
||||
| backup/data_process_class_dll/data_process_class_dll.pro | 迁移前的 Qt/qmake 工程文件(源文件清单参考) |
|
||||
| .vscode/tasks.json、.vscode/cmake-variants.yaml、.vscode/scripts/*.bat | VS Code 任务、构建变体与构建脚本(构建目录布局见 4.3) |
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件(TOML 格式)
|
||||
#
|
||||
# 适用雷达型号:Ku2304单面阵
|
||||
# 工作模式:搜索:机扫/跟踪:单目标转台跟踪
|
||||
# 其他:搜索一圈4S,TAS数据率30Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 0
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 16.5
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.05
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 0.0372
|
||||
# TAS模式数据率(s;0 表示不做 DLL 内部 TAS 波束限速,由宿主调用频率决定)
|
||||
data_rate_tas = 0
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 100.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 50.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 0
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 0
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 1000
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 25
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 50
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 50
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件
|
||||
#
|
||||
# 适用雷达型号:X1024单面阵
|
||||
# 工作模式:搜索:机扫/跟踪:单目标转台跟踪
|
||||
# 其他:搜索一圈4.8S,TAS数据率30Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 1
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 4.8
|
||||
# TAS模式数据率(s)
|
||||
data_rate_tas = 0
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 10.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 2.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 3
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 100
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 50
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 5
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 300
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件
|
||||
#
|
||||
# 适用雷达型号:X1024单面阵
|
||||
# 工作模式:搜索:机扫/跟踪:单目标转台跟踪
|
||||
# 其他:搜索一圈5S,TAS数据率145Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 1
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 5
|
||||
# TAS模式数据率(s)
|
||||
data_rate_tas = 0
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 10.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 2.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 3
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 150
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 50
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 5
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 450
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件
|
||||
#
|
||||
# 适用雷达型号:X1024面阵
|
||||
# 工作模式:相扫
|
||||
# 其他:搜索一圈3S,TAS数据率2Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 0
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 3
|
||||
# TAS模式数据率(s)
|
||||
data_rate_tas = 0.4
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 10.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 2.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 3
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 5
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 50
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 6
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 20
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件
|
||||
#
|
||||
# 适用雷达型号:X256单面阵
|
||||
# 工作模式:搜索:机扫/跟踪:单目标转台跟踪
|
||||
# 其他:搜索一圈4S,TAS数据率30Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 1
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 4
|
||||
# TAS模式数据率(s)
|
||||
data_rate_tas = 0
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 10.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 2.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 3
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 30
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 50
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 6
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 90
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件
|
||||
#
|
||||
# 适用雷达型号:X256单面阵/X256多面阵
|
||||
# 工作模式:相扫
|
||||
# 其他:搜索一圈3S,TAS数据率1Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 0
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 3
|
||||
# TAS模式数据率(s)
|
||||
data_rate_tas = 0.85
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 10.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 2.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 3
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 5
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 50
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 6
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 20
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
@@ -0,0 +1,173 @@
|
||||
# 雷达数据处理配置文件
|
||||
#
|
||||
# 适用雷达型号:X256单面阵/X256多面阵
|
||||
# 工作模式:相扫
|
||||
# 其他:搜索一圈3S,TAS数据率2Hz
|
||||
|
||||
## 雷达工作参数
|
||||
[radar_params]
|
||||
# 工作模式:0 近程 / 1 中程 / 2 远程
|
||||
radar_work_mode = 0
|
||||
# 扫描模式:0 相扫模式 / 1 机扫模式
|
||||
scan_mode = 0
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 3
|
||||
# TAS模式数据率(s)
|
||||
data_rate_tas = 0.3
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0
|
||||
|
||||
## 点迹凝聚参数
|
||||
[cohesion]
|
||||
# 距离凝聚范围(m)
|
||||
point_cohesion_range = 80
|
||||
# 速度凝聚范围(m/s)
|
||||
point_cohesion_velocity = 2
|
||||
# 方位凝聚范围(度)
|
||||
point_cohesion_azimuth = 6
|
||||
# 最小凝聚距离(m)
|
||||
point_cohesion_range_min = 100
|
||||
# 最大凝聚距离(m)
|
||||
point_cohesion_range_max = 100000
|
||||
|
||||
## 航迹关联参数
|
||||
[track_associate]
|
||||
# 距离量测精度(m)
|
||||
sigma_range = 10.0
|
||||
# 方位量测精度(弧度)
|
||||
sigma_azimuth = 0.02
|
||||
# 俯仰量测精度(弧度)
|
||||
sigma_pitch = 0.2
|
||||
# 速度量测精度(m/s)
|
||||
sigma_velocity = 2.0
|
||||
# 关联门限
|
||||
associate_threshold = 4.0
|
||||
# 最大外推点数
|
||||
extrapolate_max = 3
|
||||
# TAS最大外推点数
|
||||
extrapolate_max_tas = 5
|
||||
# 高度平滑窗长
|
||||
height_smooth_win = 6
|
||||
|
||||
## 航迹起始参数
|
||||
[track_init]
|
||||
# 起航波门
|
||||
track_init_threshold = 8
|
||||
# 起航夹角(度)
|
||||
track_init_angle = 60
|
||||
# 最少起批点数(3~9)
|
||||
track_init_point_num_min = 3
|
||||
# 3点起批质量门限
|
||||
track_init_quality_L3 = 0.7
|
||||
# 4点起批质量门限
|
||||
track_init_quality_L4 = 0.6
|
||||
# 5点起批质量门限
|
||||
track_init_quality_L5 = 0.5
|
||||
# 6点起批质量门限
|
||||
track_init_quality_L6 = 0.4
|
||||
# 7点起批质量门限
|
||||
track_init_quality_L7 = 0.3
|
||||
# 航迹起始最小速度(m/s)
|
||||
track_init_velocity_min = 1
|
||||
# 航迹起始最大速度(m/s)
|
||||
track_init_velocity_max = 50
|
||||
|
||||
## 航迹消亡参数
|
||||
[track_die]
|
||||
# 航迹消亡圈数
|
||||
track_die_round = 6
|
||||
# 重点航迹消亡圈数
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 20
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
track_die_quality_pramary = 0.3
|
||||
|
||||
## 航迹质量管理参数
|
||||
[track_quality]
|
||||
# 航迹质量最大值
|
||||
track_quality_max = 100
|
||||
# 航迹质量最小值
|
||||
track_quality_min = 0
|
||||
# 马氏距离权重
|
||||
track_quality_d_weight = 0.5
|
||||
# 信噪比权重
|
||||
track_quality_snr_weight = 0.3
|
||||
# 航迹长度权重
|
||||
track_quality_len_weight = 0.2
|
||||
# 航迹质量迭代系数
|
||||
track_quality_iter_coeff = 0.8
|
||||
# 航迹质量下降系数2次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o2 = -0.0008
|
||||
# 航迹质量下降系数1次项(必须 <= 0)
|
||||
track_quality_decrease_coeff_o1 = -0.0025
|
||||
|
||||
## 航迹批号管理
|
||||
[track_index]
|
||||
# 最大航迹批号(1~500)
|
||||
track_index_max = 500
|
||||
|
||||
## 波束调度
|
||||
[beam_control]
|
||||
# 默认跟踪波束类型
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
# 模型1
|
||||
model_1_Q_fast = 0.000001
|
||||
model_1_Q_slow = 0.000001
|
||||
# 模型2
|
||||
model_2_Q_fast = 0.01
|
||||
model_2_Q_slow = 0.01
|
||||
# 模型3
|
||||
model_3_Q_fast = 1.0
|
||||
model_3_Q_slow = 1.0
|
||||
|
||||
## 航迹起始屏蔽区(数组元素个数必须等于 track_init_prohibite_area_num)
|
||||
[track_init_prohibite_area]
|
||||
# 航迹起始屏蔽区数(0~30)
|
||||
track_init_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
track_init_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
track_init_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
track_init_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
track_init_prohibite_area_azimuth_max = []
|
||||
|
||||
## 禁止TAS跟踪区域(数组元素个数必须等于 tas_prohibite_area_num)
|
||||
[tas_prohibite_area]
|
||||
# 禁止TAS的区域数(0~30)
|
||||
tas_prohibite_area_num = 0
|
||||
# 最小距离 (m)
|
||||
tas_prohibite_area_range_min = []
|
||||
# 最大距离 (m)
|
||||
tas_prohibite_area_range_max = []
|
||||
# 最小方位角 (度)
|
||||
tas_prohibite_area_azimuth_min = []
|
||||
# 最大方位角 (度)
|
||||
tas_prohibite_area_azimuth_max = []
|
||||
+13
-1
@@ -14,13 +14,15 @@ radar_work_mode = 0
|
||||
scan_mode = 0
|
||||
# 频点0频率(GHz)
|
||||
freq_0_GHz = 9.2
|
||||
# 频点步进(GHz)
|
||||
freq_step_GHz = 0.02
|
||||
# 雷达平台高度(m)
|
||||
radar_height = 0
|
||||
# 系统延迟(s)
|
||||
radar_system_delay = 0
|
||||
# TWS模式数据率(s)
|
||||
data_rate_tws = 3
|
||||
# TAS模式数据率(s)
|
||||
# TAS模式数据率(s;0 表示不做 DLL 内部 TAS 波束限速,由宿主调用频率决定)
|
||||
data_rate_tas = 1
|
||||
# 纯跟踪模式数据率(s)
|
||||
data_rate_track_only = 0.2
|
||||
@@ -88,6 +90,8 @@ track_die_round = 6
|
||||
track_die_round_pramary = 10
|
||||
# TAS航迹消亡圈数
|
||||
track_die_round_tas = 20
|
||||
# 航迹消批质量条件使能
|
||||
track_die_quality_enable = 1
|
||||
# 航迹消批质量条件
|
||||
track_die_quality = 0.3
|
||||
# 重点航迹消批质量条件
|
||||
@@ -123,6 +127,14 @@ track_index_max = 500
|
||||
default_track_beam_type = 1
|
||||
# 最大同时跟踪目标数(TAS 队列容量上限 30)
|
||||
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]
|
||||
|
||||
@@ -209,9 +209,8 @@ int model)
|
||||
//查找指定指纹的Track_idx
|
||||
int tas_track_idx = -1;
|
||||
for(auto& t : trust_track){
|
||||
if(t.Track_fingerprint == TAS_track_fingerprint){
|
||||
if(t.Track_fingerprint == TAS_track_fingerprint && t.manual_untracking_flag == 0){
|
||||
tas_track_idx = t.Track_Index;
|
||||
t.manual_tracking_flag = 1;
|
||||
t.Track_Mode = 1;
|
||||
break;
|
||||
}
|
||||
@@ -284,6 +283,8 @@ int Data_Process::track_clear_all(void)
|
||||
tas_ctrl.reset();
|
||||
last_beam_num = INT_MAX;
|
||||
|
||||
RDP_LOG_INFO("All track clear");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -299,7 +300,7 @@ int Data_Process:: track_delete(int delete_track_num, //手动
|
||||
{
|
||||
|
||||
trust_track[j].manual_delete_flag=1;
|
||||
// RDP_LOG_DEBUG("Delete : {}", trust_track[j].Track_Index);
|
||||
RDP_LOG_INFO("Track <{}> deleted by user", trust_track[j].Track_Index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,7 +317,7 @@ int Data_Process::primary_target_add(int track_index)
|
||||
if(trust_track[i].Track_Index==track_index)
|
||||
{
|
||||
trust_track[i].primary_target_flag = 1;
|
||||
//std::cout<< "Add primary target :" << trust_track[i].Track_Index << std::endl;
|
||||
RDP_LOG_INFO("Track <{}> is set as a primary target by the user", trust_track[i].Track_Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -332,7 +333,7 @@ int Data_Process::primary_target_cancel(int track_index)
|
||||
if(trust_track[i].Track_Index==track_index)
|
||||
{
|
||||
trust_track[i].primary_target_flag = 0;
|
||||
//std::cout<< "Cancel primary target :" << trust_track[i].Track_Index << std::endl;
|
||||
RDP_LOG_INFO("Track <{}> has been cancelled as a primary target by the user", trust_track[i].Track_Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -348,6 +349,8 @@ int Data_Process:: tracking_start(int track_index) //需要手动
|
||||
if(trust_track[i].Track_Index==track_index)
|
||||
{
|
||||
trust_track[i].manual_tracking_flag = 1;
|
||||
trust_track[i].manual_untracking_flag = 0;
|
||||
RDP_LOG_INFO("Track <{}> is set to tracking mode by the user", trust_track[i].Track_Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -363,7 +366,8 @@ int Data_Process:: tracking_stop(int track_index) //需要手动转
|
||||
if(trust_track[i].Track_Index==track_index)
|
||||
{
|
||||
trust_track[i].manual_tracking_flag = 0;
|
||||
trust_track[i].Track_Mode = 0;
|
||||
trust_track[i].manual_untracking_flag = 1;
|
||||
RDP_LOG_INFO("Track <{}> has been canceled from tracking mode by the user", trust_track[i].Track_Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -779,7 +779,7 @@ double kalman::d_cal_track_init_with_doppler(double Z[2],double X[4],double P[4]
|
||||
|
||||
double kalman::Bind_speed(double prt,double freq_ind)
|
||||
{
|
||||
double freq=rdp_parameter.freq_0_GHz+freq_ind*0.02;
|
||||
double freq=rdp_parameter.freq_0_GHz + freq_ind * rdp_parameter.freq_step_GHz;
|
||||
|
||||
if (prt <= 0.0 || freq <= 0.0)
|
||||
return 1.0; // 避免除零;正常流程 PRI 不允许为 0
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/**********************************版本信息*************************************************/
|
||||
#define MAJOR_VERSION 1
|
||||
#define MINOR_VERSION 5
|
||||
#define PATCH_VERSION 9
|
||||
#define PATCH_VERSION 11
|
||||
#define VERSION_INFO "GENERIC"
|
||||
|
||||
#define STRINGIFY_IMPL(x) #x
|
||||
|
||||
@@ -89,6 +89,7 @@ struct IntField
|
||||
const FloatField kFloatFields[] = {
|
||||
// [radar_params] 雷达工作参数
|
||||
{"radar_params", "freq_0_GHz", &RDP_parameter::freq_0_GHz},
|
||||
{"radar_params", "freq_step_GHz", &RDP_parameter::freq_step_GHz},
|
||||
{"radar_params", "radar_height", &RDP_parameter::radar_height},
|
||||
{"radar_params", "radar_system_delay", &RDP_parameter::radar_system_delay},
|
||||
{"radar_params", "data_rate_tws", &RDP_parameter::data_rate_tws},
|
||||
@@ -128,6 +129,10 @@ const FloatField kFloatFields[] = {
|
||||
{"track_quality", "track_quality_iter_coeff", &RDP_parameter::track_quality_iter_coeff},
|
||||
{"track_quality", "track_quality_decrease_coeff_o2", &RDP_parameter::track_quality_decrease_coeff_o2},
|
||||
{"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},
|
||||
@@ -151,11 +156,13 @@ const IntField kIntFields[] = {
|
||||
{"track_die", "track_die_round", &RDP_parameter::track_die_round},
|
||||
{"track_die", "track_die_round_pramary", &RDP_parameter::track_die_round_pramary},
|
||||
{"track_die", "track_die_round_tas", &RDP_parameter::track_die_round_tas},
|
||||
{"track_die", "track_die_quality_enable", &RDP_parameter::track_die_quality_enable},
|
||||
// [track_index] 航迹批号管理
|
||||
{"track_index", "track_index_max", &RDP_parameter::track_index_max},
|
||||
// [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},
|
||||
@@ -362,12 +369,14 @@ bool validate_parameter(const RDP_parameter& p, LoadContext& ctx)
|
||||
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.freq_step_GHz > 0.0f))
|
||||
return ctx.fail("参数 freq_step_GHz 必须大于 0");
|
||||
if (p.radar_system_delay < 0.0f)
|
||||
return ctx.fail("参数 radar_system_delay 不能为负");
|
||||
if (!(p.data_rate_tws > 0.0f))
|
||||
return ctx.fail("参数 data_rate_tws 必须大于 0");
|
||||
if (!(p.data_rate_tas > 0.0f))
|
||||
return ctx.fail("参数 data_rate_tas 必须大于 0");
|
||||
if (p.data_rate_tas < 0.0f)
|
||||
return ctx.fail("参数 data_rate_tas 不能为负(0 表示不做 DLL 内部 TAS 波束限速,由宿主调用频率决定)");
|
||||
if (p.data_rate_track_only < 0.0f)
|
||||
return ctx.fail("参数 data_rate_track_only 不能为负");
|
||||
|
||||
@@ -429,6 +438,8 @@ bool validate_parameter(const RDP_parameter& p, LoadContext& ctx)
|
||||
return ctx.fail("参数 track_die_round_pramary 不能为负");
|
||||
if (p.track_die_round_tas < 0)
|
||||
return ctx.fail("参数 track_die_round_tas 不能为负");
|
||||
if (p.track_die_quality_enable != 0 && p.track_die_quality_enable != 1)
|
||||
return ctx.fail("参数 track_die_quality_enable 必须为 0(不启用)或 1(启用)(实际 " + std::to_string(p.track_die_quality_enable) + ")");
|
||||
if (p.track_die_quality < 0.0f || p.track_die_quality > 1.0f)
|
||||
return ctx.fail("参数 track_die_quality 必须在 0~1 之间");
|
||||
if (p.track_die_quality_pramary < 0.0f || p.track_die_quality_pramary > 1.0f)
|
||||
@@ -457,6 +468,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[] = {
|
||||
|
||||
@@ -74,6 +74,7 @@ struct Trust_Track
|
||||
|
||||
int manual_delete_flag; //手动航迹删除
|
||||
int manual_tracking_flag; //手动TAS
|
||||
int manual_untracking_flag; //手动取消TAS
|
||||
int primary_target_flag; //重点目标标记
|
||||
|
||||
int Target_Type; //目标类型 搜索目标 低空目标 地面目标
|
||||
@@ -197,6 +198,7 @@ struct RDP_parameter
|
||||
int radar_work_mode; //工作模式
|
||||
int scan_mode; //扫描模式 0=相扫模式 1=机扫模式
|
||||
float freq_0_GHz; //频点0频率
|
||||
float freq_step_GHz; //频点步进值
|
||||
float radar_height; //雷达平台高度 (m)
|
||||
float radar_system_delay; //系统延迟 (s)
|
||||
float data_rate_tws; //TWS模式数据率
|
||||
@@ -236,6 +238,7 @@ struct RDP_parameter
|
||||
int track_die_round; //航迹消亡圈数
|
||||
int track_die_round_pramary; //重点航迹消亡圈数
|
||||
int track_die_round_tas; //TAS航迹消亡圈数
|
||||
int track_die_quality_enable; //航迹消亡质量条件使能
|
||||
float track_die_quality; //航迹消批质量条件
|
||||
float track_die_quality_pramary; //重点航迹消批质量条件
|
||||
|
||||
@@ -255,6 +258,10 @@ 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
|
||||
|
||||
@@ -61,12 +61,12 @@ void TAS_Ctrl::tas_target_add(std::vector<Trust_Track> *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)
|
||||
{
|
||||
for(int j=0;j<RDP_TAS_QUEUE_CAPACITY;j++)
|
||||
for(int j=0;j<rdp_parameter.tas_track_num_max;j++)
|
||||
{
|
||||
if(tas_target_queue[j].empty_flag==0)// && j%2==0)
|
||||
{
|
||||
@@ -89,8 +89,8 @@ void TAS_Ctrl::tas_target_add(std::vector<Trust_Track> *trust_track,
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Point_Sum=1;
|
||||
|
||||
double x,y;
|
||||
x=(*trust_track)[i].X[0]+(*trust_track)[i].X[1]*rdp_parameter.radar_system_delay;
|
||||
y=(*trust_track)[i].X[3]+(*trust_track)[i].X[4]*rdp_parameter.radar_system_delay;
|
||||
x=(*trust_track)[i].X[0];
|
||||
y=(*trust_track)[i].X[3];
|
||||
coor_trans Coor_trans;
|
||||
double r, azi;
|
||||
Coor_trans.cart2polar(x, y, &r, &azi);
|
||||
@@ -194,78 +194,116 @@ void TAS_Ctrl::tas_target_del(std::vector<Trust_Track> *trust_track,
|
||||
{
|
||||
|
||||
//查找TAS目标是否已经消批 若消批则移出TAS队列
|
||||
for (int i=0;i<RDP_TAS_QUEUE_CAPACITY;i++)
|
||||
for (int i=0;i<rdp_parameter.tas_track_num_max;i++)
|
||||
{
|
||||
if(tas_target_queue[i].empty_flag == 1)
|
||||
{
|
||||
int track_index = -1;
|
||||
|
||||
//查找TAS队列里的目标是否存在
|
||||
int flag=0;
|
||||
for (size_t j=0;j<trust_track->size();j++){
|
||||
{
|
||||
if(tas_target_queue[i].Index==(*trust_track)[j].Track_Index && (*trust_track)[j].Track_Mode == 1 && (*trust_track)[j].manual_tracking_flag == 1)
|
||||
{
|
||||
if(tas_target_queue[i].Index==(*trust_track)[j].Track_Index){
|
||||
track_index = static_cast<int>(j);
|
||||
if((*trust_track)[j].Track_Mode == 1 && (*trust_track)[j].manual_untracking_flag != 1){
|
||||
flag=1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
//目标不存在 说明已消批 从队列里删除
|
||||
if(flag == 0)
|
||||
{
|
||||
RDP_LOG_INFO("Tatget <{}> delete from TAS queue", tas_target_queue[i].Index);
|
||||
|
||||
memset(&tas_target_queue[i],0,sizeof(Tracking_Target));
|
||||
tas_target_num=tas_target_num-1;
|
||||
|
||||
if(track_index != -1){
|
||||
//目标跟踪状态发生改变 对外输出航迹更新信息
|
||||
*Trust_track_num_Output= *Trust_track_num_Output+1;
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Point_Sum=1;
|
||||
|
||||
(*trust_track)[track_index].Track_Mode = 0;
|
||||
|
||||
double x,y;
|
||||
x=(*trust_track)[track_index].X[0];
|
||||
y=(*trust_track)[track_index].X[3];
|
||||
coor_trans Coor_trans;
|
||||
double r, azi;
|
||||
Coor_trans.cart2polar(x, y, &r, &azi);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast<float>(r);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast<float>(azi/PI*180);
|
||||
|
||||
if((*trust_track)[track_index].Height<r)
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast<float>(asin((*trust_track)[track_index].Height/r)/PI*180);
|
||||
else
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast<float>((*trust_track)[track_index].elev_point);
|
||||
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[track_index].Track_Index;
|
||||
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V = static_cast<float>(sqrt((*trust_track)[track_index].X[1]*(*trust_track)[track_index].X[1]+(*trust_track)[track_index].X[4]*(*trust_track)[track_index].X[4]));
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = static_cast<float>((*trust_track)[track_index].Amplitude);
|
||||
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Mode=(*trust_track)[track_index].Track_Mode;
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=static_cast<float>((*trust_track)[track_index].T_track/1000.0);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].GNSS_time=(*trust_track)[track_index].GNSS_time;
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point = (*trust_track)[track_index].point_flag;
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast<float>((*trust_track)[track_index].Height+rdp_parameter.radar_height);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Quality = static_cast<float>((*trust_track)[track_index].Quality * rdp_parameter.track_quality_max);
|
||||
|
||||
double Direction_Angle;
|
||||
Direction_Angle=atan2((*trust_track)[track_index].X[4], (*trust_track)[track_index].X[1]);
|
||||
if(Direction_Angle<0){Direction_Angle=Direction_Angle+2*PI;}
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=static_cast<float>(Direction_Angle/PI*180);
|
||||
|
||||
//关联点信息
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=static_cast<float>((*trust_track)[track_index].range_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=static_cast<float>((*trust_track)[track_index].azi_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=static_cast<float>((*trust_track)[track_index].elev_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=static_cast<float>((*trust_track)[track_index].vr_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].point_type=0;
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = static_cast<float>((*trust_track)[track_index].prf_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast<float>((*trust_track)[track_index].snr_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].amp_asv_point = static_cast<float>((*trust_track)[track_index].amp_asv_point);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].prn_fftn_point = static_cast<float>((*trust_track)[track_index].prn_fftn_point);
|
||||
|
||||
//输出平滑后的高度
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].z = static_cast<float>((*trust_track)[track_index].Height+rdp_parameter.radar_height);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].x=static_cast<float>((*trust_track)[track_index].X[0]);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].y=static_cast<float>((*trust_track)[track_index].X[3]);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=static_cast<float>((*trust_track)[track_index].X[1]);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=static_cast<float>((*trust_track)[track_index].X[4]);
|
||||
|
||||
if(acos((-x * cos(Direction_Angle) - y * sin(Direction_Angle)) / r ) < PI / 2)
|
||||
{
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=1;
|
||||
// if(r*abs(sin(azi - Direction_Angle))<500)
|
||||
// {
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=1;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=0;
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Direction=0;
|
||||
}
|
||||
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = static_cast<float>((*trust_track)[track_index].RCS);
|
||||
Trust_Track_Output[*Trust_track_num_Output-1][0].pitch_num = (*trust_track)[track_index].pitch_num;
|
||||
|
||||
std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim, (*trust_track)[track_index].speed_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim));
|
||||
std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].range_dim, (*trust_track)[track_index].range_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].range_dim));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//判断TAS目标是否满足自动跟踪条件 若不满足移除TAS队列 通知界面改变目标状态
|
||||
// for ( int i=0;i<trust_track->size();i++)
|
||||
// {
|
||||
// double r=sqrt(pow((*trust_track)[i].X[0],2)+pow((*trust_track)[i].X[3],2));
|
||||
// double v=sqrt(pow((*trust_track)[i].X[1],2)+pow((*trust_track)[i].X[4],2));
|
||||
// double h=(*trust_track)[i].Height+rdp_parameter.radar_height;
|
||||
|
||||
// if((*trust_track)[i].manual_tracking_flag == 0 && (*trust_track)[i].Track_Mode == 1 && tas_auto_end(v,r,h) == 1) //满足结束跟踪条件
|
||||
// {
|
||||
|
||||
// int track_index=(*trust_track)[i].Track_Index;
|
||||
|
||||
// for (int ii=0;ii<RDP_TAS_QUEUE_CAPACITY;ii++)
|
||||
// {
|
||||
// if(tas_target_queue[ii].Index == track_index)
|
||||
// {
|
||||
// //从队列中删除
|
||||
// memset(&tas_target_queue[ii],0,sizeof(Tracking_Target));
|
||||
// tas_target_num=tas_target_num-1;
|
||||
|
||||
// //TAS跟踪标志置零
|
||||
// (*trust_track)[i].Track_Mode=0;
|
||||
|
||||
// //目标类型设为地面目标
|
||||
// (*trust_track)[i].Target_Type = 0;
|
||||
|
||||
// //航迹状态发生改变 对外输出航迹更新信息
|
||||
// *Trust_track_num_Output= *Trust_track_num_Output+1;
|
||||
// double r_output,azmi_output;
|
||||
// coor_trans Coor_trans;
|
||||
// Coor_trans.cart2polar((*trust_track)[i].X[0],(*trust_track)[i].X[3],&r_output,&azmi_output);
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Point_Sum=1;
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast<float>(r_output);
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast<float>(azmi_output/PI*180);
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index; //航迹号
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V=static_cast<float>(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]));
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude=static_cast<float>((*trust_track)[i].Amplitude);
|
||||
// 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].Track_Mode=(*trust_track)[i].Track_Mode;
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=static_cast<float>(asin((*trust_track)[i].Height/r_output)/PI*180);
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast<float>((*trust_track)[i].Height+rdp_parameter.radar_height);
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].Target_Type=(*trust_track)[i].Target_Type;
|
||||
// Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast<float>((*trust_track)[i].snr_point);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
};
|
||||
|
||||
// 说明:TAS 自动结束(tas_auto_end)的原实现同样依赖未纳入 RDP_parameter 的
|
||||
@@ -286,7 +324,7 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
|
||||
double X_now[6] = {0};
|
||||
|
||||
//查找TAS队列中CPI时间最早的目标且满足TAS数据率的目标
|
||||
for(int tas_idx=0;tas_idx<RDP_TAS_QUEUE_CAPACITY;tas_idx++)
|
||||
for(int tas_idx=0;tas_idx<rdp_parameter.tas_track_num_max;tas_idx++)
|
||||
{
|
||||
if(tas_target_queue[tas_idx].empty_flag==0)
|
||||
{
|
||||
@@ -301,7 +339,7 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
|
||||
delta_T_last_track = (latest_timestamp - tas_target_queue[tas_idx].last_track_time) / 1000.0f;
|
||||
|
||||
//查找CPI时间最早,且满足TAS数据率的目标
|
||||
if(CPI_time < earliest_CPI_time && (delta_T_last_track > rdp_parameter.data_rate_tas))
|
||||
if(CPI_time < earliest_CPI_time && (delta_T_last_track >= rdp_parameter.data_rate_tas))
|
||||
{
|
||||
earliest_CPI_time = CPI_time;
|
||||
H_track = (*trust_track)[track_idx].Height;
|
||||
@@ -339,20 +377,13 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
|
||||
|
||||
//目标距离
|
||||
Tracking_beam->Range=(float)range;
|
||||
|
||||
//目标方位
|
||||
Tracking_beam->Azi=(float)amzi/PI*180;
|
||||
// Tracking_beam->Azi+=6;
|
||||
|
||||
//目标俯仰角
|
||||
double elev=asin(H_track/range)/PI*180;
|
||||
|
||||
// if(elev<=0)
|
||||
// elev=0;
|
||||
// else if(elev>=40)
|
||||
// elev=40;
|
||||
// else
|
||||
// elev=elev;
|
||||
|
||||
Tracking_beam->Elev=(float)elev;
|
||||
Tracking_beam->Elev= max((float)elev, rdp_parameter.tas_beam_pitch_min);
|
||||
|
||||
//跟踪波束类型
|
||||
Tracking_beam->type=rdp_parameter.default_track_beam_type;
|
||||
@@ -363,5 +394,18 @@ void TAS_Ctrl::tas_beam_output(std::vector<Trust_Track> *trust_track
|
||||
//跟踪波束开关开启
|
||||
Tracking_beam->open_flag=1;
|
||||
|
||||
// RDP_LOG_INFO("TAS <{}> output: range: {} azi: {} pit: {}", Tracking_beam->TAS_track_index, Tracking_beam->Range, Tracking_beam->Azi, Tracking_beam->Elev);
|
||||
RDP_LOG_DEBUG("TAS <{}-{}> : range: {} azi: {} pit: {}", (*trust_track)[earliest_track_idx].Track_Index, 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -775,7 +775,7 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track, long long
|
||||
//未关联上的航迹 进行外推 tws
|
||||
for (size_t i =0; i<(*trust_track).size();i++ )
|
||||
{
|
||||
if((*trust_track)[i].point_flag == 0 && (*trust_track)[i].manual_tracking_flag == 0) //未关联上点迹的航迹进行外推
|
||||
if((*trust_track)[i].point_flag == 0 && (*trust_track)[i].Track_Mode == 0) //未关联上点迹的航迹进行外推
|
||||
{
|
||||
double delta_T = 0;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "track_die.h"
|
||||
#include "kalman.h"
|
||||
#include "coor_trans.h"
|
||||
#include "rdp_log.h"
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
@@ -22,10 +23,20 @@ void Track_Die::track_die_process( std::vector <Trust_Track> *trust_track,
|
||||
die_flag = true;
|
||||
}
|
||||
|
||||
//非重点航迹自动消亡
|
||||
if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Quality < rdp_parameter.track_die_quality)
|
||||
{
|
||||
die_flag = true;
|
||||
if(rdp_parameter.track_die_quality_enable == 1){
|
||||
//按质量条件消亡
|
||||
//非重点航迹自动消亡
|
||||
if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Quality < rdp_parameter.track_die_quality)
|
||||
{
|
||||
die_flag = true;
|
||||
}
|
||||
}else{
|
||||
//按圈数条件消亡
|
||||
//非重点航迹自动消亡
|
||||
if((*Iter).Track_Mode == 0 && (*Iter).primary_target_flag == 0 && (*Iter).Extrapolate_round > rdp_parameter.track_die_round)
|
||||
{
|
||||
die_flag = true;
|
||||
}
|
||||
}
|
||||
|
||||
//重点航迹自动消亡
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "track_init.h"
|
||||
#include "kalman.h"
|
||||
#include "coor_trans.h"
|
||||
#include "rdp_log.h"
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
@@ -633,7 +634,7 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
|
||||
memcpy(trust_track_tmp.P, P, 6*6*sizeof(double));
|
||||
|
||||
//计算航迹指纹
|
||||
trust_track_tmp.Track_fingerprint = computeFingerprint(Track_to_start[i][L-1].r, Track_to_start[i][L-1].azi, Track_to_start[i][L-1].vr, Track_to_start[i][L-1].RCS, Track_to_start[i][L-1].CPI_time);
|
||||
trust_track_tmp.Track_fingerprint = computeFingerprint(0, 0, Track_to_start[i][0].vr, Track_to_start[i][0].RCS, Track_to_start[i][0].CPI_time);
|
||||
|
||||
trust_track_tmp.track_id = Track_to_start[i][L-1].temp_track_id;
|
||||
trust_track_tmp.point_id = Track_to_start[i][L-1].point_id;
|
||||
|
||||
@@ -395,16 +395,16 @@ dis ≥ |v_r,head| · ΔT 同上,用航迹头的多普勒约
|
||||
|
||||
| 通道 | 条件(满足其一即消亡) |
|
||||
|---|---|
|
||||
| TWS 普通航迹 | `Track_Mode==0` 且 `primary_target_flag==0` 且 **`Quality < track_die_quality`(配置项 0.3)** —— V1.5.8(782bff5)起改按航迹质量,不再看外推圈数 |
|
||||
| TWS 普通航迹 | `Track_Mode==0` 且 `primary_target_flag==0` 且(`track_die_quality_enable==1` → **`Quality < track_die_quality`(配置项 0.3)**;`==0` → **`Extrapolate_round > track_die_round`(配置项 6)**) |
|
||||
| TWS 重点航迹 | `Track_Mode==0` 且 `primary_target_flag==1` 且 `Extrapolate_round > track_die_round_pramary`(配置项 10) |
|
||||
| TAS 航迹 | `Track_Mode==1` 且 `Extrapolate_round > track_die_round_tas`(配置项;样例相扫 20 / 机扫需配 96) |
|
||||
| 手动删除 | `manual_delete_flag == 1`(各通道单独判定,置位即消亡,由外部删除接口 `track_delete` 置位) |
|
||||
|
||||
轮数类判据都改为 `die_flag` 组合("或"关系),且比较符由 `>=` 改为 `>`(50e0b5c):即允许的外推圈数比旧版各多 1 圈,且**重点航迹与普通航迹走不同门限**。由于每圈未关联只自增 1,判据为 `>` 时实际是"连续 N+1 圈没有实点关联"才消亡:重点航迹 11 圈、TAS 相扫 21 圈(阈值于 5d105d2 由 10 提高到 20)/ 机扫 97 圈。
|
||||
|
||||
> **普通 TWS 航迹的消亡时长(V1.5.8)**:改按质量后不再有固定圈数,存活时长由质量衰减速度决定——未关联期间按 `Unupdated_time` 的二次函数加速衰减(见 9.9 / README 9.11),`Quality` 跌破 `track_die_quality`(配置项 0.3)即消亡;`track_die_round`(配置项 6)已不再被引用。
|
||||
> **普通 TWS 航迹的消亡判据可配置(V1.5.11,2c0d2c2)**:`track_die_quality_enable==1`(默认)时按质量——存活时长由质量衰减速度决定(未关联期间按 `Unupdated_time` 的二次函数加速衰减,见 README 9.11),`Quality` 跌破 `track_die_quality`(配置项 0.3)即消亡;`==0` 时改按圈数——`Extrapolate_round > track_die_round`(配置项 6)即消亡,与 1.5.8 之前语义一致(该分支曾误写为 `<`,4449312 修正)。8 份配置当前均为 1,`track_die_round` 作为备用值仍须填写(X1024 两份 5、Ku2304 25、其余 6)。
|
||||
|
||||
> `primary_target_flag`(重点目标标记)由外部接口 `Data_Process::primary_target_add / primary_target_cancel` 按批号置 1 / 清 0(`data_process.cpp`);新起批航迹在 `track_init.cpp` 中以 `Trust_Track trust_track_tmp = {}` 零初始化,故恒为 0。该标记在 TWS 上决定走「质量消亡(普通)」还是「10 圈消亡(重点)」。
|
||||
> `primary_target_flag`(重点目标标记)由外部接口 `Data_Process::primary_target_add / primary_target_cancel` 按批号置 1 / 清 0(`data_process.cpp`);新起批航迹在 `track_init.cpp` 中以 `Trust_Track trust_track_tmp = {}` 零初始化,故恒为 0。该标记在 TWS 上决定走「质量消亡(普通)」还是「圈数消亡(重点)」。
|
||||
|
||||
消亡时把批号写入消亡输出数组并从航迹表删除;**临时航迹消亡不对外输出**(起批失败的中间态对宿主不可见)。
|
||||
|
||||
@@ -495,42 +495,43 @@ flowchart TD
|
||||
E --> F["输出 TrackingBeam"]
|
||||
```
|
||||
|
||||
**入队条件**(只支持手动转 TAS):
|
||||
**入队条件**(手动或自动,V1.5.11):
|
||||
|
||||
- 该航迹 `manual_tracking_flag == 1`(由外部 `tracking_start` 置位);
|
||||
- 该航迹满足**手动或自动**入队条件(V1.5.11):`manual_tracking_flag == 1`(由外部 `tracking_start` 置位)**或** `auto_tas_enable==1` 且合速度落在 `[auto_tas_velocity_min, auto_tas_velocity_max]`(`tas_auto_start()` 判定,距离/高度形参不参与);
|
||||
- 航迹当前 `Track_Mode == 0`(还不是 TAS);
|
||||
- 队列未满(相扫最多 4 个 / 机扫最多 1 个);
|
||||
- 队列未满(遍历/容量判定以配置项 `tas_track_num_max` 为界:样例相扫 4 / 机扫与单跟踪 1,上限 `RDP_TAS_QUEUE_CAPACITY`=30);
|
||||
- 不在 TAS 禁止区(距离-方位矩形)。
|
||||
|
||||
入队动作:写 `Track_Index`(队列内部键,仍是批号)、标记非空、`last_track_time = T_track`、**航迹 Track_Mode 置 1**,并**立即输出一次该航迹更新**(通知宿主跟踪状态变化;V1.5.9 起该行按常规关联输出的完整字段填充,见 README 9.10 与 CHANGELOG `[1.5.9]` 的 eb9f30c)。
|
||||
入队动作:写 `Track_Index`(队列内部键,仍是批号)、标记非空、`last_track_time = T_track`、**航迹 Track_Mode 置 1**,并**立即输出一次该航迹更新**(通知宿主跟踪状态变化;V1.5.9 起该行按常规关联输出的完整字段填充,V1.5.10 起坐标不再叠加 `radar_system_delay`,见 README 9.10 与 CHANGELOG)。
|
||||
|
||||
**出队条件**:队列中的批号在航迹表中已不存在,或不再处于"手动 + TAS"状态 → 清空该队列项。
|
||||
**出队条件**:队列中的批号在航迹表中已不存在,或「`Track_Mode==1` 但 `manual_untracking_flag==1`」(用户已取消跟踪)→ 清空该队列项;**目标仍存在时出队会置 `Track_Mode=0` 并输出一整套完整航迹更新行**(V1.5.10;用户 `tracking_stop` 后走此路径,宿主据此刷新界面/回放状态;目标已消亡则只清队列项)。V1.5.11 起在队判定由 `manual_tracking_flag==1` 改为 `manual_untracking_flag!=1`,避免自动 TAS 目标(无手动标志)被误判为已取消而立即出队。
|
||||
|
||||
> 自动开启/退出 TAS 的逻辑(按距离/速度/高度阈值)已全部注释停用,**只支持手动**。
|
||||
> **自动/手动 TAS 的差异(V1.5.11)**:自动入口只按**合速度区间**筛选(`auto_tas_enable=1` 时生效,样例仅 Ku2304 启用 700~900 m/s),不检查距离/高度、也没有自动退出条件;手动入口只由 `tracking_start` 置 `manual_tracking_flag`。两者入队后走同一套关联/波束逻辑,退出途径都是 `tracking_stop` 或目标消亡。
|
||||
>
|
||||
> **指纹与批号的分工(V1.5.9)**:队列、内部关联与出队仍以 `Track_Index` 为键;只有跨 DLL 边界的 `DataRev.TAS_track_index`(输入)与 `TrackingBeam.TAS_track_index`(输出)改用 **16 bit 航迹指纹** `Track_fingerprint`(起批时按末点特征生成,见 README 9.12)。
|
||||
> **指纹与批号的分工(V1.5.9 / V1.5.10 / V1.5.11)**:队列、内部关联与出队仍以 `Track_Index` 为键;只有跨 DLL 边界的 `DataRev.TAS_track_index`(输入)与 `TrackingBeam.TAS_track_index`(输出)改用 **16 bit 航迹指纹** `Track_fingerprint`(V1.5.11 起按临时航迹首点的 `vr`/`RCS`/`CPI_time` 生成,不再含距离/方位,见 README 9.12)。手动取消跟踪由 `tracking_stop` 置 `manual_untracking_flag=1`,TAS 输入按指纹匹配航迹时要求该标志为 0,避免刚取消又被数据帧重新置为 TAS(V1.5.10)。
|
||||
|
||||
### 8.2 波束输出调度(关键)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["遍历 TAS 队列"] --> B["按队列项 Index(Track_Index,内部键)在航迹表中找到该航迹"]
|
||||
B --> C{"距上次波束输出 > data_rate_tas 秒<br/>且 CPI 时间早于已选中的最早 CPI?"}
|
||||
A["遍历 TAS 队列(上界 tas_track_num_max)"] --> B["按队列项 Index(Track_Index,内部键)在航迹表中找到该航迹"]
|
||||
B --> C{"距上次波束输出 >= data_rate_tas 秒<br/>且 CPI 时间早于已选中的最早 CPI?"}
|
||||
C -- 否 --> A
|
||||
C -- 是 --> D["选中该目标(CPI 时间最早者)"]
|
||||
D --> E["位置外推:ΔT = (最新时间戳 − CPI 时间)/1000<br/>x + vx·ΔT, y + vy·ΔT"]
|
||||
E --> F["Range = √(xp²+yp²),Azi = atan2(yp,xp)<br/>Elev = asin(Height / Range)"]
|
||||
E --> F["Range = √(xp²+yp²),Azi = atan2(yp,xp)<br/>Elev = max(asin(Height / Range), tas_beam_pitch_min)"]
|
||||
F --> G["open_flag=1, type=default_track_beam_type, TAS_track_index=航迹指纹<br/>更新该目标 last_track_time = 最新时间戳"]
|
||||
C -.->|"无任何合格目标"| H["open_flag = 0(其余字段保持旧值)"]
|
||||
```
|
||||
|
||||
**要点**
|
||||
|
||||
- 门控只用一个条件(e0bf227 修正):目标「距上次波束输出的时间」(`latest_timestamp − last_track_time`)要大于配置项 `data_rate_tas` 秒(单位是秒,由 TOML 配置文件提供、加载器校验须 > 0)→ 保证 TAS 目标的数据率**不随 Beam_Ctrl 的调用频率变化**;修正前还要求「航迹时间与最新时间戳之差」也大于该门限,与"取最早 CPI 目标"的语义冲突,会漏掉本应输出的波束;
|
||||
- 门控只用一个条件(e0bf227 修正):目标「距上次波束输出的时间」(`latest_timestamp − last_track_time`)要**大于等于**配置项 `data_rate_tas` 秒(单位是秒,由 TOML 配置文件提供、加载器校验须 ≥ 0;**0 表示不做 DLL 内部限速、输出间隔由宿主 `Beam_Ctrl` 调用频率决定**)→ 非 0 时保证 TAS 目标的数据率**不随 Beam_Ctrl 的调用频率变化**;修正前还要求「航迹时间与最新时间戳之差」也大于该门限,与"取最早 CPI 目标"的语义冲突,会漏掉本应输出的波束;
|
||||
- 多目标时选**队列中 CPI 时间最早**的目标(同时要求其 CPI 时间早于当前已选者),等价于"按最久未更新者优先"的轮转;
|
||||
- 选中后才按该目标的 CPI 时间算外推步长 `ΔT = (最新时间戳 − CPI 时间)/1000`;
|
||||
- 原来的"每次调用整队循环移位"已停用;
|
||||
- 俯仰用航迹高度直接算(叠加雷达平台高度的处理只影响对外输出的 z,不参与波束俯仰)。
|
||||
- 俯仰用航迹高度直接算(叠加雷达平台高度的处理只影响对外输出的 z,不参与波束俯仰),**并取 `max(计算值, tas_beam_pitch_min)` 作为下限**(V1.5.10,避免低仰角波束打到地面;该配置项无范围校验,`-90` 等价不限制);
|
||||
- 队列遍历上界为配置项 `tas_track_num_max`(V1.5.10,原为编译期 `RDP_TAS_QUEUE_CAPACITY`=30),单跟踪模式(=1)下只检查 0 号槽位,避免取到残留项误发波束。
|
||||
|
||||
---
|
||||
|
||||
@@ -545,9 +546,10 @@ flowchart TD
|
||||
| `[radar_params] radar_work_mode` | 0 | 凝聚是否带速度维约束(当前唯一生效点;航迹起始的远近程分支取值相同,属死分支;TWS 外推已改为固定 `data_rate_tws`,不再按模式三选一) |
|
||||
| `[radar_params] scan_mode` | 0(**机扫配 1**) | **扫描模式 0 相扫 / 1 机扫**(必填,加载器校验仅允许 0/1):决定 `data_preprocess()` 的 TWS 判圈逻辑(0 用波位号比较、1 用波位号==0),替代原编译期 `PHASE_SCANNING`/`MECHANICAL_SCANNING` 分支;机扫/相扫已合并为同一份构建,同一份 DLL 通过该配置切换扫描模式 |
|
||||
| `[radar_params] freq_0_GHz` | 9.2 | 盲速计算基准频率(原 `FREQ0`) |
|
||||
| `[radar_params] freq_step_GHz` | 0.02 | **频点步进(GHz,校验 >0,V1.5.10)**:盲速频点 = `freq_0_GHz + freq_ind × freq_step_GHz`(原硬编码 0.02;Ku2304 配 0.05) |
|
||||
| `[radar_params] radar_height` / `radar_system_delay` | 0 / 0 | 输出 z 叠加平台高度 / 输出位置系统延迟补偿(原 `Height` / `Sys_delay`) |
|
||||
| `[radar_params] data_rate_tws` | 3 | TWS 未关联航迹外推步长(秒;原按 `work_mode` 在 `DATA_RATE_SHORT/MIDDLE/FAR` 中三选一,现统一单字段) |
|
||||
| `[radar_params] data_rate_tas` | 1 | TAS 波束输出间隔门控(秒,须 > 0) |
|
||||
| `[radar_params] data_rate_tas` | 1 | TAS 波束输出间隔门控(秒,≥0;**0=不做 DLL 内部限速,由宿主调用频率决定**) |
|
||||
| `[cohesion] point_cohesion_range/velocity/azimuth` | 80 / 2 / 6 | 凝聚门限:距离 m / 速度 m/s / 方位 °(原 `DOT_COH_*`) |
|
||||
| `[cohesion] point_cohesion_range_min/max` | 100 / 100000 | 有效量程(凝聚后过滤;原 `R_MIN/R_MAX`) |
|
||||
| `[track_associate] sigma_range/azimuth/pitch/velocity` | 10 / 0.02 / 0.2 / 2.0 | 量测噪声、EKF 的 R、转换量测协方差(原 `SIGMA_*`) |
|
||||
@@ -559,17 +561,21 @@ flowchart TD
|
||||
| `[track_init] track_init_point_num_min` | 3 | 起批所需点数(校验 3~9;原 `RadarPara.track_start_point_num`) |
|
||||
| `[track_init] track_init_quality_L3~L7` | 0.7 / 0.6 / 0.5 / 0.4 / 0.3 | 起批最低质量(按临时航迹长度 3/4/5/6/≥7;原 `TRACK_START_QUALITY_L3~L7`) |
|
||||
| `[track_init] track_init_velocity_min/max` | 1 / 50 | 航迹头-点关联的速度区间(原 `V_MIN/V_MAX`) |
|
||||
| `[track_die] track_die_round` | 6 | **已不被引用**:V1.5.8 起 TWS 普通航迹改按质量消亡(保留备用;原 `TRACK_DIE_ROUND`) |
|
||||
| `[track_die] track_die_round` | 6 | 普通 TWS 圈数消亡门限(仅 `track_die_quality_enable=0` 时生效;X1024 两份配 5、Ku2304 配 25;原 `TRACK_DIE_ROUND`) |
|
||||
| `[track_die] track_die_round_pramary` | 10 | TWS 重点航迹(`primary_target_flag==1`)消亡轮数(原 `TRACK_DIE_ROUND_PRIMARY`) |
|
||||
| `[track_die] track_die_round_tas` | 20(**机扫配 96**) | TAS 航迹消亡轮数(判据 `Extrapolate_round > 该值`;原 `TRACK_DIE_ROUND_TAS`) |
|
||||
| `[track_die] track_die_quality_enable` | 1 | **消批方式开关(V1.5.11)**:1=非重点 TWS 按质量消批(`Quality < track_die_quality`);0=按圈数消批(`Extrapolate_round > track_die_round`);校验仅允许 0/1 |
|
||||
| `[track_die] track_die_quality` | 0.3 | TWS 普通航迹质量消亡门限(`Quality < 该值`;原 `TRACK_DIE_QUALITY`) |
|
||||
| `[track_quality] track_quality_*` | 100 / 0 / 0.5 / 0.3 / 0.2 / 0.8 / −0.0008 / −0.0025 | 质量折算上限/下限、三项权重(D/SNR/LEN)、平滑系数、衰减系数 O2/O1(原 `TRACK_QUALITY_*`) |
|
||||
| `[track_index] track_index_max` | 500 | 航迹号上限(原 `MAX_TRACK_INDEX`,内部航迹号表按该值分配) |
|
||||
| `[beam_control] default_track_beam_type` / `tas_track_num_max` | 1 / 4(**机扫配 1**) | 跟踪波束类型(原硬编码 1)/ 最大同时跟踪 TAS 目标数(原 `MAX_TAS_NUM`) |
|
||||
| `[beam_control] default_track_beam_type` / `tas_track_num_max` | 1 / 4(**机扫配 1**) | 跟踪波束类型(原硬编码 1)/ 最大同时跟踪 TAS 目标数(原 `MAX_TAS_NUM`);`tas_track_num_max` 同时是队列遍历上界(V1.5.10) |
|
||||
| `[beam_control] tas_beam_pitch_min` | 3.0 | **TAS 波束俯仰下限(°,V1.5.10)**:输出俯仰取 `max(计算俯仰, 该值)`,避免波束打到地面;X256_MS_4S / X256_PS_* 配 5.4、Ku2304 配 −90(不限制);加载器未做范围校验 |
|
||||
| `[beam_control] auto_tas_enable` | 0(**Ku2304 配 1**) | **自动 TAS 使能(V1.5.11)**:0=仅手动转跟踪;1=合速度在 `[auto_tas_velocity_min, auto_tas_velocity_max]` 内的航迹自动入队 |
|
||||
| `[beam_control] auto_tas_velocity_min/max` | 0 / 0(**Ku2304 配 700/900**) | 自动 TAS 的合速度区间(m/s);加载器只校验 max≥min,min≥0 校验被注释停用 |
|
||||
| `[singer_model] model_1/2/3_Q_fast/slow` | 0.000001 / 0.01 / 1.0 | 三个 Singer 模型的过程噪声强度(分档见 5.2;原 `RadarPara.Model*_Q_*`) |
|
||||
| `[track_init_prohibite_area]` / `[tas_prohibite_area]` | `*_num = 0` + 空数组 | 起批屏蔽区 / TAS 禁止区(0~30 组,4 个数组长度必须等于 `*_num`;原 `RadarPara.track_prohibite_area_*` / `TAS_prohibite_area_*`) |
|
||||
|
||||
> 旧 `RadarPara` 中实现未使用的字段(`R_TAS_max/min`、`V_TAS_max/min`、`TAS_Height_1~5`、`cfar_th`、`north_angle`、`Beam_num`)未进入 `RDP_parameter`,TAS 自动开启/退出逻辑仍保持停用。
|
||||
> 旧 `RadarPara` 中实现未使用的字段(`R_TAS_max/min`、`V_TAS_max/min`、`TAS_Height_1~5`、`cfar_th`、`north_angle`、`Beam_num`)未进入 `RDP_parameter`。其中与 TAS 自动开启/退出相关的老字段未沿用:自动**退出**仍停用,自动**开启**自 V1.5.11 起改用 `[beam_control] auto_tas_enable` + `auto_tas_velocity_min/max`(仅速度区间)。
|
||||
|
||||
### 9.2 编译期常量(`parameters.h` 保留)
|
||||
|
||||
@@ -623,16 +629,28 @@ flowchart TD
|
||||
- **归一化幅度 / 速度维 FFT 点数(e8c56f9 新增,输入侧已打通)**:`DataRev` 新增 `amp_asv`(归一化幅度 dB)、`prn_fftn`(速度维 FFT 点数),`Track`/内部 `PointRecv`/`Trust_Track` 也新增同名成对字段;`data_preprocess()` 现已在 TWS 与 TAS 两条分支都把这两个字段搬入 `PointRecv`(并随 `RdpRecPoint` 落库),因此 `track_asso.cpp` 写入航迹并在 TWS 输出行写回的 `amp_asv_point` / `prn_fftn_point` 有有效数据来源;**TAS 的关联与输出路径(`track_asso_tas.cpp`)仍未涉及这两个字段**,TAS 输出行中它们保持宿主原值。
|
||||
- **版本号与记录标识(b227ae1 / c3c7e66 / 5cb67cc)**:`parameters.h` 新增版本宏并拼装为 `VERSION_STRING`(机扫/相扫合并后为 `V1.5.9.GENERIC`;历史上 b227ae1 时为 `V1.5.8.PS` / `V1.5.8.MS`),实例创建后可由基类公开成员 `version_info` 读取;`Data_Process` 新增 `point_id` / `frame_id` / `circle_id` 自增计数(`circle_id` 在 TWS 每判满一圈、TAS 每帧末自增),`PointRecv`/`Temp_track`/`Trust_Track` 新增对应的标识字段,记录功能据此把「输入点迹 → 凝聚点迹 → 临时航迹 → 可靠航迹 → 关联信息」串成同一条链路;可靠航迹与关联信息的记录点为 TWS/TAS 双通道(关联信息以 `Asso_Info::tas_flag` 区分来源)。
|
||||
|
||||
**航迹指纹(V1.5.9,0f3da99)**
|
||||
**航迹指纹(V1.5.9,V1.5.11 调整口径)**
|
||||
|
||||
- 起批时对**末点**计算 `Track_fingerprint`(16 bit):`r`/`azi`/`vr`/`RCS`/`CPI_time` 分别量化到 0.01 m / 0.001° / 0.01 m·s⁻¹ / 0.1 dBsm / 1 ms,经 splitmix64 逐个混合后折叠为 16 bit(`track_init.cpp::computeFingerprint()`);
|
||||
- 起批时计算 `Track_fingerprint`(16 bit):**V1.5.11 起取临时航迹首点,且距离/方位固定传 0、不再参与**,只用量化的 `vr`(0.01 m/s)/`RCS`(0.1 dBsm)/`CPI_time`(ms),经 splitmix64 逐个混合后折叠为 16 bit(`track_init.cpp::computeFingerprint()`);改口径是为避免 r/azi 被外部修正值改写导致同一目标指纹不一致;
|
||||
- TAS 输入帧的 `DataRev::TAS_track_index` 与 TAS 波束输出的 `TrackingBeam::TAS_track_index` 均改为**指纹**(字段名未变);`track_process(model=3)` 按指纹定位航迹,队列与内部关联仍用 `Track_Index`;
|
||||
- 16 bit 指纹存在碰撞可能,且同一目标消亡后重新起批通常得到不同指纹;记录实体 `RdpRecTrustTrack` 尚未包含该字段(详见 README 9.12、11.2)。
|
||||
- 16 bit 指纹存在碰撞可能(V1.5.11 起碰撞面更大:同帧起批且 vr/RCS/CPI 相同的航迹必得同一指纹),且同一目标消亡后重新起批通常得到不同指纹;记录实体 `RdpRecTrustTrack` 尚未包含该字段(详见 README 9.12、11.2)。
|
||||
|
||||
**自动 TAS(V1.5.11)**
|
||||
|
||||
- 在 `Beam_Ctrl → tas_target_add()` 中按航迹合速度判定:`auto_tas_enable==1` 且 `auto_tas_velocity_min ≤ v ≤ auto_tas_velocity_max` 即自动入队(`tas_auto_start()`),不检查距离/高度、无自动退出条件;
|
||||
- 样例仅 `Ku2304_PS` 启用(700~900 m/s),其余 7 份配置 `auto_tas_enable=0`(纯手动);
|
||||
- 出队判定于 V1.5.11 改为 `Track_Mode==1 && manual_untracking_flag!=1`,使自动目标(无 `manual_tracking_flag`)不会被误判为已取消而出队。
|
||||
|
||||
**手动 TAS 与用户操作日志(V1.5.10)**
|
||||
|
||||
- `tracking_start`:置 `manual_tracking_flag=1`、清 `manual_untracking_flag`;`tracking_stop`:清前者、置 `manual_untracking_flag=1`,**不立即清 `Track_Mode`**,下一次 `Beam_Ctrl` 出队时才置 0 并输出完整航迹更新行;
|
||||
- `track_process(model=3)` 按指纹匹配航迹时要求 `manual_untracking_flag==0`,因此刚被取消的目标不会被 TAS 数据帧自动重新置为跟踪;
|
||||
- 清空、删除、重点目标增删、转/停 TAS 与 TAS 队列移除均输出 `RDP_LOG_INFO`(含批号),随 spdlog 双写进入日志文件。
|
||||
|
||||
**未启用**
|
||||
|
||||
- 引导跟踪(direct tracking)、手动打跟踪波束接口为空实现;
|
||||
- TAS 自动开启/退出逻辑停用,只支持手动转/停 TAS;
|
||||
- TAS **自动退出**逻辑(`tas_auto_end`)停用;自动**开启**自 V1.5.11 起可用(`auto_tas_enable`,仅按速度区间,样例仅 Ku2304 启用),手动转/停 TAS 仍保留;
|
||||
- `tracking_stop` 后,队列项要等到下一次 `Beam_Ctrl` 才真正移除。
|
||||
|
||||
---
|
||||
|
||||
@@ -454,7 +454,7 @@ Kalman.kalman_filter_init_3dots(Z0, Z1, Z2, T1, T2, X, P); // 6 维 [x,vx,ax,y
|
||||
| `T_track` / `GNSS_time` / `Height` | 取**末点**的对应值(`CPI_time` 字段) |
|
||||
| `Amplitude / snr_point / RCS / pitch_num / speed_dim / range_dim` | 末点透传 |
|
||||
| `track_id / point_id / circle_id` | 取末点的 `temp_track_id / point_id / circle_id`(记录链路标识,b227ae1 新增) |
|
||||
| `Track_fingerprint` | **航迹指纹(V1.5.9,0f3da99)**:`computeFingerprint(末点.r, 末点.azi, 末点.vr, 末点.RCS, 末点.CPI_time)`,16 bit(量化 0.01 m / 0.001° / 0.01 m·s⁻¹ / 0.1 dBsm / 1 ms → splitmix64 混合 → 折叠 16 bit),TAS 波束与 TAS 输入均以它定位航迹(见 README 9.12) |
|
||||
| `Track_fingerprint` | **航迹指纹(V1.5.9,V1.5.11 调整口径)**:`computeFingerprint(0, 0, 首点.vr, 首点.RCS, 首点.CPI_time)`——**取样点为临时航迹首点(`Track_to_start[i][0]`),距离/方位固定传 0、不参与**(避免外部修正 r/azi 导致同一目标指纹不一致);16 bit(`vr` 量化 0.01 m·s⁻¹、`RCS` 0.1 dBsm、CPI 时间 ms → splitmix64 混合 → 折叠 16 bit),TAS 波束与 TAS 输入均以它定位航迹(见 README 9.12) |
|
||||
| `point_flag = 1` | 实点 |
|
||||
| `Track_Mode = 0` | TWS |
|
||||
| `Target_Type = 0` | 未确认目标(`UNCONF_TARGET` 宏已删除,直接写 0) |
|
||||
|
||||
Reference in New Issue
Block a user