OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 25633|回复: 42

一阶,二阶,卡尔曼滤波后的角度效果图

[复制链接]

5

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2013-6-8
在线时间
2 小时
发表于 2013-9-5 08:23:34 | 显示全部楼层 |阅读模式

一阶滤波


二阶滤波,二阶好像反应好迟钝

卡尔曼滤波


测试过程中,我把mpu6050在+-90°反复转得到上面的角度值,紫色是没滤波的,黄的是经过滤波后的

float First_order_filter(float Com_angle,float angle_pt,float angle,float dt);

参数说明:com_angle 滤波后的角度,  angle_pt 角速度(弧度制), angle 角度(弧度制), dt 微分时间(秒)
调用       :  com_angle = First_order_filter(com_angle, ang_pt, ang, dtime)

上位机用的是匿名飞控上位机,上位机使用说明请查看9mcu的匿名发的帖子

 

filter.h

509 Bytes, 下载次数: 2559

ANO_Tech匿名四轴上位机.exe

2.03 MB, 下载次数: 2049

filter.c

1.39 KB, 下载次数: 3033

即使爬到最高的山上,一次也只能脚踏实地地迈一步。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
发表于 2014-11-26 16:41:50 | 显示全部楼层
不行,卡尔曼滤波是数据融合的算法,单一量是不能滤波的
回复 支持 0 反对 2

使用道具 举报

5

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2013-6-8
在线时间
2 小时
 楼主| 发表于 2013-9-5 08:41:58 | 显示全部楼层
补充一个

滤波角度融合.rar

407.04 KB, 下载次数: 3876

回复 支持 反对

使用道具 举报

36

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
340
金钱
340
注册时间
2013-4-22
在线时间
36 小时
发表于 2013-9-5 09:05:58 | 显示全部楼层
楼主好强大,我最近也在学习九轴,碰到头疼的事了,在网上资料找了资料,一:从加速度计读出来的数据除以16.383(转换成mg),陀螺仪读出来的数据*0。07(角度 转换),我不知道这些数据该怎么校准,楼主能教教我吗,方便的话,留个QQ。。
做技术的一定要谦虚,但不能轻易服输!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-5 10:20:36 | 显示全部楼层
谢谢分享。
回复 支持 反对

使用道具 举报

3

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-8
在线时间
0 小时
发表于 2013-9-5 10:26:37 | 显示全部楼层
强大呀   我都学了2个月   不大懂
回复 支持 反对

使用道具 举报

3

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-8
在线时间
0 小时
发表于 2013-9-5 10:27:55 | 显示全部楼层
回复【楼主位】倒拔萝卜:
---------------------------------
你和茶老大 是什么 关系?    我问茶老大这东西  他都敷衍我i
回复 支持 反对

使用道具 举报

5

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2013-6-8
在线时间
2 小时
 楼主| 发表于 2013-9-5 10:55:09 | 显示全部楼层
回复【6楼】lijungei:
---------------------------------
我去,我不认识什么查老大
即使爬到最高的山上,一次也只能脚踏实地地迈一步。
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
发表于 2014-8-10 10:56:04 | 显示全部楼层
好顶赞哈哈。
回复 支持 反对

使用道具 举报

53

主题

175

帖子

1

精华

高级会员

Rank: 4

积分
516
金钱
516
注册时间
2014-5-16
在线时间
7 小时
发表于 2014-11-6 10:07:38 | 显示全部楼层
 回复【7楼】 倒拔萝卜 :
---------------------------------
楼主能不能指导一下上面的卡尔曼滤波,有些地方看不懂
[mw_shl_code=c,true]float Kalman_filter(float Klm_angle,float angle_pt,float angle,float dt)// 卡尔曼滤波 { static float bias; static float P_00,P_01,P_10,P_11; float K_0,K_1; Klm_angle += (angle_pt - bias) * dt; // 先验估计 P_00 += -(P_10 + P_01) * dt + Q_angle *dt; P_01 += -P_11 * dt; P_10 += -P_11 * dt; P_11 += +Q_omega * dt; // 先验估计误差协方差 K_0 = P_00 / (P_00 + R_angle); K_1 = P_10 / (P_00 + R_angle); bias += K_1 * (angle - Klm_angle); Klm_angle += K_0 * (angle - Klm_angle); // 后验估计 P_00 -= K_0 * P_00; P_01 -= K_0 * P_01; P_10 -= K_1 * P_00; P_11 -= K_1 * P_01; // 后验估计误差协方差 return Klm_angle; }[/mw_shl_code]
这个是楼主的例子,我的疑惑是:
1,static float bias和static float P_00,P_01,P_10,P_11,这些是静态局部变量,初始值没给程序怎么启动呢?
2,上面的初值如何确定呢?
本人新人,各位多包涵!
回复 支持 反对

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2014-11-6 10:44:29 | 显示全部楼层
默认0 。。。。
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复 支持 反对

