本帖最后由 wszdxmh 于 2016-8-23 15:12 编辑
不说,上图
X-Kalman滤波
Y-Kalman滤波
Z-Kalman滤波,这个滤得不是很好。
X轴三种滤波对比图
放大图
一阶互补跟随快,但是抗干扰也会差一点,其他两个要等几个周期才会跟随比较好,应该是要更新参数。
上代码。
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算法,有空再更。
波形图?不知道怎么弄出波形图,软件吗?
你能加下我的QQ吗?拜托啦,976675605或者你告诉我你的QQ或者微信什么的,求教
我发现我的这两行代码跟你的不同,我的是
MPU6050_Real_Data.Accel_X = -(float)(MPU6050_Raw_Data.Accel_X)/8192.0;
MPU6050_Real_Data.Gyro_Y=-(float)(MPU6050_Raw_Data.Gyro_Y - gyroADC_Y_offset)/65.5;
你的是 if (Accel_x<32764) x = Accel_x / 16384;
else x = 1 - (Accel_x - 49152) / 16384;
if (Gyro_y<32768) Gyro_y = -(Gyro_y / 16.4);//16.4 LSB/(deg/s)
if (Gyro_y>32768) Gyro_y = +(65535 - Gyro_y) / 16.4;
是因为这两行代码的原因吗?我们除的参数不同
我发现我的这两行代码跟你的不同,我的是 MPU6050_Real_Data.Accel_X =-(float)(MPU6050_Raw_Data.Accel_X)/8192.0; MPU6050_Real_Data.Gyro_Y=-(float)(MPU6050_Raw_Data.Gyro_Y- gyroADC_Y_offset)/65.5;你的是 if (Accel_x<32764) x =Accel_x / 16384; else x = 1 - (Accel_x - 49152) /16384; if(Gyro_y<32768) Gyro_y = -(Gyro_y / 16.4);//16.4 LSB/(deg/s) if(Gyro_y>32768) Gyro_y = +(65535 - Gyro_y) / 16.4;是这个原因吗? 这是我卡尔曼滤波后的倾角,我朝一个方向改变倾角,发现它却先向反方向变化,然后才向这个方向变化,并且还会超过,再才到改变后的角度下图红 {MOD}是滤波后的倾角,白 {MOD}是Angle_ax(即加速度计转变为角度后的值),黄 {MOD}是Gyro_y(即角速度)
一周热门 更多>