function [phi theta psi] = EulerEKF(z, rates, dt)
%
%
persistent H Q R
persistent x P
persistent firstRun
if isempty(firstRun)
H = [ 1 0 0;
0 1 0 ];
Q = [ 0.0001 0 0;
0 0.0001 0;
0 0 0.1 ];
R = [ 6 0;
0 6 ];
x = [0 0 0]';
P = 10*eye(3);
firstRun = 1;
end
A = Ajacob(x, rates, dt);
xp = fx(x, rates, dt);
Pp = A*P*A' + Q;
K = Pp*H'*inv(H*Pp*H' + R);
x = xp + K*(z - H*xp);
P = Pp - K*H*Pp;
phi = x(1);
theta = x(2);
psi = x(3);
%------------------------------
function xp = fx(xhat, rates, dt)
%
%
phi = xhat(1);
theta = xhat(2);
p = rates(1);
q = rates(2);
r = rates(3);
xdot = zeros(3, 1);
xdot(1) = p + q*sin(phi)*tan(theta) + r*cos(phi)*tan(theta);
xdot(2) = q*cos(phi) - r*sin(phi);
xdot(3) = q*sin(phi)*sec(theta) + r*cos(phi)*sec(theta);
xp = xhat + xdot*dt;
%------------------------------
function A = Ajacob(xhat, rates, dt)
%
%
A = zeros(3, 3);
phi = xhat(1);
theta = xhat(2);
p = rates(1);
q = rates(2);
r = rates(3);
A(1,1) = q*cos(phi)*tan(theta) - r*sin(phi)*tan(theta);
A(1,2) = q*sin(phi)*sec(theta)^2 + r*cos(phi)*sec(theta)^2;
A(1,3) = 0;
A(2,1) = -q*sin(phi) - r*cos(phi);
A(2,2) = 0;
A(2,3) = 0;
A(3,1) = q*cos(phi)*sec(theta) - r*sin(phi)*sec(theta);
A(3,2) = q*sin(phi)*sec(theta)*tan(theta) + r*cos(phi)*sec(theta)*tan(theta);
A(3,3) = 0;
A = eye(3) + A*dt;
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Matlab实现多类型卡尔曼滤波实例代码 (109个子文件)
21.jpg 14KB
1.jpg 14KB
6.jpg 14KB
2.jpg 14KB
10.jpg 14KB
23.jpg 14KB
17.jpg 14KB
3.jpg 14KB
12.jpg 14KB
19.jpg 14KB
8.jpg 14KB
4.jpg 14KB
16.jpg 14KB
7.jpg 14KB
24.jpg 14KB
5.jpg 14KB
13.jpg 14KB
9.jpg 14KB
11.jpg 14KB
22.jpg 14KB
18.jpg 14KB
15.jpg 14KB
14.jpg 14KB
20.jpg 14KB
bg.jpg 13KB
EulerEKF.m 1KB
EulerUKF.m 1KB
RadarUKF.m 1008B
CompFilterWithPI.m 938B
RadarEKF.m 804B
TestEulerKalman.m 733B
TestTrackKalmanQR.m 577B
GetBallPos.m 575B
EulerKalman.m 553B
TestSimpleKalman2.m 535B
EulerGyro.m 533B
TrackKalmanQR.m 521B
TestEulerEKF.m 519B
TestEulerUKF.m 519B
TrackKalman.m 514B
TestCompFilterWithPI.m 479B
TestDeDvKalman.m 478B
DeDvKalman.m 452B
TestRadarEKF.m 448B
TestRadarUKF.m 448B
TestEulerGyro.m 440B
EulerToQuaternion.m 428B
SigmaPoints.m 427B
SigmaPoints.m 427B
TestHPF.m 417B
SigmaPoints.m 415B
IntKalman.m 408B
DvKalman.m 408B
TestTrackKalman.m 395B
TestEulerAccel.m 362B
TestDvKalman2.m 341B
TestMovAvgFilter.m 334B
TestIntKalman.m 334B
TestDvKalman.m 333B
SimpleKalman2.m 329B
TestLPF.m 314B
SimpleKalman.m 311B
HPF.m 300B
MovAvgFilter.m 300B
TestAvgFilter.m 296B
TestSimpleKalman.m 287B
PILawTheta.m 242B
AvgFilter.m 240B
UT.m 238B
UT.m 238B
GetPos.m 237B
MovAvgFilter2.m 234B
PILawPhi.m 222B
GetVel.m 221B
GetRadar.m 218B
GetRadar.m 218B
UT.m 217B
GetAccel.m 201B
GetAccel.m 201B
GetAccel.m 201B
GetAccel.m 201B
GetSonar.m 195B
GetSonar.m 195B
GetSonar.m 195B
GetSonar.m 195B
GetGyro.m 194B
GetGyro.m 194B
GetGyro.m 194B
GetGyro.m 194B
LPF.m 190B
EulerAccel.m 121B
EulerAccel.m 121B
EulerAccel.m 121B
EulerAccel.m 121B
TestUT.m 99B
GetVolt.m 62B
GetVolt.m 62B
ArsGyro.mat 398KB
ArsGyro.mat 398KB
ArsGyro.mat 398KB
共 109 条
- 1
- 2
资源评论
缓下脚步
- 粉丝: 8626
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#ASP.NET企业在线记账平台源码数据库 SQL2012源码类型 WebForm
- PHP客户关系CRM管理系统源码数据库 MySQL源码类型 WebForm
- python-勇者斗恶龙 回合制游戏 有图有真相 英雄和怪兽行为和状态的设定
- JAVA的Springboot垃圾分类识别小程序源码带部署文档数据库 MySQL源码类型 WebForm
- 图像分类数据集:番茄叶片病害图像识别数据集(包括划分好的数据【文件夹保存】、类别字典文件)
- web版本实现迅飞语音听写(流式版)封装代码
- JAVAspringboot校园转转二手电商市场源码数据库 MySQL源码类型 WebForm
- MICO_Android_Release_2_4_54.apk
- 个人日常总结,待整理 杂乱的笔记
- liteidex38.3-win64
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功