diff --git a/CHANGELOG.md b/CHANGELOG.md index b301bed..0eaabf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,13 +10,23 @@ ### Added - 新增 CHANGELOG.md,采用 Keep a Changelog 格式记录项目变更历史。 -- `RadarPara` 结构体新增 `DATA_RATE_TAS`(TAS 模式数据率)字段,由 DLL 调用者通过 `track_process_parameters_initial()` 输入。 +- `RadarPara` 结构体新增 `DATA_RATE_TAS`(TAS 模式数据率)字段,由 DLL 调用者通过 `track_process_parameters_initial()` 输入(b3e2f52)。 +- `Tracking_Target` 新增 `last_track_time` 字段,记录各 TAS 目标最近一次波束输出时间(f438ac5)。 +- 新增 requirements.md,说明 TAS 波束控制逻辑的修改背景与约定(b3e2f52)。 +- 更新 README.md:目录结构补充 CHANGELOG.md / requirements.md;版本历史表补充 93d3924、b3e2f52、e729c5b、f438ac5 提交记录。 ### Changed -- TAS 波束控制增加数据率门控:`Beam_Ctrl()` 仅在队首目标航迹时间 `T_track` 与最新时间戳 `latest_timestamp` 的差值大于 `1 / DATA_RATE_TAS` 秒时输出 TAS 跟踪波束,使 TAS 目标数据率不再随波束时间(Beam_Ctrl 调用频率)变化;队列轮转逻辑保持不变。 -- 波束门控使用 `Work_Parameter.DATA_RATE_TAS`(运行时参数)而非 `parameters.h` 中的 `DATA_RATE_TAS` 宏;参数 ≤ 0 时不做门控,保持原输出行为。 -- 参数配置中频点修改为9.2GHz,‘#define FREQ0 9.2’。 +- TAS 波束控制改为按固定数据率调度:`Beam_Ctrl()` 仅当目标满足 `1 / DATA_RATE_TAS` 秒的数据率间隔(相对航迹时间 `T_track` 与上次波束输出 `last_track_time`)时才输出 TAS 跟踪波束,使 TAS 目标数据率不再随波束时间(Beam_Ctrl 调用频率)变化。 +- TAS 波束输出目标改为队列内调度:不再固定取队首,而是遍历 TAS 队列,选择满足数据率门控且 CPI 时间最早的目标输出;原每次 Beam_Ctrl 末尾的整队循环移位(队列轮转)已停用(代码注释保留)。 +- 数据率门控统一使用运行时参数 `Work_Parameter.DATA_RATE_TAS`(由 DLL 调用者经 `track_process_parameters_initial()` 输入,需为 >0 的有效值);`parameters.h` 中 `DATA_RATE_TAS` 编译期宏(相扫 0.3 / 机扫 0.0625)已注释停用,引导跟踪外推同步改用运行时参数。 +- 编译时以 `#pragma message` 提示当前启用的扫描体制宏(MECHANICAL_SCANNING / PHASE_SCANNING)。 +- 频点宏由 `FREQ0~FREQ20`(16.8 GHz)精简为单个 `FREQ0`,取值改为 9.2 GHz(e729c5b)。 +- MSVC 编译选项按编译器版本条件追加 `/utf-8`(VS2015 及以上);MSVC 2013 不支持该选项,改用源码文件带 BOM 的 UTF-8 编码解决 C4819。 + +### Fixed + +- 修复 MSVC `/W3` 下全部 C4819 / C4018 / C4244 编译警告:源码文件改为带 BOM 的 UTF-8 编码;signed/unsigned 不匹配处改用 `size_t` 循环变量或显式 `static_cast` 比较;double/float、__int64/double 等窄化转换改为 `static_cast` 显式转换,保持原有计算逻辑不变(涉及 `data_process.cpp`、`dot_coh.cpp`、`dot_coh_tas.cpp`、`tas_ctrl.cpp`、`track_asso.cpp`、`track_asso_tas.cpp`、`track_init.cpp`、`track_init_direct_tracking.cpp`、`track_index_mangement.cpp` 等)。 ## [1.5.5] - 2026-08-27 @@ -54,4 +64,4 @@ ### Removed -- 移除 `requirements.md`、`CLAUDE.md`、Makefile 系列、Qt 工程用户文件、内置 Eigen 3.3.7 冗余文件及「航迹点迹区分区说明」等不必要文件。 +- 移除 `requirements.md`(93d3924 移除,后于 b3e2f52 重新加入并改为 TAS 波束控制说明)、`CLAUDE.md`、Makefile 系列、Qt 工程用户文件、内置 Eigen 3.3.7 冗余文件及「航迹点迹区分区说明」等不必要文件。 diff --git a/CMakeLists.txt b/CMakeLists.txt index 09f1bf9..41127b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,13 @@ if(MSVC) /FS $<$:/Zc:strictStrings> ) + + # 修复 C4819(源文件含当前代码页无法表示的字符)。 + # /utf-8 从 VS2015 Update 2 开始支持;本工程使用 MSVC 2013 时无该选项, + # 通过为源码文件添加 UTF-8 BOM 解决 C4819,这里仅对支持 /utf-8 的新版 MSVC 开启。 + if(MSVC_VERSION GREATER_EQUAL 1900) + target_compile_options(data_process_class_dll PRIVATE /utf-8) + endif() endif() # 输出目录:build/bin 下为 DLL/PDB,build/lib 下为导入库。 diff --git a/README.md b/README.md index de1984f..f4ff163 100644 --- a/README.md +++ b/README.md @@ -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` 下全部 C4018(signed/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 一组宏已精简为单个 FREQ0,e729c5b 起由 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.md,README 补充相应说明 | +| 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)配置样例 | diff --git a/data_process_class_dll/coor_trans.cpp b/data_process_class_dll/coor_trans.cpp index bbe4def..3b1e7e5 100644 --- a/data_process_class_dll/coor_trans.cpp +++ b/data_process_class_dll/coor_trans.cpp @@ -1,4 +1,4 @@ -#include "coor_trans.h" +#include "coor_trans.h" #include #include #include diff --git a/data_process_class_dll/coor_trans.h b/data_process_class_dll/coor_trans.h index 9280888..cd96590 100644 --- a/data_process_class_dll/coor_trans.h +++ b/data_process_class_dll/coor_trans.h @@ -1,4 +1,4 @@ -#ifndef COOR_TRANS_H +#ifndef COOR_TRANS_H #define COOR_TRANS_H #include "parameters.h" diff --git a/data_process_class_dll/data_process.cpp b/data_process_class_dll/data_process.cpp index dfe3b1c..820ae67 100644 --- a/data_process_class_dll/data_process.cpp +++ b/data_process_class_dll/data_process.cpp @@ -1,4 +1,4 @@ -#include "data_process.h" +#include "data_process.h" #include #include #include @@ -246,7 +246,7 @@ int Data_Process:: track_delete(int delete_track_num, //手动 { for (int i=0;i #include #include @@ -16,18 +16,18 @@ int Dot_Coh::dot_coh_process(std::vector *data_input, { if( (*data_input)[loop_of_point].Use_Flag!=1) { - float point_0_R=(*data_input)[loop_of_point].Range; - float point_0_V=(*data_input)[loop_of_point].Velocity; - float point_0_F=(*data_input)[loop_of_point].Azimuth; - float point_0_A=(*data_input)[loop_of_point].Amplitude; + float point_0_R=static_cast((*data_input)[loop_of_point].Range); + float point_0_V=static_cast((*data_input)[loop_of_point].Velocity); + float point_0_F=static_cast((*data_input)[loop_of_point].Azimuth); + float point_0_A=static_cast((*data_input)[loop_of_point].Amplitude); for (unsigned int i=loop_of_point+1;isize();i++) { if((*data_input)[loop_of_point].Use_Flag!=1 && (*data_input)[i].Use_Flag!=1) { - float point_1_R=(*data_input)[i].Range; - float point_1_V=(*data_input)[i].Velocity; - float point_1_F=(*data_input)[i].Azimuth; - float point_1_A=(*data_input)[i].Amplitude; + float point_1_R=static_cast((*data_input)[i].Range); + float point_1_V=static_cast((*data_input)[i].Velocity); + float point_1_F=static_cast((*data_input)[i].Azimuth); + float point_1_A=static_cast((*data_input)[i].Amplitude); //凝聚条件: 距离、方位接近 if(Work_Parameter.work_mode == 0) @@ -36,10 +36,10 @@ int Dot_Coh::dot_coh_process(std::vector *data_input, if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)// && point_0_A ((*data_input)[i].Range); + point_0_V=static_cast((*data_input)[i].Velocity); + point_0_A=static_cast((*data_input)[i].Amplitude); + point_0_F=static_cast((*data_input)[i].Azimuth); (*data_input)[loop_of_point].Use_Flag=1; } else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)// @@ -54,10 +54,10 @@ int Dot_Coh::dot_coh_process(std::vector *data_input, if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )// && point_0_A ((*data_input)[i].Range); + point_0_V=static_cast((*data_input)[i].Velocity); + point_0_A=static_cast((*data_input)[i].Amplitude); + point_0_F=static_cast((*data_input)[i].Azimuth); (*data_input)[loop_of_point].Use_Flag=1; } else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )// @@ -88,7 +88,7 @@ int Dot_Coh::dot_coh_process(std::vector *data_input, } } - for (int i=0;isize();i++) //data_buffer_2 ---> point_recv + for (size_t i=0;isize();i++) //data_buffer_2 ---> point_recv { (*point_recv).push_back((*data_input)[i]); } @@ -106,20 +106,20 @@ int Dot_Coh::dot_coh_process_buff( std::vector *data_input, //1.1 data_input、data_input_buff中的数据放在一起 std::vector data_tmp; - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { data_tmp.push_back((*data_input)[i]); data_tmp[data_tmp.size()-1].point_section_asso = 2; } // //去除点迹中,1km以内,SNR小于20dB的点 -// for (int i=0;isize();i++) +// for (size_t i=0;isize();i++) // { // if((*data_input)[i].Range > 1000 || (*data_input)[i].snr >= 20){ // data_tmp.push_back((*data_input)[i]); @@ -140,18 +140,18 @@ int Dot_Coh::dot_coh_process_buff( std::vector *data_input, { if( data_tmp[loop_of_point].Use_Flag!=1) { - float point_0_R=data_tmp[loop_of_point].Range; - float point_0_V=data_tmp[loop_of_point].Velocity; - float point_0_F=data_tmp[loop_of_point].Azimuth; - float point_0_A=data_tmp[loop_of_point].Amplitude; + float point_0_R=static_cast(data_tmp[loop_of_point].Range); + float point_0_V=static_cast(data_tmp[loop_of_point].Velocity); + float point_0_F=static_cast(data_tmp[loop_of_point].Azimuth); + float point_0_A=static_cast(data_tmp[loop_of_point].Amplitude); for (unsigned int i=loop_of_point+1;i(data_tmp[i].Range); + float point_1_V=static_cast(data_tmp[i].Velocity); + float point_1_F=static_cast(data_tmp[i].Azimuth); + float point_1_A=static_cast(data_tmp[i].Amplitude); //凝聚条件: 距离、方位接近 if(Work_Parameter.work_mode == 0) @@ -160,10 +160,10 @@ int Dot_Coh::dot_coh_process_buff( std::vector *data_input, if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)// && point_0_A (data_tmp[i].Range); + point_0_V=static_cast(data_tmp[i].Velocity); + point_0_A=static_cast(data_tmp[i].Amplitude); + point_0_F=static_cast(data_tmp[i].Azimuth); data_tmp[loop_of_point].Use_Flag=1; } else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)// @@ -178,10 +178,10 @@ int Dot_Coh::dot_coh_process_buff( std::vector *data_input, if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )// && point_0_A (data_tmp[i].Range); + point_0_V=static_cast(data_tmp[i].Velocity); + point_0_A=static_cast(data_tmp[i].Amplitude); + point_0_F=static_cast(data_tmp[i].Azimuth); data_tmp[loop_of_point].Use_Flag=1; } else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )// @@ -213,7 +213,7 @@ int Dot_Coh::dot_coh_process_buff( std::vector *data_input, } //1.5 将data_tmp中凝聚后的点再分到 data_input_buff和data_input中 - for (int i=0;i *data_input, //2.data_input_buff数据输出给point_recv - for (int i=0;i *data_input, std::vector().swap(data_input_buff); //3.data_input数据输出给data_input_buff - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { data_input_buff.push_back((*data_input)[i]); } diff --git a/data_process_class_dll/dot_coh.h b/data_process_class_dll/dot_coh.h index 831b268..09e8f50 100644 --- a/data_process_class_dll/dot_coh.h +++ b/data_process_class_dll/dot_coh.h @@ -1,4 +1,4 @@ -#ifndef DOT_COH_H +#ifndef DOT_COH_H #define DOT_COH_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/dot_coh_tas.cpp b/data_process_class_dll/dot_coh_tas.cpp index b6e30e8..19ed7cd 100644 --- a/data_process_class_dll/dot_coh_tas.cpp +++ b/data_process_class_dll/dot_coh_tas.cpp @@ -1,4 +1,4 @@ -#include "dot_coh_tas.h" +#include "dot_coh_tas.h" #include #include #include @@ -12,32 +12,32 @@ int Dot_Coh_TAS::dot_coh_tas_process(std::vector *dat return 1; } - for (int loop_of_point=0; loop_of_pointsize()-1;loop_of_point++ ) + for (size_t loop_of_point=0; loop_of_pointsize()-1;loop_of_point++ ) { if( (*data_input)[loop_of_point].Use_Flag!=1) { - float point_0_R=(*data_input)[loop_of_point].Range; - float point_0_V=(*data_input)[loop_of_point].Velocity; - float point_0_F=(*data_input)[loop_of_point].Azimuth; - float point_0_A=(*data_input)[loop_of_point].Amplitude; - for ( int i=loop_of_point+1;i<(*data_input).size();i++) + float point_0_R=static_cast((*data_input)[loop_of_point].Range); + float point_0_V=static_cast((*data_input)[loop_of_point].Velocity); + float point_0_F=static_cast((*data_input)[loop_of_point].Azimuth); + float point_0_A=static_cast((*data_input)[loop_of_point].Amplitude); + for ( size_t i=loop_of_point+1;i<(*data_input).size();i++) { if((*data_input)[loop_of_point].Use_Flag!=1 && (*data_input)[i].Use_Flag!=1) { - float point_1_R=(*data_input)[i].Range; - float point_1_V=(*data_input)[i].Velocity; - float point_1_F=(*data_input)[i].Azimuth; - float point_1_A=(*data_input)[i].Amplitude; + float point_1_R=static_cast((*data_input)[i].Range); + float point_1_V=static_cast((*data_input)[i].Velocity); + float point_1_F=static_cast((*data_input)[i].Azimuth); + float point_1_A=static_cast((*data_input)[i].Amplitude); //凝聚条件: 距离、方位接近 float delta_F = fabs(point_0_F-point_1_F)<2*PI-fabs(point_0_F-point_1_F) ? fabs(point_0_F-point_1_F) :2*PI-fabs(point_0_F-point_1_F); if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V) && point_0_A ((*data_input)[i].Range); + point_0_V=static_cast((*data_input)[i].Velocity); + point_0_A=static_cast((*data_input)[i].Amplitude); + point_0_F=static_cast((*data_input)[i].Azimuth); (*data_input)[loop_of_point].Use_Flag=1; } else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V) @@ -65,7 +65,7 @@ int Dot_Coh_TAS::dot_coh_tas_process(std::vector *dat } } - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { (*point_recv_tas).push_back((*data_input)[i]); } diff --git a/data_process_class_dll/dot_coh_tas.h b/data_process_class_dll/dot_coh_tas.h index c7975a6..8363cff 100644 --- a/data_process_class_dll/dot_coh_tas.h +++ b/data_process_class_dll/dot_coh_tas.h @@ -1,4 +1,4 @@ -#ifndef DOT_COH_TAS_H +#ifndef DOT_COH_TAS_H #define DOT_COH_TAS_H #include "parameters.h" #include "struct.h" diff --git a/data_process_class_dll/kalman.cpp b/data_process_class_dll/kalman.cpp index 01f42af..61456a5 100644 --- a/data_process_class_dll/kalman.cpp +++ b/data_process_class_dll/kalman.cpp @@ -1,4 +1,4 @@ -#include "kalman.h" +#include "kalman.h" #include "coor_trans.h" #include "parameters.h" #include diff --git a/data_process_class_dll/kalman.h b/data_process_class_dll/kalman.h index 3e244ba..c82cd0d 100644 --- a/data_process_class_dll/kalman.h +++ b/data_process_class_dll/kalman.h @@ -1,4 +1,4 @@ -#ifndef KALMAN_H +#ifndef KALMAN_H #define KALMAN_H #include "parameters.h" #include "struct.h" diff --git a/data_process_class_dll/parameters.h b/data_process_class_dll/parameters.h index 818dbab..1d55725 100644 --- a/data_process_class_dll/parameters.h +++ b/data_process_class_dll/parameters.h @@ -1,4 +1,4 @@ -#ifndef PARAMETERS_H +#ifndef PARAMETERS_H #define PARAMETERS_H #pragma once /**********************************雷达参数*************************************************/ diff --git a/data_process_class_dll/struct.h b/data_process_class_dll/struct.h index 1f7dc4a..418ebfe 100644 --- a/data_process_class_dll/struct.h +++ b/data_process_class_dll/struct.h @@ -1,4 +1,4 @@ -#ifndef STRUCT_H +#ifndef STRUCT_H #define STRUCT_H #pragma once diff --git a/data_process_class_dll/tas_ctrl.cpp b/data_process_class_dll/tas_ctrl.cpp index 0f95e62..9941dec 100644 --- a/data_process_class_dll/tas_ctrl.cpp +++ b/data_process_class_dll/tas_ctrl.cpp @@ -1,4 +1,4 @@ -#include "tas_ctrl.h" +#include "tas_ctrl.h" #include "coor_trans.h" #include #include @@ -55,7 +55,7 @@ void TAS_Ctrl::tas_target_add(std::vector *trust_track, struct RadarPara Work_Parameter) { - for (int i=0;isize();i++) + for (size_t i=0;isize();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)); @@ -95,18 +95,18 @@ void TAS_Ctrl::tas_target_add(std::vector *trust_track, 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=r_output; - Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azmi_output/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast(r_output); + Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast(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= - 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=(*trust_track)[i].Amplitude; + static_cast(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((*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=asin((*trust_track)[i].Height/r_output)/PI*180; - Trust_Track_Output[*Trust_track_num_Output-1][0].z=(*trust_track)[i].Height+Work_Parameter.Height; + Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=static_cast(asin((*trust_track)[i].Height/r_output)/PI*180); + Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast((*trust_track)[i].Height+Work_Parameter.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 = (*trust_track)[i].snr_point; + Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast((*trust_track)[i].snr_point); break; } @@ -164,7 +164,7 @@ void TAS_Ctrl::tas_target_del(std::vector *trust_track, { //查找TAS队列里的目标是否存在 int flag=0; - for (int j=0;jsize();j++){ + for (size_t j=0;jsize();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) { @@ -213,17 +213,17 @@ void TAS_Ctrl::tas_target_del(std::vector *trust_track, // 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=r_output; -// Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azmi_output/PI*180; +// Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast(r_output); +// Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast(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=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=(*trust_track)[i].Amplitude; +// Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V=static_cast(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((*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=asin((*trust_track)[i].Height/r_output)/PI*180; -// Trust_Track_Output[*Trust_track_num_Output-1][0].z=(*trust_track)[i].Height+Work_Parameter.Height; +// Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=static_cast(asin((*trust_track)[i].Height/r_output)/PI*180); +// Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast((*trust_track)[i].Height+Work_Parameter.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 = (*trust_track)[i].snr_point; +// Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast((*trust_track)[i].snr_point); // } // } // } diff --git a/data_process_class_dll/tas_ctrl.h b/data_process_class_dll/tas_ctrl.h index ed5149b..ed0c9a9 100644 --- a/data_process_class_dll/tas_ctrl.h +++ b/data_process_class_dll/tas_ctrl.h @@ -1,4 +1,4 @@ -#ifndef TAS_CTRL_H +#ifndef TAS_CTRL_H #define TAS_CTRL_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/track_asso.cpp b/data_process_class_dll/track_asso.cpp index 69572b8..5e80017 100644 --- a/data_process_class_dll/track_asso.cpp +++ b/data_process_class_dll/track_asso.cpp @@ -1,4 +1,4 @@ -#include "track_asso.h" +#include "track_asso.h" #include "kalman.h" #include "coor_trans.h" #include @@ -20,7 +20,7 @@ int Track_Asso:: track_asso_process(std::vector *point_ { //取出对应点迹区的点 - for (int i=0;i< point_recv->size();i++) + for (size_t i=0;i< point_recv->size();i++) { point_process.push_back((*point_recv)[i]); int n=point_process.size(); @@ -51,7 +51,7 @@ int Track_Asso:: track_asso_process(std::vector *point_ //剩余点重新存入点迹 std::vector().swap((*point_recv)); - for (int i=0;i *point_ std::vector().swap(point_process); //输出航迹 - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { // 输出更新航迹条件: // if((*trust_track)[i].manual_tracking_flag==0) // { @@ -76,53 +76,53 @@ int Track_Asso:: track_asso_process(std::vector *point_ coor_trans Coor_trans; double r, azi; Coor_trans.cart2polar(x, y, &r, &azi); - Trust_Track_Output[*Trust_track_num_Output-1][0].Range=r; - Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azi/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast(r); + Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast(azi/PI*180); if((*trust_track)[i].Height(asin((*trust_track)[i].Height/r)/PI*180); else - Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = (*trust_track)[i].elev_point; + Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast((*trust_track)[i].elev_point); 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 = - 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 = (*trust_track)[i].Amplitude; + static_cast(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((*trust_track)[i].Amplitude); 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].track_time=(*trust_track)[i].T_track/1000.0; + Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=static_cast((*trust_track)[i].T_track/1000.0); Trust_Track_Output[*Trust_track_num_Output-1][0].GNSS_time=(*trust_track)[i].GNSS_time; 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].z=(*trust_track)[i].Height+Work_Parameter.Height; + Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast((*trust_track)[i].Height+Work_Parameter.Height); double Direction_Angle; Direction_Angle=atan2((*trust_track)[i].X[4], (*trust_track)[i].X[1]); if(Direction_Angle<0){Direction_Angle=Direction_Angle+2*PI;} - Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=Direction_Angle/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=static_cast(Direction_Angle/PI*180); //关联点信息 - Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=(*trust_track)[i].range_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=(*trust_track)[i].azi_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=(*trust_track)[i].elev_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=(*trust_track)[i].vr_point; + Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=static_cast((*trust_track)[i].range_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=static_cast((*trust_track)[i].azi_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=static_cast((*trust_track)[i].elev_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=static_cast((*trust_track)[i].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 = (*trust_track)[i].prf_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = (*trust_track)[i].snr_point; + Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = static_cast((*trust_track)[i].prf_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast((*trust_track)[i].snr_point); //直接输出点迹高度-20260605 //Trust_Track_Output[*Trust_track_num_Output-1][0].z = (*trust_track)[i].range_point * sin((*trust_track)[i].elev_point/180.0*PI); //输出平滑后的高度 - Trust_Track_Output[*Trust_track_num_Output-1][0].z = (*trust_track)[i].Height+Work_Parameter.Height; + Trust_Track_Output[*Trust_track_num_Output-1][0].z = static_cast((*trust_track)[i].Height+Work_Parameter.Height); - Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = (*trust_track)[i].elev_point; + Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast((*trust_track)[i].elev_point); - Trust_Track_Output[*Trust_track_num_Output-1][0].x=(*trust_track)[i].X[0]; - Trust_Track_Output[*Trust_track_num_Output-1][0].y=(*trust_track)[i].X[3]; - Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=(*trust_track)[i].X[1]; - Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=(*trust_track)[i].X[4]; + Trust_Track_Output[*Trust_track_num_Output-1][0].x=static_cast((*trust_track)[i].X[0]); + Trust_Track_Output[*Trust_track_num_Output-1][0].y=static_cast((*trust_track)[i].X[3]); + Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=static_cast((*trust_track)[i].X[1]); + Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=static_cast((*trust_track)[i].X[4]); - Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = (*trust_track)[i].RCS; + Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = static_cast((*trust_track)[i].RCS); Trust_Track_Output[*Trust_track_num_Output-1][0].pitch_num = (*trust_track)[i].pitch_num; std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim, (*trust_track)[i].speed_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim)); @@ -137,7 +137,7 @@ int Track_Asso:: track_asso_process(std::vector *point_ void Track_Asso:: model_interaction(std::vector *trust_track) { - for (int loop_of_track=0;loop_of_tracksize();loop_of_track++) + for (size_t loop_of_track=0;loop_of_tracksize();loop_of_track++) { // if((*trust_track)[loop_of_track].manual_tracking_flag == 0) @@ -413,13 +413,13 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra std::vector associated_info; //遍历所有点迹航迹 计算点迹和航迹的统计距离 - for (int loop_of_track = 0; loop_of_tracksize();loop_of_track++) + for (size_t loop_of_track = 0; loop_of_tracksize();loop_of_track++) { // if((*trust_track)[loop_of_track].manual_tracking_flag==0) // { (*trust_track)[loop_of_track].point_flag = 0; //航迹的point_flag置为0 关联上点后再置为1 - for (int loop_of_point = 0; loop_of_point *trust_track,struct Ra associated_info_tmp.d1=d1; associated_info_tmp.d2=d2; associated_info_tmp.d3=d3; - associated_info_tmp.point_index=loop_of_point+1; - associated_info_tmp.track_index=loop_of_track+1; + associated_info_tmp.point_index=static_cast(loop_of_point)+1; + associated_info_tmp.track_index=static_cast(loop_of_track)+1; if(d1<=d2&&d1<=d3) associated_info_tmp.d_min=d1; else if(d2<=d1&& d2<=d3) @@ -571,7 +571,7 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra //最近邻法关联 int associated_num=associated_info.size(); - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { //寻找最小d if(associated_num>0) @@ -650,9 +650,9 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra for (int ii=0;ii<3;ii++) for (int jj=0;jj<3;jj++) { - S1_out(ii,jj)=S1[ii][jj]; - S2_out(ii,jj)=S2[ii][jj]; - S3_out(ii,jj)=S3[ii][jj]; + S1_out(ii,jj)=static_cast(S1[ii][jj]); + S2_out(ii,jj)=static_cast(S2[ii][jj]); + S3_out(ii,jj)=static_cast(S3[ii][jj]); } double det_S1=S1_out.determinant(); double Possibility1=(det_S1>1e-12)?(1.0/sqrt(pow(2*PI,3)*det_S1)*exp(-0.5*d1)):0.0; @@ -755,7 +755,7 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra } //未关联上的航迹 进行外推 tws - for (int i =0; i<(*trust_track).size();i++ ) + for (size_t i =0; i<(*trust_track).size();i++ ) { if((*trust_track)[i].point_flag == 0 && (*trust_track)[i].manual_tracking_flag == 0) { @@ -804,8 +804,8 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra memcpy((*trust_track)[i].P2,P2_pred,6*6*sizeof(double)); memcpy((*trust_track)[i].P3,P3_pred,6*6*sizeof(double)); - (*trust_track)[i].T_track = (*trust_track)[i].T_track+delta_T*1000.0; //更新航迹时间 - (*trust_track)[i].GNSS_time = (*trust_track)[i].GNSS_time+delta_T*1000.0; //更新航迹时间 + (*trust_track)[i].T_track = static_cast((*trust_track)[i].T_track+delta_T*1000.0); //更新航迹时间 + (*trust_track)[i].GNSS_time = static_cast((*trust_track)[i].GNSS_time+delta_T*1000.0); //更新航迹时间 (*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1; //连续未用实点更新时间 (*trust_track)[i].point_flag=0; //虚点 } @@ -815,7 +815,7 @@ void Track_Asso:: model_filter(std::vector *trust_track,struct Ra void Track_Asso:: model_output(std::vector *trust_track) { - for(int loop_of_track=0; loop_of_tracksize(); loop_of_track++) + for(size_t loop_of_track=0; loop_of_tracksize(); loop_of_track++) { // if((*trust_track)[loop_of_track].manual_tracking_flag==0) @@ -919,7 +919,7 @@ void Track_Asso:: track_hight_update(int updata_ ) { - if(updata_track_index<=trust_track->size() && asso_point_index<=point_process.size()) + if(updata_track_index<=static_cast(trust_track->size()) && asso_point_index<=static_cast(point_process.size())) { (*trust_track)[updata_track_index-1].Hight_smooth.push_back(point_process[asso_point_index-1].Height); @@ -944,10 +944,10 @@ void Track_Asso:: track_hight_update(int updata_ } double sum=0; - if((*trust_track)[updata_track_index-1].Hight_smooth.size()(height_win_length)) { - for (int i=0;i<(*trust_track)[updata_track_index-1].Hight_smooth.size();i++) + for (size_t i=0;i<(*trust_track)[updata_track_index-1].Hight_smooth.size();i++) { sum=sum+(*trust_track)[updata_track_index-1].Hight_smooth[i]; @@ -956,7 +956,7 @@ void Track_Asso:: track_hight_update(int updata_ (*trust_track)[updata_track_index-1].Height=sum/(*trust_track)[updata_track_index-1].Hight_smooth.size(); } - else if((*trust_track)[updata_track_index-1].Hight_smooth.size()>=height_win_length) + else if((*trust_track)[updata_track_index-1].Hight_smooth.size()>=static_cast(height_win_length)) { int N=(*trust_track)[updata_track_index-1].Hight_smooth.size(); diff --git a/data_process_class_dll/track_asso.h b/data_process_class_dll/track_asso.h index a5d6441..7ef623d 100644 --- a/data_process_class_dll/track_asso.h +++ b/data_process_class_dll/track_asso.h @@ -1,4 +1,4 @@ -#ifndef TRACK_ASSO_H +#ifndef TRACK_ASSO_H #define TRACK_ASSO_H #include "data_process_class_dll.h" diff --git a/data_process_class_dll/track_asso_direct_tracking.cpp b/data_process_class_dll/track_asso_direct_tracking.cpp index a8df218..e4f1ce8 100644 --- a/data_process_class_dll/track_asso_direct_tracking.cpp +++ b/data_process_class_dll/track_asso_direct_tracking.cpp @@ -1,4 +1,4 @@ -#include "track_asso_direct_tracking.h" +#include "track_asso_direct_tracking.h" #include "kalman.h" #include "coor_trans.h" #include diff --git a/data_process_class_dll/track_asso_direct_tracking.h b/data_process_class_dll/track_asso_direct_tracking.h index a71ffdf..4bb1d29 100644 --- a/data_process_class_dll/track_asso_direct_tracking.h +++ b/data_process_class_dll/track_asso_direct_tracking.h @@ -1,4 +1,4 @@ -#ifndef TRACK_ASSO_DIRECT_TRACKING_H +#ifndef TRACK_ASSO_DIRECT_TRACKING_H #define TRACK_ASSO_DIRECT_TRACKING_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/track_asso_tas.cpp b/data_process_class_dll/track_asso_tas.cpp index 21964f8..78f0723 100644 --- a/data_process_class_dll/track_asso_tas.cpp +++ b/data_process_class_dll/track_asso_tas.cpp @@ -1,4 +1,4 @@ -#include "track_asso_tas.h" +#include "track_asso_tas.h" #include "kalman.h" #include "coor_trans.h" #include @@ -20,7 +20,7 @@ long long latest_timestamp //最新时间戳 { //取出点迹 - for (int i=0;i< point_recv_tas->size();i++) + for (size_t i=0;i< point_recv_tas->size();i++) { point_process.push_back((*point_recv_tas)[i]); } @@ -36,7 +36,7 @@ long long latest_timestamp //最新时间戳 std::vector().swap(point_process); //输出航迹 - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { // 输出更新航迹条件: if((*trust_track)[i].Track_Index == tas_track_idx) { @@ -49,42 +49,42 @@ long long latest_timestamp //最新时间戳 coor_trans Coor_trans; double r, azi; Coor_trans.cart2polar(x, y, &r, &azi); - Trust_Track_Output[*Trust_track_num_Output-1][0].Range=r; - Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azi/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast(r); + Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast(azi/PI*180); { double elev_ratio = (r > 0.0) ? (*trust_track)[i].Height / r : 0.0; if (elev_ratio > 1.0) elev_ratio = 1.0; if (elev_ratio < -1.0) elev_ratio = -1.0; - Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = asin(elev_ratio)/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast(asin(elev_ratio)/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 = - 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 = (*trust_track)[i].Amplitude; + static_cast(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((*trust_track)[i].Amplitude); 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].track_time=(*trust_track)[i].T_track/1000.0; + Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=static_cast((*trust_track)[i].T_track/1000.0); Trust_Track_Output[*Trust_track_num_Output-1][0].GNSS_time=(*trust_track)[i].GNSS_time; 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].z=(*trust_track)[i].Height+Work_Parameter.Height; + Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast((*trust_track)[i].Height+Work_Parameter.Height); double Direction_Angle; Direction_Angle=atan2((*trust_track)[i].X[4], (*trust_track)[i].X[1]); if(Direction_Angle<0){Direction_Angle=Direction_Angle+2*PI;} - Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=Direction_Angle/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=static_cast(Direction_Angle/PI*180); //关联点信息 - Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=(*trust_track)[i].range_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=(*trust_track)[i].azi_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=(*trust_track)[i].elev_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=(*trust_track)[i].vr_point; + Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=static_cast((*trust_track)[i].range_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=static_cast((*trust_track)[i].azi_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=static_cast((*trust_track)[i].elev_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=static_cast((*trust_track)[i].vr_point); Trust_Track_Output[*Trust_track_num_Output-1][0].point_type=1; - Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = (*trust_track)[i].prf_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = (*trust_track)[i].snr_point; - Trust_Track_Output[*Trust_track_num_Output-1][0].x=(*trust_track)[i].X[0]; - Trust_Track_Output[*Trust_track_num_Output-1][0].y=(*trust_track)[i].X[3]; - Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=(*trust_track)[i].X[1]; - Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=(*trust_track)[i].X[4]; - Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = (*trust_track)[i].RCS; + Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = static_cast((*trust_track)[i].prf_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast((*trust_track)[i].snr_point); + Trust_Track_Output[*Trust_track_num_Output-1][0].x=static_cast((*trust_track)[i].X[0]); + Trust_Track_Output[*Trust_track_num_Output-1][0].y=static_cast((*trust_track)[i].X[3]); + Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=static_cast((*trust_track)[i].X[1]); + Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=static_cast((*trust_track)[i].X[4]); + Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = static_cast((*trust_track)[i].RCS); Trust_Track_Output[*Trust_track_num_Output-1][0].pitch_num = (*trust_track)[i].pitch_num; std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim, (*trust_track)[i].speed_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim)); @@ -101,7 +101,7 @@ long long latest_timestamp //最新时间戳 void Track_Asso_Tas:: model_interaction( std::vector *trust_track, int tas_track_idx) { - for (int loop_of_track=0;loop_of_tracksize();loop_of_track++) + for (size_t loop_of_track=0;loop_of_tracksize();loop_of_track++) { if((*trust_track)[loop_of_track].Track_Index == tas_track_idx) @@ -238,7 +238,7 @@ void Track_Asso_Tas::model_filter( std::vector *t double r_track = 0; double h_track = 0; bool found_tas_track = false; - for (int loop_of_track=0;loop_of_tracksize();loop_of_track++) + for (size_t loop_of_track=0;loop_of_tracksize();loop_of_track++) { if((*trust_track)[loop_of_track].Track_Index == tas_track_idx) { @@ -257,7 +257,7 @@ void Track_Asso_Tas::model_filter( std::vector *t memcpy(P2,(*trust_track)[loop_of_track].P2,6*6*sizeof(double)); memcpy(P3,(*trust_track)[loop_of_track].P3,6*6*sizeof(double)); - T_track = (*trust_track)[loop_of_track].T_track; + T_track = static_cast((*trust_track)[loop_of_track].T_track); v_track = sqrt(pow((*trust_track)[loop_of_track].X[1],2)+pow((*trust_track)[loop_of_track].X[4],2)); r_track = sqrt(pow((*trust_track)[loop_of_track].X[0],2)+pow((*trust_track)[loop_of_track].X[3],2)); h_track = (*trust_track)[loop_of_track].Height; @@ -269,7 +269,7 @@ void Track_Asso_Tas::model_filter( std::vector *t return; // 计算量测和航迹统计距离 - for (int loop_of_point = 0; loop_of_point *t associated_info_tmp.d1=d1; associated_info_tmp.d2=d2; associated_info_tmp.d3=d3; - associated_info_tmp.point_index=loop_of_point+1; + associated_info_tmp.point_index=static_cast(loop_of_point)+1; if(d1<=d2&&d1<=d3) associated_info_tmp.d_min=d1; else if(d2<=d1&& d2<=d3) @@ -376,12 +376,12 @@ void Track_Asso_Tas::model_filter( std::vector *t //找最近点 int min_index=1; double min_d=associated_info[0].d_min; - for (int ii=0;ii(ii)+1; } } int point_index=associated_info[min_index-1].point_index; @@ -413,9 +413,9 @@ void Track_Asso_Tas::model_filter( std::vector *t for (int ii=0;ii<3;ii++) for (int jj=0;jj<3;jj++) { - S1_out(ii,jj)=S1[ii][jj]; - S2_out(ii,jj)=S2[ii][jj]; - S3_out(ii,jj)=S3[ii][jj]; + S1_out(ii,jj)=static_cast(S1[ii][jj]); + S2_out(ii,jj)=static_cast(S2[ii][jj]); + S3_out(ii,jj)=static_cast(S3[ii][jj]); } double det_S1=S1_out.determinant(); double Possibility1=(det_S1>1e-12)?(1.0/sqrt(pow(2*PI,3)*det_S1)*exp(-0.5*d1)):0.0; @@ -425,7 +425,7 @@ void Track_Asso_Tas::model_filter( std::vector *t double Possibility3=(det_S3>1e-12)?(1.0/sqrt(pow(2*PI,3)*det_S3)*exp(-0.5*d3)):0.0; //更新航迹 - for(int i=0;isize();i++) + for(size_t i=0;isize();i++) if((*trust_track)[i].Track_Index == tas_track_idx) { @@ -496,7 +496,7 @@ void Track_Asso_Tas::model_filter( std::vector *t else { - for(int i=0;isize();i++) + for(size_t i=0;isize();i++) if((*trust_track)[i].Track_Index == tas_track_idx) { double delta_T = (latest_timestamp - T_track)/1000.0; @@ -517,8 +517,8 @@ void Track_Asso_Tas::model_filter( std::vector *t memcpy((*trust_track)[i].P2,P2_pred,6*6*sizeof(double)); memcpy((*trust_track)[i].P3,P3_pred,6*6*sizeof(double)); - (*trust_track)[i].T_track = (*trust_track)[i].T_track+delta_T*1000.0; //更新航迹时间 - (*trust_track)[i].GNSS_time = (*trust_track)[i].GNSS_time+delta_T*1000.0; //更新航迹时间 + (*trust_track)[i].T_track = static_cast((*trust_track)[i].T_track+delta_T*1000.0); //更新航迹时间 + (*trust_track)[i].GNSS_time = static_cast((*trust_track)[i].GNSS_time+delta_T*1000.0); //更新航迹时间 (*trust_track)[i].point_flag=0; //虚点 (*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1; } @@ -529,7 +529,7 @@ void Track_Asso_Tas::model_filter( std::vector *t void Track_Asso_Tas::model_output(std::vector *trust_track, int tas_track_idx ) { - for(int i=0; isize(); i++) + for(size_t i=0; isize(); i++) if((*trust_track)[i].Track_Index==tas_track_idx) { @@ -737,7 +737,7 @@ void Track_Asso_Tas::track_hight_update(int tas_ std::vector *trust_track //航迹 ) { - for(int i=0; isize(); i++) + for(size_t i=0; isize(); i++) if((*trust_track)[i].Track_Index==tas_track_idx) { (*trust_track)[i].Hight_smooth.push_back(point_process[asso_point_index-1].Height); @@ -761,10 +761,10 @@ void Track_Asso_Tas::track_hight_update(int tas_ } double sum=0; - if((*trust_track)[i].Hight_smooth.size()(height_win_length)) { - for (int ii=0;ii<(*trust_track)[i].Hight_smooth.size();ii++) + for (size_t ii=0;ii<(*trust_track)[i].Hight_smooth.size();ii++) { sum=sum+(*trust_track)[i].Hight_smooth[ii]; @@ -773,7 +773,7 @@ void Track_Asso_Tas::track_hight_update(int tas_ (*trust_track)[i].Height=sum/(*trust_track)[i].Hight_smooth.size(); } - else if((*trust_track)[i].Hight_smooth.size()>=height_win_length) + else if((*trust_track)[i].Hight_smooth.size()>=static_cast(height_win_length)) { int N=(*trust_track)[i].Hight_smooth.size(); diff --git a/data_process_class_dll/track_asso_tas.h b/data_process_class_dll/track_asso_tas.h index 51f7cf1..69e70e7 100644 --- a/data_process_class_dll/track_asso_tas.h +++ b/data_process_class_dll/track_asso_tas.h @@ -1,4 +1,4 @@ -#ifndef TRACK_ASSO_TAS_H +#ifndef TRACK_ASSO_TAS_H #define TRACK_ASSO_TAS_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/track_die.cpp b/data_process_class_dll/track_die.cpp index f5c8117..fe51670 100644 --- a/data_process_class_dll/track_die.cpp +++ b/data_process_class_dll/track_die.cpp @@ -1,4 +1,4 @@ -#include "track_die.h" +#include "track_die.h" #include "kalman.h" #include "coor_trans.h" #include diff --git a/data_process_class_dll/track_die.h b/data_process_class_dll/track_die.h index 51181d4..6d893bf 100644 --- a/data_process_class_dll/track_die.h +++ b/data_process_class_dll/track_die.h @@ -1,4 +1,4 @@ -#ifndef TRACK_DIE_H +#ifndef TRACK_DIE_H #define TRACK_DIE_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/track_die_tas.cpp b/data_process_class_dll/track_die_tas.cpp index 5d288af..05cb40e 100644 --- a/data_process_class_dll/track_die_tas.cpp +++ b/data_process_class_dll/track_die_tas.cpp @@ -1,4 +1,4 @@ -#include "track_die_tas.h" +#include "track_die_tas.h" #include "kalman.h" #include "coor_trans.h" #include diff --git a/data_process_class_dll/track_die_tas.h b/data_process_class_dll/track_die_tas.h index 0220afb..b983ed9 100644 --- a/data_process_class_dll/track_die_tas.h +++ b/data_process_class_dll/track_die_tas.h @@ -1,4 +1,4 @@ -#ifndef TRACK_DIE_TAS_H +#ifndef TRACK_DIE_TAS_H #define TRACK_DIE_TAS_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/track_index_mangement.cpp b/data_process_class_dll/track_index_mangement.cpp index 4ed59d3..255a657 100644 --- a/data_process_class_dll/track_index_mangement.cpp +++ b/data_process_class_dll/track_index_mangement.cpp @@ -1,4 +1,4 @@ -#include "track_index_mangement.h" +#include "track_index_mangement.h" #include #include #include @@ -30,7 +30,7 @@ int Track_Ind_Mangement ::track_ind_get( std::vector *trust_track { //建立航迹号列表 int List[MAX_TRACK_INDEX]={0}; - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { int ti = (*trust_track)[i].Track_Index; if (ti >= 1 && ti <= MAX_TRACK_INDEX) diff --git a/data_process_class_dll/track_index_mangement.h b/data_process_class_dll/track_index_mangement.h index b73f8fd..f35dbd6 100644 --- a/data_process_class_dll/track_index_mangement.h +++ b/data_process_class_dll/track_index_mangement.h @@ -1,4 +1,4 @@ -#ifndef TRACK_INDEX_MANGEMENT_H +#ifndef TRACK_INDEX_MANGEMENT_H #define TRACK_INDEX_MANGEMENT_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/data_process_class_dll/track_init.cpp b/data_process_class_dll/track_init.cpp index 699ca0e..8e6ee03 100644 --- a/data_process_class_dll/track_init.cpp +++ b/data_process_class_dll/track_init.cpp @@ -1,4 +1,4 @@ -#include "track_init.h" +#include "track_init.h" #include "kalman.h" #include "coor_trans.h" #include @@ -34,13 +34,13 @@ int Track_Init::track_init_process_logic( std::vector // } //取出待起航的点迹数据 - for (int i=0;i<(*point_recv).size();i++) + for (size_t i=0;i<(*point_recv).size();i++) point_process.push_back((*point_recv)[i]); //临时航迹的buff_round+1 - for (int i=0;isize();i++) + for (size_t i=0;isize();i++) { - for (int j=0;j<(*temp_track)[i].size();j++) + for (size_t j=0;j<(*temp_track)[i].size();j++) { (*temp_track)[i][j].buff_round = (*temp_track)[i][j].buff_round+1; } @@ -71,7 +71,7 @@ int Track_Init::track_init_process_logic( std::vector //剩余点重新存入点迹 std::vector().swap((*point_recv)); - for (int i=0;i> }; std::vector asso_info; - for ( int i=0;i> double prt = point_process[i].PRF_index; double freq_ind = point_process[i].Freq_index; double h_point = point_process[i].Height; - double T_point = point_process[i].CPI_Time; + double T_point = static_cast(point_process[i].CPI_Time); //航迹信息 double X[4]; @@ -184,7 +184,7 @@ void Track_Init::point_temp_track_asso(std::vector > double v_temp_track=(*temp_track)[j][L-1].vr; double r_temp_track=(*temp_track)[j][L-1].r; double h_temp_track=(*temp_track)[j][L-1].height; - double T_track_head = (*temp_track)[j][L-1].T; + double T_track_head = static_cast((*temp_track)[j][L-1].T); double delta_T = (T_point - T_track_head)/1000.0; @@ -221,8 +221,8 @@ void Track_Init::point_temp_track_asso(std::vector > if(d*d<=TRACK_START_THRESHOLD*TRACK_START_THRESHOLD && alpha0)// && fabs(h_point-h_temp_track )<= r_point*SIGMA_E&& abs(vr_point-v_temp_track)/abs(v_temp_track)<0.8 { struct Asso_info asso_info_tmp; - asso_info_tmp.point_idx = i+1; - asso_info_tmp.track_idx = j+1; + asso_info_tmp.point_idx = static_cast(i)+1; + asso_info_tmp.track_idx = static_cast(j)+1; asso_info_tmp.d = d; asso_info.push_back(asso_info_tmp); (*temp_track)[j][L-1].asso_flag = 1; @@ -235,7 +235,7 @@ void Track_Init::point_temp_track_asso(std::vector > } // temp_track中加入新关联上的临时航迹 - for (int i = 0 ; i ()); @@ -316,10 +316,10 @@ void Track_Init::point_track_head_asso( std::vector > std::vector asso_info; //关联 - for ( int i=0;isize();j++) + for ( size_t j=0;jsize();j++) { if((*temp_track)[j].size()==1 && (*temp_track)[j][0].buff_round >= 2) @@ -332,7 +332,7 @@ void Track_Init::point_track_head_asso( std::vector > vr_point=point_process[i].Velocity; double r_point=point_process[i].Range; double h_point = point_process[i].Height; - double T_point = point_process[i].CPI_Time; + double T_point = static_cast(point_process[i].CPI_Time); //航迹信息 double x_track_head, y_track_head; @@ -340,7 +340,7 @@ void Track_Init::point_track_head_asso( std::vector > y_track_head=(*temp_track)[j][0].X[2]; double v_track_head=(*temp_track)[j][0].vr; double h_track_head = (*temp_track)[j][0].height; - double T_track_head = (*temp_track)[j][0].T; + double T_track_head = static_cast((*temp_track)[j][0].T); //距离差 double dis = sqrt(pow(x_point-x_track_head,2)+pow(y_point-y_track_head,2)); @@ -368,8 +368,8 @@ void Track_Init::point_track_head_asso( std::vector > { struct Asso_info asso_info_tmp; - asso_info_tmp.point_idx = i+1; - asso_info_tmp.track_idx = j+1; + asso_info_tmp.point_idx = static_cast(i)+1; + asso_info_tmp.track_idx = static_cast(j)+1; asso_info.push_back(asso_info_tmp); (*temp_track)[j][0].asso_flag = 1; point_process[i].Use_Flag = 1; @@ -381,7 +381,7 @@ void Track_Init::point_track_head_asso( std::vector > } // temp_track中加入新关联上的临时航迹 - for (int i = 0 ; i ()); @@ -612,19 +612,19 @@ void Track_Init::tmp_track_to_trust_track(std::vector *trust_tra Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Index=index; Trust_Track_Output[*Trust_track_num_Output-1][j].Point_Sum=L; - Trust_Track_Output[*Trust_track_num_Output-1][j].Range=Track_to_start[i][j].r; - Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=Track_to_start[i][j].azi/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][j].Range=static_cast(Track_to_start[i][j].r); + Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=static_cast(Track_to_start[i][j].azi/PI*180); { double elev_ratio = (Track_to_start[i][j].r > 0.0) ? Track_to_start[i][j].height / Track_to_start[i][j].r : 0.0; if (elev_ratio > 1.0) elev_ratio = 1.0; if (elev_ratio < -1.0) elev_ratio = -1.0; - Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=asin(elev_ratio)/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=static_cast(asin(elev_ratio)/PI*180); } - Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=sqrt(pow(Track_to_start[i][j].X[1],2)+pow(Track_to_start[i][j].X[3],2)); - Trust_Track_Output[*Trust_track_num_Output-1][j].z=Track_to_start[i][j].height; - Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=Track_to_start[i][j].Amp; - Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = Track_to_start[i][j].snr; - Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = Track_to_start[i][j].RCS; + Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=static_cast(sqrt(pow(Track_to_start[i][j].X[1],2)+pow(Track_to_start[i][j].X[3],2))); + Trust_Track_Output[*Trust_track_num_Output-1][j].z=static_cast(Track_to_start[i][j].height); + Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=static_cast(Track_to_start[i][j].Amp); + Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = static_cast(Track_to_start[i][j].snr); + Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = static_cast(Track_to_start[i][j].RCS); Trust_Track_Output[*Trust_track_num_Output-1][j].pitch_num = Track_to_start[i][j].pitch_num; @@ -634,25 +634,25 @@ void Track_Init::tmp_track_to_trust_track(std::vector *trust_tra Direction_Angle=atan2(Track_to_start[i][j].X[3],Track_to_start[i][j].X[1]); if(Direction_Angle<0) Direction_Angle=Direction_Angle+2*PI; - Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=Direction_Angle/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=static_cast(Direction_Angle/PI*180); - Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=(Track_to_start[i][j].T)/1000.0; + Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=static_cast((Track_to_start[i][j].T)/1000.0); Trust_Track_Output[*Trust_track_num_Output-1][j].GNSS_time=Track_to_start[i][j].GNSS_time; - Trust_Track_Output[*Trust_track_num_Output-1][j].x=Track_to_start[i][j].X[0]; - Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=Track_to_start[i][j].X[1]; - Trust_Track_Output[*Trust_track_num_Output-1][j].y=Track_to_start[i][j].X[2]; - Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=Track_to_start[i][j].X[3]; + Trust_Track_Output[*Trust_track_num_Output-1][j].x=static_cast(Track_to_start[i][j].X[0]); + Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=static_cast(Track_to_start[i][j].X[1]); + Trust_Track_Output[*Trust_track_num_Output-1][j].y=static_cast(Track_to_start[i][j].X[2]); + Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=static_cast(Track_to_start[i][j].X[3]); - Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=Track_to_start[i][j].r; - Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=Track_to_start[i][j].azi/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=static_cast(Track_to_start[i][j].r); + Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=static_cast(Track_to_start[i][j].azi/PI*180); { double elev_ratio = (Track_to_start[i][j].r > 0.0) ? Track_to_start[i][j].height / Track_to_start[i][j].r : 0.0; if (elev_ratio > 1.0) elev_ratio = 1.0; if (elev_ratio < -1.0) elev_ratio = -1.0; - Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=asin(elev_ratio)/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=static_cast(asin(elev_ratio)/PI*180); } - Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=Track_to_start[i][j].vr; + Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=static_cast(Track_to_start[i][j].vr); Trust_Track_Output[*Trust_track_num_Output-1][j].point_type=0; Trust_Track_Output[*Trust_track_num_Output-1][j].Flag_Point=1; Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Mode=0;//跟踪模式 TWS 0 diff --git a/data_process_class_dll/track_init.h b/data_process_class_dll/track_init.h index 49d4c26..7a7d496 100644 --- a/data_process_class_dll/track_init.h +++ b/data_process_class_dll/track_init.h @@ -1,4 +1,4 @@ -#ifndef TRACK_INIT_H +#ifndef TRACK_INIT_H #define TRACK_INIT_H #include "data_process_class_dll.h" #include "track_index_mangement.h" diff --git a/data_process_class_dll/track_init_direct_tracking.cpp b/data_process_class_dll/track_init_direct_tracking.cpp index 63b2f40..b43c684 100644 --- a/data_process_class_dll/track_init_direct_tracking.cpp +++ b/data_process_class_dll/track_init_direct_tracking.cpp @@ -1,4 +1,4 @@ -#include "track_init_direct_tracking.h" +#include "track_init_direct_tracking.h" #include "kalman.h" #include "coor_trans.h" #include @@ -33,9 +33,9 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector asso_info; - for ( int i=0;i(point_process[i].CPI_Time); //航迹信息 double X[4]; @@ -62,7 +62,7 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector ((*temp_track)[j][L-1].T); double delta_T = (T_point - T_track_head)/1000.0; @@ -85,8 +85,8 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector 0)// && fabs(h_point-h_temp_track )<= r_point*SIGMA_E&& abs(vr_point-v_temp_track)/abs(v_temp_track)<0.8 { struct Asso_info asso_info_tmp; - asso_info_tmp.point_idx = i+1; - asso_info_tmp.track_idx = j+1; + asso_info_tmp.point_idx = static_cast(i)+1; + asso_info_tmp.track_idx = static_cast(j)+1; asso_info.push_back(asso_info_tmp); (*temp_track)[j][L-1].asso_flag = 1; point_process[i].Use_Flag = 1; @@ -97,7 +97,7 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector ()); @@ -175,10 +175,10 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector asso_info; //关联 - for ( int i=0;isize();j++) + for ( size_t j=0;jsize();j++) { if((*temp_track)[j].size()==1 && (*temp_track)[j][0].buff_round >= 2) @@ -191,7 +191,7 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector (point_process[i].CPI_Time); //航迹信息 double x_track_head, y_track_head; @@ -199,7 +199,7 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector ((*temp_track)[j][0].T); //距离差 double dis = sqrt(pow(x_point-x_track_head,2)+pow(y_point-y_track_head,2)); @@ -225,8 +225,8 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector 0 )//&& fabs(vr_point-v_track_head)/fabs(v_track_head)<0.2 && fabs(h_point-h_track_head)<=r_point*SIGMA_E { struct Asso_info asso_info_tmp; - asso_info_tmp.point_idx = i+1; - asso_info_tmp.track_idx = j+1; + asso_info_tmp.point_idx = static_cast(i)+1; + asso_info_tmp.track_idx = static_cast(j)+1; asso_info.push_back(asso_info_tmp); (*temp_track)[j][0].asso_flag = 1; point_process[i].Use_Flag = 1; @@ -237,7 +237,7 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector ()); @@ -370,29 +370,29 @@ void Track_Init_Direct_Tracking::tmp_track_to_trust_track( std::vector((*Iter)[j].r); + Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=static_cast((*Iter)[j].azi/PI*180); + Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=static_cast(asin((*Iter)[j].height/(*Iter)[j].r)/PI*180); + Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=static_cast(sqrt(pow((*Iter)[j].X[1],2)+pow((*Iter)[j].X[3],2))); + Trust_Track_Output[*Trust_track_num_Output-1][j].z=static_cast((*Iter)[j].height); + Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=static_cast((*Iter)[j].Amp); + Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = static_cast((*Iter)[j].snr); + Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = static_cast((*Iter)[j].RCS); double Direction_Angle; Direction_Angle=atan2((*Iter)[j].X[3],(*Iter)[j].X[1]); if(Direction_Angle<0) Direction_Angle=Direction_Angle+2*PI; - Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=Direction_Angle/PI*180; + Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=static_cast(Direction_Angle/PI*180); - Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=((*Iter)[j].T)/1000.0; - Trust_Track_Output[*Trust_track_num_Output-1][j].x=(*Iter)[j].X[0]; - Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=(*Iter)[j].X[1]; - Trust_Track_Output[*Trust_track_num_Output-1][j].y=(*Iter)[j].X[2]; - Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=(*Iter)[j].X[3]; - Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=(*Iter)[j].r; - Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=(*Iter)[j].azi/PI*180; - Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=asin((*Iter)[j].height/(*Iter)[j].r)/PI*180; - Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=(*Iter)[j].vr; + Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=static_cast(((*Iter)[j].T)/1000.0); + Trust_Track_Output[*Trust_track_num_Output-1][j].x=static_cast((*Iter)[j].X[0]); + Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=static_cast((*Iter)[j].X[1]); + Trust_Track_Output[*Trust_track_num_Output-1][j].y=static_cast((*Iter)[j].X[2]); + Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=static_cast((*Iter)[j].X[3]); + Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=static_cast((*Iter)[j].r); + Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=static_cast((*Iter)[j].azi/PI*180); + Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=static_cast(asin((*Iter)[j].height/(*Iter)[j].r)/PI*180); + Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=static_cast((*Iter)[j].vr); Trust_Track_Output[*Trust_track_num_Output-1][j].point_type=0; Trust_Track_Output[*Trust_track_num_Output-1][j].Flag_Point=1; Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Mode=1;//跟踪模式 TWS 0 diff --git a/data_process_class_dll/track_init_direct_tracking.h b/data_process_class_dll/track_init_direct_tracking.h index b72a353..6d25340 100644 --- a/data_process_class_dll/track_init_direct_tracking.h +++ b/data_process_class_dll/track_init_direct_tracking.h @@ -1,4 +1,4 @@ -#ifndef TRACK_INIT_DIRECT_TRACKING_H +#ifndef TRACK_INIT_DIRECT_TRACKING_H #define TRACK_INIT_DIRECT_TRACKING_H #include "data_process_class_dll.h" #include "parameters.h" diff --git a/requirements.md b/requirements.md index 8862677..b37c1c3 100644 --- a/requirements.md +++ b/requirements.md @@ -2,6 +2,7 @@ ## 概述 + \ No newline at end of file