​ 自从打算搞无人机之后,最终倒在了姿态的问题上,每次到了调参数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阶低通滤波,滤波效果非常好相关推荐

  1. 高阶低通滤波算法_高/低算法

    高阶低通滤波算法 介绍 在我以前的文章中,我谈到了各种数据库标识符策略,在设计数据库模型时需要注意. 我们得出的结论是,数据库序列非常方便,因为它们在大多数用例中既灵活又高效. 但是,即使具有缓存的序 ...

  2. (图像处理之滤波)OpenCV实现频率域的低通高斯滤波(C++)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_40647819/art ...

  3. 高阶低通无源滤波器的设计

    题目:设某设备的工作频率为1MHZ,输入阻抗为72欧姆,干扰频率为5MHZ,根据原型滤波器参数计算,设计六阶低通无源滤波器. 图一 原型滤波器参数表 解:6阶原型滤波器的参数为:c1=0.5176F, ...

  4. 【语音去噪】低通+自适应滤波去噪【含Matlab源码 352期】

    ⛄一.自适应滤波简介 自适应滤波是近30年以来发展起来的关于信号处理技术的方法.它是在维纳滤波.Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法.由于它具有更强的适应性和更优的滤波性能,从而 ...

  5. 中值滤波、低通与高通滤波

    1. 中值滤波 首先给出结论,中值滤波,例如说设置窗长为5个点的均值滤波,属于低通滤波.这点很容易理解,假设窗长为无限长,原始信号就变为了直流分量,频率为0.因此,均值滤波属于低通滤波,中值滤波也是一 ...

  6. matalb 图像处理 低通滤波和高通滤波 (理想,巴特沃斯,高斯 含代码)

    低通滤波和高通滤波 主要类型和公式 主要效果图 各类型的函数代码 最终比较代码 主要类型和公式 1.低通滤波 主要分为理想低通滤波,巴特沃斯低通滤波,高斯低通滤波 理想低通滤波: 其中:对于大小为M* ...

  7. OpenCV实现频率域滤波——以高斯低通滤波去噪为例

    最近由于作业原因,试着用OpenCV实现频率域滤波,但是OpenCV中并没有像MATLAB中fftshift这样的中心化操作,所以我写了一个频率域滤波的函数,以后用频率域滤波的时候在主函数中调用即可. ...

  8. python实现IIR高通低通,带通,带阻滤波器详解及应用案例

    Python实现数字滤波器 文章目录 Python实现数字滤波器 1.IIR低通.高通.带通和带阻滤波器的设计 1.1.设计滤波器的函数 1.2.将滤波器应用于语音 由语音的产生和感知可知,基音频率的 ...

  9. 设计低通巴特沃斯数字滤波器(matlab)去除ECG基线漂移实例

    matlab代码************************** M=load ('datafile'); ecg=M(1:15000,1); 读取数据 fs=512; 采样率 fmaxd_1=5 ...

最新文章

  1. sqoop 1.4.5 增量导入hive 0.12.0
  2. 项目质量管理知识点整理和习题整理
  3. html制作统计期末成绩,JS-结合html综合练习js的对象——班级成绩表制作
  4. Silver Cow Party POJ - 3268 (固定起点和固定终点的最短路)
  5. 在实际项目开发中keil的调试方法
  6. 对于最近爆火的区块链,投资人怎么看? | 聚焦
  7. c语言画谢宾斯基三角形
  8. CSS 参考资料/学习资料
  9. 何川L3管理课_模块4_成果管理
  10. 一个最基本最简单的爬虫代码【精简】
  11. 网络视频传输的服务质量(QoS)
  12. vm虚拟服务器控制端,使用VMware虚拟机实现单主机双屏两人同时使用独立控制
  13. laravel-admin使用教程
  14. 水温控制系统设计(AVRmega16单片机)代码编写(包含显示器、单片机、温度传感器)
  15. 处理png图片为透明
  16. numpy数组中元素单个选取或部分选取
  17. MW6208U盘量产问题
  18. 微信小程序引入vant-weapp组件遇到的bug以及解决方法
  19. 完美主义的一点点体现
  20. C# Socket模拟发送接收

热门文章

  1. burpsuite实现抓Windows for Android(WSA)包
  2. 近期研究方向 (内部参考)
  3. HashMap与ConcurrentHashMap面试要点
  4. nginx-rtmp 的部署
  5. 山东赛区|数学建模国赛山东赛区成绩发布
  6. Linux 环境下配置远程jupyter notebook server
  7. 游戏角色动画:从入门到商用(一)
  8. MySQL format()\CAST()\CONVERT()指定特定个数的小数
  9. 基于微信小程序的童装(服装)商城的设计与实现
  10. passwd_pro