智能车竞赛平衡组三种滤波方案

2023-05-16

/******************************三种滤波函数,每种都调试下,比较动态和静态过程****************************************************/
/*******************下面滤波过程很重要,很重要,很重要,重要的事情说三遍*******************************************************/
/*******************下面滤波过程很重要,很重要,很重要,重要的事情说三遍*******************************************************/
#define dt 0.002
float Angle,Gyro_y;  //*************
float Q_angle=0.001;//0.001     //*************
float Q_gyro=0.003;//0.03  //*************
float R_angle=0.5;//0.5  //*************
//float dt=0.01;//0.1         //dt为kalman滤波器采样时间;   //*************
char  C_0 = 1;  //*************
float Q_bias, Angle_err;   //*************
float PCt_0, PCt_1, E;  //*************
float K_0, K_1, t_0, t_1;   //*************
float Pdot[4] ={0,0,0,0};   //*************
float PP[2][2] = { { 1, 0 },{ 0, 1 } };   //*************
float w_kp=1;//0.945  //*************
/*矩阵卡尔曼函数*/  //*************
float Kalman_Filter(float Accel,float Gyro)   //*************
{  //*************
Angle+=(Gyro - Q_bias) * dt; //先验估计   //*************
Pdot[0]=Q_angle - PP[0][1] - PP[1][0]; // Pk-先验估计误差协方差的微分   //*************
Pdot[1]=- PP[1][1];  //*************
Pdot[2]=- PP[1][1];    //*************
Pdot[3]=Q_gyro;    //*************
PP[0][0] += Pdot[0] * dt;   // Pk-先验估计误差协方差微分的积分    //*************
PP[0][1] += Pdot[1] * dt;   // =先验估计误差协方差    //*************
PP[1][0] += Pdot[2] * dt;    //*************
PP[1][1] += Pdot[3] * dt;    //*************
Angle_err = Accel - Angle; //zk-先验估计    //*************
PCt_0 = C_0 * PP[0][0];    //*************
PCt_1 = C_0 * PP[1][0];    //*************
E = R_angle + C_0 * PCt_0;    //*************
K_0 = PCt_0 / E;    //*************
K_1 = PCt_1 / E;    //*************
t_0 = PCt_0;    //*************
t_1 = C_0 * PP[0][1]; //*************
PP[0][0] -= K_0 * t_0;  //后验估计误差协方差 //*************
PP[0][1] -= K_0 * t_1; //*************
PP[1][0] -= K_1 * t_0; //*************
PP[1][1] -= K_1 * t_1;    //*************
Angle += K_0 * Angle_err;  //后验估计    //*************
Q_bias += K_1 * Angle_err;  //后验估计  //*************
Gyro_y   = Gyro - Q_bias;  //输出值(后验估计)的微分=角速度   //*************
return  Angle; //*************
}  //*************
/**************************************************************************************   
                                角度融合
**************************************************************************************/  //*************
float kalman_filter(float angle_m,float gyro_m)//非矩阵卡尔曼滤波  //*************
{ //*************
static float x=0; //*************
static float P=0.000001;  //*************
static float Q=0.000001;  //*************
static float R=0.35;//0.35 //*************
static float k=0; //*************
gyro_m=W_K*gyro_m;//角速度修正 //*************
x=x+gyro_m*dt; //*************
P=P+Q; //*************
k=P/(P+R); //*************
x=x+k*(angle_m-x);    //*************
P=(1-k)*P;    //*************
return x; //*************
} //*************
//*************
float GYRO_Integration; //*************
float Complement_Filter(float angle_m,float gyro_m)//互补融合滤波//*************  //*************
{    //*************
    float Angle_Filter_Temp;//互补融合滤波中间量 //*************
float Angle_Difference_Value;//融合后的角度与加速度静态角度差值,作为反馈量加入积分回路,让静差为0    //*************
   //*************
Angle_Filter_Temp=GYRO_Integration;      //*************
    gyro_m=W_K*gyro_m;//角速度修正     //*************
    Angle_Difference_Value=(angle_m-Angle_Filter_Temp)*1.0;//融合后的角度与加速度静态角度差值    //*************
    GYRO_Integration=GYRO_Integration+(gyro_m+Angle_Difference_Value )*dt;    //*************
return  GYRO_Integration;    //*************
}    //*************
   //*************
