亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ekf.cpp

?? Kalman濾波器的C++實(shí)現(xiàn)
?? CPP
字號(hào):
// EKF.cpp: implementation of the EKF class.
//
//////////////////////////////////////////////////////////////////////

//#include "stdafx.h"
//#include "MultiSensorFusion.h"
#include "EKF.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

EKF::EKF()
{
	PredictState.Init(6,1);
	UpdateState.Init(6,1);
	CurrentState.Init(6,1);
	
	PredictCovariance.Init(6,6);
	UpdateCovariance.Init(6,6);
	CurrentCovariance.Init(6,6);	

	LastUpdateState.Init(6,1);
	LastUpdateCov.Init(6,6);

	F.Init(6,6);
    G.Init(6,2);
	Q.Init(2,2);

	Z.Init(2,1);
	H.Init(2,6);
	R.Init(2,2);

    S.Init(6,6);
    Gain.Init(6,6);
}

EKF::EKF(EKF &ekf)
{
    PredictState=ekf.PredictState;
    UpdateState=ekf.UpdateCovariance;
    CurrentState=ekf.CurrentState;

	PredictCovariance=ekf.PredictCovariance;
	UpdateCovariance=ekf.UpdateCovariance;
	CurrentCovariance=ekf.CurrentCovariance;

	F=ekf.F;
    G=ekf.G;
	Q=ekf.Q;

	Z=ekf.Z;
	H=ekf.H;
	R=ekf.R;

    S=ekf.S;
    Gain=ekf.Gain;
}

EKF EKF::operator =(EKF ekf)
{
    PredictState=ekf.PredictState;
    UpdateState=ekf.UpdateCovariance;
    CurrentState=ekf.CurrentState;

	PredictCovariance=ekf.PredictCovariance;
	UpdateCovariance=ekf.UpdateCovariance;
	CurrentCovariance=ekf.CurrentCovariance;

	F=ekf.F;
    G=ekf.G;
	Q=ekf.Q;

	Z=ekf.Z;
	H=ekf.H;
	R=ekf.R;

    S=ekf.S;
    Gain=ekf.Gain;
    
	return *this;
}

EKF::~EKF()
{
	PredictState.UnInit();
	UpdateState.UnInit();
	CurrentState.UnInit();
	
	PredictCovariance.UnInit();
	UpdateCovariance.UnInit();
	CurrentCovariance.UnInit();	

	LastUpdateState.UnInit();
	LastUpdateCov.UnInit();

	F.UnInit();
    G.UnInit();
	Q.UnInit();

	Z.UnInit();
	H.UnInit();
	R.UnInit();

    S.UnInit();
    Gain.UnInit();
}

void EKF::SetProcessNoiseCov(double X_Acc_Cov,double Y_Acc_Cov)
{
	Q.Clear();
	Q.SetElement(0, 0, X_Acc_Cov);
	Q.SetElement(1, 1, Y_Acc_Cov);
}

void EKF::SetObservationNoiseCov(double RadiusCov, double AzimuthCov)
{
    R.Clear();
	R.SetElement(0,0,RadiusCov);
	R.SetElement(1,1,AzimuthCov*(3.1415926536*3.1415926536)/(180.0*180.0));
}

