预测值与测量值的数据融合(data fusion)
预测:任何一个满足物理规律的系统应当是连续的。故可以通过状态转移矩阵/过程增益矩阵用k-1时刻状态预测k时刻状态,此处还会引入过程噪声——算出来的
测量:传感器实时可以获得一组数据,通过简单数学运算反推获得物体的状态——测出来的
目前有两组数据,测出来的+算出来的,两数据可以通过卡尔曼增益k进行数据融合,获得一个具有最小σ的值(σ越小,说明获得的Ex为真实值的可能性越高)
- 我们现在用的是一维的,只用到一个.
-
void TIM3_IRQHandler(void) 【tim3.c】 从SPI中读取50个数据保存至kalman_data1.data[] //用到16位AD转化芯片,u16就够用
-
double getAveragingData(Kalman_DataTypeDef* kalman)【kalman.c】 将50个数据经平均值滤波得到的一个值存入distance1.kalmaninput
-
double kalman_filter(Kalman_Filter *kalman,double input)【kalman.c】 将刚得到的平均值作为卡尔曼滤波的输入,进行滤波处理,得到distance1.temp [注意这儿滤波参数是用地址引用的,即每一次处理滤波参数都会更新]