#include "Kalman.h" /************************************************************* ** Function name: MCU_Open_interrupt ** Descriptions: 卡尔曼滤波器 函数 ** Input parameters: *kfp - 卡尔曼结构体参数 ** Input parameters: input - 需要滤波的参数的测量值(即传感器的采集值) ** Output parameters: 卡尔曼滤波器输出值(最优值) ** Returned value: 卡尔曼滤波器输出值(最优值) ** Created by: qkk ** Created date: 2024-01-15 *************************************************************/ float KalmanFilter(KFPType_Struct kfp, float input) { //估算协方差方程:当前 估算协方差 = 上次更新 协方差 + 过程噪声协方差 kfp->P = kfp->P + kfp->Q; //卡尔曼增益方程:当前 卡尔曼增益 = 当前 估算协方差 / (当前 估算协方差 + 测量噪声协方差) kfp->G = kfp->P / (kfp->P + kfp->R); //更新最优值方程:当前 最优值 = 当前 估算值 + 卡尔曼增益 * (当前 测量值 - 当前 估算值) kfp->Output = kfp->Output + kfp->G * (input - kfp->Output); //当前 估算值 = 上次 最优值 //更新 协方差 = (1 - 卡尔曼增益) * 当前 估算协方差。 kfp->P = (1 - kfp->G) * kfp->P; return kfp->Output; }