void EKF::Initialize(double Radius1,double Azimuth1,
		             double Radius2,double Azimuth2,
					 double Radius3,double Azimuth3,
					 double T1,double T2)
{
	double x1,x2,x3,y1,y2,y3;
	x1=Radius1*cos(Azimuth1*3.14159265359/180.0);
	x2=Radius2*cos(Azimuth2*3.14159265359/180.0);
	x3=Radius3*cos(Azimuth3*3.14159265359/180.0);
	y1=Radius1*sin(Azimuth1*3.14159265359/180.0);
	y2=Radius2*sin(Azimuth2*3.14159265359/180.0);
	y3=Radius3*sin(Azimuth3*3.14159265359/180.0);

	int ColNum, RowNum;
	ColNum = CurrentState.GetNumColumns();
	RowNum = CurrentState.GetNumRows();
	double *StateData = new double[ColNum*RowNum];

	StateData[0]=x3;
	StateData[1]=x3*(T1+2*T2)/(T2*(T1+T2))-x2*(T1+T2)/(T1*T2)+x1*T2/(T1*(T1+T2));
	StateData[2]=2.0*x3/(T2*(T1+T2))-2.0*x2/(T1*T2)+2.0*x1/(T1*(T1+T2));
	StateData[3]=y3;
	StateData[4]=y3*(T1+2*T2)/(T2*(T1+T2))-y2*(T1+T2)/(T1*T2)+y1*T2/(T1*(T1+T2));
	StateData[5]=2.0*y3/(T2*(T1+T2))-2.0*y2/(T1*T2)+2.0*y1/(T1*(T1+T2));

	CurrentState.SetData(StateData); // 要注意是否有問題

	PredictState=CurrentState;
	UpdateState=CurrentState;

	ColNum = CurrentCovariance.GetNumColumns();
	RowNum = CurrentCovariance.GetNumRows();

	double *B_Element=new double [ColNum*RowNum];

	B_Element[0]=0.0;
	B_Element[1]=0.0;
	B_Element[2]=0.0;
	B_Element[3]=0.0;
	B_Element[4]=1.0;
	B_Element[5]=0.0;

	B_Element[6]=1.0*T2/(T1*(T1+T2));
	B_Element[7]=0.0;
	B_Element[8]=0-1.0*(T1+T2)/(T1*T2);
	B_Element[9]=0.0;
	B_Element[10]=1.0*(T1+2*T2)/(T2*(T1+T2));
	B_Element[11]=0.0;

	B_Element[12]=2.0/(T1*(T1+T2));
	B_Element[13]=0.0;
	B_Element[14]=0-2.0/(T1*T2);
	B_Element[15]=0.0;
	B_Element[16]=2.0/(T2*(T1+T2));
	B_Element[17]=0.0;

	B_Element[18]=0.0;
	B_Element[19]=0.0;
	B_Element[20]=0.0;
	B_Element[21]=0.0;
	B_Element[22]=0.0;
	B_Element[23]=1.0;

	B_Element[24]=0.0;
	B_Element[25]=1.0*T2/(T1*(T1+T2));
	B_Element[26]=0.0;
	B_Element[27]=0-1.0*(T1+T2)/(T1*T2);
	B_Element[28]=0.0;
	B_Element[29]=1.0*(T1+2*T2)/(T2*(T1+T2));

	B_Element[30]=0.0;
	B_Element[31]=2.0/(T1*(T1+T2));
	B_Element[32]=0.0;
	B_Element[33]=0-2.0/(T1*T2);
	B_Element[34]=0.0;
	B_Element[35]=2.0/(T2*(T1+T2));

	CMatrix B(RowNum, ColNum, B_Element);

	// R_Expansion(6*6) ----- 三點(diǎn)啟動(dòng)
	CMatrix R_Expansion(RowNum, ColNum);

/*	ColNum = R->GetNumColumns();*/
	int RowNum_R = R.GetNumRows();

	int i,j;
	for(i=0;i<RowNum;i++)
	{   
		j=i%RowNum_R;
		R_Expansion.SetElement(i,i,R.GetElement(j,j));
	}

	CurrentCovariance= B*R_Expansion*(B.Transpose());
	PredictCovariance=CurrentCovariance;
	UpdateCovariance=CurrentCovariance;
}

void EKF::Predict(double T)//T means the Sample time interval
{
	F.Clear();
	F.SetElement(0,0,1.0);
	F.SetElement(0,1,T);
	F.SetElement(0,2,0.5*T*T);
	F.SetElement(1,1,1.0);
	F.SetElement(1,2,T);
	F.SetElement(2,2,1.0);
	F.SetElement(3,3,1.0);
	F.SetElement(3,4,T);
	F.SetElement(3,5,0.5*T*T);
	F.SetElement(4,4,1.0);
	F.SetElement(4,5,T);
	F.SetElement(5,5,1.0);

	G.Clear();
	G.SetElement(0,0,0.5*T*T);
	G.SetElement(1,0,T);
	G.SetElement(2,0,1.0);
	G.SetElement(3,1,0.5*T*T);
	G.SetElement(4,1,T);
	G.SetElement(5,1,1);

	PredictState=F*UpdateState;
	PredictCovariance=F*UpdateCovariance*(F.Transpose())+G*Q*(G.Transpose());
	CurrentState=PredictState;
	CurrentCovariance=PredictCovariance;
}


