主要内容

扩展和Unstented Kalman滤波器算法用于在线状态估计

您可以使用离散时间的扩展和Unscented Kalman滤波器算法进行离散时间非线性系统的在线状态估计。如果您有一个具有严重非线性的系统,则Unscented Kalman滤波器算法可以提供更好的估计结果。您可以在Simulink中执行状态估计金宝app®并在命令行。要执行状态估计,首先为系统创建非线性状态转换功能和测量功能。

在命令行处,您使用该函数来构造ExtendedKalmanFilter.或者undentedkalmanfilter对于所需算法的对象,并指定功能中的过程和测量噪声术语是否是附加或非添加剂。创建对象后,使用预测正确的命令用实时数据估计各种状态。有关执行这些命令的顺序的信息,请参阅预测正确的参考页面。

在Si金宝appmulink中,您可以在此功能中指定这些功能扩展卡尔曼筛选器Unscented Kalman Filter.块。您还指定了功能中的过程和测量噪声术语是否是附加或非添加剂。在块中,软件决定了所做状态估计的预测和校正的顺序。

扩展卡尔曼滤波算法

ExtendedKalmanFilter.命令和扩展卡尔曼筛选器块实现一阶离散时间卡尔曼滤波器算法。假设用于离散时间非线性系统的状态转换和测量方程具有非加法过程和具有零均值和协方差矩阵的测量噪声术语问:R., 分别:

X [ K. + 1 ] = F X [ K. ] W. [ K. ] S. [ K. ] y [ K. ] = H X [ K. ] V. [ K. ] m [ K. ] W. [ K. ] 0. 问: [ K. ] V. [ K. ] 0. R. [ K. ]

这里F是一个非线性状态转换功能,描述了各国的演变X从一次到下一个时间。非线性测量功能H有关X测量y在时间步骤K.。这些函数还可以具有所用的其他输入参数S.m。过程和测量噪声是W.V., 分别。你提供问:R.

在块中,软件决定了状态估计的预测和校正的顺序。在命令行,您可以决定订单。有关执行这些命令的顺序的信息,请参阅预测正确的参考页面。假设你实现了正确的之前命令预测,软件实现算法如下:

  1. 使用状态的初始值初始化过滤器对象,x [0],以及状态估计错误协方差矩阵,P.

    X ^ [ 0. | - 1 ] = E. X [ 0. ] P. [ 0. | - 1 ] = E. X [ 0. ] - X ^ [ 0. | - 1 ] X [ 0. ] - X ^ [ 0. | - 1 ] T.

    这里 X ^ 是国家估计和 X ^ [ K. 一种 | K. B. ] 表示时间步骤估计K.一种在时间步骤使用测量0,1,...,kB.。所以 X ^ [ 0. | - 1 ] 在您进行任何测量之前,是国家价值的最佳猜测。您在构造过滤器时指定此值。

  2. 时间步骤K.= 0,1,2,3,...,执行以下操作:

    1. 计算测量函数的Jacobian,并使用测量数据更新状态和状态估计错误协方差,Y [K]。在命令行,正确的命令执行此更新。

      C [ K. ] = H X | X ^ [ K. | K. - 1 ] S. [ K. ] = H V. | X ^ [ K. | K. - 1 ]

      除非您指定分析雅可比,否则该软件计算这些雅可比矩阵。

      K. [ K. ] = P. [ K. | K. - 1 ] C [ K. ] T. C [ K. ] P. [ K. | K. - 1 ] C [ K. ] T. + S. [ K. ] R. [ K. ] S. [ K. ] T. - 1 X ^ [ K. | K. ] = X ^ [ K. | K. - 1 ] + K. [ K. ] y [ K. ] - H X ^ [ K. | K. - 1 ] 0. m [ K. ] P. ^ [ K. | K. ] = P. [ K. | K. - 1 ] - K. [ K. ] C [ K. ] P. [ K. | K. - 1 ]

      这里K.是卡尔曼的收益。

    2. 计算状态转换函数的Jacobian,并在下次步骤中预测状态和状态估计错误协方差。在软件中,预测命令执行此预测。

      一种 [ K. ] = F X | X ^ [ K. | K. ] G [ K. ] = F W. | X ^ [ K. | K. ]

      除非您指定分析雅可比,否则该软件计算这些雅可比矩阵。该数值计算可以增加状态估计的处理时间和数值不准确。

      P. [ K. + 1 | K. ] = 一种 [ K. ] P. [ K. | K. ] 一种 [ K. ] T. + G [ K. ] 问: [ K. ] G [ K. ] T. X ^ [ K. + 1 | K. ] = F X ^ [ K. | K. ] 0. S. [ K. ]

      正确的函数在下次步骤中使用这些值。为了更好的数值性能,软件使用协方差矩阵的平方根分解。有关此分组的更多信息,请参阅[2]

