更新:1、修复全部C4819 / C4018 / C4244警告;

2、更新项目文档;
This commit is contained in:
2026-09-07 14:29:24 +08:00
parent f438ac53d9
commit 5f820987a9
37 changed files with 304 additions and 272 deletions
+23 -9
View File
@@ -70,6 +70,8 @@
├── CMakeLists.txt # CMake 构建脚本(扫描模式切换、导出宏、输出目录)
├── BUG_REPORT.md # 全量逻辑 BUG 分析报告(P0~P3,37 项)
├── BUG_FIX_REPORT.md # BUG 修复报告(修复明细 + 编译验证结果)
├── CHANGELOG.md # 变更日志(Keep a Changelog 格式,按 git 提交记录维护)
├── requirements.md # TAS 波束控制逻辑修改说明(固定数据率调度设计)
├── .vscode/ # VS Code 工程配置
│ ├── settings.json # cmake.generator=NMake、MSVC2013 x86 环境变量、compile_commands
│ ├── cmake-variants.yaml # X256_PS / X256_MS × Release / Debug 变体
@@ -159,6 +161,12 @@ cmake --build build/X256_PS
仓库 build/X256_PS/bin/ 内还带有 **rdp_playback.exe**(回放测试工具,依赖 Qt5Core.dll、sqlite3.dll,配置样例 RadarConfigParam.ini,可回放 .db 记录的点迹数据验证 DLL 输出),不在本仓库源码范围内。
### 4.5 编译警告处理
- 源码文件统一使用 **带 BOM 的 UTF-8** 编码保存,兼容 MSVC 2013(该版本不支持 `/utf-8`),消除 C4819。
- `CMakeLists.txt` 对 MSVC 19.0 及以上版本自动追加 `/utf-8` 编译选项;使用 MSVC 2013 构建时请保持源码为 UTF-8 with BOM。
- 修复了 `/W3` 下全部 C4018signed/unsigned 不匹配)与 C4244(类型转换可能丢失数据)警告:循环变量按需改为 `size_t`,窄化转换改为 `static_cast` 显式转换,不改变原有计算逻辑。
---
## 5. 总体架构
@@ -238,7 +246,7 @@ classDiagram
| Track_Asso_Tas | TAS 航迹关联(只处理指定批号 tas_track_idx,门限与 TWS 略有差异) |
| Track_Init | 逻辑法航迹起始:航迹头维护、点-头关联(两点)、点-临时航迹关联(三点及以上)、起批(三点卡尔曼初始化)、屏蔽区判断、临时航迹消亡 |
| Track_Die / Track_Die_Tas | 可靠航迹消亡:外推轮数超限或手动删除标志置位时输出消亡批号并删除 |
| TAS_Ctrl | TAS 波束控制:手动目标入队(tas_target_add)、失效目标出队(tas_target_del)、跟踪波束预测输出(tas_beam_output,含数据率门控)、队列轮转 |
| TAS_Ctrl | TAS 波束控制:手动目标入队(tas_target_add)、失效目标出队(tas_target_del)、跟踪波束预测输出(tas_beam_output数据率门控 + 队内选择最早 CPI 目标)、调度时刻记录(last_track_time |
| Track_Ind_Mangement | 航迹号 1~500 的顺序分配与回绕复用 |
| kalman | 两点/三点滤波初始化、线性卡尔曼预测/滤波、EKF(3 维量测含多普勒)、马氏统计距离 d、盲速 Bind_speed |
| coor_trans | 极坐标 ↔ 直角坐标转换 |
@@ -355,7 +363,7 @@ flowchart TD
D --> E["未关联 → 按 latest_timestamp 外推(ΔT≤0 跳过)"]
E --> F["track_die_tas: TAS 超时/手动删除 → 消亡输出"]
F --> G["输出该批号航迹(point_type=1"]
G --> H["Beam_Ctrl: 队列轮转 + 预测波束输出"]
G --> H["Beam_Ctrl: 数据率门控 + 队内最早 CPI 目标 + 预测波束输出"]
```
### 8.3 航迹起始流程(逻辑法)
@@ -646,7 +654,7 @@ $$
$$
v_{bind}=\frac{150000}{f_{GHz}\cdot PRI_{µs}}\quad(\mathrm{m/s}),\qquad
f_{GHz}=16.8+0.02\cdot f_{ind}
f_{GHz}=9.2+0.02\cdot f_{ind}
$$
(PRI ≤ 0 或 f ≤ 0 时返回安全值 1.0,接口约定 PRI 不允许为 0。)
@@ -721,16 +729,16 @@ $$
### 9.10 TAS 波束控制(tas_ctrl.cpp
- **入队条件**(仅手动):manual_tracking_flag==1 且 Track_Mode==0 且队列未满(MAX_TAS_NUM,相扫 4 / 机扫 1)且不在 TAS 禁止区内。入队即置 Track_Mode=1 并输出一次航迹更新。
- **入队条件**(仅手动):manual_tracking_flag==1 且 Track_Mode==0 且队列未满(MAX_TAS_NUM,相扫 4 / 机扫 1)且不在 TAS 禁止区内。入队即置 Track_Mode=1、以航迹时间初始化 last_track_time并输出一次航迹更新。
- **出队**:队列中目标在航迹表中不存在、或不再处于手动 TAS 状态时清除。(自动转 TAS / 自动退出的 tas_auto_start/tas_auto_end 逻辑全部注释停用——只支持手动。)
- **波束输出**取队首目标,先用**数据率门控**航迹时间 T_track 与当前最新时间戳 latest_timestamp 的差值须大于 `1 / DATA_RATE_TAS`才输出(保证 TAS 目标数据率不随波束时间变化;DATA_RATE_TAS ≤ 0 时不做门控,按原逻辑输出)。门控通过后,用其状态外推到 latest_timestamp
- **波束输出**在 TAS 队列内遍历,选择满足**数据率门控**的目标——目标距上次波束输出(`last_track_time`)的时间、以及航迹时间 T_track 与最新时间戳 latest_timestamp 的差值,均须大于 `1 / DATA_RATE_TAS`(使用运行时参数 Work_Parameter.DATA_RATE_TAS,需为 >0 的有效值),保证 TAS 目标数据率不随波束时间(Beam_Ctrl 调用频率)变化;多个候选中取 CPI 时间最早者,用其状态外推到 latest_timestamp
$$
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=1, Range=rp, Azi=θp(°), Elev=asin(h/rp)(°), TAS_track_index};队空、目标不在航迹表或数据率门控未通过时 open_flag=0。每次 Beam_Ctrl 末尾做队列轮转(实现 TAS_QUEUE_LENGTH 深度的循环跟踪)
输出 TrackingBeam{open_flag=1, type=1, Range=rp, Azi=θp(°), Elev=asin(h/rp)(°), TAS_track_index};队空、目标不在航迹表或数据率门控未通过时 open_flag=0。输出后更新该目标队列项的 last_track_time;原每次 Beam_Ctrl 末尾的整队循环移位(队列轮转)已停用,改为按数据率门控在队列内轮换目标
- tas_ctrl_process 入口强制 *Trust_track_num_Output=0 并在写入前检查容量,防止输出数组越界(BUG-09 修复)。
---
@@ -741,7 +749,7 @@ $$
| 宏 | 相扫 PHASE_SCANNING | 机扫 MECHANICAL_SCANNING | 含义 |
|---|---|---|---|
| DATA_RATE_TAS | 0.3 | 0.0625 | TAS 数据率(1/s)。**TAS 波束输出门控已改用运行时参数 RadarPara.DATA_RATE_TAS(见 10.2,不再使用该宏**;宏目前仅被未加入 CMake 的 track_asso_direct_tracking.cpp 引用 |
| DATA_RATE_TAS | 已停用(原 0.3 | 已停用(原 0.0625 | 编译期宏已注释停用;TAS 数据率统一由运行时参数 RadarPara.DATA_RATE_TAS 提供(见 10.2 |
| SIGMA_R / SIGMA_A / SIGMA_E / SIGMA_V | 10.0 / 0.02 / 0.2 / 2.0(两体制相同) | 同左 | 量测误差:距离 m / 方位 rad / 俯仰 rad / 速度 m/s |
| DOT_COH_RANGE / DOT_COH_V / DOT_COH_AZI | 80 / 2 / 6 | 同左 | 凝聚门限:距离 m / 速度 m/s / 方位 ° |
| MAX_BEAM_NUM | 100 | 同左 | 最大波位数 |
@@ -754,7 +762,7 @@ $$
| ASSO_THORD | 3 | 同左 | 关联波门 |
| H_F_WIN_LEN | 3 | 同左 | 高度平滑窗长基数(实际 +2/+3/+4/+6 |
| TAS_QUEUE_LENGTH / MAX_TAS_NUM | 4 / 4 | 1 / 1 | TAS 队列长度 / 最大 TAS 目标数 |
| FREQ0~FREQ20 | 16.8 GHz | 同左 | 各频点频率 |
| FREQ0 | 9.2 GHz | 同左 | 载波频点(原 FREQ0~FREQ20 一组宏已精简为单个 FREQ0e729c5b 起由 16.8 GHz 改为 9.2 GHz |
### 10.2 运行时参数(RadarPara
@@ -771,7 +779,7 @@ $$
| north_angle | 北偏角 | 保留 |
| V_MAX / V_MIN | 目标速度上下限(m/s) | 航迹头关联速度区间门限 |
| DATA_RATE_SHORT / MIDDLE / FAR | 三模式数据率(s | TWS 外推步长 |
| DATA_RATE_TAS | TAS 模式数据率(1/s | 由调用者经 track_process_parameters_initial 输入;TAS 波束输出门控阈值 1/DATA_RATE_TAS 秒,≤0 时不做门控 |
| DATA_RATE_TAS | TAS 模式数据率(1/s | 由调用者经 track_process_parameters_initial 输入(须为 >0 的有效值);TAS 波束输出门控阈值 1/DATA_RATE_TAS 秒,引导跟踪外推同样使用该运行时参数 |
| track_start_point_num | 起批点数 | 校验范围 3~9 |
| track_start_threshold / track_asso_threshold / track_asso_threshold_tas | 起批/关联波门 | **⚠ 声明但当前实现未使用**,实际门限为宏 TRACK_START_THRESHOLD / ASSO_THORD |
| Model1/2/3_Q_fast/slow | 三个 Singer 模型过程噪声强度 | Model1_Q_fast 未使用;分档规则见 9.5.1 |
@@ -819,6 +827,10 @@ $$
| 提交 | 内容 |
|---|---|
| f438ac5 | 优化 TAS 调度:波束输出改为在队列内选择满足数据率门控且 CPI 时间最早的目标,停用整队循环移位;DATA_RATE_TAS 编译期宏停用、统一使用运行时参数;#pragma message 提示扫描体制 |
| e729c5b | 频点宏精简为 FREQ0 = 9.2 GHz(原 FREQ0~FREQ20 均为 16.8 GHz |
| b3e2f52 | TAS 波束控制改为按固定数据率调度,RadarPara 新增 DATA_RATE_TAS 运行时参数;新增 CHANGELOG.md、requirements.mdREADME 补充相应说明 |
| 93d3924 | 新增 README.md(本文档);移除 requirements.md;调整 .gitignore |
| 3500652 | 去掉 1 km 以内航迹起批的 20 dB 信噪比门限 |
| 01d28e0 | 改用 VS Code + CMake 重新编译(编译器不变);修复若干逻辑 BUG(见 BUG_FIX_REPORT.md |
| 0cb31b4 | 删除不必要文件;输入点迹/输出航迹的 CPI 与 GNSS 时间改为 64 位整型;修复 TAS 外推时间差可能无效的问题 |
@@ -841,8 +853,10 @@ $$
| 文档 | 内容 |
|---|---|
| CHANGELOG.md | 变更日志(Keep a Changelog 格式,按 git 提交记录维护) |
| BUG_REPORT.md | 全量逻辑 BUG 分析(P0~P3 共 37 项,含位置、说明、建议、处置结论) |
| BUG_FIX_REPORT.md | 本次修复明细、修复状态汇总表与 MSVC 2013 x86 编译验证记录 |
| requirements.md | TAS 波束控制逻辑修改说明(固定数据率调度与运行时参数 DATA_RATE_TAS |
| backup/data_process_class_dll/data_process_class_dll.pro | 迁移前的 Qt/qmake 工程文件(源文件清单参考) |
| .vscode/tasks.json、.vscode/cmake-variants.yaml | VS Code 构建任务与变体定义 |
| build/X256_PS/bin/RadarConfigParam.ini | 回放测试工具(rdp_playback.exe)配置样例 |