主要内容

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

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

在命令行中,使用函数来构造extendedKalmanFilterunscentedKalmanFilter对象,并指定函数中的过程和测量噪声项是加性的还是非加性的。对象创建后,使用预测而且正确的使用实时数据估计状态的命令。有关执行这些命令的顺序的信息,请参见预测而且正确的参考页面。

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

扩展卡尔曼滤波算法

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.过程噪声和测量噪声分别为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,……,perform the following:

    1. 计算测量函数的雅可比矩阵,利用测量数据更新状态和状态估计误差协方差,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. 计算状态转移函数的雅可比矩阵,并预测下一时间步的状态和状态估计误差协方差。在软件中预测命令执行此预测。

      一个 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]

扩展卡尔曼滤波器Block支金宝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]是一个单位矩阵。

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

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

无气味卡尔曼滤波算法

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

假设an的状态转移和测量方程-状态离散时间非线性系统具有均值和协方差为零的附加过程噪声和测量噪声项而且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

的初始值而且RProcessNoise而且MeasurementNoise无气味卡尔曼滤波对象的特性。

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

  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. 使用非线性测量函数计算每个西格玛点的预测测量值。

      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. 使用非线性状态转移函数来计算每个sigma点的预测状态。

      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. 计算预测状态的协方差。添加问[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

无香味卡尔曼滤波器Block支金宝app持多种测量功能。这些测量可以有不同的采样时间,只要它们的采样时间是状态转移采样时间的整数倍。在这种情况下,针对每个测量函数的测量,执行一个单独的校正步骤。

之前的算法是在状态转移和测量方程中加入噪声项的情况下实现的。为了获得更好的数值性能,该软件使用了协方差矩阵的平方根分解。有关此分解的更多信息,请参见[2]

如果噪声项是非加性的,则对算法的主要更改为:

  • 正确的命令生成2 * (M + V) + 1使用Sigma点P (k | k - 1)而且R [k],在那里V测量中元素的数量是否有噪声v [k].的R [k]在算法步骤2(d)中不再添加项,因为额外的西格玛点捕获了测量噪声对的影响Py

  • 预测命令生成2 * (M + W) + 1使用Sigma点P (k | k)而且问[k],在那里W过程中元素的数量是噪音吗w [k].的问[k]在算法步骤3(d)中不再添加项,因为额外的西格玛点捕获了过程噪声对的影响P (k + 1 | k)

Alpha、Beta和Kappa参数的影响

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

σ点在平均状态值周围的分布由两个参数控制α而且κ.第三个参数,β,影响在状态和测量协方差计算时转换点的权重。

  • α-确定sigma点在平均状态值周围的分布。它通常是一个小的正数。点的分布正比于α.较小的值对应的西格玛点更接近于平均状态。

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

  • β-整合状态分布的先验知识。对于高斯分布,β= 2是最优的。

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

参考文献

西蒙,丹。最优状态估计:卡尔曼,H∞和非线性方法.霍博肯,新泽西州:约翰·威利父子,2006年。

[2] Van der Merwe, Rudolph和Eric A. Wan。状态和参数估计的平方根无气味卡尔曼滤波器。2001年IEEE声学、语音和信号处理国际会议。诉讼(猫。No.01CH37221), 6:3461 - 64。盐湖城,UT,美国:IEEE, 2001。https://doi.org/10.1109/ICASSP.2001.940586。

另请参阅

功能

外部网站