卡尔曼滤波器之扩展卡尔曼滤波

参考文献:

【1】https://zhuanlan.zhihu.com/p/63641680

目录

1.非线性模型

2.非线性模型到线性模型的近似


1.非线性模型

 《卡尔曼滤波器之经典卡尔曼滤波》中提到卡尔曼滤波器可以对任何线性系统进行精确建模,而对于非线性系统,可以使用扩展卡尔曼滤波。这里的非线性系统指的是传感器测量值和目标的状态值之间无法通过测量矩阵H进行转换。因此扩展卡尔曼(EKF)与经典卡尔曼(KF)的区别在于测量矩阵H的计算。EKF对非线性函数进行泰勒展开后,进行一阶线性化的截断,忽略了其余高阶项,进而完成非线性函数的近似线性化。正是由于忽略了部分高阶项,使得EKF的状态估计会损失一些精度。

        以激光雷达和毫米波雷达为例,激光雷达传感器的测量值和目标状态值是一致的,激光雷达测量的原理是光的直线传播,因此在测量时能直接获得障碍物在笛卡尔坐标系下x方向、y方向和z方向上的距离,因此此模型是一个线性模型,观测矩阵H可以轻易获取。

        但是当传感器变为毫米波雷达时,毫米波雷达观察世界的方式与激光雷达有所不同,毫米波雷达的原理是多普勒效应,它所测量的数据都是在极坐标系下的。毫米波雷达能够测量障碍物在极坐标下离雷达的距离ρ、方向角ϕ以及距离的变化率(径向速度)ρ',如下图所示。

因此,当我们在求观测值z和预测值之间x’的差值y的时候,是没有办法直接求得观测矩阵H的,但是我们能得到的是Hx’的值,如下:

 

毫米波雷达在转换时涉及到笛卡尔坐标系和极坐标系的位置、速度转换,这个转化过程是非线性的。因而在处理类似毫米波雷达这种非线性的模型时,习惯于将计算差值y的公式写成如下,以作线性和非线性模型的区分。

对应上面的式子,这里的h(x')为:

         毫米波雷达观测z是包含位置、角度和径向速度的3x1的列向量,状态向量x'是包含位置和速度信息的4x1的列向量,根据公式y=z-Hx'可知测量矩阵(Measurement Matrix)H的维度是3行4列。即:

 从上面的公式很容易看出,等式两边的转化是非线性的,并不存在一个常数矩阵H,能够使得等式两边成立。如果将高斯分布作为输入,输入到一个非线性函数中,得到的结果将不再符合高斯分布,也就将导致卡尔曼滤波器的公式不再适用。因此我们需要将上面的非线性函数转化为近似的线性函数求解

2.非线性模型到线性模型的近似

2.1 泰勒公式 与 雅可比(Jacobian)式

        在大学课程《高等数学》中我们学过,非线性函数y=h(x)可通过泰勒公式在点(x0,y0)处展开为泰勒级数:

 忽略二次以上的高阶项,即可得到近似的线性化方程,用以替代非线性函数h(x),即:

 将非线性函数h(x)拓展到多维,即求各个变量的偏导数,即:

         我们将求偏导数的公式与我们的之前推导的公式对应起来看x的系数,会发现这里的测量矩阵H其实就是泰勒公式中的雅可比式。

 多维的雅可比式的推导过程有兴趣的同学可以自己研究一下,这里我们直接使用其结论:

        求得非线性函数h(x')对px,py,vx,vy的一阶偏导数,并排列成的矩阵,最终得到雅克比(Jacobian)矩阵H: 

 其中:

 经过一系列计算,最终可以得到测量矩阵H为:

         根据以上公式可知,在每次预测障碍物的状态后,需要根据预测的位置和速度计算出对应的测量矩阵H,这个测量矩阵为非线性函数h(x')在x'所在位置进行求导的结果。

通过上面介绍可知:扩展卡尔曼(EKF)与经典卡尔曼(KF)的区别在于测量矩阵H的计算。EKF对非线性函数进行泰勒展开后,进行一阶线性化的截断,忽略了其余高阶项,进而完成非线性函数的近似线性化。正是由于忽略了部分高阶项,使得EKF的状态估计会损失一些精度。

猜你喜欢

转载自blog.csdn.net/weixin_40059786/article/details/122812054