void EKF::Update(double Radius,double Azimuth)
{
	H.Clear();
    H.SetElement(0,0,1.0);
	H.SetElement(1,3,1.0);
	
    S=H*PredictCovariance*(H.Transpose())+R;

	S.InvertGaussJordan();
	Gain=PredictCovariance*(H.Transpose())*S;

	Z.Clear();
	double Zx=Radius*cos(Azimuth*3.1415926536/180.0);
	double Zy=Radius*sin(Azimuth*3.1415926536/180.0);
	Z.SetElement(0,0,Zx);
    Z.SetElement(1,0,Zy);

	CMatrix Z0(2,1);
	Z0.SetElement(0,0,PredictState.GetElement(0,0));
    Z0.SetElement(1,0,PredictState.GetElement(3,0));

//	TRACE0(CurrentState.ToString("\t\t"));
	
	UpdateState=PredictState+Gain*(Z-Z0);
	UpdateCovariance=PredictCovariance-Gain*S*(Gain.Transpose());

	CurrentState=UpdateState;
	CurrentCovariance=UpdateCovariance;
//	TRACE0(CurrentState.ToString("\t\t"));

	LastUpdateState=UpdateState;
	LastUpdateCov=UpdateCovariance;
}

CMatrix EKF::GetState()
{
	return CurrentState;
}

CMatrix EKF::GetUpdateState()
{
	return UpdateState;
}