扩展卡尔曼筛选器块支持多个测金宝app量功能。只要其采样时间是状态转换采样时间的整数倍数,这些测量值可以具有不同的采样时间。在这种情况下,对应于来自每个测量功能的测量来执行单独的校正步骤。

先前描述的算法步骤假设在状态转换和测量功能中具有非加性噪声术语。如果您在功能中具有添加性噪声术语,则算法中的更改是:

  • 如果过程噪音W.是附加的,即状态转换方程具有表单 X [ K. ] = F X [ K. - 1 ] S. [ K. - 1 ] + W. [ K. - 1 ] ,然后是雅各比亚矩阵g [k]是一个身份矩阵。

  • 如果测量噪声V.是添加剂,即测量方程具有表单 y [ K. ] = H X [ K. ] m [ K. ] + V. [ K. ] ,然后是雅各比亚矩阵s [k]是一个身份矩阵。

状态和转换功能中的添加性噪声术语减少了处理时间。

一阶扩展卡尔曼滤波器使用线性近似到非线性状态转换和测量功能。因此,如果系统中的非线性严重,则算法可能不可能是可靠的。在这种情况下,Unscented Kalman滤波算法可以产生更好的结果。

Unscented Kalman滤波算法

Unscented Kalman滤波算法和Unscented Kalman Filter.块使用Unspented的转换通过非线性函数捕获状态估计的统计特性的传播。算法首先生成一组名为Sigma点的状态值。这些西格玛点捕获国家估计的平均值和协方差。该算法使用每个SIGMA点作为状态转换和测量函数的输入,以获得一组新的变换状态点。然后使用变换点的平均值和协方差来获得状态估计和状态估计误差协方差。

假设状态转换和测量方程m- 捷径离散时间非线性系统具有添加过程和测量噪声术语,零均值和共聚方问:R., 分别:

X [ K. + 1 ] = F X [ K. ] S. [ K. ] + W. [ K. ] y [ K. ] = H X [ K. ] m [ K. ] + V. [ K. ] W. [ K. ] 0. 问: [ K. ] V. [ K. ] 0. R. [ K. ]

您提供初始值问:R.在里面processnoise.测量管理Unscented Kalman Filter对象的属性。

