C语言实现简单卡尔曼滤波

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言实现简单卡尔曼滤波相关的知识,希望对你有一定的参考价值。

https://www.bilibili.com/video/BV1ez4y1X7eR

DR.CAN讲的真的很好

卡尔曼滤波的步骤

步骤

说明

Step 1

计算卡尔曼增益

Step 2

更新本次迭代的估计值

Step 3

更新本次迭代的估计误差

具体请看上面DR.CAN的视频

代码

参数

说明

x_mea

测量值

x_est

估计值

e_mea

固有的测量误差,取决于测量工具的精度,假设测量工具量程是2000/%2,测量误差就是2000*2%=40

e_est

估计误差,每次进行估计后需要更新

Kk

卡尔曼增益

大致过程:设定初始值启动卡尔曼滤波,启动完成后开始迭代,代码中初始化与第一个迭代就是卡尔曼滤波的启动过程

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define Kk_calc(x,y)    (x)/(x+y)

struct KalmanFilter 
	float x_mea; // measure value, instead of random number
	float x_est; // estimate value
	float e_mea; // measure offset, can not be removed
	float e_est; // estimate offset
	float Kk; // Karlman Gain
;

floa

以上是关于C语言实现简单卡尔曼滤波的主要内容,如果未能解决你的问题,请参考以下文章

python中用于速度估计的卡尔曼滤波器实现

高度预估基于matlab卡尔曼滤波和粒子滤波无人机离地高度估计含Matlab源码 2255期

关于卡尔曼滤波

卡尔曼滤波器1——递归算法(笔记篇 + 代码实现)

卡尔曼滤波器1——递归算法(笔记篇 + 代码实现)

卡尔曼滤波——17.高斯移动