找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5904|回复: 6
打印 上一主题 下一主题
收起左侧

好不容易找的卡尔曼滤波的代码,分享给大家

  [复制链接]
跳转到指定楼层
楼主
卡尔曼滤波算法

所有代码下载:
卡尔曼滤波代码.zip (2.89 KB, 下载次数: 114)
使用方法:
#include "kalman.h"

#include "stdio.h"

#include "stdlib.h"






void main(void)
{


    KalmanCountData k;
    //定义一个卡尔曼运算结构体
    Kalman_Filter_Init(&k);
    //讲运算变量初始化
    int m,n;        

       for(int a = 0;a<80;a++)
    //测试80次
    {

        //m,n为1到100的随机数
        m = 1+ rand() %100;

        n = 1+ rand() %100;

                //卡尔曼滤波,传递2个测量值以及运算结构体
   
    Kalman_Filter((float)m,(float)n,&k);

        //打印结果
        printf("%d and %d is %f - %f\r\n",m,n,k.Angle_Final,k.K_0);
   
    }




}

  1. /**
  2.   ******************************************************************************
  3.   * @file    kalman.h
  4.   * @author  willieon
  5.   * @version V0.1
  6.   * @date    January-2015
  7.   * @brief   卡尔曼滤波算法
  8.   *        
  9.   *
  10.   ******************************************************************************
  11.   * @attention
  12.   *本人对卡尔曼的粗略理解:以本次测量角速度(陀螺仪测量值)的积分得出的角度值
  13.   * 与上次最优角度值的方差产生一个权重来衡量本次测量角度(加速度测量值)
  14.   * 与上次最优角度值,从而产生新的最优角度值。好吧,比较拗口,有误处忘指正。
  15.   *
  16.   ******************************************************************************
  17.   */

  18. #ifndef __KALMAN_H__
  19. #define __KALMAN_H__


  20. #define Q_angle                        0.001                                ////角度过程噪声的协方差
  21. #define Q_gyro                        0.003                                ////角速度过程噪声的协方差
  22. #define R_angle                        0.5                                        ////测量噪声的协方差(即是测量偏差)
  23. #define dt                                0.01                                ////卡尔曼滤波采样频率
  24. #define C_0                                1

  25. /**************卡尔曼运算变量定义**********************
  26. *
  27. ***由于卡尔曼为递推运算,结构体需定义为全局变量
  28. ***在实际运用中只需定义一个KalmanCountData类型的变量即可
  29. ***无需用户定义多个中间变量,简化函数的使用
  30. */
  31. typedef struct
  32. {
  33.         float                                Q_bias;                                ////最优估计值的偏差,即估计出来的陀螺仪的漂移量
  34.         float                                Angle_err;                        ////实测角度与陀螺仪积分角度的差值
  35.         float                                PCt_0;                                
  36.         float                                PCt_1;
  37.         float                                E;                                        ////计算的过程量
  38.         float                                K_0;                                ////含有卡尔曼增益的另外一个函数,用于计算最优估计值
  39.         float                                K_1;                                ////含有卡尔曼增益的函数,用于计算最优估计值的偏差
  40.         float                                t_0;                                
  41.         float                                t_1;
  42.         float                                Pdot[4];                         ////Pdot[4] = {0,0,0,0};过程协方差矩阵的微分矩阵
  43.         float                                PP[2][2];                         //// PP[2][2] = { { 1, 0 },{ 0, 1 } };协方差(covariance)
  44.         float                                Angle_Final;                 ////后验估计最优角度值(即系统处理最终值)
  45.         float                                Gyro_Final;                         ////后验估计最优角速度值

  46. }KalmanCountData;

  47. void Kalman_Filter(float Accel,        float Gyro ,KalmanCountData * Kalman_Struct);
  48. void Kalman_Filter_Init(KalmanCountData * Kalman_Struct);



  49. #endif
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235726 发表于 2017-9-26 12:16 | 只看该作者
看看,谢谢楼主
回复

使用道具 举报

板凳
ID:468431 发表于 2019-1-17 15:43 | 只看该作者
谢谢楼主,下载了,先看看罗
回复

使用道具 举报

地板
ID:383374 发表于 2019-1-21 01:49 来自手机 | 只看该作者
lei787654 发表于 2017-9-26 12:16
**** 作者被禁止或删除 内容自动屏蔽 ****

很好的东西,以后可能用得上
回复

使用道具 举报

5#
ID:412814 发表于 2019-1-21 09:03 | 只看该作者
网上入门级的资料很多,哪里能找到稍微深入些的资料呢?
回复

使用道具 举报

6#
ID:561607 发表于 2021-1-7 14:16 | 只看该作者
共师兄习,共同进步
回复

使用道具 举报

7#
ID:837062 发表于 2021-4-7 15:33 | 只看该作者
请问为何要调入角速度值?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表