智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6281|回复: 18
打印 上一主题 下一主题

关于卡尔曼滤波的一点理解

  [复制链接]

30

主题

264

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4664
QQ
威望
2397
贡献
1297
兑换币
1553
注册时间
2013-7-26
在线时间
485 小时
跳转到指定楼层
1#
发表于 2014-9-11 21:58:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参加完第九届国赛,已经大半个月过去了,这段时间,闲来无事,研究一下卡尔曼滤波;
故此写下一点心得,不知道对于不对,望大神们指正指正。
代码:
//-------------------------------------------------------
//Kalman滤波,64MHz的处理时间约100um;
//-------------------------------------------------------
static float angle, AngleSpeed;   //外部需要引用的变量
//-------------------------------------------------------
static const float Q_angle=0, Q_gyro=0, R_angle=0, dt=0.005;
   //注意:dt的取值为kalman滤波器采样时间;
static float P[2][2] = {
       { 1, 0 },
       { 0, 1 }
      };
static float Pdot[4] ={0,0,0,0};
static const char C_0 = 1;
static float q_bias=0, angle_err=0, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1;
void Kalman_Filter(float angle_m,float gyro_m)   //gyro_m:gyro_measure
{
angle+=(gyro_m-q_bias)*dt;
Pdot[0]=Q_angle - P[0][1] - P[1][0];
Pdot[1]=- P[1][1];
Pdot[2]=- P[1][1];
Pdot[3]=Q_gyro;

P[0][0] += Pdot[0] * dt;
P[0][1] += Pdot[1] * dt;
P[1][0] += Pdot[2] * dt;
P[1][1] += Pdot[3] * dt;
angle_err = angle_m - angle;
  
PCt_0 = C_0 * P[0][0];
PCt_1 = C_0 * P[1][0];

E = R_angle + C_0 * PCt_0;

K_0 = 1.0*PCt_0 / E;
K_1 = 1.0*PCt_1 / E;

t_0 = PCt_0;
t_1 = C_0 * P[0][1];
P[0][0] -= K_0 * t_0;
P[0][1] -= K_0 * t_1;
P[1][0] -= K_1 * t_0;
P[1][1] -= K_1 * t_1;
  
angle += K_0 * angle_err/2;
q_bias+= K_1 * angle_err;         
AngleSpeed=gyro_m-q_bias;

}
{其实这些代码大家已经都知道了}

在调试过程中,我发现了,加速度计素提供的是一个类似于PI速度控制中的I所积分出来的一个作用;
陀螺仪所提供的作用是,让融合曲线跟踪加速度计的曲线;
如此这般,加速度计所提供的类似于PI控制中的I,不能有太大的波动,否则,车子会震动得特别厉害;
看了华中科技大学的报告,有点难以理解,他们的报告中这样写道(如图);
对于他们报告中的方法,我有点不解;
希望各位大神给予指点,谢谢,如果我所的错了,不要怕浪费了大哥的口水,尽量喷我,喷完后,我给你寄一瓶水过去。   小弟真心想学东西,请指教,谢谢。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

30

主题

264

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4664
QQ
威望
2397
贡献
1297
兑换币
1553
注册时间
2013-7-26
在线时间
485 小时
2#
 楼主| 发表于 2014-9-11 22:02:36 | 只看该作者
沙发。
回复 支持 反对

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
3#
发表于 2014-9-11 22:34:08 | 只看该作者
我在看卡尔曼当年的论文
回复 支持 反对

使用道具 举报

18

主题

117

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5313
威望
2424
贡献
1537
兑换币
1592
注册时间
2013-9-18
在线时间
676 小时
4#
发表于 2014-9-11 23:01:45 | 只看该作者
Quixote 发表于 2014-9-11 22:34
我在看卡尔曼当年的论文

当年论文能不能给一份,870345315@qq.com
回复 支持 反对

使用道具 举报

12

主题

621

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6697
威望
4237
贡献
746
兑换币
2329
注册时间
2011-7-22
在线时间
857 小时
5#
发表于 2014-9-12 09:49:53 | 只看该作者
Quixote 发表于 2014-9-11 22:34
我在看卡尔曼当年的论文

现在用的大多是改进的了。。。
回复 支持 反对

使用道具 举报

13

主题

99

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2166
威望
970
贡献
536
兑换币
607
注册时间
2013-7-29
在线时间
330 小时
6#
发表于 2014-9-12 11:41:01 | 只看该作者
为什么不解释一下每个语句的作用
回复 支持 反对

使用道具 举报

4

主题

796

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
10578

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
5540
贡献
3174
兑换币
3043
注册时间
2013-9-30
在线时间
932 小时
7#
发表于 2014-9-12 12:08:16 | 只看该作者
回复 支持 反对

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
8#
发表于 2014-9-12 13:29:19 | 只看该作者
k40368 发表于 2014-9-12 09:49
现在用的大多是改进的了。。。

万变不离其宗
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
9#
发表于 2014-9-12 16:02:27 | 只看该作者
互补滤波一句代码搞定。
回复 支持 反对

使用道具 举报

30

主题

264

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4664
QQ
威望
2397
贡献
1297
兑换币
1553
注册时间
2013-7-26
在线时间
485 小时
10#
 楼主| 发表于 2014-9-12 19:56:20 | 只看该作者
洅迲愛伱辰 发表于 2014-9-11 23:01
当年论文能不能给一份,

第九届的论文可以在论坛下载的额
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 00:54 , Processed in 0.101251 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表