# MPU6050之2阶低通滤波,滤波效果非常好
自从打算搞无人机之后,最终倒在了姿态的问题上,每次到了调参数PID,飞机都不稳。之后锁定了几个可能的因素,一是参数没做到最佳,二就是电机高转速下,6050受到震动的情况下,姿态乱了,导致PID无法做到最佳。
经过各种排查,试过各种减震,效果还是不明显,无意中接触了穿越机的F3飞控,经过实验,发现穿越机在没有做减震的情况下,输出的数据非常平滑,看了代码,6050输出的数据是要经过2阶低通滤波。经过移植到树莓派后,终于做到了高频震动下,6050 的输出在0.3的误差,而不是原先的5度左右的误差。感觉非常好。而且反馈的非常快,并没有滞后。
这次代码比较多。感谢cleanflight,感谢正点原子@ALIENTEK,这个是对方开源的代码移植出来的。再次感谢。
//传感器对齐定义的机体坐标系的安装方向
#define ACCEL_ALIGN CW0_DEG/*传感器对齐定义的机体坐标系的安装方向*/
#define GYRO_ALIGN CW0_DEG
/*低通滤波参数*/
#define GYRO_LPF_CUTOFF_FREQ 80.0f
#define XYZ_AXIS_COUNT 3
biquadFilter_t gyroFilterLPF[XYZ_AXIS_COUNT];//二阶低通滤波器Axis3i16 gyroADCRaw; //陀螺仪原始AD数据 x,y,z
Axis3i16 gyroADC; //校准的AD数据 x,y,z
Axis3f gyrof; //转换单位为°/s的数据 x,y,z
//软件二阶低通滤波参数(单位Hz)
#define ACCEL_LPF_CUTOFF_FREQ 15.0f
biquadFilter_t accFilterLPF[XYZ_AXIS_COUNT];//二阶低通滤波器
Axis3i16 accADCRaw; //加速度原始AD数据,x,y,z
Axis3i16 accADC; //校准后的AD数据 x,y,z
Axis3f accf; //转换单位为G的数据 x,y,z//初始化二阶低通滤波
for (int axis = 0; axis < 3; axis++)
{biquadFilterInitLPF(&gyroFilterLPF[axis], gyroUpdateRate, GYRO_LPF_CUTOFF_FREQ);
}
//初始化软件二阶低通滤波
for (int axis = 0; axis < 3; axis++)
{ biquadFilterInitLPF(&accFilterLPF[axis], accUpdateRate, ACCEL_LPF_CUTOFF_FREQ);
}//这里用在循环读取传感器数据之后用,每次都进行滤波
//软件低通滤波
for (int axis = 0; axis < 3; axis++)
{accf.axis[axis] = biquadFilterApply(&accFilterLPF[axis], accf.axis[axis]);
}
//软件二阶低通滤波
for (int axis = 0; axis < 3; axis++)
{gyrof.axis[axis] = biquadFilterApply(&gyroFilterLPF[axis], gyrof.axis[axis]);
}
代码就是大概就这么多。自此,经过滤波后的数据,再进行PID输出的时候,已经感觉非常平稳,接下来就是要调节PID的参数,直到能平稳飞起来。需要代码可以私信联系。
# MPU6050之2阶低通滤波,滤波效果非常好相关推荐
- 高阶低通滤波算法_高/低算法
高阶低通滤波算法 介绍 在我以前的文章中,我谈到了各种数据库标识符策略,在设计数据库模型时需要注意. 我们得出的结论是,数据库序列非常方便,因为它们在大多数用例中既灵活又高效. 但是,即使具有缓存的序 ...
- (图像处理之滤波)OpenCV实现频率域的低通高斯滤波(C++)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_40647819/art ...
- 高阶低通无源滤波器的设计
题目:设某设备的工作频率为1MHZ,输入阻抗为72欧姆,干扰频率为5MHZ,根据原型滤波器参数计算,设计六阶低通无源滤波器. 图一 原型滤波器参数表 解:6阶原型滤波器的参数为:c1=0.5176F, ...
- 【语音去噪】低通+自适应滤波去噪【含Matlab源码 352期】
⛄一.自适应滤波简介 自适应滤波是近30年以来发展起来的关于信号处理技术的方法.它是在维纳滤波.Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法.由于它具有更强的适应性和更优的滤波性能,从而 ...
- 中值滤波、低通与高通滤波
1. 中值滤波 首先给出结论,中值滤波,例如说设置窗长为5个点的均值滤波,属于低通滤波.这点很容易理解,假设窗长为无限长,原始信号就变为了直流分量,频率为0.因此,均值滤波属于低通滤波,中值滤波也是一 ...
- matalb 图像处理 低通滤波和高通滤波 (理想,巴特沃斯,高斯 含代码)
低通滤波和高通滤波 主要类型和公式 主要效果图 各类型的函数代码 最终比较代码 主要类型和公式 1.低通滤波 主要分为理想低通滤波,巴特沃斯低通滤波,高斯低通滤波 理想低通滤波: 其中:对于大小为M* ...
- OpenCV实现频率域滤波——以高斯低通滤波去噪为例
最近由于作业原因,试着用OpenCV实现频率域滤波,但是OpenCV中并没有像MATLAB中fftshift这样的中心化操作,所以我写了一个频率域滤波的函数,以后用频率域滤波的时候在主函数中调用即可. ...
- python实现IIR高通低通,带通,带阻滤波器详解及应用案例
Python实现数字滤波器 文章目录 Python实现数字滤波器 1.IIR低通.高通.带通和带阻滤波器的设计 1.1.设计滤波器的函数 1.2.将滤波器应用于语音 由语音的产生和感知可知,基音频率的 ...
- 设计低通巴特沃斯数字滤波器(matlab)去除ECG基线漂移实例
matlab代码************************** M=load ('datafile'); ecg=M(1:15000,1); 读取数据 fs=512; 采样率 fmaxd_1=5 ...
最新文章
- sqoop 1.4.5 增量导入hive 0.12.0
- 项目质量管理知识点整理和习题整理
- html制作统计期末成绩,JS-结合html综合练习js的对象——班级成绩表制作
- Silver Cow Party POJ - 3268 (固定起点和固定终点的最短路)
- 在实际项目开发中keil的调试方法
- 对于最近爆火的区块链,投资人怎么看? | 聚焦
- c语言画谢宾斯基三角形
- CSS 参考资料/学习资料
- 何川L3管理课_模块4_成果管理
- 一个最基本最简单的爬虫代码【精简】
- 网络视频传输的服务质量(QoS)
- vm虚拟服务器控制端,使用VMware虚拟机实现单主机双屏两人同时使用独立控制
- laravel-admin使用教程
- 水温控制系统设计(AVRmega16单片机)代码编写(包含显示器、单片机、温度传感器)
- 处理png图片为透明
- numpy数组中元素单个选取或部分选取
- MW6208U盘量产问题
- 微信小程序引入vant-weapp组件遇到的bug以及解决方法
- 完美主义的一点点体现
- C# Socket模拟发送接收
热门文章
- burpsuite实现抓Windows for Android(WSA)包
- 近期研究方向 (内部参考)
- HashMap与ConcurrentHashMap面试要点
- nginx-rtmp 的部署
- 山东赛区|数学建模国赛山东赛区成绩发布
- Linux 环境下配置远程jupyter notebook server
- 游戏角色动画:从入门到商用(一)
- MySQL format()\CAST()\CONVERT()指定特定个数的小数
- 基于微信小程序的童装(服装)商城的设计与实现
- passwd_pro