@@ -3,6 +3,7 @@
|
||||
#include <qmath.h>
|
||||
#include"memory.h"
|
||||
#include <QVector>
|
||||
#include <QDebug>
|
||||
using namespace std;
|
||||
|
||||
|
||||
@@ -22,20 +23,21 @@ void TAS_Ctrl::tas_ctrl_process(QVector<Trust_Track> *trust_track,
|
||||
struct TrackingBeam *Tracking_beam,
|
||||
struct Track Trust_Track_Output[][10],
|
||||
int *Trust_track_num_Output,
|
||||
struct RadarPara Work_Parameter)
|
||||
struct RadarPara Work_Parameter,
|
||||
int latest_timestamp)
|
||||
{
|
||||
tas_target_add(trust_track, Trust_Track_Output, Trust_track_num_Output,Work_Parameter);
|
||||
tas_target_del(trust_track, Trust_Track_Output, Trust_track_num_Output,Work_Parameter);
|
||||
tas_beam_output(trust_track,Tracking_beam);
|
||||
tas_beam_output(trust_track,Tracking_beam,latest_timestamp);
|
||||
|
||||
//跟踪队列移位
|
||||
struct Tracking_Target tas_target_tmp;
|
||||
memcpy(&tas_target_tmp, &tas_target_queue[TAS_QUEUE_LENGTH-1], sizeof(Tracking_Target));
|
||||
for (int i=TAS_QUEUE_LENGTH-1;i>0;i--)
|
||||
{
|
||||
memcpy(&tas_target_queue[i],&tas_target_queue[i-1],sizeof(Tracking_Target));
|
||||
}
|
||||
memcpy(&tas_target_queue[0], &tas_target_tmp, sizeof(Tracking_Target));
|
||||
// //跟踪队列移位
|
||||
// struct Tracking_Target tas_target_tmp;
|
||||
// memcpy(&tas_target_tmp, &tas_target_queue[TAS_QUEUE_LENGTH-1], sizeof(Tracking_Target));
|
||||
// for (int i=TAS_QUEUE_LENGTH-1;i>0;i--)
|
||||
// {
|
||||
// memcpy(&tas_target_queue[i],&tas_target_queue[i-1],sizeof(Tracking_Target));
|
||||
// }
|
||||
// memcpy(&tas_target_queue[0], &tas_target_tmp, sizeof(Tracking_Target));
|
||||
|
||||
|
||||
|
||||
@@ -66,7 +68,7 @@ void TAS_Ctrl::tas_target_add(QVector<Trust_Track> *trust_track,
|
||||
{
|
||||
for(int j=0;j<TAS_QUEUE_LENGTH;j++)
|
||||
{
|
||||
if(tas_target_queue[j].empty_flag==0 && j%2==0)
|
||||
if(tas_target_queue[j].empty_flag==0)// && j%2==0)
|
||||
{
|
||||
//插入跟踪队列
|
||||
tas_target_queue[j].Index=(*trust_track)[i].Track_Index;
|
||||
@@ -159,13 +161,14 @@ void TAS_Ctrl::tas_target_del(QVector<Trust_Track> *trust_track,
|
||||
{
|
||||
//查找TAS队列里的目标是否存在
|
||||
int flag=0;
|
||||
for (int j=0;j<trust_track->size();j++)
|
||||
for (int j=0;j<trust_track->size();j++){
|
||||
{
|
||||
if(tas_target_queue[i].Index==(*trust_track)[j].Track_Index && (*trust_track)[j].Track_Mode == 1)
|
||||
if(tas_target_queue[i].Index==(*trust_track)[j].Track_Index && (*trust_track)[j].Track_Mode == 1 && (*trust_track)[j].manual_tracking_flag == 1)
|
||||
{
|
||||
flag=1;
|
||||
}
|
||||
}
|
||||
}
|
||||
//目标不存在 说明已消批 从队列里删除
|
||||
if(flag == 0)
|
||||
{
|
||||
@@ -249,47 +252,50 @@ void TAS_Ctrl::tas_target_del(QVector<Trust_Track> *trust_track,
|
||||
|
||||
|
||||
void TAS_Ctrl::tas_beam_output(QVector<Trust_Track> *trust_track,
|
||||
struct TrackingBeam *Tracking_beam)
|
||||
struct TrackingBeam *Tracking_beam,
|
||||
int latest_timestamp)
|
||||
{
|
||||
if(tas_target_queue[0].empty_flag==1)
|
||||
{
|
||||
|
||||
double H_track;
|
||||
double X_now[6];
|
||||
int CPI_time = 0;
|
||||
for (int i=0;i<trust_track->size();i++ )
|
||||
{
|
||||
if((*trust_track)[i].Track_Index == tas_target_queue[0].Index)
|
||||
{
|
||||
H_track = (*trust_track)[i].Height;
|
||||
CPI_time = (*trust_track)[i].T_track;
|
||||
for(int ii=0;ii<6;ii++)
|
||||
X_now[ii]=(*trust_track)[i].X[ii];
|
||||
}
|
||||
}
|
||||
|
||||
float delta_T = (latest_timestamp - CPI_time) / 1000.0f;
|
||||
|
||||
//预测目标位置 计算跟踪波束波位号 俯仰角
|
||||
|
||||
double x_track=X_now[0]+X_now[1]*T_TAS_PRED;
|
||||
double y_track=X_now[3]+X_now[4]*T_TAS_PRED;
|
||||
double x_track=X_now[0]+X_now[1]*delta_T;
|
||||
double y_track=X_now[3]+X_now[4]*delta_T;
|
||||
double amzi,range;
|
||||
coor_trans Coor_trans;
|
||||
Coor_trans.cart2polar(x_track,y_track,&range,&amzi);
|
||||
|
||||
|
||||
//目标距离
|
||||
Tracking_beam->Range=range;
|
||||
//目标方位
|
||||
Tracking_beam->Azi=amzi/PI*180;
|
||||
// Tracking_beam->Azi+=6;
|
||||
//目标俯仰角
|
||||
double elev=asin(H_track/range)/PI*180;
|
||||
|
||||
|
||||
if(elev<=0)
|
||||
elev=0;
|
||||
else if(elev>=40)
|
||||
elev=40;
|
||||
else
|
||||
elev=elev;
|
||||
// if(elev<=0)
|
||||
// elev=0;
|
||||
// else if(elev>=40)
|
||||
// elev=40;
|
||||
// else
|
||||
// elev=elev;
|
||||
|
||||
|
||||
Tracking_beam->Elev=elev;
|
||||
|
||||
Reference in New Issue
Block a user