CMatrix EKF::GetCovariance()
{
	return CurrentCovariance;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人一级大片| 国产精品女上位| 成人性生交大片免费看在线播放| 国产精品初高中害羞小美女文| 欧美美女黄视频| 波多野结衣在线一区| 日本不卡一区二区| 中日韩免费视频中文字幕| 91视频在线看| 美女一区二区视频| 一区二区三区免费网站| 久久这里只有精品6| 欧美日韩不卡视频| 波多野结衣一区二区三区| 日本怡春院一区二区| 一区二区三区视频在线看| 久久久欧美精品sm网站| 制服丝袜亚洲网站| 91黄色免费观看| 国产91丝袜在线18| 精品一区二区免费在线观看| 午夜视频一区在线观看| 国产精品久久看| 六月婷婷色综合| 午夜精品久久久久久久99水蜜桃 | 欧美日韩精品一区二区三区四区 | 久久综合色鬼综合色| 欧美日韩一区二区三区四区| 高清在线不卡av| 国内外成人在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲午夜一区二区三区| 亚洲激情五月婷婷| 亚洲美女免费视频| 亚洲欧美视频在线观看视频| 国产精品国产三级国产aⅴ无密码| 久久亚洲精精品中文字幕早川悠里 | 国产精品久久久久久久久动漫| 久久精品水蜜桃av综合天堂| 精品国产免费一区二区三区四区| 日韩情涩欧美日韩视频| 日韩一区二区在线观看| 日韩欧美国产麻豆| 日韩欧美激情四射| 日韩国产高清影视| 精品国产亚洲一区二区三区在线观看 | 视频在线观看一区二区三区| 亚洲福利视频一区| 午夜精品久久久久久久99水蜜桃| 午夜久久久久久久久久一区二区| 午夜亚洲福利老司机| 欧美区视频在线观看| 欧美日韩日本视频| 91精品久久久久久久久99蜜臂| 欧美日韩aaa| 日韩欧美一二区| 久久久久国产精品人| 中文字幕高清一区| 亚洲色图欧美偷拍| 亚洲国产精品久久久久婷婷884 | 久久精品视频一区二区| 中文字幕国产精品一区二区| 亚洲日本免费电影| 亚洲成av人影院| 免费成人结看片| 高清不卡在线观看| 色综合视频在线观看| 亚洲国产精品久久不卡毛片| 亚洲国产精品影院| 天天免费综合色| 国产一区二区三区免费播放| 成人国产免费视频| 欧美亚洲日本国产| 免费在线观看一区二区三区| 国产麻豆精品视频| 91美女蜜桃在线| 日韩一区二区三| 国产精品私人影院| 石原莉奈在线亚洲三区| 国产精品一区二区免费不卡| 91理论电影在线观看| 欧美一区二区大片| 国产精品私人影院| 日本特黄久久久高潮| 成人午夜视频福利| 欧美一区二区三级| 亚洲欧洲无码一区二区三区| 秋霞午夜鲁丝一区二区老狼| eeuss鲁片一区二区三区 | 国产一级精品在线| 91蜜桃婷婷狠狠久久综合9色| 日韩欧美一区电影| 亚洲伦理在线免费看| 久久精品国产一区二区三区免费看| 成人综合在线视频| 亚洲国产乱码最新视频| 亚洲一区二区四区蜜桃| 韩国av一区二区| 一区二区三区在线观看欧美| 久久99久久精品欧美| 色综合久久久久综合| 久久综合久久综合九色| 亚洲一区二区三区四区不卡| 国产精品一区二区你懂的| 欧美日韩精品一区二区三区| 国产精品每日更新| 精品一区二区久久久| 欧美日韩精品一区视频| 亚洲三级在线免费观看| 国产东北露脸精品视频| 欧美一区二区视频网站| 亚洲国产精品天堂| 色呦呦网站一区| 久久久精品综合| 久久精品免费观看| 欧美人与性动xxxx| 亚洲自拍偷拍欧美| 91免费小视频| 1024精品合集| av不卡免费在线观看| 中文字幕欧美国产| 国产在线观看一区二区| 日韩午夜电影在线观看| 视频精品一区二区| 7777精品伊人久久久大香线蕉最新版| 亚洲人成亚洲人成在线观看图片| 国产91精品在线观看| 久久久精品国产99久久精品芒果| 91精品国产91综合久久蜜臀| 亚洲一区二区三区精品在线| 92国产精品观看| 亚洲欧洲美洲综合色网| av成人老司机| 中文字幕日韩一区二区| 99久久免费国产| 亚洲三级电影全部在线观看高清| 99精品欧美一区| 中文字幕一区二区三区不卡在线 | 91视视频在线观看入口直接观看www | 国产精品久久久久四虎| 福利一区在线观看| 国产精品入口麻豆九色| k8久久久一区二区三区| 中文字幕一区二区在线观看 | 91啪亚洲精品| 一区二区欧美精品| 欧美日韩一级大片网址| 日韩精品成人一区二区在线| 日韩视频一区在线观看| 国内一区二区在线| 欧美激情在线观看视频免费| 99久久免费精品| 在线亚洲精品福利网址导航| 午夜久久久久久电影| 亚洲夂夂婷婷色拍ww47| 色香蕉久久蜜桃| 一二三四区精品视频| 欧美在线一区二区| 亚洲成精国产精品女| 欧美丝袜丝交足nylons图片| 婷婷久久综合九色综合绿巨人| 欧美日韩中文另类| 欧美aaa在线| 国产日韩欧美精品电影三级在线| 成人午夜激情在线| 亚洲影院在线观看| 日韩精品一区二区三区视频| 国产精品99久久久久久似苏梦涵 | 日韩精品亚洲一区| 久久久久一区二区三区四区| 成人手机在线视频| 亚洲成人高清在线| 精品久久久久久久久久久久久久久 | 亚洲v精品v日韩v欧美v专区 | 亚洲欧美另类久久久精品| 欧美日韩一区二区三区在线看 | 欧美高清性hdvideosex| 精品一区二区三区在线观看| 国产精品久久久久久久蜜臀| 欧美午夜片在线观看| 国产在线视频一区二区三区| 一区二区中文字幕在线| 欧美一区二区三区在线电影 | 一本到不卡免费一区二区| 首页综合国产亚洲丝袜| 欧美激情中文字幕| 欧美日韩免费视频| 成人一区在线观看| 日韩国产一二三区| 一色屋精品亚洲香蕉网站| 日韩丝袜情趣美女图片| 国产成人精品一区二| 欧美三级蜜桃2在线观看| 国产伦精品一区二区三区视频青涩 | 欧美裸体一区二区三区| 成人免费视频网站在线观看| 午夜精品一区二区三区三上悠亚| 亚洲精品一区二区三区福利| 91久久国产综合久久| 久久久91精品国产一区二区三区|