@@ -51,16 +51,16 @@
## 2. 功能特性
- **双模式处理管线**: data_preprocess 按输入类型与扫描圈完成标志返回 0/1/2/3, track_process 据此调度 TWS 凝聚/关联/起始或 TAS 凝聚/关联。
- **双模式处理管线**: data_preprocess 按输入类型与扫描圈完成标志返回 0/1/2/3(TWS 以方位波位号 == 0 判为一圈完成,机扫转台反转不再误判) , track_process 据此调度 TWS 凝聚/关联/起始或 TAS 凝聚/关联。
- **两帧滑窗点迹凝聚**:TWS 点迹先与上一帧缓存合并凝聚,再进入关联,兼顾跨波位(CPI)相邻点迹的分裂问题;近程模式增加速度维约束。
- **逻辑法航迹起始**:航迹头(单点)→ 点-头速度法关联(两点)→ 点-临时航迹 EKF 波门 + 折角约束关联(三点及以上)→ 三点卡尔曼初始化转可靠航迹;带起批屏蔽区与重复航迹去重。
- **3 模型 IMM 滤波**:三个 Singer 模型(低/中/高过程噪声),量测为「距离-方位-径向速度」三维的 EKF,多普勒残差按盲速折叠,似然用 3×3 新息协方差。
- **最近邻数据关联**:TWS 按航迹距离分段收紧模型 3 波门并附加距离门限;TAS 附加按距离分段的高度门限。ΔT ≤ 0(点迹时间戳不晚于航迹时间)的候选不更新航迹状态、仅消费该点迹(标记已使用),避免其继续起批而生成虚假 TWS 航迹。
- **最近邻数据关联**:TWS 按航迹距离分段收紧模型 3 波门并附加距离门限;TAS 附加按距离分段的高度门限。ΔT ≤ 0(点迹时间戳不晚于航迹时间)的候选不更新航迹状态、仅消费该点迹(标记已使用),避免其继续起批而生成虚假 TWS 航迹。关联输出的航迹同时给出**靠近/远离方向标志**: `Flag_Direction = vr_point > 0 ? 1 : 0` (1 靠近 / 0 远离),TWS、TAS 两通道一致。
- **高度维独立平滑**:按距离分段选择滑动平均窗长(5/6/7/9 点),抑制俯仰测量跳变。
- **TAS 波束控制**:手动转 TAS 目标入队(队列长度与容量随扫描体制切换),按最新时间戳外推输出跟踪波束(距离/方位/俯仰/批号)。
- **航迹生命周期管理**:外推轮数计数、超时消亡、手动删除、全清空(含各模块 reset,防重连后幽灵航迹)。
- **防御性加固**:见 archived_docs/BUG_FIX_REPORT.md——越界防护、时间戳正序校验、方位角 ±π 环绕、asin 定义域钳位、IMM 概率奇异保护等已修复项。
- **日志文件输出**: `RDP_LOG_ENABLE` 开启时(默认) ,首次 `Data_Process_Factory::GetB()` 自动用 `rdbuf()` 将 `std::cout` 重定向到 `RDP_LOG_DIR` ( `.\rdp_logs\` )下按日期+时间命名的日志文件,`Destroy()` 时恢复控制台并关闭文件;`RDP_LOG` 日志宏在每条日志前附加 `[时间戳][文件:行号]` ,开关注释关闭时不 重定向、日志仍 输出到控制台。
- **日志文件输出**: `RDP_LOG_ENABLE` 定义时 ,首次 `Data_Process_Factory::GetB()` 自动用 `rdbuf()` 将 `std::cout` 重定向到 `RDP_LOG_DIR` ( `.\rdp_logs\` )下按日期+时间命名的日志文件,`Destroy()` 时恢复控制台并关闭文件;`RDP_LOG` 日志宏在每条日志前附加 `[时间戳][文件:行号]` 。该宏在 `parameters.h` 中**当前为注释状态(默认不启用)**,即默认不做 重定向、日志输出到控制台(见 10.1) 。
---
@@ -71,10 +71,14 @@
├── CMakeLists.txt # CMake 构建脚本(扫描模式切换、导出宏、输出目录)
├── CHANGELOG.md # 变更日志(Keep a Changelog 格式,按 git 提交记录维护)
├── README.md # 本文件:项目说明(架构、接口、流程、算法、参数)
├── archived_docs/ # 过期文档留档(仅作历史参考;接口与流程以本 README 为准)
├── archived_docs/ # 过期文档留档(仅作历史参考;接口与流程以本 README 与 docs/ 专项说明 为准)
│ ├── BUG_REPORT.md # 全量逻辑 BUG 分析报告(P0~P3,37 项)
│ ├── BUG_FIX_REPORT.md # BUG 修复报告(修复明细 + 编译验证结果)
│ └── requirements.md # 需求说明:日志文件输出功能修改要求(含 rdbuf() 重定向参考示例)
├── docs/ # 专项说明文档(按当前源码整理,与 README 互补)
│ ├── data_process_flow_report.md # 数据处理流程与关键逻辑说明(前处理/判圈、凝聚、关联与滤波、起始、外推消亡、TAS 波束、参数脉络)
│ ├── data_process_flow_report.html # 上文的 HTML 渲染版(浏览器直接打开)
│ └── track_init_readme.md # 航迹起始(Track Init)详细逻辑说明(阶段流程、条件汇总、输出字段映射、风险点、代码索引)
├── .vscode/ # VS Code 工程配置
│ ├── settings.json # cmake.generator=NMake、MSVC2013 x86 环境变量、compile_commands
│ ├── cmake-variants.yaml # X256_PS / X256_MS × Release / Debug 变体
@@ -267,7 +271,7 @@ classDiagram
| 结构体 | 用途 | 要点 |
|---|---|---|
| DataRev | 输入点迹 | 距离(m)、方位/俯仰(°)、速度(m/s)、幅度/门限/SNR/RCS、码盘值、CPI/GNSS 时间(ms, long long)、方位波位(0-24)/俯仰波位(0-13)、PRI(µs, **不允许为 0**)、频点号、点数、点迹号、使用标记、TAS 批号、点迹类型、十字星数据 speed_dim[129]/range_dim[8] |
| Track | 输出航迹 | 位置/速度、极坐标量、航迹号、更新点数、方向/实虚点 标志、一步预测、跟踪模式、航向角、目标类型、关联点信息、航迹时间(s)/GNSS、SNR/RCS、十字星数据透传 |
| Track | 输出航迹 | 位置/速度、极坐标量、航迹号、更新点数、方向标志 Flag_Direction(关联输出赋值:1 靠近 / 0 远离,见 9.6)、实虚点标志 Flag_Point 、一步预测、跟踪模式、航向角、目标类型、关联点信息、航迹时间(s)/GNSS、SNR/RCS、十字星数据透传 |
| TrackingBeam | TAS 跟踪波束指令 | open_flag、type、Range、Azi、Elev、TAS_track_index |
| Target_direct_tracking | 引导跟踪信息 | 批号、距离/方位/俯仰、开关(接口未启用) |
| RadarPara | 工作参数 | 见 [参数说明 ](#10-参数说明 ) |
@@ -306,18 +310,18 @@ classDiagram
| tracking_point(azimuth) | 0 | 手动打跟踪波束——**未实现(保留空实现)** |
| direct_tracking_process(...) | 0 | 引导跟踪——**未实现(保留空实现)** |
> 日志输出为 DLL 内部功能(不对外导出,接口见 10.1 的宏开关):首次 `GetB()` 创建实例时自动初始化(`RDP_LOG_ENABLE` 开启 则将 `std::cout` 重定向到 `.\rdp_logs\` 下按日期+时间命名的日志文件),`Destroy()` 销毁实例时恢复 `std::cout` 并关闭日志文件。
> 日志输出为 DLL 内部功能(不对外导出,接口见 10.1 的宏开关):首次 `GetB()` 创建实例时自动初始化(`RDP_LOG_ENABLE` 定义 则将 `std::cout` 重定向到 `.\rdp_logs\` 下按日期+时间命名的日志文件,该宏当前为注释状态,见 10.1 ),`Destroy()` 销毁实例时恢复 `std::cout` 并关闭日志文件。
### 7.2 data_preprocess 返回值的含义
| 返回值 | 含义 | 触发条件 |
|---|---|---|
| 0 | 无效数据 | point_type 既非 0 也非 1 |
| 1 | **TWS 满一圈,执行航迹处理 ** | point_type==0 且当前方位波位号 < 上一帧波位号(波位号由大变小判为扫描一圈完成 ) |
| 2 | **TWS 未满一圈,继续蓄数据 ** | point_type==0 且波位号未变小 ;调用 track_process(model=2) 做滑窗凝聚 |
| 1 | **TWS 满一圈,执行航迹处理 ** | point_type==0 且当前帧 方位波位号 == 0( 7d5a56f 起改用波位号为 0 判满圈:机扫转台反转时波位号会变小但并未扫完一圈,原「波位号变小」判据会误判 ) |
| 2 | **TWS 未满一圈,继续蓄数据 ** | point_type==0 且方位 波位号 != 0 ;调用 track_process(model=2) 做滑窗凝聚 |
| 3 | **TAS 处理 ** | point_type==1;同时记录 TAS_track_idx 与最新时间戳 |
> 首次调用时 last_beam_num 为 INT_MAX,因此必然返回 1; track_clear_all() 后同样 复位为 INT_MAX。
> 7d5a56f 起满圈判据不再依赖上一帧波位号:`last_beam_num` 仍被赋值(` track_clear_all()` 复位为 INT_MAX),但不参与判断;因此首帧是否返回 1 取决于该帧方位波位号是否为 0。调用方需保证方位波位号按 0~Beam_num-1 编号且每圈均出现 0,否则 TWS 通道将持续返回 2(不满圈) 。
### 7.3 典型调用序列
@@ -349,7 +353,7 @@ flowchart TD
``` mermaid
flowchart TD
A["data_preprocess: 点迹入 Data_buffer(度→弧度、高度=Range·sin(Elev)、时间戳缓存)"] --> B["波位号变小 (一圈完成)→ model=1"]
A["data_preprocess: 点迹入 Data_buffer(度→弧度、高度=Range·sin(Elev)、时间戳缓存)"] --> B["方位 波位号 == 0 (一圈完成)→ model=1"]
B --> C["track_process(1)"]
C --> D["dot_coh 两帧滑窗凝聚 → point_recv"]
D --> E["track_asso: IMM 交互 → 点航波门筛选(NN)→ EKF 滤波 → 模型输出"]
@@ -380,13 +384,13 @@ flowchart TD
flowchart TD
A["未关联点迹"] --> B["转航迹头 Temp_track(1点) buff_round=1"]
B --> C{"下一帧点迹"}
C --> D["点-航迹头关联:速度区间门限 + 径向速度同号 → 两点卡尔曼初始化(航迹头→2 点临时航迹)"]
C --> D["点-航迹头关联:V_MIN·ΔT ≤ dis ≤ V_MAX·ΔT、径向速度同号、dis ≥ |vr_point|·ΔT 且 dis ≥ |v_track_head|·ΔT → 两点卡尔曼初始化(航迹头→2 点临时航迹)"]
D --> E{"后续点迹"}
E --> F["点-临时航迹关联:EKF 统计距离波门 d²≤64、折角<60°、径向速度同号、|Δr|≥5m"]
F --> G{"长度 ≥ track_start_point_num(3~9) 且 ≤10"}
G -- 是 --> H["屏蔽区判断 → 重复航迹去重(保留末点 d 更小者)→ 三点卡尔曼初始化"]
H --> I["转可靠航迹:分配航迹号 1~500,IMM 三模型同状态初始化 u=1/3"]
I --> J["按历史点数 输出 Trust_Track_Output[i][0..L-1]"]
I --> J["输出前 track_start_point_num 个历史点 Trust_Track_Output[i][0..L-1]"]
G -- 否 --> K{"buff_round>2 或 长度≥10 ?"}
K -- 是 --> L["临时航迹消亡"]
K -- 否 --> E
@@ -445,23 +449,20 @@ $$
#### (1) 点-航迹头关联(两点起始)
对单点航迹头(buff_round ≥ 2),量测点需同时满足**速度区间门限**与**径向速度同号** :
- 近程(work_mode==0):
对单点航迹头(buff_round ≥ 2),量测点需同时满足以下四个条件(7d5a56f 起的判据) :
$$
r_p \ge 1000:\ V_{min}\Delta T \le d_{12} \le V_{max}\Delta T; \qquad
r_p < 1000:\ \tfrac12 V_{m in}\Delta T \le d_{12} \le \tfrac12 V_{max}\Delta T
V_{min}\Delta T \le d_{12} \le V_{max}\Delta T, \qquad
v_{r,po int }\cdot v_{r,head}>0,\qquad
d_{12} \ge \left|v_{r,point}\right|\Delta T,\qquad
d_{12} \ge \left|v_{r,head}\right|\Delta T
$$
- 中/远程(work_mode!=0):
其中 d12 为两点间平面距离,ΔT 为时间差(秒),V_min/V_max 取 `RadarPara.V_MIN / V_MAX` (代码中 vmax 的近程/中远程分支取值相同,均为 V_MAX)。后两条为**多普勒-几何一致性约束**:切向飞行目标在 ΔT 内的实际位移远小于 |vr|·ΔT,据此被排除,用于限制切向高速点迹起批出的短航迹。
$$
r_p \ge 2000:\ V_{min}\Delta T \le d_{12} \le V_{max}\Delta T;\qquad
r_p < 2000:\ \tfrac12 V_{min}\Delta T \le d_{12} \le \tfrac13 V_{max}\Delta T
$$
> 历史行为(已注释停用):原先按扫描体制与距离分段收紧速度门限——近程 r≥1000 用全速、r<1000 用半速;中远程 r≥2000 用全速、r<2000 取下限 1/2·V_min·ΔT / 上限 1/3·V_max·ΔT。
其中 d12 为两点间平面距离,ΔT 为时间差(秒),并需 vr_point · vr_head > 0。 关联成功用 **两点卡尔曼初始化 ** (见 9.5.2)。
关联成功用 **两点卡尔曼初始化 ** (见 9.5.2)。
#### (2) 点-临时航迹关联(三点及以上)
@@ -481,11 +482,12 @@ $$
#### (3) 转可靠航迹(起批)
临时航迹长度 L 满足 track_start_point_num ≤ L ≤ 10(起批点数由参数给定,典型 3~4,接口层校验 3~9)且不在起批屏蔽区内(屏蔽区为距离-方位矩形区域,最多 30 个)时进入起批队列;同源(共享 前三点)的重复航迹只保留末点 d 最 小者。起批时用 **最近 三点卡尔曼初始化 ** 得到 6 维状态,构造 Trust_Track:
临时航迹长度 N 满足 track_start_point_num ≤ N ≤ 10(起批点数由参数给定,典型 3~4,接口层校验 3~9)且不在起批屏蔽区内(屏蔽区为距离-方位矩形区域,最多 30 个)时进入起批队列;同源(前三点时间/距离相同 )的重复航迹只保留 d 较 小者(比较下标 `track_start_point_num-1` 处的 d)。起批时令 L = track_start_point_num,用航迹中下标 L-3、L-2、L-1 的三个点做 **三点卡尔曼初始化 ** 得到 6 维状态(航迹长度恰为 L 时即最近三点) ,构造 Trust_Track:
- 三个 IMM 子模型用同一状态/协方差初始化,模型概率 u = [1/3, 1/3, 1/3];
- 分配航迹号(1~500,见 9.8);
- 将临时航迹的全部 L 个点写入 Trust_Track_Output(每条航迹最多 10 个历史点)。
- 输出仅写入前 L 个历史点( ` Trust_Track_Output[i][0..L-1]` , `Point_Sum = L` ),航迹长度大于 L 时其余点不输出;
- 起批输出不写 `Flag_Direction` 、`x_Predict/y_Predict/z_Predict` 、`Range_Predict/Azimuth_Predict/Elevation_Predict` 、`Target_Type` 、`prf_point` 、`v_z` 等字段,且 DLL 不清零输出数组,宿主读到的是自身缓存的旧值(详见 docs/track_init_readme.md 第 14 节)。
### 9.4 IMM 框架(3 个 Singer 模型)
@@ -692,7 +694,7 @@ VT<100\ \text{且}\ R>300\ \Rightarrow 拒绝;\qquad
VT>300\ \text{且}\ R>1200\ \Rightarrow 拒绝
$$
候选对按 d_min = min(d1,d2,d3) 全局排序,**最近邻**原则逐个取点:每条航迹每圈最多关联一个点、每个点只属于一条航迹。关联成功后:三模型分别 EKF 更新 → 模型概率更新 → 更新航迹时间/幅度/SNR/RCS/十字星数据 → 高度平滑。
候选对按 d_min = min(d1,d2,d3) 全局排序,**最近邻**原则逐个取点:每条航迹每圈最多关联一个点、每个点只属于一条航迹。关联成功后:三模型分别 EKF 更新 → 模型概率更新 → 更新航迹时间/幅度/SNR/RCS/十字星数据 → 高度平滑。关联输出的航迹同时写入**方向标志**(f249fdc): `Flag_Direction = (vr_point > 0) ? 1 : 0` ,即径向速度为正判为靠近(1)、为零或负判为远离(0),取值来自航迹记录的径向速度(最近一次关联点迹的速度)。
**ΔT ≤ 0 的候选(604f158 起的行为) ** :ΔT = (点迹 CPI 时间 − 航迹 T_track)/1000,ΔT ≤ 0 表示该点迹时间戳不晚于航迹时间(典型场景:航迹已按 TAS 点迹更新过,本圈 TWS 点迹的时间戳更早,或存在重复时间戳)。这种候选**不再被剔除**,仍参与最近邻最小 d 的比较与选取,但选中后:
@@ -700,7 +702,7 @@ $$
- 不刷新航迹时间 T_track / GNSS_time 与点迹信息;
- 不置实点标志:`Extrapolate_round` 、`point_flag` 、`associate_point_number` 均保持原值,因此该航迹仍按「未关联航迹」在后续外推环节推进一帧(见 9.9);
- 该候选对连同该航迹本圈的其余候选对被一并移出候选表,因此该航迹本圈不会再关联其他点迹;由于时间戳更早的候选仍参与最小 d 比较,它可能先于有效候选(ΔT>0)被取中;
- 该点迹的 `Use_Flag` 被置 1 消费掉——点迹使用标记是航迹起始的输入过滤条件(track_init 跳过 Use_Flag==1 的点),因此该点迹不会再参与起批,避免生成虚假 TWS 航迹。
- 该点迹的 `Use_Flag` 被置 1 消费掉: `track_asso_process()` 在关联结束后会把 `Use_Flag==1` 的点迹从 `point_recv` 中删除(track_init 入口也会再剔除一次 ` Use_Flag==1` 的点),因此该点迹不会进入航迹起始、不会 再参与起批,避免生成虚假 TWS 航迹。
> 历史行为:604f158 之前,ΔT ≤ 0 的候选在选取时被直接剔除并 `continue`,点迹保持未被使用,可能被后续用于航迹起始。该分支原有的 `RDP_LOG` 告警日志现已注释停用;TAS 关联(track_asso_tas.cpp,见下)中同类告警日志仍启用。
@@ -714,6 +716,8 @@ $$
高度门限按航迹距离分段:≤1000 m: |h_t− h_p| ≤ 150 m; 1000~2000 m:≤ 200 m; 2000~3000 m:≤ 200 m; 3000~5000 m:≤ 300 m; >5000 m:不约束。
输出航迹同样写入**方向标志** `Flag_Direction` (由 `vr_point` 符号决定,f249fdc),规则与 TWS 通道一致。
> ⚠ **波门语义提示**:代码中 d 本身已是马氏距离平方,但门限写作 d*d < ASSO_THORD*ASSO_THORD,等效于 d < 3(而非 √d < 3)。该行为在 BUG-20 中被识别,**有意保留未改**; ASSO_THORD/1000、/100 已改为浮点除法(BUG-21 修复)。
### 9.7 高度平滑
@@ -767,7 +771,7 @@ $$
| 宏 | 相扫 PHASE_SCANNING | 机扫 MECHANICAL_SCANNING | 含义 |
|---|---|---|---|
| RDP_LOG_ENABLE | 定义(默认开启 ) | 同左 | 日志文件输出开关:定义时将 `std::cout` 重定向到日志文件;注释掉则 不重定向( 日志仍 输出到标准输出/控制台) |
| RDP_LOG_ENABLE | 注释停用(默认不启用 ) | 同左 | 日志文件输出开关:定义时将 `std::cout` 重定向到日志文件;**当前源码中该宏为注释状态**(parameters.h 的注释文字仍写「定义(默认)」,以代码实际状态为准), 不重定向、 日志输出到标准输出/控制台 |
| RDP_LOG_DIR | `.\rdp_logs\` | 同左 | 日志文件输出目录(相对宿主进程当前工作目录,目录不存在时自动创建) |
| 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 |
@@ -839,6 +843,16 @@ $$
- RadarPara 中的起批/关联波门字段未被实现读取(见 10.2)。
- build/output/ 下为早期打包导出物,其 data_process_class_dll.h 时间戳仍为 32 位 int,与当前 64 位接口不一致,勿作为对接依据。
### 11.4 航迹起始相关的未修复观察(详见 docs/track_init_readme.md 第 15 节)
以下为阅读源码得到的观察,**未在本轮文档更新中改动代码**;修改前请结合实测数据评估:
- 点-临时航迹关联硬编码 `|Δr| ≥ 5 m` 门限,切向/远距离慢速目标可能漏关联导致起批失败。
- 起批判据对马氏距离平方再次平方(`d*d ≤ TRACK_START_THRESHOLD²` ),实际门限为 `d ≤ 8` ,按字面 `d² ≤ 64` 理解会严重放宽;调 `TRACK_START_THRESHOLD` 时需注意这一层。
- 折角计算 `acos` 无定义域钳位,浮点越界产生 NaN 时条件恒假(静默丢弃该关联)。
- 起批输出数组行号可能越过容量:容量判据用 `trust_track->size() < MAX_TRACK_INDEX` ,而输出行计数在 track_asso 阶段(track_die 删除航迹之前)已推进,极端场景(当圈消亡 ≥ 2 条且起批占满配额)可写到 `MAX_TRACK_NUM` 之外。
- 起批输出有多个字段未赋值(见 9.3(3) 与 docs/track_init_readme.md 第 14 节),宿主不应依赖这些字段。
---
## 12. 版本历史
@@ -847,6 +861,8 @@ $$
| 提交 | 内容 |
|---|---|
| f249fdc | 输出航迹新增「靠近/远离」方向标志:`track_asso.cpp` ( TWS)与 `track_asso_tas.cpp` ( TAS)在写入 `vr_point` 后补 `Flag_Direction = vr_point > 0 ? 1 : 0` ;新增 `docs/data_process_flow_report.md` 、`docs/data_process_flow_report.html` 、`docs/track_init_readme.md` 三份流程与专项文档 |
| 7d5a56f | 满圈判据由「波位号变小」改为「方位波位号 == 0」(避免机扫转台反转误判,`data_process.cpp` );点-航迹头关联改为统一速度区间 `V_MIN·ΔT ≤ dis ≤ V_MAX·ΔT` 并新增 `dis ≥ |vr_point|·ΔT` 、`dis ≥ |v_track_head|·ΔT` 两条多普勒-几何一致性约束,限制切向高速短航迹(`track_init.cpp` );同步更新 README/CHANGELOG |
| 604f158 | TWS 关联中 ΔT≤0(点迹时间戳不晚于航迹时间)的候选不再剔除:仍参与最近邻选取但不更新 IMM/EKF、不刷新航迹时间与新鲜度,并标记该点迹已使用(`Use_Flag=1` )消费掉,避免其继续参与航迹起始生成虚假 TWS 航迹;`track_asso.cpp` 的 ΔT≤0 告警日志注释停用;过期文档(BUG_REPORT.md、BUG_FIX_REPORT.md、requirements.md)移入 archived_docs/ 留档 |
| d6cdbc0 | 删除 `data_process.cpp` 、`dot_coh.cpp` 中已注释停用的调试输出与早期 1 km SNR 过滤代码残留(不改变运行逻辑);同步更新 README/CHANGELOG |
| 1521592 | 新增日志模块(`rdp_log.h/.cpp` , CMake SOURCES 注册、.gitignore 忽略 `rdp_logs/` ):`RDP_LOG_ENABLE` / `RDP_LOG_DIR` 宏(parameters.h)、std::cout 经 `rdbuf()` 重定向到 `.\rdp_logs\` 下日期+时间命名日志、`RDP_LOG` 前缀宏、ΔT≤0 告警日志;`RadarPara.DATA_RATE_TAS` 单位由 Hz 改为 s;修复 `tas_beam_output()` 将向量下标误赋给 `Tracking_beam->TAS_track_index` 的问题;更新 README/CHANGELOG |
@@ -878,6 +894,9 @@ $$
| 文档 | 内容 |
|---|---|
| CHANGELOG.md | 变更日志(Keep a Changelog 格式,按 git 提交记录维护) |
| docs/data_process_flow_report.md | 数据处理流程与关键逻辑说明(按当前源码整理:前处理与判圈、凝聚、TWS/TAS 关联与滤波、航迹起始、外推消亡、TAS 波束控制、参数脉络;含与本文档的历史差异提示) |
| docs/data_process_flow_report.html | 上文同内容的 HTML 渲染版 |
| docs/track_init_readme.md | 航迹起始(Track Init)专项说明:分阶段流程、起始条件汇总、调参直觉、输出字段映射(含未赋值字段)、已知风险与代码索引 |
| archived_docs/BUG_REPORT.md | 全量逻辑 BUG 分析(P0~P3 共 37 项,含位置、说明、建议、处置结论)——过期留档,仅作历史参考 |
| archived_docs/BUG_FIX_REPORT.md | 修复明细、修复状态汇总表与 MSVC 2013 x86 编译验证记录——过期留档(对应 01d28e0 时期) |
| archived_docs/requirements.md | 修改需求说明:日志文件输出功能(rdbuf() 重定向、parameters.h 日志开关宏、日期+时间命名日志、前缀日志宏,附参考示例)——已实现,留档 |