https://mp.weixin.qq.com/s/__Lok-rPNz9eP7pKkR2nvQ
14. 一个简单的传感器融合实例
为了更好的理解传感器融合,我们将系统的状态限制为一个。为了进一步简化,假设我们不知道系统的状态转换模型,我们只知道传感器的值,假如使用两种不同的温度计测量室外的温度,缺少状态转换模型,我们假定温度计的当前状态与前一个状态是一样的,所以我们将状态转换矩阵设置为 1:
对于传感器融合,我们需要在观测向量中包含多个传感器,当然对于我们的例子,我们可以使用两个温度计的当前读数值,并且假定两个温度计对系统温度的贡献是一样的,那么我们就可以将观测矩阵设置为两个1:
现在我们已经有了三个矩阵、、中的两个、,那么如何得到呢?
回想一下在单个传感器中,我们将定义为观测噪声的方差,也就是在其平均值上下的变化量。那么对于一个多传感器的系统,很显然应该是一个矩阵,包含每对传感器之间协方差的矩阵,这个矩阵对角线上的元素应该是每个传感器的值,即传感器自身的方差。对角线之外的元素应该表示两个传感器之间的噪声之间的关系,在许多实际例子中,两个不同的传感器之间的影响一般都设为 0,此处也一样,两个不同的温度计之间的噪声关系也应该为 0。
假设我们在恒温条件下观察了两个温度计,观察到它们的平均波动为 0.8°,也就是其读数标准差为 0.8,方差为R$为:
现在我们看一下为什么和也应该是矩阵。是时刻估计过程的协方差,正如传感器的协方差矩阵一样,也应该是一个矩阵,由于是每一步与这些矩阵相关的增益,因此也应该是一个矩阵,它应该包含这些矩阵中每个协方差的增益值。当然这些矩阵的尺寸应该取决于和所表示的内容。在我们当前的系统中,是一个 1x1 的矩阵,即它是一个单一的值,因为它只包含了 的协方差。增益值 是一个 1x2 的矩阵,因为它涉及到状态的两个观测值,因为是两个传感器。
有了传感器融合的基本感念,我们再一次回到飞机飞行的例子中,我们的预测和更新方程如下,如前所示噪声的协方差还是定义在 0 到 200 之间。
预测:
更新:
回想一下在单变量系统中,我们的状态转换模型:
为k时刻的过程噪声,将a变换为矩阵:
事实上我们的预测更新模型中依然没有加入过程噪声,我们使用表示测量噪声的协方差,使用表示过程噪声的协方差,那么可以写为:
值得一提的是,矩阵即使很小的一个元素值,也有助于保持我们对状态的跟随。
下面所示是一个小型的传感器融合的例子,可适当的调整和,也可以改变偏差,包括两个传感器的精度或噪声平均值,可以看到,当两个传感器在不同的方向上有偏差时,传感器融合能够提供一个更接近系统真实状态的一个近似。
15. 非线性处理
标准卡尔曼滤波前提条件之一就是高斯分布的预测后仍服从高斯分布,高斯分布的变换到观测空间后仍服从高斯分布,因此标准卡尔曼滤波只适合线性系统的处理。
但是现实世界中,很少有线性的。我们看到的树木、飞鸟、行云等都是弯曲的。由于传感器、电机等都是由物理材料制做的,因此他们同样呈现出一定的非线性。我们学过函数、或者、或者,这些都是典型的非线性函数。
大家都知道,任何平滑的曲线都是可微的,可通过一系列连续的更小的线段来精确的表示这个曲线。
看一个例子在的时候的细分:
那么,这种细分表示的方式又是如何帮助我们处理卡尔曼滤波中的非线性关系呢?假如我们有一个简单的滤波器,它的传感器符合以下线性方程:
这个观测方程说明,传感器的读数总是等于状态值得3倍加上2,它是典型的线性关系。我们再看一个非线性传感器的方程:
这就是一个典型的非线性关系,遇到这种情况我们可以计算非线性函数的一阶导数,即在每个给定点上函数的最佳线性近似。
知道了非线性函数的一阶导数,我们用非线性函数代替我们的观测方程中的,它的一阶导数为
模型:
预测:
更新:
16. 扩展卡尔曼滤波
到这里我们已经对「EKF」有了初步认识,但是还需要了解下面一些内容:
如何在不知道其基本函数的情况下计算实际信号的一阶倒数
如何将单值非线性状态观测模型推广到多值系统
一阶倒数是这么定义的,当函数的自变量在一点上产生一个增量时,函数输出值的增量与自变量增量的比值在趋于0时的极限如果存在,这个极限值即为函数在处的导数,用公式表示:
在实际计算时,一阶导数可以这样近似代替:
在我们的实际系统中观测函数往往是状态函数的函数,此时就可以用连续差分的方法求一阶导数
现在看第二个问题,如何将单值非线性状态观测模型推广到多值系统,
状态观测方程:
对于一个有两个状态值和三个传感器的系统,我们可以将方程写为:
传感器的个数就是矩阵的行数,列数等于状态量的数目,矩阵的元素值正好等于状态函数的一阶导数,这就是典型的雅克比矩阵。
之前的线性模型:
将会变为:
这里的被状态转换函数的雅克比矩阵代替,事实上我们使用表示状态转换函数的雅克比矩阵,使用表示传感器函数的雅克比矩阵,将控制信号添加到状态转换函数中,我们得到扩展卡尔曼滤波的全部公式:
模型:
预测:
更新:
17. LiDAR和RADAR在汽车驾驶中的融合
最后看一个关于使用扩展卡尔曼滤波进行多传感器数据融合的例子,作者是 Junsheng Fu,他的个人主页 https://junshengfu.github.io/
「RADAR」 (无线电波雷达)的测量往往比 「LiDAR」 (激光雷达)的测量更嘈杂,利用「LiDAR」 和 「RADAR」 的两种测量使用扩展卡尔曼滤波对两种传感器数据进行融合,可以减少传感器测量带来的误差,并提供被跟踪对象位置的鲁棒估计。
「LiDAR」 测量分析:
汽车驾驶中的激光雷达一般是多线激光雷达,它的测量结果将直接提供三维空间的 ,但是对于汽车驾驶的情况,我们可以将被跟踪对象的姿态简化为 来表示位置,以及一个旋转来表示方向。如果是道路很陡的情况下,也必须要考虑z轴。
「RADAR」 测量分析
融合流程:
限于篇幅,关于多传感器数据融合部分的详细讲解,后续会专门写一篇文章分析,水平有限,欢迎交流指正。
参考
「an Application of the Extended Kalman Filter to the Attitude control of a Quadrotor」
3.「Fundamentals of Kalman Filtering A Practical Approach」
4.「A New Approach to Linear Filtering and Prediction Problems」
5.「https://github.com/JunshengFu/tracking-with-Extended-Kalman-Filter」