智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2362|回复: 8
打印 上一主题 下一主题

[硬件类] 平衡车卡尔曼滤波反向尖峰

[复制链接]

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
23
威望
15
贡献
8
兑换币
5
注册时间
2014-12-7
在线时间
1 小时
毕业学校
江苏大学
跳转到指定楼层
1#
发表于 2014-12-7 16:04:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


我的陀螺仪只向负角度的方向偏,但是却出现了向相反方向的尖峰,为什么啊?该怎么把这个尖峰去掉

白色是滤波后的角度,红色是加计三角函数换算后的角度;
黄色是角加速度



本帖子中包含更多资源

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

x
回复

使用道具 举报

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
23
威望
15
贡献
8
兑换币
5
注册时间
2014-12-7
在线时间
1 小时
毕业学校
江苏大学
2#
 楼主| 发表于 2014-12-7 16:05:33 | 只看该作者
//-------------------------------------------------------
float angle, angle_dot;                 //外部需要引用的变量
//-------------------------------------------------------
const float Q_angle=0.001, Q_gyro=0.003, R_angle=0.2;
                        //注意:dt的取值为kalman滤波器采样时间;
float Pk[2][2] = { {1, 0 }, {0, 1 }};
        
float Pdot[4] ={0,0,0,0};

const char C_0 = 1;
float q_bias, angle_err, 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 - Pk[0][1] - Pk[1][0];
        Pdot[1]=- Pk[1][1];
        Pdot[2]=- Pk[1][1];
        Pdot[3]=Q_gyro;
        
        Pk[0][0] += Pdot[0] * dt;
        Pk[0][1] += Pdot[1] * dt;
        Pk[1][0] += Pdot[2] * dt;
        Pk[1][1] += Pdot[3] * dt;
        
        
        angle_err = angle_m - angle;
        
        
        PCt_0 = C_0 * Pk[0][0];
        PCt_1 = C_0 * Pk[1][0];
        
        E = R_angle + C_0 * PCt_0;
        
        K_0 = PCt_0 / E;
        K_1 = PCt_1 / E;
        
        t_0 = PCt_0;
        t_1 = C_0 * Pk[0][1];

        Pk[0][0] -= K_0 * t_0;
        Pk[0][1] -= K_0 * t_1;
        Pk[1][0] -= K_1 * t_0;
        Pk[1][1] -= K_1 * t_1;
        
        
        angle        += K_0 * angle_err;
        q_bias        += K_1 * angle_err;
        angle_dot = gyro_m-q_bias;
        ///angle_dot = gyro_m;
}
                    
     这是我用的,在网上找的代码
回复 支持 反对

使用道具 举报

31

主题

331

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6009
威望
2884
贡献
1381
兑换币
1771
注册时间
2012-11-2
在线时间
872 小时
3#
发表于 2014-12-7 16:47:52 | 只看该作者
滤波前要做归一化   在那一块把陀螺仪输入极性取反就行了
回复 支持 反对

使用道具 举报

65

主题

717

帖子

0

精华

常驻嘉宾

事后诸葛亮

Rank: 8Rank: 8

积分
3714

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

威望
1697
贡献
1137
兑换币
1013
注册时间
2013-10-12
在线时间
440 小时
4#
发表于 2014-12-7 17:28:34 | 只看该作者
如果是ENC03你把输出引脚的串的电容短掉应该可以解决
回复 支持 反对

使用道具 举报

94

主题

1797

帖子

0

精华

杰出人士

智能车一级菜鸟

Rank: 12Rank: 12Rank: 12

积分
12693

推广达人奖章热心会员奖章优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

威望
7256
贡献
2709
兑换币
3587
注册时间
2013-8-6
在线时间
1364 小时
5#
发表于 2014-12-7 21:11:33 | 只看该作者
:):)
回复 支持 反对

使用道具 举报

30

主题

229

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2689
威望
1401
贡献
718
兑换币
877
注册时间
2014-7-1
在线时间
285 小时
6#
发表于 2014-12-8 03:52:10 | 只看该作者
用这个软件是什么的啊,那些过冲还是陀螺仪与加速度的拟合又是什么 请教请教
回复 支持 反对

使用道具 举报

5

主题

151

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2250
威望
1174
贡献
710
兑换币
744
注册时间
2014-7-28
在线时间
183 小时
毕业学校
合肥工业大学
7#
发表于 2014-12-8 10:13:37 | 只看该作者
请问一下,黄色的应该是陀螺仪的变化吧?那不应该是叫速度吗?还有蓝色的是什么呢?
回复 支持 反对

使用道具 举报

18

主题

104

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
威望
524
贡献
266
兑换币
315
注册时间
2014-11-21
在线时间
128 小时
8#
发表于 2014-12-12 18:17:55 | 只看该作者
juiojoi 发表于 2014-12-7 16:05
//-------------------------------------------------------
float angle, angle_dot;                  ...

卡尔曼前面定义的那几个比例是什么意思你知道 吗 求指导 啊  我没有理解
回复 支持 反对

使用道具 举报

19

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
849
威望
435
贡献
210
兑换币
233
注册时间
2013-11-23
在线时间
102 小时
毕业学校
长春理工大学
9#
发表于 2015-4-6 21:40:08 | 只看该作者
热血青年 发表于 2014-12-7 16:47
滤波前要做归一化   在那一块把陀螺仪输入极性取反就行了

输入极性取反是什么意思?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 01:38 , Processed in 0.084944 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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