使用道具 举报

53

主题

175

帖子

1

精华

高级会员

Rank: 4

积分
516
金钱
516
注册时间
2014-5-16
在线时间
7 小时
发表于 2014-11-20 09:31:17 | 显示全部楼层
回复【10楼】muniao:
---------------------------------
LZ,我要做一个纯高度的卡尔曼滤波,就是输入是高度,输出是高度,和dt没有关系,怎么修改呢
本人新人,各位多包涵!
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
发表于 2014-11-26 16:41:00 | 显示全部楼层
回复【9楼】x1213378204:
---------------------------------
估计误差方差矩阵的四个元素,初始化为0即可,卡尔曼滤波算法是迭代算法,初始值可以不用取得太精确
回复 支持 反对

使用道具 举报

6

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
763
金钱
763
注册时间
2013-4-23
在线时间
119 小时
发表于 2015-6-1 00:50:19 | 显示全部楼层
卡尔曼可以给一个数据滤波么,比如温度啥的?
MJM_天行健,君子以自强不息;地势坤,君子以厚德载物;
回复 支持 反对

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2015-6-1 09:39:44 | 显示全部楼层
谢谢。。。。


mark。。。。
呵呵。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2015-3-21
在线时间
1 小时
发表于 2015-6-7 20:31:50 | 显示全部楼层
你好 , 你传的这个工程文件编译不通过,是怎么回事?求指导一下
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
发表于 2015-6-8 18:58:04 | 显示全部楼层
mark。。。。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-30
在线时间
0 小时
发表于 2015-11-4 20:30:18 | 显示全部楼层
卡尔曼滤波的那几个参数不用调吗?
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-11-19
在线时间
0 小时
发表于 2015-11-20 17:02:00 | 显示全部楼层
回复【2楼】倒拔萝卜:
---------------------------------
请问匿名的上位机如何显示波形啊?我试了不可以
回复 支持 反对

使用道具 举报

1

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-1-18
在线时间
7 小时
发表于 2016-1-18 22:29:07 | 显示全部楼层
MJM 发表于 2015-6-1 00:50
卡尔曼可以给一个数据滤波么,比如温度啥的?

应该是可以的
回复 支持 反对

使用道具 举报

6

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
763
金钱
763
注册时间
2013-4-23
在线时间
119 小时
发表于 2016-1-19 15:46:03 | 显示全部楼层

求教该怎么做?
MJM_天行健,君子以自强不息;地势坤,君子以厚德载物;
回复 支持 反对

使用道具 举报

1

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-1-18
在线时间
7 小时
发表于 2016-1-20 09:50:17 | 显示全部楼层
MJM 发表于 2016-1-19 15:46
求教该怎么做?

嗯 我想想 你是从6050里读温度么?   卡拉曼滤波可能不能对单一量滤波
回复 支持 反对

使用道具 举报

1

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-1-18
在线时间
7 小时
发表于 2016-1-20 09:51:25 | 显示全部楼层
MJM 发表于 2016-1-19 15:46
求教该怎么做?

单一量的话 没法对它进行概率的最优化求解
回复 支持 反对

使用道具 举报

6

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
763
金钱
763
注册时间
2013-4-23
在线时间
119 小时
发表于 2016-1-20 19:33:17 | 显示全部楼层
小李飞刀 发表于 2016-1-20 09:51
单一量的话 没法对它进行概率的最优化求解

我是从称重的传感器读取的数据。   
MJM_天行健,君子以自强不息;地势坤,君子以厚德载物;
回复 支持 反对

使用道具 举报

6

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
763
金钱
763
注册时间
2013-4-23
在线时间
119 小时
发表于 2016-1-20 19:35:08 | 显示全部楼层
小李飞刀 发表于 2016-1-20 09:51
单一量的话 没法对它进行概率的最优化求解

以前见过一个说是卡尔曼。不知道是不是。 套用后有效果。但是数据滞后严重。
代码如下:
[mw_shl_code=c,true]#include "KF.h"


   
double KF_Q = 0.01;                // Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏
double KF_R = 0.1;                // R:测量噪声,R增大,动态响应变慢,收敛稳定性变好     



u16 KalmanFilter(u16 v)
{
        static double x_last;
        static double p_last;
        double x_mid;
        double x_now;
        double p_mid;
        double p_now;//协方差
        double kg;   //卡尔曼     
       
       
        x_mid = x_last;                                                 //x_last=x(k-1|k-1), x_mid=x(k|k-1)
        p_mid = p_last + KF_Q;                                 //p_mid=p(k|k-1),p_last=p(k-1|k-1),KF_Q=噪声
        kg = p_mid / (p_mid+KF_R);                 //kg为kalman filter,R为噪声
        x_now = x_mid + kg * (v-x_mid);        //估计出的最优值

        p_now = (1-kg) * p_mid;                                //最优值对应的covariance        

        p_last = p_now; //更新covariance值//协方差
        x_last = x_now; //更新系统状态值              

        return        x_now;
}

