首页 > 试题

wxwyb

更新时间:2022-12-11 17:57:02 阅读: 评论:0

温州2019年语文试卷中考真题-众数是什么


2022年12月11日发(作者:25个孩子一个爹)

卡尔曼滤波(KF)和扩展卡尔曼滤波(EKF)

最近需要做⼀个空中飞⿏(AirMou)项⽬,其中对六轴陀螺仪回传的数据处理算法中需要⽤到⼀套滤波算法。来滤除⽆⽤的噪声和

⾓度误差。

经过处理效果和可实现性⽐对,有三种滤波算法脱颖⽽出:卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)以及互补滤波。其中我着重

学习了卡尔曼滤波和扩展卡尔曼滤波,并对扩展卡尔曼滤波进⾏实现。

1.卡尔曼滤波学习

卡尔曼滤波算法是卡尔曼(Kalman)等⼈在20世纪60年代提出的⼀种递推滤波算法。它的实质是以最⼩均⽅误差为估计的最佳准

则,来寻求⼀套递推估计的算法。其基本思想是:采⽤信号与噪声的状态空间模型,利⽤前⼀时刻的估计值和现时刻的观测值来更新对状态

变量的估计,求得现时刻的估计值。它的⼴泛应⽤已经超过30年,包括机器⼈导航,控制,传感器数据融合甚⾄军事⽅⾯的雷达系统以及

导弹追踪等等。

⾸先以⼀维时变随机信号的数学模型为例。对每⼀确定的取样时刻k,x(k)是⼀个随机变量。当取样时刻k在范围内变化时,可得到⼀

个离散的随机序列{x(k)}。

假设待估随机信号的数学模型是⼀个由⽩噪声序列w(k)驱动的⼀阶⾃递归过程,其状态⽅程为:

信号测量过程的数学模型为:

所以可以得到⼀维时变随机信号及其测量过程的数学模型。如下所⽰

⼀维随机信号的递归型估计其的⼀般表达式:

代⼊递归型估计器的⼀般表达式,得:

在实际应⽤中,常⽤到向量卡尔曼滤波算法,因此需要⼀些转化。该转化主要为标量运算和矩阵运算的差异:

修正差异后,可以直接将标量KF推⼴到向量KF。

2.扩展卡尔曼滤波学习

由于卡尔曼滤波估计是⼀个线性随机系统的状态。然⽽实际中,很多系统是⾮线性的,处理这些系统时,⽤扩展卡尔曼滤波(EKF),它是

将期望和⽅差线性化的卡尔曼滤波器。

3.扩展卡尔曼滤波的matlab实现

下⾯这段代码应⽤于空中飞⿏的数据处理中。

q为四元数,wb为⾓度偏置,z,h,y均为中间向量,a为加速度计原数据,w为陀螺仪原数据,dt为积分时间

function[q,wb,z,h,y]=ekf2(a,w,dt)

persistentxP;

%Q

Q=zeros(6,6);

Qwb=.01;

Q(5,5)=Qwb;

Q(6,6)=Qwb;

%R,DMPtake1sconverge,

R=eye(3)*1e4;

%P

ifimpty(P)

P=eye(length(Q))*1e4;

x=[1,0,0,0,0,0]';

end

%%%%%%%%%inputs%%%%%%%%%

%savex_k-1

q0=x(1);q1=x(2);q2=x(3);q3=x(4);

wxb=x(5);%bias

wyb=x(6);

%input

wx=w(1);

wy=w(2);

wz=w(3);

z=a';

%%%%%%%%%%%%%%%%%%

%PopulateFjacobian=d(f)/d(x_k-1/k-1)

F=[1,-(dt/2)*(wx-wxb),-(dt/2)*(wy-wyb),-(dt/2)*(wz),(dt/2)*q1,(dt/2)*q2;

(dt/2)*(wx-wxb),1,(dt/2)*(wz),-(dt/2)*(wy-wyb),-(dt/2)*q0,(dt/2)*q3;

(dt/2)*(wy-wyb),-(dt/2)*(wz),1,(dt/2)*(wx-wxb),-(dt/2)*q3,-(dt/2)*q0;

(dt/2)*(wz),(dt/2)*(wy-wyb),-(dt/2)*(wx-wxb),1,(dt/2)*q2,-(dt/2)*q1;

0,0,0,0,1,0;

0,0,0,0,0,1;];

%%%%%%%%%PREDICT%%%%%%%%%

%Predictedstateestimate

%x_k/k-1=f(x_k-1/k-1,u_k-1)

%refer"Appling",p17,x_t+1=x_t+g(x_t)*ts

x=[q0+(dt/2)*(-q1*(wx-wxb)-q2*(wy-wyb)-q3*(wz));

q1+(dt/2)*(q0*(wx-wxb)-q3*(wy-wyb)+q2*(wz));

q2+(dt/2)*(q3*(wx-wxb)+q0*(wy-wyb)-q1*(wz));

q3+(dt/2)*(-q2*(wx-wxb)+q1*(wy-wyb)+q0*(wz));

wxb;

wyb;];

%

%NormalizeQuaternion

x(1:4)=x(1:4)/norm(x(1:4));

q0=x(1);q1=x(2);q2=x(3);q3=x(4);

%Predictedcovarianceestimate,P_k/k-1=F_k-1*P_k-1/k-1*F_k-1'+Q_k-1

P=F*P*F'+Q;

%%%%%%%%%%UPDATE%%%%%%%%%%%

%%%h(x_k/k-1)

h=[2*q1*q3-2*q0*q2;%referAN4676,page26

2*q0*q1+2*q2*q3;

q0^2-q1^2-q2^2+q3^2;];

%Measurementresidual

%y_k=z_k-h(x_k/k-1),whereh(x)isthematrixthatmapsthestateontothemeasurement

%z_k:Acc,h=[00g/g]*[quaternion->rotation_matrix]

%y(3x1)=z(3x1)-h(3x1)

y=z-h;

%%%%%%%%%%%%%%%%%%

%TheHmatrixmapsthemeasurementtothestates

%H=d(h)/d(x_k/k-1)

H=[-2*q2,2*q3,-2*q0,2*q1,0,0;

2*q1,2*q0,2*q3,2*q2,0,0;

2*q0,-2*q1,-2*q2,2*q3,0,0;];

%%%%%%%%%%%%%%%%%%

%Measurementcovarianceupdate,S_k=H_k*P_k/k-1*H_k'+R_k

S=H*P*H'+R;

%%%%%%%%%%%%%%%%%%

%CalculateKalmangain,K_k=P_k/k-1*H_k'*S_k^-1

%K(7x3)=P(7x7)*H'(7x3)/S(3x3);

K=P*H'/S;

%%%%%%%%%%%%%%%%%%

%Correctedmodelprediction,x_k/k=x_k/k-1+K_k*y_k

%x(7x1)=x(7x1)+K(7x3)*y(3x1)

x=x+K*y;%Outputstatevector

%

%%%%%%%%%%%%%%%%%%

%Updatestatecovariancewithnewknowledge,P_k/k=(I-K_k*H_k)*P_k/k-1

I=eye(length(P));

P=(I-K*H)*P;%Outputstatecovariance

%%%%%%%%%%%%%%%%%%

q=[x(1),x(2),x(3),x(4)];

wb=[x(5),x(6)];

end

本文发布于:2022-12-11 17:57:02,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/87131.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:无数的近义词
标签:wxwyb
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图