多维kalman
滤波器的设计高度依赖统计学和线代的数学知识,内部大量矩阵计算,很难从直觉上彻底理解每一步操作背后的物理意义,所以建议没有控制理论基础的人不要太过纠结内部原理,对于我们大多数拿来用一下的人了解个大概原理和学会设置几个参数(矩阵)就可以了。如果像深入探究可以参考以下链接教程:【https://www.kalmanfilter.net】【How a Kalman filter works】
术语解释
状态:kalman滤波器预测和跟新的值,一般也是我们需要关注的系统数据。例如,飞机的位置和速度
参数设置
本文以一个例子展示使用kalman filter
需要设置的参数(矩阵)。例子:假设有一辆装载了位置传感器(GPS)、速度传感器和加速度传感器的汽车,用kalman filter
对其进行建模。
dim_x(状态向量的长度)
dim_z(测量数据向量的长度)
x 1 x_1 x1:位置状态
x 2 x_2 x2:速度状态
x 3 x_3 x3:加速度状态
shape:[dim_x, dim_x]
kalmanfilter
的一大核心思想是通过此时刻【状态】预测下一时刻的【状态】这个矩阵把当前状态和下一时刻状态关联起来。在预测阶段 F 会和协方差矩阵 P 相乘,所以卡尔曼滤波器可以通过设定 F 的值自动找到状态量 x 之间的相互关系。
如何设置呢,参考预测阶段这个矩阵会和【状态量】做矩阵乘法运算:
[ x 1 ˙ x 2 ˙ x 3 ˙ ] \begin{bmatrix}\dot{x_1} \\ \dot{x_2} \\ \dot{x_3}\end{bmatrix} x1˙x2˙x3˙ = [ f 11 f 12 f 13 f 21 f 22 f 23 f 31 f 32 f 33 ] \begin{bmatrix} f_{11} & f_{12} & f_{13} \\ f_{21} & f_{22} & f_{23} \\ f_{31} & f_{32} & f_{33} \end{bmatrix} f11f21f31f12f22f32f13f23f33 [ x 1 x 2 x 3 ] \begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix} x1x2x3
根据矩阵乘法法则:
x 1 ˙ = f 11 x 1 + f 12 x 2 + f 13 x 3 \dot{x_1}=f_{11}x_1+f_{12}x_2+f_{13}x_3 x1˙=f11x1+f12x2+f13x3
x 2 ˙ = f 21 x 1 + f 22 x 2 + f 23 x 3 \dot{x_2}=f_{21}x_1+f_{22}x_2+f_{23}x_3