//end[/mw_shl_code]
MJM_天行健,君子以自强不息;地势坤,君子以厚德载物;
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-8-23
在线时间
7 小时
发表于 2016-1-27 11:59:59 | 显示全部楼层
赞一个!楼主6!
回复 支持 反对

使用道具 举报

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-10-11
在线时间
45 小时
发表于 2016-2-2 08:59:45 | 显示全部楼层
666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2015-10-11
在线时间
45 小时
发表于 2016-2-16 19:45:15 | 显示全部楼层
x1213378204 发表于 2014-11-6 10:07
 回复【7楼】 倒拔萝卜 :
---------------------------------
楼主能不能指导一下上面的卡尔曼滤波 ...

卡尔曼滤波函数中的Q_angle  和  Q_omega  R_angle   这几个变量是哪里来的???
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2015-3-18
在线时间
46 小时
发表于 2016-2-17 13:32:21 | 显示全部楼层
卡尔曼滤波采用二级滤波的时候感觉会把峰值给吃掉似的
回复 支持 反对

使用道具 举报

7

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2016-2-24
在线时间
39 小时
发表于 2016-3-22 14:42:08 | 显示全部楼层
另求一阶滤波程序
回复 支持 反对

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
862
金钱
862
注册时间
2015-2-12
在线时间
354 小时
发表于 2016-3-22 16:42:03 | 显示全部楼层
先下,再谢谢!
回复 支持 反对

使用道具 举报

0

主题

63

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3867
金钱
3867
注册时间
2015-8-26
在线时间
285 小时
发表于 2016-3-22 18:39:13 | 显示全部楼层
貌似很高深啊,随便看看
回复 支持 反对

使用道具 举报

二十三画生27 该用户已被删除
发表于 2016-9-13 17:32:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

3

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2016-11-5
在线时间
26 小时
发表于 2016-11-5 23:44:38 | 显示全部楼层
楼主是什么编译器写的?
回复 支持 反对

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2016-11-17 16:47:31 | 显示全部楼层
学习了,顶
回复 支持 反对

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
发表于 2016-11-29 22:09:32 | 显示全部楼层
mark,学习一下
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-7-27
在线时间
8 小时
发表于 2017-9-12 21:26:32 | 显示全部楼层
2013的弹子球 发表于 2014-11-26 16:41
不行,卡尔曼滤波是数据融合的算法,单一量是不能滤波的

https://wenku.baidu.com/view/e713ab7c168884868762d615.html
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-7-27
在线时间
8 小时
发表于 2017-9-12 21:27:49 | 显示全部楼层
MJM 发表于 2015-6-1 00:50
卡尔曼可以给一个数据滤波么,比如温度啥的?

这里是两个传感器分别单独进行卡尔曼滤波的程序,我不确定能不能用,给你:https://wenku.baidu.com/view/e713ab7c168884868762d615.html
回复 支持 反对

使用道具 举报

27

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1382
金钱
1382
注册时间
2017-9-5
在线时间
151 小时
发表于 2017-11-26 20:32:06 | 显示全部楼层
你好,请问,我现在只做加速度信息的ad采集,想把采集到的数据做一些滤波,请问可以用卡尔曼滤波么?刚刚接触滤波,麻烦指点一下,谢谢。除此之外还有什么好的滤波呢?只想把数据平滑处理一下
回复 支持 反对

使用道具 举报

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
发表于 2018-11-30 08:50:41 | 显示全部楼层
觉得是个好东西,学习下
做一个相信自己的人
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2019-2-28
在线时间
9 小时
发表于 2019-3-22 17:48:09 | 显示全部楼层
liuxx 发表于 2015-6-7 20:31
**** 作者被禁止或删除 内容自动屏蔽 ****

您好!请问这个问题解决了吗? 我也遇到同样的问题,可以帮忙解答一下吗?
回复 支持 反对

使用道具 举报

8

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2017-9-15
在线时间
50 小时
发表于 2019-4-13 22:01:23 | 显示全部楼层
最近在研究滤波,学习
回复 支持 反对

使用道具 举报

16

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2020-5-14
在线时间
35 小时
发表于 2020-6-8 23:01:07 | 显示全部楼层
楼主,我也遇到同样的问题。我想用卡尔曼滤波器给单传感器滤波,目的就是为了滤掉噪声和信号拖尾造成的尾部的小峰,可行不?原始信号理论上是一个方波信号。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 11:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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