Skip to content

Latest commit

 

History

History
24 lines (14 loc) · 1.21 KB

README.md

File metadata and controls

24 lines (14 loc) · 1.21 KB

卡尔曼滤波

预测值与测量值的数据融合(data fusion)

预测:任何一个满足物理规律的系统应当是连续的。故可以通过状态转移矩阵/过程增益矩阵用k-1时刻状态预测k时刻状态,此处还会引入过程噪声——算出来的

测量:传感器实时可以获得一组数据,通过简单数学运算反推获得物体的状态——测出来的

目前有两组数据,测出来的+算出来的,两数据可以通过卡尔曼增益k进行数据融合,获得一个具有最小σ的值(σ越小,说明获得的Ex为真实值的可能性越高)

  1. 我们现在用的是一维的,只用到一个.

程序说明

  1. void TIM3_IRQHandler(void) 【tim3.c】 从SPI中读取50个数据保存至kalman_data1.data[] //用到16位AD转化芯片,u16就够用

  2. double getAveragingData(Kalman_DataTypeDef* kalman)【kalman.c】 将50个数据经平均值滤波得到的一个值存入distance1.kalmaninput

  3. double kalman_filter(Kalman_Filter *kalman,double input)【kalman.c】 将刚得到的平均值作为卡尔曼滤波的输入,进行滤波处理,得到distance1.temp [注意这儿滤波参数是用地址引用的,即每一次处理滤波参数都会更新]