在块中,软件决定了状态估计的预测和校正的顺序。在命令行,您可以决定订单。有关执行这些命令的顺序的信息,请参阅预测正确的参考页面。假设你实现了正确的之前命令预测,软件实现算法如下:

  1. 使用状态的初始值初始化过滤器对象,x [0]和状态估计错误协方差,P.

    X ^ [ 0. | - 1 ] = E. X [ 0. ] P. [ 0. | - 1 ] = E. X [ 0. ] - X ^ [ 0. | - 1 ] X [ 0. ] - X ^ [ 0. | - 1 ] T.

    这里 X ^ 是国家估计和 X ^ [ K. 一种 | K. B. ] 表示时间步骤估计K.一种在时间步骤使用测量0,1,...,kB.。所以 X ^ [ 0. | - 1 ] 在您进行任何测量之前,是国家价值的最佳猜测。您在构造过滤器时指定此值。

  2. 每次步骤K.,使用测量数据更新状态和状态估计错误协方差,Y [K]。在软件中,正确的命令执行此更新。

    1. 选择Sigma点 X ^ 一世 [ K. | K. - 1 ] 在时间步骤K.

      X ^ 0. [ K. | K. - 1 ] = X ^ [ K. | K. - 1 ] X ^ 一世 [ K. | K. - 1 ] = X ^ [ K. | K. - 1 ] + δ. X 一世 一世 = 1 ...... 2 m δ. X 一世 = C P. [ K. | K. - 1 ] 一世 一世 = 1 ...... m δ. X m + 一世 = - C P. [ K. | K. - 1 ] 一世 一世 = 1 ...... m

      在哪里 C = α. 2 m + κ.. 是基于状态M的数量和参数的缩放系数α.κ..。有关参数的更多信息,请参阅Alpha,Beta和Kappa参数的影响 C P. 是矩阵平方根CP这样 C P. C P. T. = C P. C P. 一世 是个一世柱子 C P.

    2. 使用非线性测量功能来计算每个Sigma点的预测测量值。

      y ^ 一世 [ K. | K. - 1 ] = H X ^ 一世 [ K. | K. - 1 ] m [K]) 一世 = 0. 1 ...... 2 m

    3. 结合预测的测量值以获得预测测量K.

      y ^ [ K. ] = σ. 一世 = 0. 2 m W. m 一世 y ^ 一世 [ K. | K. - 1 ] W. m 0. = 1 - m α. 2 m + κ.. W. m 一世 = 1 2 α. 2 m + κ.. 一世 = 1 2 ...... 2 m

    4. 估计预测测量的协方差。添加r [k]要考虑添加剂测量噪声。

      P. y = σ. 一世 = 0. 2 m W. C 一世 y ^ 一世 [ K. | K. - 1 ] - y ^ [ K. ] y ^ 一世 [ K. | K. - 1 ] - y ^ [ K. ] T. + R. [ K. ] W. C 0. = 2 - α. 2 + β - m α. 2 m + κ.. W. C 一世 = 1 / 2 α. 2 m + κ.. 一世 = 1 2 ...... 2 m

      有关的信息β参数,参见Alpha,Beta和Kappa参数的影响

    5. 估计之间的交叉协方差 X ^ [ K. | K. - 1 ] y ^ [ K. ]

      P. X y = 1 2 α. 2 m + κ.. σ. 一世 = 1 2 m X ^ 一世 [ K. | K. - 1 ] - X ^ [ K. | K. - 1 ] y ^ 一世 [ K. | K. - 1 ] - y ^ [ K. ] T.

      求和开始一世= 1因为 X ^ 0. [ K. | K. - 1 ] - X ^ [ K. | K. - 1 ] = 0.

    6. 在时间步骤获取估计状态和状态估计错误协方差K.

      K. = P. X y P. y - 1 X ^ [ K. | K. ] = X ^ [ K. | K. - 1 ] + K. y [ K. ] - y ^ [ K. ] P. [ K. | K. ] = P. [ K. | K. - 1 ] - K. P. y K. K. T.

      这里K.是卡尔曼的收益。

  3. 在下次步骤中预测状态和状态估计错误协方差。在软件中,预测命令执行此预测。

    1. 选择Sigma点 X ^ 一世 [ K. | K. ] 在时间步骤K.

      X ^ 0. [ K. | K. ] = X ^ [ K. | K. ] X ^ 一世 [ K. | K. ] = X ^ [ K. | K. ] + δ. X 一世 一世 = 1 ...... 2 m δ. X 一世 = C P. [ K. | K. ] 一世 一世 = 1 ...... m δ. X m + 一世 = - C P. [ K. | K. ] 一世 一世 = 1 ...... m

    2. 使用非线性状态转换函数来计算每个Sigma点的预测状态。

      X ^ 一世 [ K. + 1 | K. ] = F X ^ 一世 [ K. | K. ] S. [K])

    3. 结合预测状态以在时间获取预测状态K + 1。这些值被使用正确的下次步骤中的命令。

      X ^ [ K. + 1 | K. ] = σ. 一世 = 0. 2 m W. m 一世 X ^ 一世 [ K. + 1 | K. ] W. m 0. = 1 - m α. 2 m + κ.. W. m 一世 = 1 2 α. 2 m + κ.. 一世 = 1 2 ...... 2 m

    4. 计算预测状态的协方差。添加q [k]要考虑添加剂过程噪声。这些值被使用正确的下次步骤中的命令。

      P. [ K. + 1 | K. ] = σ. 一世 = 0. 2 m W. C 一世 X ^ 一世 [ K. + 1 | K. ] - X ^ [ K. + 1 | K. ] X ^ 一世 [ K. + 1 | K. ] - X ^ [ K. + 1 | K. ] T. + 问: [ K. ] W. C 0. = 2 - α. 2 + β - m α. 2 m + κ.. W. C 一世 = 1 / 2 α. 2 m + κ.. 一世 = 1 2 ...... 2 m