/************************上面滤波过程很重要,很重要,很重要,重要的事情说三遍**************************************************************/
/************************上面滤波过程很重要,很重要,很重要,重要的事情说三遍**************************************************************/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能车竞赛平衡组三种滤波方案 的相关文章

  • 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法 xff1a 布谷鸟搜索算法 附代码 文章目录 智能优化算法 xff1a 布谷鸟搜索算法 附代码1 算法原理2 算法结果3 参考文献4 Matlab代码 摘要 xff1a 谷鸟搜索算法 cuckoo search cs xff0
  • 基于布谷鸟优化的BP神经网络(预测应用) - 附代码

    基于布谷鸟优化的BP神经网络 xff08 预测应用 xff09 附代码 文章目录 基于布谷鸟优化的BP神经网络 xff08 预测应用 xff09 附代码1 数据介绍3 CS优化BP神经网络3 1 BP神经网络参数设置3 2 布谷鸟算法应用
  • 基于粒子群优化的BP神经网络(分类应用) - 附代码

    基于粒子群优化的BP神经网络 xff08 分类应用 xff09 附代码 文章目录 基于粒子群优化的BP神经网络 xff08 分类应用 xff09 附代码1 鸢尾花iris数据介绍2 数据集整理3 粒子群优化BP神经网络3 1 BP神经网络参
  • Arm Keil MDK v5.30版本官宣,快来下载!

    近日 xff0c Arm很高兴地宣布发布Arm Keil MDK v5 30 此版本新增了对Cortex M55处理器和CMSIS Build的支持 xff0c 更新包括Arm Compiler 6 14 xff0c CMSIS 5 7 0
  • ubuntu下访问串口

    前言 最近准备将windows上自动瞄准的程序移植到linux xff0c 第一步准备调试一下ubuntu下的串口 在网上搜到一个串口库 xff0c 于是就拿来调用 xff0c 最后调试成功 过程如下 xff1a 过程 1 下载Serial
  • 热备笔记实验

    早上突然断电 本来笔记本的插头就忘记插了 xff0c 电池没用多久就熄火 最纳闷的是接入电源后本机数据库竟然挂掉了 xff0c 嘿嘿 xff0c 正好试一试前几天应用的热备回复 以下是我的全程 C Documents and Setting
  • Android学习之AIDL添加Service权限

    参考 Android开发艺术探索 xff0c 书中提供了两种方法 第一种方法 xff1a 在onBind中验证 在服务端的AndroidManifest添加自定义权限 lt permission android name 61 span c
  • ADRC(自抗扰控制器)技术附Matlab代码框架

    自抗扰控制器 Auto Active Disturbances Rejec ion Controller ADRC 是韩京清学者提出的 xff0c 是一种继PID控制器后的一种新型的实用的控制技术 它不是一种独立的技术 xff0c 可以理解
  • git视频及对初学者的学习建议

    http herry2013git blog 163 com blog static 21956801120144810133569 http herry2013git blog 163 com blog static 2195680112
  • 迷你光流使用说明

    为了让你有兴趣往下学习 xff0c 先上个定点悬停效果视频给你欣赏一下吧 xff01 点击打开视频链接 首先 xff0c 简单介绍一下我使用的这款光流传感器 长宽高 xff1a 14x11x5mm xff0c 重量约0 6克 xff0c 工
  • Handler的使用方法(一)

    想花点时间谈谈Handler的使用方法 xff0c 是应为Handler的使用涉及到了线程类的使用 xff0c 也是在程序中用到了线程 xff0c 关于线程 xff0c 是个很重要的概念 xff0c 因为以后的嵌入式系统的应用开发往往在程序
  • STM32控制APM飞控(二)MAVLINK源码集成到stm32工程中

    MAVLINK协议源码集成到32工程中 一 MAVLINK代码转化为C语言源码文件 主要根据 http www cnblogs com lovechen p 5801679 html 作者 恒久力行 的方式 xff0c 我进行归纳简要说明
  • STM32控制APM飞控(三)MAVLINK整合并适配stm32串口的收发

    目录 stm32底层串口代码更改能收发MAVLINK协议包 一 在上一次移植好的工程基础上进行如下改动
  • STM32控制APM飞控(五)MAVLINK的C源码的解释及MAVLINK心跳包

    MAVLINK的C源码的解释及MAVLINK心跳包 一 MAVLINK转化成C源码后的文件及文件夹解释 用pathon2 7将从github官网下载下来的MAVLINK源码转换成c语言源码的文件夹如图 xff1a 解释 xff1a a xf
  • (一) 概述(概念、组件、架构、适用场景) | 普罗米修斯(Prometheus)

    什么是普罗米修斯 xff1f Prometheus是一个开源系统监控和警报工具包 xff0c 最初在 SoundCloud构建 自 2012 年成立以来 xff0c 许多公司和组织都采用了 Prometheus xff0c 该项目拥有非常活
  • 多值依赖

    多值依赖 xff1a 比如 xff1a 学校中某一门课程由多个教员讲授 xff0c 他们使用相同的一套参考书 每个教员可以讲授多门课程 xff0c 每种参考书可以供多门课程使用 我们可以用一个非规范化的关系来表示教员T 课程C 和参考书B
  • Docker启动Mysql问题汇总

    最近在学习Docker技术 xff0c 遇到了不少问题 xff0c 记录分享一下 xff0c 感觉有用的可以参考一下 xff1b 1 Docker使用Mysql docker run d v opt data mysql02 var lib
  • 静态库和动态库/文件描述符与文件指针/文件操作/重定向

    c语言阶段学习文件操作复习 1 打开文件 FILE fopen const char path const char mode path xff1a 需要打开的文件路径 xff0c 可以是绝对路径 xff0c 也可以是相对路径 mode x
  • 一种可行的STM32F103外设RTC使用方法

    前言 最近做的项目需要用RTC功能 xff0c 记录掉上电时间 然后就开始琢磨STM32的RTC 在使用的过程中出现各种问题 搞的很是头痛 几经折腾 xff0c 终于弄出一种稳定的使用方法 刚开始最大的问题就是掉电后时钟不走 xff0c 代

随机推荐