分享我的MPU6050+卡尔曼+一阶互补+二阶互补滤波

2019-07-21 06:32发布

本帖最后由 wszdxmh 于 2016-8-23 15:12 编辑

不说,上图
X-Kalman.png
X-Kalman滤波
Y-Kalman.png
Y-Kalman滤波
Z-Kalman.png
Z-Kalman滤波,这个滤得不是很好。
X-Thr.png
X轴三种滤波对比图
Big.png
放大图
一阶互补跟随快,但是抗干扰也会差一点,其他两个要等几个周期才会跟随比较好,应该是要更新参数。
上代码。
STM32F103VModel.zip (409.82 KB, 下载次数: 5987) 2016-7-22 09:53 上传 点击文件名下载附件
滤波代码

匿名上位机
ANO_TC匿名科创地面站v4.06.rar (13.66 MB, 下载次数: 17406) 2016-7-22 10:17 上传 点击文件名下载附件
匿名地面站V4.0

UCOSIII移植版
STM32F103C8T6Model-UCOSIII.zip (1.65 MB, 下载次数: 7163) 2016-8-23 15:11 上传 点击文件名下载附件
UCOSIII版


现在研究PID算法,有空再更。








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
48条回答
橘子先生
1楼-- · 2019-07-24 03:44
wszdxmh 发表于 2016-7-25 19:22
我很怀疑是第一个共享代码的人写错了,后面的人都错了。

哈哈,有可能
王轩
2楼-- · 2019-07-24 07:39
楼主您好~我移植的您的代码,可是经过卡尔曼计算出来之后的值,为什么一直都是-1呢?哪里出错了?
                        mpu6050_send_data(Angle_x_temp,Angle_X_Final,(Angle_y_temp),(Angle_Y_Final),(Angle_z_temp),(Angle_Z_Final));
就是这个函数中,Angle_X_Final,Angle_Y_Final,Angle_Z_Final,的值一直是-1,其他的三个值正常!
wszdxmh
3楼-- · 2019-07-24 11:13
 精彩回答 2  元偷偷看……
chuck__chee
4楼-- · 2019-07-24 16:33
为什么 用了DMP 还用卡尔曼来算啊  卡尔曼出来的也是欧拉角?  看你的图片仅仅是对原始数据的滤波啊,但是如果直接用DMP,是不能对原始数据进行任何处理的啊,直接FIFO读数据了~
wszdxmh
5楼-- · 2019-07-24 19:15
chuck__chee 发表于 2016-7-27 08:50
为什么 用了DMP 还用卡尔曼来算啊  卡尔曼出来的也是欧拉角?  看你的图片仅仅是对原始数据的滤波啊,但是 ...

你去看看那些开源四轴的代码,基本上都是自己滤波,有些第一代用DMP,第二代更新了之后也用改成自己滤波。至于具体的,我也没研究过,但是大家一致选择这种方案,就一定有他的道理。
王轩
6楼-- · 2019-07-24 21:50
wszdxmh 发表于 2016-7-26 23:39
这个我就不知道你移植哪里出错了。我没遇过这个情况。

好吧~我再挣扎挣扎

一周热门 更多>