更新:1、增加扫描模式配置项;
2、优化不必要的宏定义; 3、合并机扫和相扫版本; Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
@@ -74,7 +74,7 @@ flowchart TD
|
||||
flowchart TD
|
||||
A["收到一帧点迹"] --> B{"point_type ?"}
|
||||
B -->|"0 = TWS"| C["写入 TWS 缓存"]
|
||||
C --> D{"判圈条件成立 ?<br/>相扫: Beam_index_aiz <= last_beam_num<br/>机扫: Beam_index_aiz == 0"}
|
||||
C --> D{"判圈条件成立(由配置 scan_mode 选择)?<br/>scan_mode=0 相扫: Beam_index_aiz <= last_beam_num<br/>scan_mode=1 机扫: Beam_index_aiz == 0"}
|
||||
D -->|"是"| E["return 1:满一圈,执行 TWS 航迹处理"]
|
||||
D -->|"否"| F["return 2:未满圈,仅做滑窗凝聚"]
|
||||
B -->|"1 = TAS"| G["写入 TAS 缓存<br/>记录 TAS 批号与本帧时间戳"]
|
||||
@@ -84,9 +84,10 @@ flowchart TD
|
||||
|
||||
**要点**
|
||||
|
||||
- 判圈条件按扫描体制区分(3e6763c,源码用 `#ifdef PHASE_SCANNING` 编译期隔离):
|
||||
- **相扫**:比较前后两帧方位波位号,当前帧 `Beam_index_aiz <= last_beam_num` 判为满一圈;`last_beam_num` 参与判断,`track_clear_all()` 复位为 INT_MAX,故**清空后/首帧即判满一圈**;
|
||||
- **机扫**:判 **波位号为 0**(7d5a56f 起),避免转台反转时波位号变小导致误判一圈完成(代码中保留了旧判断的注释);该分支下 `last_beam_num` 仍被赋值但不参与判断。
|
||||
- 判圈条件由配置项 `[radar_params] scan_mode` **运行时**选择(0 相扫 / 1 机扫;加载器校验仅允许 0/1),替代原先 `#ifdef PHASE_SCANNING` 的编译期分支:
|
||||
- **scan_mode=0(相扫)**:比较前后两帧方位波位号,当前帧 `Beam_index_aiz <= last_beam_num` 判为满一圈;`last_beam_num` 参与判断,`track_clear_all()` 复位为 INT_MAX,故**清空后/首帧即判满一圈**;
|
||||
- **scan_mode=1(机扫)**:判 **波位号为 0**(7d5a56f 起),避免转台反转时波位号变小导致误判一圈完成(代码中保留了旧判断的注释);该模式下 `last_beam_num` 仍被更新但不参与判断。
|
||||
- 两种模式下 `last_beam_num` 每帧都会更新,仅判满圈时 `circle_id++` 并返回 1;判圈行为不再由构建体制(`PHASE_SCANNING`/`MECHANICAL_SCANNING`)决定,配置与构建体制应保持一致(见 README 4.2)。
|
||||
- 机扫下波位号 0 是每圈的起始波位,因此**每圈恰好触发一次 model=1**。
|
||||
- TAS 数据不参与判圈,**每来一帧就处理一次**(TAS 是调度的跟踪波位,本身就是单目标 CPI)。
|
||||
|
||||
@@ -531,13 +532,14 @@ flowchart TD
|
||||
|
||||
## 9. 参数脉络(决定行为的旋钮)
|
||||
|
||||
> **参数配置方式改造后**:雷达工作参数不再来自 `parameters.h` 编译期宏或宿主下发的 `RadarPara`,而是由 TOML 配置文件(样例 `config/config_tmp.toml`)加载到 `struct.h::RDP_parameter`,经公开接口 `parameters_reload(配置文件路径)` 在运行期一次性加载(失败返回 -1 且不改变当前参数;严格校验规则与完整参数表见 README 第 10 节)。下表「样例值」为相扫配置;**机扫需在配置中改**的 4 项已单独标注。
|
||||
> **参数配置方式改造后**:雷达工作参数不再来自 `parameters.h` 编译期宏或宿主下发的 `RadarPara`,而是由 TOML 配置文件(样例 `config/config_tmp.toml`)加载到 `struct.h::RDP_parameter`,经公开接口 `parameters_reload(配置文件路径)` 在运行期一次性加载(失败返回 -1 且不改变当前参数;严格校验规则与完整参数表见 README 第 10 节)。下表「样例值」为相扫配置;**机扫需在配置中改**的 5 项(`scan_mode` 及 4 个原按体制区分的参数)已单独标注。
|
||||
|
||||
### 9.1 配置文件参数(`[段] 键`,样例值 = 相扫)
|
||||
|
||||
| 配置键 | 样例值 | 作用点 |
|
||||
|---|---|---|
|
||||
| `[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` 分支;与构建体制解耦,应保持一致 |
|
||||
| `[radar_params] freq_0_GHz` | 9.2 | 盲速计算基准频率(原 `FREQ0`) |
|
||||
| `[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` 中三选一,现统一单字段) |
|
||||
@@ -571,12 +573,11 @@ flowchart TD
|
||||
|---|---|---|
|
||||
| `MAX_TRACK_NUM` | 500 | 输出航迹数组固定容量(宿主接口维度) |
|
||||
| `RDP_TAS_QUEUE_CAPACITY` | 30 | TAS 队列容量上限;运行期上限用 `tas_track_num_max` |
|
||||
| `UNCONF_TARGET` | 0 | 未确认目标类型语义值 |
|
||||
| `PI` / `Round(x)` | 3.1415926f / 宏 | 圆周率 / 四舍五入取整 |
|
||||
| 版本宏 | 1.5.8 + 体制后缀 | `VERSION_STRING` → `V1.5.8.PS` / `V1.5.8.MS` |
|
||||
| `RDP_LOG_*` / `RDP_RECORD_*` | — | 日志落盘开关/目录、数据记录开关与性能参数(见 README 10.4) |
|
||||
|
||||
> 扫描体制(`PHASE_SCANNING` / `MECHANICAL_SCANNING`)仍决定编译期分支(如判圈判据、版本后缀),但**不再决定任何工作参数数值**。
|
||||
> 扫描体制宏(`PHASE_SCANNING` / `MECHANICAL_SCANNING`,由 CMake 的 `RADAR_SCAN_MODE` 传入)仅决定 `VERSION_INFO` 版本后缀(PS/MS)与 `#pragma message` 及构建目录/任务命名,**不再决定任何工作参数数值,也不再决定判圈判据**(判圈由配置项 `scan_mode` 决定,见 2.2);`UNCONF_TARGET` 宏已删除(起批处 `Target_Type` 直接写 0)。
|
||||
|
||||
---
|
||||
|
||||
@@ -631,7 +632,7 @@ flowchart TD
|
||||
|
||||
| 项 | README 描述(更新前) | 当前源码 |
|
||||
|---|---|---|
|
||||
| 满圈判据 | 当前方位波位号 < 上一帧波位号 | 按体制区分(3e6763c):**相扫**当前波位号 ≤ 上一帧波位号(等价于原判据)、**机扫**方位波位号 == 0(7d5a56f,适应机扫转台反转) |
|
||||
| 满圈判据 | 当前方位波位号 < 上一帧波位号 | 判据由配置项 `scan_mode` 运行时选择(原按体制编译期分支):**scan_mode=0 相扫**当前波位号 ≤ 上一帧波位号(3e6763c,等价于原判据)、**scan_mode=1 机扫**方位波位号 == 0(7d5a56f,适应机扫转台反转) |
|
||||
| 点-航迹头判据 | 按距离分段收紧速度门限(半速、1/2~1/3 速) | 该分支注释停用;改为统一速度区间 **+ 两条多普勒-几何一致性约束**(7d5a56f) |
|
||||
| 起始输出历史点 | "临时航迹的全部 L 个点" | 实际输出**前 `track_init_point_num_min` 个点** |
|
||||
| 起始输入过滤 | "track_init 跳过 Use_Flag==1 的点" | 上游 `track_asso_process()` 结束前已把 `Use_Flag==1` 的点迹从 `point_recv` 删除;`track_init` 入口(L59-70)也会再剔除一次 `Use_Flag==1` 的点,两道处理叠加,效果一致 |
|
||||
|
||||
Reference in New Issue
Block a user