主要内容

在线状态估计的扩展和无迹卡尔曼滤波算法

可以使用离散时间扩展卡尔曼滤波算法和无迹卡尔曼滤波算法对离散时间非线性系统进行在线状态估计。如果你有一个严重非线性的系统,无迹卡尔曼滤波算法可能会给出更好的估计结果。您可以在Simulink中执行状态估计金宝app®在命令行。要执行状态估计,首先要为系统创建非线性状态转移函数和测量函数。

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

在Si金宝appmulink中,您可以在扩展卡尔曼滤波器uncented卡尔曼筛选器块。您还可以指定函数中的过程和测量噪声项是可加性的还是非可加性的。在块中,软件决定状态估计的预测和校正的顺序。

扩展卡尔曼滤波算法

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

X k + 1 f X k w k u 年代 k ) y k h X k v k u k ) w k 0 k ) v k 0 R k )

在这里f是描述状态演化的非线性状态转移函数吗X从一个时间步骤到下一个时间步骤。非线性测量函数h有关X测量y在时间步骤k.这些函数还可以具有表示的额外输入参数u年代u.过程和测量噪声wv,分别。您提供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 年代 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 + 年代 k R k 年代 k T ) 1 X k | k X k | k 1 + K k y k h X k | k 1 0 u 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 u 年代 k )

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

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

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

  • 如果过程噪音w是加法,那是状态转移方程的形式吗 X k f X k 1 u 年代 k 1 ) + w k 1 ,然后是雅各比亚矩阵G [k]是单位矩阵。

  • 如果测量噪声v是添加剂,即测量方程具有表单 y k h X k u k ) + v k ,然后是雅各比亚矩阵S [k]是单位矩阵。

状态函数和过渡函数中的加性噪声项减少了处理时间。

一阶扩展卡尔曼滤波器对非线性状态转移和测量函数采用线性逼近。因此,如果系统中的非线性很严重,算法可能就不可靠。在这种情况下,采用无迹卡尔曼滤波算法可以得到较好的结果。

Unscented Kalman滤波器算法

无迹卡尔曼滤波算法uncented卡尔曼筛选器块使用无气味变换捕捉传播的状态估计的统计性质通过非线性函数。该算法首先生成一组称为sigma点的状态值。这些点捕获了状态估计的均值和协方差。该算法使用每个sigma点作为状态转移和测量函数的输入,以获得一组新的转换状态点。然后利用变换点的均值和协方差得到状态估计和状态估计误差协方差。

假设状态转换和测量方程状态离散非线性系统具有具有零均值和零协方差的可加过程和测量噪声项R分别为:

X k + 1 f X k u 年代 k ) + w k y k h X k u k ) + v k w k 0 k ) v k 0 R k )

提供的初始值RProcessNoiseMeasurementNoiseUnscented 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. 选择点 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 Δ X ) c P k | k 1 ) 1 ... Δ X + ) c P k | k 1 ) 1 ...

      在哪里 c α 2 + κ ) 是一个基于状态数M的比例因子,还有参数ακ.有关参数的更多信息,请参见Alpha,Beta和Kappa参数的影响 c P 这个矩阵是的平方根吗cP这样 c P c P ) T c P c P ) th列 c P

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

      y ) k | k 1 h X ) k | k 1 u [K]) 0 1 ... 2

    3. 结合预测的测量值以在时间获取预测的测量k

      y k 0 2 W ) y ) k | k 1 W 0 ) 1 α 2 + κ ) W 1 2 α 2 + κ ) 1 2 ... 2

    4. 估计预测测量的协方差。添加R [k]来解释附加的测量噪声。

      P y 0 2 W c ) y ) k | k 1 y k ) y ) k | k 1 y k ) T + R k W c 0 ) 2 α 2 + β ) α 2 + κ ) W c 1 / 2 α 2 + κ ) ) 1 2 ... 2

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

    5. 估计之间的交叉协方差 X k | k 1 y k

      P X y 1 2 α 2 + κ ) 1 2 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. 选择点 X ) k | k 在时间步骤k

      X 0 ) k | k X k | k X ) k | k X k | k + Δ X ) 1 ... 2 Δ X ) c P k | k ) 1 ... Δ X + ) c P k | k ) 1 ...

    2. 使用非线性状态转移函数来计算每个西格玛点的预测状态。

      X ) k + 1 | k f X ) k | k u 年代 [K])

    3. 组合预测状态,得到时刻的预测状态K + 1.控件使用这些值正确的命令,在下一个时间步骤中执行。

      X k + 1 | k 0 2 W ) X ) k + 1 | k W 0 ) 1 α 2 + κ ) W 1 2 α 2 + κ ) 1 2 ... 2

    4. 计算预测状态的协方差。添加q [k]考虑到添加的过程噪声。控件使用这些值正确的命令,在下一个时间步骤中执行。

      P k + 1 | k 0 2 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 + β ) α 2 + κ ) W c 1 / 2 α 2 + κ ) ) 1 2 ... 2

uncented卡尔曼筛选器块支持多个测金宝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参数的影响

为了计算下一时刻的状态及其统计特性,无迹卡尔曼滤波算法生成一组分布在状态均值周围的状态值。该算法使用每个sigma点作为状态转移和测量函数的输入,以获得一组新的转换状态点。然后利用变换点的均值和协方差得到状态估计和状态估计误差协方差。

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

  • α-决定状态均值周围sigma点的分布。它通常是一个小的正值。点的分布是成比例的α.较小的值对应于更接近均值状态的点。

  • κ-第二个缩放参数,通常设置为0。较小的值对应于更接近均值状态的点。扩散与的平方根成正比κ

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

属性中指定这些参数Α卡巴,β无迹卡尔曼滤波器的性质。如果你知道状态和状态协方差的分布,你可以调整这些参数来捕捉分布的高阶矩的变换。该算法只能跟踪状态概率分布中的单个峰值。如果在你的系统的状态分布中有多个峰值,你可以调整这些参数,使σ点停留在一个峰值附近。例如,选择一个小的Α生成接近平均状态值的Sigma点。

参考文献

[1]西门,丹。最佳状态估计:卡尔曼,H无限远和非线性方法.霍博肯:约翰·威利父子公司,2006年。

[2] van der Merwe,Rudolph和Eric A. Wan。“Square-Root Uncented Kalman滤波器用于状态和参数估计。”2001年IEEE声学,语音和信号处理国际会议。诉讼程序(猫。No.01CH37221), 6:3461 - 64。盐湖城,德克萨斯,美国:IEEE, 2001。https://doi.org/10.1109/ICASSP.2001.940586。

也可以看看

功能

外部网站