+15
-10
@@ -77,20 +77,23 @@ track_init.track_init_process_logic(&point_recv, &trust_track, &temp_track,
|
||||
|
||||
## 2. 数据结构与状态容器
|
||||
|
||||
### 2.1 Temp_track(临时航迹点,`struct.h` L94-121)
|
||||
### 2.1 Temp_track(临时航迹点,`struct.h`)
|
||||
|
||||
| 字段 | 含义 | 起始流程中的作用 |
|
||||
|---|---|---|
|
||||
| `X[4]` | 4 维状态 **[x, vx, y, vy]** | EKF 一步预测的状态;由两点卡尔曼初始化填充 |
|
||||
| `P[4][4]` | 状态协方差 | 同上的协方差 |
|
||||
| `r / azi / vr / height / snr / RCS / Amp` | 该点的极坐标测量 | 初始化、输出、条件判据(`azi` 为**弧度**) |
|
||||
| `T` / `GNSS_time` | CPI 时间 / GNSS 时间(ms) | ΔT 计算(除 1000 转秒) |
|
||||
| `r / azi / vr / height / SNR / RCS / amplitude` | 该点的极坐标测量 | 初始化、输出、条件判据(`azi` 为**弧度**) |
|
||||
| `CPI_time` / `GNSS_time` | CPI 时间 / GNSS 时间(ms) | ΔT 计算(除 1000 转秒) |
|
||||
| `d` | 该点关联时的马氏统计距离 | 去重阶段用于「保留更优者」 |
|
||||
| `buff_round` | **已缓存圈数** | 生命周期与关联时机控制(见 4.2) |
|
||||
| `asso_flag` | 0 未关联 / 1 已关联(待删除)/ 2 去重淘汰 | 临时状态标记 |
|
||||
| `pitch_num`、`speed_dim[129]`、`range_dim[8]` | 俯仰波位、十字星数据 | 纯透传 |
|
||||
| `Temp_track_section_idx` | 临时航迹区号 | 相关赋值已被注释停用,当前不参与逻辑 |
|
||||
| `temp_track_id` / `point_id` / `circle_id` | 临时航迹 ID / 末关联点迹 ID / 处理圈 ID(c3c7e66 新增) | 数据记录链路标识;起批时透传给 `Trust_Track` |
|
||||
| `temp_track_section_idx` | 临时航迹区号 | 相关赋值已被注释停用,当前不参与逻辑 |
|
||||
|
||||
> 字段更名提示(c3c7e66):`snr`→`SNR`、`Amp`→`amplitude`、`T`→`CPI_time`、`Temp_track_section_idx`→`temp_track_section_idx`。阅读早期提交或旧文档时注意对应关系。
|
||||
>
|
||||
> ⚠ **下标陷阱**:`Temp_track::X` 是 4 维 `[x, vx, y, vy]`(y 在 index 2),而 `Trust_Track::X` 是 6 维 `[x, vx, ax, y, vy, ay]`(y 在 index 3)。两套结构混用下标必错。
|
||||
|
||||
### 2.2 容器语义
|
||||
@@ -356,10 +359,11 @@ for (...) (*point_recv).push_back(point_process[i]); // 回写未被使用的
|
||||
|
||||
| 字段 | 取值 |
|
||||
|---|---|
|
||||
| `r / azi / height / Amp / vr / snr / RCS` | 点迹对应量(`azi` 为弧度) |
|
||||
| `r / azi / height / amplitude / vr / SNR / RCS` | 点迹对应量(`azi` 为弧度) |
|
||||
| `pitch_num / speed_dim / range_dim` | 透传 |
|
||||
| `X[0] = Range·cos(Azimuth)`、`X[1]=0`、`X[2] = Range·sin(Azimuth)`、`X[3]=0` | 位置赋值,速度置 0(**注意 4 维布局**) |
|
||||
| `T`、`GNSS_time` | 点迹时间 |
|
||||
| `CPI_time`、`GNSS_time` | 点迹时间 |
|
||||
| `temp_track_id = temp_track_id++`、`point_id`、`circle_id` | 取自该点迹(记录链路标识,c3c7e66 新增) |
|
||||
| `asso_flag = 0`、`buff_round = 1` | 生命周期起点 |
|
||||
| `d` | 未赋值 → 0 |
|
||||
|
||||
@@ -440,8 +444,9 @@ Kalman.kalman_filter_init_3dots(Z0, Z1, Z2, T1, T2, X, P); // 6 维 [x,vx,ax,y
|
||||
| `X1/X2/X3 = X`、`P1/P2/P3 = P` | 三个 IMM 子模型同状态、同协方差初始化 |
|
||||
| `u[0..2] = 0.3333` | 模型概率均分 |
|
||||
| `Track_Index` | `track_ind_get()` 分配的航迹号 |
|
||||
| `T_track` / `GNSS_time` / `Height` | 取**末点**的对应值 |
|
||||
| `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 新增) |
|
||||
| `point_flag = 1` | 实点 |
|
||||
| `Track_Mode = 0` | TWS |
|
||||
| `Target_Type = UNCONF_TARGET(0)` | 未确认目标 |
|
||||
@@ -664,13 +669,13 @@ $$
|
||||
| `Direction_Angle` | `atan2(vy, vx)`(→度, `[0,360)`) | 航向角 |
|
||||
| `x / v_x / y / v_y` | 点的 `X[0..3]` | 注意 4 维布局 |
|
||||
| `range_point / azi_point / elev_point / vr_point` | 点的原始测量 | `point_type=0` |
|
||||
| `Amplitude / track_snr / track_rcs` | 点的 `Amp / snr / RCS` | |
|
||||
| `Amplitude / track_snr / track_rcs` | 点的 `amplitude / SNR / RCS` | |
|
||||
| `pitch_num / speed_dim / range_dim` | 点透传 | |
|
||||
| `track_time` | `T/1000`(秒) | |
|
||||
| `track_time` | `CPI_time/1000`(秒) | |
|
||||
| `GNSS_time` | 点透传 | |
|
||||
| `Flag_Point` | 恒为 **1**(实点) | |
|
||||
| `Track_Mode` | 恒为 **0**(TWS) | |
|
||||
| **未赋值** | `Flag_Direction`、`x_Predict/y_Predict/z_Predict`、`Range_Predict/Azimuth_Predict/Elevation_Predict`、`Target_Type`、`prf_point`、`v_z`、`amp_asv_point`、`prn_fftn_point` | DLL 不清零该数组,宿主读到的是其自身缓存的旧值/未初始化值。注意 `Flag_Direction` 只在关联输出路径赋值(`track_asso.cpp` L129 / `track_asso_tas.cpp` L93),起批输出不写该字段。该字段的判据已由 f249fdc 的 `vr_point > 0 ? 1 : 0`(实测径向速度,受多普勒速度模糊影响符号可能取反)改为 fc49707 + 42b598e 的**航向-位置夹角法**:`Direction_Angle = atan2(X[4], X[1])`(弧度转度后同时输出到 `Direction_Angle`),`x`、`y` 为经 `Work_Parameter.Sys_delay` 补偿后的位置、`r` 为其模,`acos((-x·cos(Direction_Angle) - y·sin(Direction_Angle))/r) < π/2` 判为靠近(1)、否则远离(0),即滤波速度方向与"雷达→目标"位置方向夹角超 90° 判为接近。另 `amp_asv_point` / `prn_fftn_point` 属 e8c56f9 新增,`data_preprocess()` 未把 `DataRev.amp_asv / prn_fftn` 搬入 `PointRecv`(且局部对象未初始化),当前无有效数据来源 |
|
||||
| **未赋值** | `Flag_Direction`、`x_Predict/y_Predict/z_Predict`、`Range_Predict/Azimuth_Predict/Elevation_Predict`、`Target_Type`、`prf_point`、`v_z`、`amp_asv_point`、`prn_fftn_point` | DLL 不清零该数组,宿主读到的是其自身缓存的旧值/未初始化值。注意 `Flag_Direction` 只在关联输出路径赋值(`track_asso.cpp` L129 / `track_asso_tas.cpp` L93),起批输出不写该字段。该字段的判据已由 f249fdc 的 `vr_point > 0 ? 1 : 0`(实测径向速度,受多普勒速度模糊影响符号可能取反)改为 fc49707 + 42b598e 的**航向-位置夹角法**:`Direction_Angle = atan2(X[4], X[1])`(弧度转度后同时输出到 `Direction_Angle`),`x`、`y` 为经 `Work_Parameter.Sys_delay` 补偿后的位置、`r` 为其模,`acos((-x·cos(Direction_Angle) - y·sin(Direction_Angle))/r) < π/2` 判为靠近(1)、否则远离(0),即滤波速度方向与"雷达→目标"位置方向夹角超 90° 判为接近。另 `amp_asv_point` / `prn_fftn_point` 属 e8c56f9 新增,`data_preprocess()` **现已**把 `DataRev.amp_asv / prn_fftn` 搬入 `PointRecv`(TWS 与 TAS 分支均赋值,并随 `RdpRecPoint` 落库),因此 TWS 关联/输出路径的该字段已有有效来源;TAS 关联与输出路径(`track_asso_tas.cpp`)仍未涉及这两个字段,TAS 输出行中它们保持宿主原值 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user