126 lines
4.6 KiB
C++
126 lines
4.6 KiB
C++
#ifndef DATA_PROCESS_H
|
||
#define DATA_PROCESS_H
|
||
#pragma once
|
||
#include "data_process_class_dll.h"
|
||
#include "parameters.h"
|
||
#include "struct.h"
|
||
#include "dot_coh.h"
|
||
#include "dot_coh_tas.h"
|
||
#include "track_init.h"
|
||
#include "track_asso.h"
|
||
#include "track_asso_tas.h"
|
||
#include "track_die.h"
|
||
#include "track_die_tas.h"
|
||
#include "tas_ctrl.h"
|
||
#include <vector>
|
||
#include <climits>
|
||
#include <Eigen/Dense>
|
||
|
||
using namespace Eigen;
|
||
using namespace std;
|
||
|
||
/********************************** 数据处理类 *************************************************/
|
||
|
||
class Data_Process : public Data_process_class_dll
|
||
{
|
||
public:
|
||
|
||
Data_Process(void)
|
||
{
|
||
|
||
}
|
||
|
||
//数据预处理函数
|
||
int data_preprocess(struct DataRev Data_Input[150]);
|
||
|
||
//航迹处理函数
|
||
int track_process( struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //数据处理输出的航迹更新信息 主程序创建全局变量 数据处理函数更新其中数据
|
||
int *Trust_track_num_Output, //数据处理后输出的航迹数目 主程序创建全局变量 数据处理函数更新其中数据
|
||
int Track_die_Index_Output[], //数据处理后要消亡的航迹 主程序创建全局变量 数据处理函数更新其中数据
|
||
int *Track_die_num_Output, //数据处理后要消亡的航迹数目 主程序创建全局变量 数据处理函数更新其中数据
|
||
int model
|
||
);
|
||
|
||
//波束控制
|
||
void Beam_Ctrl(struct TrackingBeam *Tracking_beam,
|
||
struct Track Trust_Track_Output[][10],
|
||
int *Trust_track_num_Output);
|
||
|
||
//航迹清空函数
|
||
int track_clear_all(void);
|
||
|
||
//手动航迹删除函数
|
||
int track_delete(int delete_track_num, //手动删除的航迹数目
|
||
int delete_track_index[]); //手动删除的航迹号
|
||
|
||
//手动转TAS跟踪函数
|
||
int tracking_start(int track_index); //需要手动转入TAS跟踪的航迹号
|
||
|
||
//手动取消TAS跟踪函数
|
||
int tracking_stop(int track_index); //需要取消TAS跟踪的航迹号
|
||
|
||
//手动添加重点目标
|
||
int primary_target_add(int track_index); //将指定目标转为重点目标
|
||
|
||
//手动取消重点目标
|
||
int primary_target_cancel(int track_index); //将指定重点目标取消
|
||
|
||
//手动打跟踪波束
|
||
int tracking_point(float Azimuth); //方位角
|
||
|
||
//参数加载函数(从 TOML 配置文件加载全部工作参数到 rdp_parameter)
|
||
//参数:parameter_file_path - 配置文件路径
|
||
//返回:成功返回 0;失败返回 -1(失败时不改变当前参数)
|
||
int parameters_reload(const char* parameter_file_path) override;
|
||
|
||
private:
|
||
|
||
std::vector <PointRecv> Data_buffer; //接收点迹 TWS 输入凝聚
|
||
std::vector <PointRecv> Data_buffer_tas; //接收点迹 TAS 输入凝聚
|
||
|
||
std::vector <PointRecv> point_recv; //凝聚后输出的点迹 按点迹区存入 输入航迹关联、起始
|
||
std::vector <PointRecv> point_recv_tas; //凝聚后输出的点迹 TAS
|
||
std::vector <Trust_Track> trust_track; //可靠航迹 按航迹区存入
|
||
std::vector <std::vector<Temp_track>> temp_track; //临时航迹 按临时航迹区存入
|
||
|
||
// 工作参数为全局对象 struct.h::rdp_parameter(由 parameters_reload() 加载),不再作为类成员。
|
||
int Beam_num; //波位数
|
||
int beam_count; //波位计数
|
||
int data_num; //波位1点数
|
||
|
||
int beam_index[3]; //3个波位号(当前帧)
|
||
|
||
int TAS_track_idx; //TAS数据的目标批号
|
||
|
||
int Track_Mode; //跟踪模式 1TAS 0TWS
|
||
|
||
int last_beam_num = INT_MAX; //上一个波位号,用于判断是否搜索完一圈
|
||
|
||
long long latest_timestamp = 0; //最新时间戳
|
||
|
||
long long point_id = 0; //点迹id
|
||
|
||
long long frame_id = 0; //帧id
|
||
|
||
long long circle_id = 0; //圈id
|
||
|
||
Dot_Coh dot_coh; //点迹凝聚
|
||
|
||
Dot_Coh_TAS dot_coh_tas;
|
||
|
||
Track_Asso track_asso; //航迹关联
|
||
|
||
Track_Asso_Tas track_asso_tas;
|
||
|
||
Track_Init track_init; //航迹起始
|
||
|
||
Track_Die track_die; //航迹消亡
|
||
|
||
Track_Die_Tas track_die_tas;
|
||
|
||
TAS_Ctrl tas_ctrl; //TAS波束控制
|
||
|
||
};
|
||
|
||
#endif // DATA_PROCESS_H
|