Unscented Kalman Filter.块支持多个测金宝app量功能。只要其采样时间是状态转换采样时间的整数倍数,这些测量值可以具有不同的采样时间。在这种情况下,对应于来自每个测量功能的测量来执行单独的校正步骤。

假设状态转换和测量方程中的添加性噪声术语实现了先前的算法。为了更好的数值性能,软件使用协方差矩阵的平方根分解。有关此分组的更多信息,请参阅[2]

如果噪声术语是非添加剂,则算法的主要变化是:

  • 正确的命令生成2 *(m + v)+1Sigma点使用p [k | k-1]r [k], 在哪里V.是测量噪声中的元素数量v [k]。这r [k]在算法步骤2(d)中不再添加术语,因为额外的sigma点捕获测量噪声的影响PY

  • 预测命令生成2 *(m + w)+1Sigma点使用p [k | k]q [k], 在哪里W.是过程噪声中的元素数量w [k]。这q [k]算法步骤3(d)中不再添加术语,因为额外的sigma点捕获过程噪声的影响p [k + 1 | k]

Alpha,Beta和Kappa参数的影响

为了在下次步骤中计算状态及其统计特性,Unscented Kalman滤波器算法生成分布在平均状态值周围的一组状态值。该算法使用每个SIGMA点作为状态转换和测量函数的输入,以获得一组新的变换状态点。然后使用变换点的平均值和协方差来获得状态估计和状态估计误差协方差。

围绕平均状态值的Sigma点的扩展由两个参数控制α.κ..。第三个参数,β,影响状态和测量协方差计算期间转换点的重量。

  • α.- 确定围绕平均状态值周围的Sigma点的扩展。它通常是一个小的正价值。Sigma点的蔓延成比例α.。较小的值对应于更接近平均状态的Sigma点。

  • κ..- 通常设置为0的第二缩放参数。较小的值对应于靠近平均状态的Sigma点。传播与平方根成比例κ..

  • β- 纳入国家分布的先验知识。对于高斯分布,β= 2是最佳的。

您可以在这些参数指定Αkappa., 和betUnscented Kalman滤波器的属性。如果您知道状态和州协方差的分发,您可以调整这些参数以捕获分布的高阶矩的转换。该算法只能在状态的概率分布中跟踪单个峰值。如果系统的状态分布中有多个峰值,则可以调整这些参数,以便Sigma点保持在单个峰值周围。例如,选择一个小Α生成接近平均状态值的Sigma点。

参考

[1]西蒙,丹。最佳状态估计:卡尔曼,H无限远和非线性方法。Hoboken,NJ:John Wiley和Sons,2006。

[2] van der Merwe,Rudolph和Eric A. Wan。“Square-Root Uncented Kalman滤波器用于状态和参数估计。”2001 IEEE声学,语音和信号处理国际会议。议程(猫。01ch37221),6:3461-64。盐湖城,US,USA:IEEE,2001. HTTPS://Doi.org/10.1109/ICASSP.2001.940586。

也可以看看

职能

外部网站