#ifndef PARAMETERS_H #define PARAMETERS_H #pragma once /**********************************雷达参数*************************************************/ #define PI 3.1415926f //频点(GHz) #define FREQ0 9.2 /**********************************版本信息*************************************************/ #define MAJOR_VERSION 1 #define MINOR_VERSION 5 #define PATCH_VERSION 8 #ifdef PHASE_SCANNING #define VERSION_INFO "PS" #else #define VERSION_INFO "MS" #endif #define STRINGIFY_IMPL(x) #x #define STRINGIFY(x) STRINGIFY_IMPL(x) #define VERSION_STRING \ "V" STRINGIFY(MAJOR_VERSION) "." \ STRINGIFY(MINOR_VERSION) "." \ STRINGIFY(PATCH_VERSION) "." \ VERSION_INFO /**********************************日志输出开关**********************************************/ // 日志文件输出功能开关: // 1) 定义(默认)RDP_LOG_ENABLE:启用日志文件输出 —— 调用 Data_Process_Factory::GetB() // 时自动将 std::cout 重定向到日志文件,日志文件存放于 RDP_LOG_DIR 目录, // 文件名按当前日期+时间自动命名(如 rdp_20240826_153000.log); // 2) 注释掉 RDP_LOG_ENABLE:关闭 —— 不做重定向,日志仍输出到标准输出(控制台)。 // #define RDP_LOG_ENABLE //日志文件输出目录(相对当前工作目录的路径,目录不存在时自动创建) #define RDP_LOG_DIR ".\\rdp_logs\\" /**********************************数据记录调试开关*******************************************/ // 数据记录调试功能(结构体 -> SQLite 数据表,ORM 由内置 ormpp 完成)由 CMake 选项 // RDP_DATA_RECORD(AUTO/ON/OFF)控制:AUTO 时 Debug 构建启用、Release 构建关闭(交付默认)。 // 启用时由构建系统定义 RDP_RECORD_ENABLE,记录模块(rdp_record.cpp + sqlite3)才参与编译; // 关闭时 RDP_RECORD 宏展开为 ((void)0),实参不求值,不做任何记录、不留任何运行开销。 // 注意:此处不提供手工开关宏,请在构建配置中选择(详见 docs/data_record_debug.md)。 //记录数据库存放目录(相对宿主进程当前工作目录,不存在时自动创建) #define RDP_RECORD_DB_DIR ".\\rdp_records\\" //数据记录性能参数(V1.5.8 优化:批量事务 + 异步写线程 + WAL) //说明:以下宏只被 rdp_record.cpp 使用;用 #ifndef 保护,便于用编译选项临时覆盖做测试。 //队列字节上限:处理线程入队总量超过该值时整批丢弃(不阻塞处理线程) #ifndef RDP_RECORD_QUEUE_CAP_BYTES #define RDP_RECORD_QUEUE_CAP_BYTES (64u * 1024u * 1024u) #endif //队列批数上限(防止小批过多导致 deque 开销/延迟) #ifndef RDP_RECORD_QUEUE_MAX_BATCHES #define RDP_RECORD_QUEUE_MAX_BATCHES 4096u #endif //写线程每次事务提交的目标行数(累积到该行数或等待超时即提交) #ifndef RDP_RECORD_WRITE_BATCH_ROWS #define RDP_RECORD_WRITE_BATCH_ROWS 4096u #endif //写线程为凑批而等待的最长时间(毫秒) #ifndef RDP_RECORD_WRITE_MAX_WAIT_MS #define RDP_RECORD_WRITE_MAX_WAIT_MS 50u #endif //关联信息单次入队分块上限(⑥ 单圈行数可能很大,分块限制处理线程内存峰值; //取值应大于常见单圈候选数,避免同一圈内多次重新分配;131072 行 Asso_Info 约 11 MB) #ifndef RDP_RECORD_ASSO_CHUNK_ROWS #define RDP_RECORD_ASSO_CHUNK_ROWS 131072u #endif //SQLite 页缓存大小(KB,负数表示 KB;默认 8 MB) #ifndef RDP_RECORD_SQLITE_CACHE_KB #define RDP_RECORD_SQLITE_CACHE_KB 8192 #endif //SQLite 忙等待超时(毫秒) #ifndef RDP_RECORD_SQLITE_BUSY_TIMEOUT_MS #define RDP_RECORD_SQLITE_BUSY_TIMEOUT_MS 2000 #endif //是否尝试开启 WAL(1=尝试;失败/不支持时自动回退 DELETE 日志模式) #ifndef RDP_RECORD_SQLITE_WAL #define RDP_RECORD_SQLITE_WAL 1 #endif //连续写入错误达到该次数后全局熔断(停止记录,避免持续消耗写线程) #ifndef RDP_RECORD_MAX_CONSECUTIVE_ERRORS #define RDP_RECORD_MAX_CONSECUTIVE_ERRORS 10 #endif //队列丢弃日志的限频间隔(每丢弃多少行提示一次) #ifndef RDP_RECORD_DROP_LOG_INTERVAL #define RDP_RECORD_DROP_LOG_INTERVAL 1024u #endif //#define MECHANICAL_SCANNING //#define PHASE_SCANNING /******************************通用数据处理参数**************************************/ //航迹质量管理参数 #define TRACK_QUALITY_MAX 100 #define TRACK_QUALITY_MIN 0 #define TRACK_QUALITY_D_WEIGHT 0.5 #define TRACK_QUALITY_SNR_WEIGHT 0.3 #define TRACK_QUALITY_LEN_WEIGHT 0.2 #define TRACK_QUALITY_ITER_COEFF 0.8 #define TRACK_QUALITY_DECREASE_COEFF_O2 -0.0008 #define TRACK_QUALITY_DECREASE_COEFF_O1 -0.0025 //航迹起批质量条件 #define TRACK_START_QUALITY_L3 0.7 #define TRACK_START_QUALITY_L4 0.6 #define TRACK_START_QUALITY_L5 0.5 #define TRACK_START_QUALITY_L6 0.4 #define TRACK_START_QUALITY_L7 0.3 //航迹消批质量条件 #define TRACK_DIE_QUALITY 0.3 #define TRACK_DIE_QUALITY_PRAMARY 0.3 #ifdef MECHANICAL_SCANNING /******************************机扫数据处理参数**************************************/ // #define DATA_RATE_TAS 0.0625 #define SIGMA_R 10.0 //测量误差 #define SIGMA_A 0.02 #define SIGMA_E 0.2 #define SIGMA_V 2.0 #define DOT_COH_RANGE 80 //点迹凝聚 #define DOT_COH_V 2 #define DOT_COH_AZI 6 #define MAX_BEAM_NUM 100 //最大TWS波位数 #define MAX_TRACK_NUM 500 #define MAX_TRACK_INDEX 500 //最大航迹批号 #define ASSOCIATE_THRESHOLD_MIN 1 #define ASSOCIATE_THRESHOLD_MID 3 //关联波门 #define ASSOCIATE_THRESHOLD_MAX 10 #define R_MIN 100 #define R_MAX 100000 #define TRACK_START_THRESHOLD 8 //起航波门 3 越大越容易起批 #define ALPHA_START 60 //起航夹角 120 越大越容易起批 #define MAX_EXTRAPOLATE_NUM 3 //最大外推点数 #define MAX_EXTRAPOLATE_NUM_TAS 48 //TAS最大外推点数 #define TRACK_DIE_ROUND 6 // 航迹消亡圈数 #define TRACK_DIE_ROUND_PRIMARY 10 // 重点航迹消亡圈数 #define TRACK_DIE_ROUND_TAS 96 //TAS航迹消亡圈数 #define ASSO_THORD 4 #define H_F_WIN_LEN 3 #define TAS_QUEUE_LENGTH 1 //Tas调用的cpi数 #define MAX_TAS_NUM 1 #define UNCONF_TARGET 0 #define DIRECT_TRACKING_QUEUE_LENGTH 10 #pragma message("MECHANICAL_SCANNING") #endif #ifdef PHASE_SCANNING /******************************相扫数据处理参数**************************************/ // #define DATA_RATE_TAS 0.3 #define SIGMA_R 10.0 //测量误差 #define SIGMA_A 0.02 #define SIGMA_E 0.2 #define SIGMA_V 2.0 #define DOT_COH_RANGE 80 //点迹凝聚 #define DOT_COH_V 2 #define DOT_COH_AZI 6 #define MAX_BEAM_NUM 100 //最大TWS波位数 #define MAX_TRACK_NUM 500 #define MAX_TRACK_INDEX 500 //最大航迹批号 #define ASSOCIATE_THRESHOLD_MIN 1 #define ASSOCIATE_THRESHOLD_MID 3 //关联波门 #define ASSOCIATE_THRESHOLD_MAX 10 #define R_MIN 100 #define R_MAX 100000 //#define V_MAX 500 //最大速度 //#define V_MIN 1 //速度最小 #define TRACK_START_THRESHOLD 8 //起航波门 3 越大越容易起批 #define ALPHA_START 60 //起航夹角 120 越大越容易起批 #define MAX_EXTRAPOLATE_NUM 3 //最大外推点数 #define MAX_EXTRAPOLATE_NUM_TAS 5 //TAS最大外推点数 #define TRACK_DIE_ROUND 6 // 航迹消亡圈数 #define TRACK_DIE_ROUND_PRIMARY 10 // 重点航迹消亡圈数 #define TRACK_DIE_ROUND_TAS 20 //TAS航迹消亡圈数 #define ASSO_THORD 4 #define H_F_WIN_LEN 6 #define TAS_QUEUE_LENGTH 4 //Tas调用的cpi数 #define MAX_TAS_NUM 4 #define UNCONF_TARGET 0 #define DIRECT_TRACKING_QUEUE_LENGTH 10 #pragma message("PHASE_SCANNING") #endif #define Round(x) (((x) > 0) \ ? (((int)((x) + 0.5) > (int)(x)) ? ((int)(x) + 1) : ((int)(x))) \ : (((int)((x) - 0.5) < (int)(x)) ? ((int)(x) - 1) : ((int)(x)))) #endif // PARAMETERS_H