主要内容

中验证在线状态估计金宝app

在你使用扩展卡尔曼滤波器无味卡尔曼滤波粒子滤波块用于非线性系统的在线状态估计,在应用程序中部署代码之前验证估计。如果验证表明估计的置信度较低,那么请参阅在线状态估计故障排除为下一个步骤。在您验证了在线估计结果之后,您可以为使用的块生成C/ c++代码金宝app®编码器™软件

要验证过滤器的性能,请使用来自这些场景的测量或模拟输出数据执行状态估计。

  • 获取系统在不同操作条件下的输出数据和输入值-确保估算在所有感兴趣的操作条件下都能很好地工作。例如,假设您想要使用噪声位置测量来跟踪车辆的位置和速度。测量不同车速、慢速和急转弯的数据。

  • 对于每个感兴趣的操作条件,获得具有不同噪声实现的多组实验或模拟数据-确保不同噪声值不会恶化估计性能。

对于每一个场景,通过检查残差和状态估计误差来测试过滤器的性能。

检验残差

残差,或输出估计误差,是测量系统输出之间的差异yMeasured [k],以及估计的系统输出yPredicted (k | k - 1)在时间步k.在这里,yPredicted (k | k - 1)估计的输出是否在时间步长k,在时间步长之前使用输出测量进行预测k - 1

块不显式输出yPredicted (k | k - 1),但是您可以使用估计的状态值以及状态转换和度量函数来计算输出。例如,请参见计算残差和状态估计误差

残差必须具有以下特征:

  • 小幅度-相对于输出大小的小误差增加了估计值的置信度。

  • 零均值

  • 低自相关,除了在零时间滞后-要计算自相关,您可以使用自相关(DSP系统工具箱)block from DSP System Toolbox™软件。

检查模拟数据的状态估计误差

当您模拟非线性系统的输出数据并使用该数据进行状态估计时,您就知道了真正的状态值。您可以计算估计状态值和真实状态值之间的误差,并分析这些误差。的位置输出任意时间步长的估计状态值xhat区块的港口。状态估计误差必须满足以下特征:

  • 小的大小

  • 零均值

  • 低自相关性,除了在零时滞

你也可以计算状态估计误差的协方差,并将其与块输出的状态估计误差协方差进行比较P区块的港口。类似的值增加了对滤波器性能的信心。

计算残差和状态估计误差

这个例子展示了如何估计一个离散时间范德堡尔振荡器的状态,并计算状态估计误差和残差来验证估计。残差是输出估计误差,即测量输出与估计输出之间的差值。

在Simuli金宝appnk™模型中vdpStateEstimModel,范德堡尔振荡器块实现了非线性参数mu = 1的振荡器。振子有两个状态。第一状态的噪声测量x1是可用的。

该模型使用Unscented卡尔曼滤波块来估计振荡器的状态。由于块需要离散时间输入,速率跃迁块样本x1给出离散化的输出测量值yMeasured [k]在时间步k.Unscented卡尔曼滤波块输出状态估计值xhat (k | k)在时间步k,使用yMeasured直到时间k.滤波器块使用先前写入和保存的状态转换和测量功能,vdpStateFcn.mvdpMeasurementFcn.m.有关这些函数的信息,请参见基于无迹卡尔曼滤波和粒子滤波的非线性状态估计

为了验证状态估计,模型计算生成残差块中的残差。此外,由于真实状态值已知,该模型还计算状态估计误差。

为了计算残差,生成残差块首先计算估计输出yPredicted (k | k - 1)使用估计的状态和状态转移和测量函数。在这里,yPredicted (k | k - 1)估计的输出是否在时间步长k,使用输出测量直到时间步长进行预测k - 1.然后块计算残差在时间步长k作为yMeasured [k]-yPredicted (k | k - 1)

检查残差和状态估计误差,并确保它们具有小幅度、零均值和低自相关性。

在这个例子中,Unscented卡尔曼滤波块输出xhat (k | k)因为使用当前度量来改进状态估计块的参数被选中。如果清除此参数,则输出块xhat (k | k - 1)时步的预测状态值k,使用yMeasured直到时间k - 1.在这种情况下,计算yPredicted [k | k - 1] = MeasurementFcn (xhat [k | k - 1]),在那里MeasurementFcn是系统的测量功能。

另请参阅

|||

相关的话题