📄 objecttracker.h
字号:
#pragma once
#include <Windows.h>
#include "UKF_ObjectTracHead.h"
//#include <device/robot.h>
/********************************************************************
created: 2008/02/23
created: 23:2:2008 22:01
filename: c:\boosttest\MyTargetTrack\MyTargetTrack\ObjectTracker.h
file path: c:\boosttest\MyTargetTrack\MyTargetTrack
file base: ObjectTracker
file ext: h
author: GaoYang
purpose: 作为一个目标跟踪器,进行目标跟踪,包含ukf滤波器及自适应调整器.使用前首先要调InitFlt,开始跟踪时用RunTrack函数
其中的初值方差等都需要在InitFlt函数修改.
结果放在其内类成员my_filter的成员变量my_filter.m_mStateMeanResult中.
todo: 目前还没有考虑返回方差,状态等
*********************************************************************/
class CObjectTracker:public CInitStateOfUKF
{
public:
CObjectTracker(void);
public:
virtual~CObjectTracker(void);
public:
TRANSTATE_MAT_TYPE m_mTranslateMatrix;//观测模型用的转移矩阵必须声明在m_cObserveMode之前
CPredictModel m_cPredictMode;///<预测模型
CObservModel m_cObserveMode;///<观测模型
CUKalmanFilter my_filter;///<滤波器
CAdaptiveOptimaser m_cAdaptiveOptimiser;///<自适应调整器
public:
/**
*@brief 初始化滤波器,设定初值等,其具体值需在本函数内修改
*/
bool InitFlt(void);
public:
/**
*@brief 开始运行跟踪,观测,获得速度
*@parm dl 观测者左轮位移
*@parm dr 观测者右轮位移
*@parm OBSERVEDATA 观测数据,boost中的vector格式,目前仅有2个内容,其中的角度,输入时必须为弧度制,内部会依据USE_DEGREE_ANGLE宏是否定义来确定是否需要再转化为角度
*@parm LIPreTimeCOunt上一次进行跟踪时的系统时针计数点数
*/
void RunTrack(double dl,double dr,OBSERVE_STYLE& OBSERVEDAT,double TimeStep);
/**
*@brief 开始运行跟踪,观测,获得速度,本函数中的自适应调节器由外部指定,多目标跟踪模式时使用
*@parm dl 观测者左轮位移
*@parm dr 观测者右轮位移
*@parm OBSERVEDATA 观测数据,boost中的vector格式,目前仅有2个内容,其中的角度,输入时必须为弧度制,内部会依据USE_DEGREE_ANGLE宏是否定义来确定是否需要再转化为角度
*@parm LIPreTimeCOunt上一次进行跟踪时的系统时针计数点数
*@parm pAdaptiveOptimizer自适应调节器类指针
*@output 若跟踪没有成功则返回假
*/
bool RunTrack(double dl,double dr,OBSERVE_STYLE& OBSERVEDATA,double TimeStep,CAdaptiveOptimaser* pAdaptiveOptimizer);
#ifdef CONSIDER_TIME_IN_VEL
//double m_dTimePerSystemCount;///<每一个系统时间点对应的ms数
//double m_dTimeStep;///<时间步长单位毫秒
//LARGE_INTEGER m_LICurrentTimeCount;///<当前时间的点数
#endif
/**
*供外部改变滤波器的状态,状态方差,模型噪声方差,以按需要滤波
*/
bool SetFltState(STATE_STYLE& State,VARIANCE& StateVariance,VARIANCE& ModelNoiseVariance);
public:
// 简单判断一下输入的观测数据是否合理,与上一次的相差太多则认为不合理.此函数输入的观测数据中的角度单位为度
bool FiltObserveData(OBSERVE_STYLE& OBSERVEDATA,OBSERVE_STYLE& Pre_OBSERVEDATA);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -