计算机舍入误差对卡尔曼滤波器的影响

发布时间 2023-10-21 17:11:47作者: 灿影之晶

  本文主要学习计算机舍入误差对卡尔曼滤波器的影响,在实际工程中,我们去分析跟踪轨迹和点云数据通常关注的点都是跟踪和点云数据的误差。至于计算机引入的舍入误差其实很多时候都会忽略。因此本文参考《卡尔曼滤波理论与实践(MATLAB版)》(第四版)对舍入误差的影响进行一个学习和讨论,主要包括将学习在计算卡尔曼滤波器变量时舍入误差的传播方式以及它们如何影响卡尔曼滤波器结果的精度,最后在给出一些例子来说明常见的失效模式。希望能够加深对卡尔曼滤波的理解。

  一、卡尔曼滤波病态问题

  首先我们先了解一下卡尔曼滤波病态问题,对于卡尔曼滤波问题,它对应的Riccati方程的解应该等于实际估计不确定性的协方差矩阵。这对于所有二次损失函数都是最优的。卡尔曼增益的计算也是由相应的Riccati方程的解决定的。如果不能求解,则该问题被认为是病态的。导致这种病态的原因包括一下几个方面。

  1、矩阵参数Φ、Q、H或者R的值存在很多不确定性。在推导卡尔曼滤波器过程中没有考虑这种模型误差

  2、矩阵参数、测量值或者状态变量的真实值存在很大范围--------所有这些都来自于比例或者量纲单位选择不当引起的。

  3、在卡尔曼增益公式中,中间结果R*=HPHT+R在求逆时是病态的

  4、矩阵Riccati方程的病态理论解---------没有考虑数值解存在的误差。考虑数值误差以后,解可能变为不确定的,这可能使滤波器估计误差变为不稳定。

  5、矩阵维数很大。运算次数会随着矩阵维数的平方或者立方而增加,并且每一次运算都引入舍入误差

  6、机器精度不好,它会使相对舍入误差更大。

  在很多应用中上述因素是不可避免的。需要记住的是,这些因素不一定使卡尔曼滤波不能用了。而是要关注这些因素。

  二、卡尔曼滤波器的舍入误差传播

  首先从卡尔曼滤波器中数据流的角度来考察摄入误差的传播,以便发现Riccati方程解中的舍入误差如何不像估计中的摄入误差那样,可以通过反馈来控制。下图给出了卡尔曼滤波的矩阵级数据流图。显示了在向量级和矩阵级的数据流,包含相加、相乘和求逆等运算。下图说明了部分结果(包含了卡尔曼增益)是如何被保存和重复使用的。另外需要注意的一点是内部数据流可以被分为两个在虚线框内的半独立环。沿着一个环传播的变量是状态估计值,沿着另一个环传播的变量则是估计不确定性的协方差矩阵。

 

图1 卡尔曼滤波器数据流

  2.1 估计环路中的反馈

  图中的估计环路实际上是其他环路计算出的增益的反馈误差纠正环路。观测值z的期望值(基于状态向量的当前估计值)以及观测值之间的差值被用于纠正估计值。只要增益正确,就可以用于纠正 中的误差。这可以应用于舍入误差的中的误差以及由于噪声和先验估计误差引起的误差。因此只要环路增益是正确的,在估计环路中的舍入误差就可以利用反馈机制来得到补偿。这个增益是在其他环路中计算出来的。

  2.2 在增益环路中没有反馈

  在该环路中,通过求解Riccati方程得到估计不确定性的协方差矩阵(P),并且计算出卡尔曼增益作为中间结果。它不能通过使估计环路稳定的这种反馈机制来稳定下来没有外部参考来纠正P的“估计值”。因此没有方法对舍入误差效应进行检测和纠正,它们不受抑制地进行传播和积累。这个增益环路中包括了比估计环路中更多的舍入操作。主要表现在该环路中有更多的矩阵乘积。因此,在这种实现方法中,得到的卡尔曼增益所需的计算更有可能是舍入误差的来源

  2.3 协方差矩阵P的负的特征值对估计误差的影响

  由于舍入误差的原因,会导致协方差矩阵P具有负的特征值,由于P是卡尔曼增益计算公式中的一个因子,因此P的负的特征值将会导致预测误差反馈环路中增益的符号发生错误。然而,在这种瞬态条件下,估计环路的稳定性立即就被打破了。例如,估计值直到增益改变符号时才向真实值x收敛,然后误差立即就发散了。增益计算最终将随着符号的纠正而得以恢复,但是在增益计算中没有考虑由于发散引起的累计误差。实际增益并没有它现在取值的那么大,并且实际收敛也比它应该的速度更慢

三、滤波器发散举例

   一个简单的例子说明舍入误差如何导致卡尔曼滤波器的结果偏离其期望值。假设由于大的先验不确定性引起的舍入误差,也就是说对卡尔曼滤波器的先验估计值只有很小的把握,更倾向于选取估计不确定性很大的初始协方差值。然而,这也存在其局限性。为了方便理解,我们只考虑一个标量参数估计问题,其中估计不确定性的初始方差远大于测量不确定性的方差。即P0>>R。然后假设测量灵敏度矩阵H=1并且P0比R大得多,以至于在浮点机器精度中,在P0上增加R--------以及舍入误差以后的结果仍然是P0。换句话说,R<εP0。在这种情况下,卡尔曼计算所得值如下所示。

  在第一次测量值更新之后,计算得到的估计不确定性的方差的舍入值为0,并且在此之后仍然保持为0。因此在第一次更新之后计算得到的卡尔曼增益值也为0。卡尔曼增益的准确值(没有舍入)约为1/k,其中k是观测的次数,在经过10测观测之后。

  1、计算得到的估计不确定性方差都为0.

  2、估计不确定性的真实方差为P0R/(kP0+R)约等于R/k,在准确情形下(没有舍入)的理论方差为P0R/(10P0+R)约等于R/10。

  在本例中,病态是由于先验状态估计不确定性与测量不确定性之间的标度不一致引起的。

四、总结

  本文通过对在计算卡尔曼滤波器变量时舍入误差的传播方式以及它们如何影响卡尔曼滤波器结果的精度,还有最后在给出一些例子来说明常见的失效模式。希望能够对进一步了解卡尔曼滤波器有一定的帮助。今天就先到这,咱们后面再见。

五、参考文献

  《卡尔曼滤波理论与实践(MATLAB版)》(第四版)