2016-08-03 144 views
0

可以将上限和下限约束应用于由卡尔曼滤波器更新的估计值吗?有界卡尔曼滤波器

我有一个在实际生活中只能有非负值的状态。当我应用卡尔曼滤波器时,此状态会更新为负值。我怎样才能在卡尔曼滤波器中应用这个极限约束?

请回复

感谢

回答

0

通过简单约束西格玛点(这些点是您生成的近似您的状态的高斯分布并考虑到错误),可以很容易地在UKF(无迹卡尔曼滤波器)中执行此操作。

对于EKF,您可以找到关于如何将状态空间投影回约束边界的论文。复杂性来自两个因素:

  • 如果您有多变量约束(例如2D距离),那么您希望以有意义的方式移动相关变量。
  • 当您更新一个状态变量时,您希望通过协方差矩阵反映与其相关的其他状态变量中的变化。例如,如果您的状态包含速度和位置,则测量可能会导致对速度的稍微修正,并且可能会稍微改变位置。如果您的约束在更新后限制了速度,您想要进行相关更改以定位。
0

一些常用的方法在EKF束缚态变量(抱歉,没有KF)如下:

如果x是国家,我们也增加至有限状态x'

  1. 要强制约束,如x > a我们定义了一个新的状态x' = exp(x) + a。 这将永远不会少于一个exp(x) -> 0x -> -inf。这也适用于消极的限制,其中x < -a =>x' = - exp(x) - a

  2. 如果你想有诸如a < x < b状态的低/上限: 这可以用S型函数,最流行的实现(在我的经验)是x' = tanh(x),它将x绑定到(-1,1)。现在,只需简单地将其推广到a < x < b即可,因为我们需要将其缩放到适当的大小并将其抵消为x' = tanh(x)*(b-a)/2 + (a+b)/2。所以当tanh(x) = -1我们得到a,当tanh(x) = 1我们得到b,成功实现所需的界限。

而这通常涵盖了大多数的边界和他们各自的衍生物是可以接受的。希望能帮助到你!