当前位置: 首页 > wzjs >正文

太原网站制作定制开发支付网站建设费

太原网站制作定制开发,支付网站建设费,兰州免费网站建设,网页版游戏排行榜女基于FreeRTOS的STM32四轴飞行器: 十二.滤波 一.滤波介绍二.对角速度进行一阶低通滤波三.对加速度进行卡尔曼滤波 一.滤波介绍 模拟信号滤波: 最常用的滤波方法可以在信号和地之间并联一个电容,因为电容通交隔直,信号突变会给电容充电&#x…

基于FreeRTOS的STM32四轴飞行器: 十二.滤波

  • 一.滤波介绍
  • 二.对角速度进行一阶低通滤波
  • 三.对加速度进行卡尔曼滤波

一.滤波介绍

模拟信号滤波:
最常用的滤波方法可以在信号和地之间并联一个电容,因为电容通交隔直,信号突变会给电容充电,电容两端电压不会突变,电容越大越明显。
电容滤电压的毛刺,电感滤电流的毛刺。电感串联进电路中,电流出现毛刺,因为通过电感两端的电流不能突变,实现对电流的滤波。
数字信号滤波:
使用算法进行滤波。
1.均值滤波(滑动窗口滤波):每来一个值使用前四个值进行平均使用平均值
2.中值滤波:将数据排序,取数据奇数部分的中值代替取到的数值。
3.一阶低通滤波:结果 = 系数 * 上次的值 + (1 - 系数)X 这次的值
4.卡尔曼滤波:核心5个公式。
5.互补滤波:
加速度对时间积分 速度:响应迅速,结果容易受到外界影响。
加速度对时间微分 速度:结果不容受影响,响应不及时。

二.对角速度进行一阶低通滤波

编写一阶低通滤波函数:

#define ALPHA 0.8
/* 一阶低通率波 */
int16_t Com_Filter_LowPass(int16_t newData, int16_t lastData)
{return ALPHA * lastData + (1 - ALPHA) * newData;
}

使用一阶低通滤波:
记住读取数据时使用临界区。

    /* 1. 读取原始数据 */taskENTER_CRITICAL();Inf_MPU6050_ReadGyroAccelCalibrated(gyroAccel);taskEXIT_CRITICAL();/* 2. 对角速度做一阶低通低通滤波 */static int16_t lastDatas[3] = {0};gyroAccel->gyro.gyroX = Com_Filter_LowPass(gyroAccel->gyro.gyroX, lastDatas[0]);gyroAccel->gyro.gyroY = Com_Filter_LowPass(gyroAccel->gyro.gyroY, lastDatas[1]);gyroAccel->gyro.gyroZ = Com_Filter_LowPass(gyroAccel->gyro.gyroZ, lastDatas[2]);lastDatas[0] = gyroAccel->gyro.gyroX;lastDatas[1] = gyroAccel->gyro.gyroY;lastDatas[2] = gyroAccel->gyro.gyroZ;

一阶低通滤波效果演示:
使用虚拟数字示波器观察滤波前后数据波形,滤波效果明显。
CH1(红):滤波前
CH2(黄):滤波后
在这里插入图片描述

三.对加速度进行卡尔曼滤波

直接移植下面的卡尔曼滤波代码:
.c:
三个结构体分别是XYZ三轴的参数。
卡尔曼滤波函数参数分别为结构体,对谁做滤波。
返回值为滤波后结果。

/* 卡尔曼滤波参数 */
KalmanFilter_Struct kfs[3] = {{0.02, 0, 0, 0, 0.001, 0.543},{0.02, 0, 0, 0, 0.001, 0.543},{0.02, 0, 0, 0, 0.001, 0.543}};
double Common_Filter_KalmanFilter(KalmanFilter_Struct *kf, double input)
{kf->Now_P = kf->LastP + kf->Q;kf->Kg    = kf->Now_P / (kf->Now_P + kf->R);kf->out   = kf->out + kf->Kg * (input - kf->out);kf->LastP = (1 - kf->Kg) * kf->Now_P;return kf->out;
}

.h:

/* 卡尔曼滤波器结构体 */
typedef struct
{float LastP;   // 上一时刻的状态方差(或协方差)float Now_P;   // 当前时刻的状态方差(或协方差)float out;     // 滤波器的输出值,即估计的状态float Kg;      // 卡尔曼增益,用于调节预测值和测量值之间的权重float Q;       // 过程噪声的方差,反映系统模型的不确定性float R;       // 测量噪声的方差,反映测量过程的不确定性
} KalmanFilter_Struct;extern KalmanFilter_Struct kfs[3];

使用卡尔曼滤波:
传入结构体和滤波的对象。

    /* 3. 对加速度做卡尔曼滤波 */// OutData[0] = gyroAccel->accel.accelX ;gyroAccel->accel.accelX = Common_Filter_KalmanFilter(&kfs[0], gyroAccel->accel.accelX);gyroAccel->accel.accelY = Common_Filter_KalmanFilter(&kfs[1], gyroAccel->accel.accelY);gyroAccel->accel.accelZ = Common_Filter_KalmanFilter(&kfs[2], gyroAccel->accel.accelZ);// OutData[1] = gyroAccel->accel.accelX ;// OutPut_Data();

观察滤波前后效果:
效果良好
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/536246.html

相关文章:

  • 自己画户型图的app优化大师官方
  • 内网网站建设的必要性长沙seo网站建设
  • 扬州市广陵区城乡建设局网站市场调研报告怎么做
  • 服务器网站打不开西安在线最新招聘信息
  • 西安高校网站建设定制网站建设dedecms免费网站模板
  • 怎么做一个简单的网站钢铁网站建设初衷
  • 网站内容排版设计网站阴影
  • 苏州公司建设网站首页如何做好网站推广工作
  • 云盘做网站萧县建设局网站
  • 行业电子商务网站有哪些如何 攻击网站
  • 做网站需要注册什么公司购物网站二级页面模板
  • 河南省两学一做网站网页制作用什么软件做
  • 网站开发自适应视频网站的广告能怎么做
  • 广州番禺网站建设成都住建局官网房源
  • 绵阳建网站医疗网站怎么做优化
  • 电脑网站怎么做的贵阳手机网站开发
  • 酥糖的网站建设的目的是什么网页设计的基本元素
  • 畜牧业网站建设哪些网站做二手挖机
  • 网站策划编辑招聘分析网站设计对网站搜索引擎友好性的影响
  • 茂名网站制作价格无棣网站定制
  • vs2017建设网站微网站的定义
  • 在搜狐快站上做网站怎么跳转微信网页版手机端
  • 网页设计自学视频网站四川企业seo
  • 专业做蛋糕视频网站国内网页设计公司前十名
  • 微信网站wordpress 下载页面模板
  • 中国优秀网站设计上海关键词优化推荐
  • 工厂弄个网站做外贸如何处理官方微信公众号怎么创建
  • 网站添加在线qq聊天如何做flash游戏下载网站
  • 怎样给公司做网站株洲平台公司有几家
  • 医院 网站建设 中企动力微信上建微网站要钱吗