网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月13日漏签0天
卡尔曼滤波吧 关注:202贴子:415
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回卡尔曼滤波吧
>0< 加载中...

卡尔曼滤波如何调参数使得结果误差最小

  • 只看楼主
  • 收藏

  • 回复
  • li高feng
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在工程实际应用当中没有精确数据(真值)的情况下,该如何去调q和r的值?如何去保证你调的结果接近真值从而使得误差最小呢?求大佬告知


  • 何以卡
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你好,同学你对卡尔曼滤波了解的多吗,我这边目前也在学习这方面,遇到了一些问题,不知道方不方便探讨一下


2025-05-13 06:18:55
广告
  • 何以卡
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
function X= EKF(u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12)
a = 1.256;
b = 1.368;
Iz = 2549;
m = 2100;
t = 0.002;
d=1.4;
N=4001;
vx0=80/3.6;vy0=0;wr0=0;
delta=u1;Fx_fl=u2;Fx_fr=u3;Fx_rl=u4;Fx_rr=u5;Fy_fl=u6;Fy_fr=u7;Fy_rl=u8;Fy_rr=u9;ax=u10;ay=u11;r=u12;
persistent P Q R P1 K xxhat xhat
if isempty(P)
P1=zeros(3,3);
K=zeros(3,3);
xxhat=zeros(3,1);
xhat = [vx0,vy0,wr0]';
P =diag([1,1,1]); %等价于 eye(3)
Q =diag([1,1,1]); %等价于 eye(3)
R =diag([1,1,1]); %等价于 eye(3)
end
xhat1=zeros(3,1);
for i=1:N
vx_ekf=xhat(1,i);
vy_ekf=xhat(2,i);
wr_ekf=xhat(3,i);
F_ekf=[0 wr_ekf vy_ekf;
-wr_ekf 0 -vx_ekf;
0 0 0];
A_ekf=[0 wr_ekf/2 vy_ekf/2;
-wr_ekf/2 0 -vx_ekf/2;
0 0 0];
C_ekf=[((Fx_fl+Fx_fr)*cos(delta)+Fx_rl+Fx_rr-(Fy_fl+Fy_fr)*sin(delta))/m;%纵向平衡方程得到纵向加速度
((Fx_fl+Fx_fr)*sin(delta)+Fy_rl+Fy_rr+(Fy_fl+Fy_fr)*cos(delta))/m;%横向平衡方程得到侧向加速度
(a*((Fx_fl+Fx_fr)*sin(delta)+(Fy_fl+Fy_fr)*cos(delta))-b*(Fy_rl+Fy_rr)+((Fx_fr-Fx_fl)*cos(delta)+(Fy_fl-Fy_fr)*sin(delta)+(Fx_rr-Fx_rl))*d/2)/Iz];%横摆角速度
D_ekf=[0 0 0
0 0 0
0 0 1];
%系统离散化处理
fai_ekf=eye(3)+A_ekf*t;
CC_ekf=C_ekf*t;
FF_ekf=eye(3)+F_ekf*t;
xxhat(:,i)=fai_ekf*xhat(:,i)+CC_ekf;%状态预测
P1(:,:,i)=FF_ekf*P(:,:,i)*(FF_ekf)'+Q;%协方差预测
K(:,:,i)=P1(:,:,i)*(D_ekf)'*inv(D_ekf*P1(:,:,i)*(D_ekf)'+R);%卡尔曼增益系数
xhat1(:,i)=xxhat(:,i)+K(:,:,i)*([ax;ay;r]-D_ekf*xxhat(:,i));%最终需要的状态结果
P(:,:,i+1)=(eye(3)-K(:,:,i)*D_ekf)*P1(:,:,i);%更新协方差估计
xhat(:,:,i+1)=xhat1(:,i);
X=xhat1(:,i);
end


  • 何以卡
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上面那个是代码,不过跑起来之后报了矩阵维度的错误,错误信息如下:
Attempted to access index 2 of an array with smaller dimension sizes. The valid index range is 1 to 1. This error will stop the simulation.In MATLAB Function 'zhengchemoxing_EKF/MATLAB Function': P(:,:,i+1)=(eye(3)-K(:,:,i)*D_ekf)*P1(:,:,i);%更新协方差估计Component:MATLAB Function | Category:Runtime errorAn error occurred while running the simulation and the simulation was terminatedCaused by:
Simulation stopped because of a runtime error.


  • 何以卡
  • 崭露头角
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有没有对这个比较熟悉点的大佬烦请指点一下了,在此谢过诸位


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回卡尔曼滤波吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示