主要内容

验证在线状态估计金宝app

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

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

  • 从系统中获取不同操作条件下的输出数据和输入值-确保在所有感兴趣的操作条件下都能很好地进行估计。例如,假设您想要使用噪声位置测量来跟踪车辆的位置和速度。在不同的车辆速度和缓慢而尖锐的机动下测量数据。

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

对于每种情况,通过检查残差和状态估计误差来测试滤波器性能。

检验残差

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

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

残差必须具备以下特征:

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

  • 零均值

  • 低自相关,除非在零时滞-要计算自相关,可以使用自相关(DSP系统工具箱)块从DSP系统工具箱™软件。

研究模拟数据的状态估计误差

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

  • 小的大小

  • 零均值

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

还可以计算状态估计误差的协方差,并将其与中块输出的状态估计误差协方差进行比较P块的端口。相似的值增加了过滤器性能的置信度。

计算残差和状态估计误差

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

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

该模型使用Unscented卡尔曼滤波块来估计振荡器的状态。由于该块需要离散时间输入,因此速率转换块进行采样x1给出离散化输出测量yMeasured [k]时间步长k.Unscented卡尔曼滤波块输出估计的状态值xhat (k | k)时间步长k,使用yMeasured直到时间k.过滤器块使用之前写入和保存的状态转换和测量函数,vdpStateFcn.m而且vdpMeasurementFcn.m.有关这些函数的信息,请参见基于无气味卡尔曼滤波和粒子滤波的非线性状态估计

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

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

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

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

另请参阅

|||

相关的话题