⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objecttracker.h

📁 InnovLabSimu在vc++下实现
💻 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 + -