主要内容

粒子滤波参数

使用stateEstimatorPF(机器人系统工具箱)粒子滤波时,必须指定粒子数量、初始粒子位置和状态估计方法等参数。此外,如果有特定的运动和传感器模型,则分别在状态转移函数和测量似然函数中指定这些参数。这些参数的详细信息在本页上有详细说明。有关粒子滤波工作流程的更多信息,请参见粒子滤波工作流程

粒子数

要指定粒子数,请使用初始化方法。每个粒子都是当前状态的一个假设。粒子根据指定的均值和协方差或指定的状态边界分布在您的状态空间中。取决于StateEstimationMethod属性,采用具有最高权重的粒子或所有粒子的平均值来确定最佳状态估计。

默认粒子数为1000。除非性能有问题,否则使用的粒子不要少于1000个。更高数量的粒子可以提高估计,但牺牲性能速度,因为算法必须处理更多的粒子。调整粒子的数量是影响粒子过滤器性能的最佳方法。

这些结果是基于stateEstimatorPF例如,显示使用100个粒子和5000个粒子时跟踪精度的差异。

初始粒子位置

当你初始化粒子过滤器时,你可以使用以下命令指定粒子的初始位置:

  • 均值和协方差

  • 国家边界

初始状态定义为与系统相关的协方差的平均值。这个均值和协方差与系统的初始位置和不确定性相关。的stateEstimatorPF对象根据给定均值周围的协方差分布粒子。该算法利用粒子的这种分布来获得最佳状态估计,因此精确的粒子初始化有助于快速收敛到最佳状态估计。

如果初始状态未知,你可以在给定的状态范围内均匀分布粒子。州界是你的州的界限。例如,在估计机器人的位置时,状态边界被限制为机器人实际可以居住的环境。一般来说,粒子的均匀分布是一种较低效的初始化粒子以提高收敛速度的方法。

该图显示了均值和协方差规范如何在空间中更有效地聚类粒子,而不是指定完整的状态边界。

状态转换函数

状态转移函数,StateTransitionFcn,粒子过滤器有助于粒子进化到下一个状态。在预测步骤中使用粒子滤波工作流程.在stateEstimatorPF对象时,状态转换函数被指定为一个回调函数,该函数接受先前的粒子和任何其他必要的参数,并输出预测的位置。函数头的语法是:

函数predictParticles = stateTransitionFcn(pf,prevParticles,varargin)

默认情况下,状态转移函数假设一个恒定速度的高斯运动模型。该函数使用高斯分布来确定粒子在下一个时间步中的位置。

对于您的应用程序,有一个准确描述您期望的系统行为的状态转换函数是很重要的。为了精确地进化所有的粒子,你必须为你的系统开发和实现一个运动模型。如果粒子不在下一个状态周围分布,则stateEstimatorPF对象没有找到一个准确的估计。因此,了解系统的行为方式非常重要,这样才能准确地跟踪它。

还必须在中指定系统噪声StateTransitionFcn.没有随机噪声应用到预测系统,粒子滤波器不能发挥预期的作用。

尽管您可以根据许多系统以前的状态来预测它们,但有时系统可能包含额外的信息。使用变长度输入宗量在函数中,您可以输入与预测下一个状态相关的任何额外参数。当你打电话时预测,你可以使用:

预测(pf param1 param2)

因为这些参数匹配您定义的状态转换函数,调用预测本质上调用函数如下:

predictParticles = stateTransitionFcn(pf,prevParticles,param1,param2)

输出粒子,predictParticles,然后由测量似然函数用于校正粒子,如果不需要校正,则用于下一个预测步骤。

测量似然函数

在预测下一个状态之后,您可以使用传感器的测量数据来修正您预测的状态。通过指定MeasurementLikelihoodFcnstateEstimatorPF对象时,可以使用正确的函数。根据定义,这个测量似然函数根据给定的测量为状态假设(你的粒子)提供了一个权重。本质上,它给出了观测到的测量值与每个粒子观测值相匹配的可能性。这种可能性被用作预测粒子的权重,以帮助纠正它们并获得最佳估计。虽然预测步骤对于少量中间步骤可以证明是准确的,但为了获得准确的跟踪,需要经常使用传感器观测来校正粒子。

规范MeasurementLikelihoodFcn类似于StateTransitionFcn.属性中的函数句柄指定stateEstimatorPF对象。函数头的语法是:

函数似然= measurementlikehoodfcn (pf,predictParticles,measurement,varargin)

输出是基于给定测量的每个预测粒子的可能性。但是,也可以在中指定更多参数变长度输入宗量.使用变长度输入宗量在函数中,您可以输入与修正预测状态相关的任何额外参数。当你打电话时正确的,你可以使用:

正确的(pf、测量、param1 param2)

这些参数与您定义的测量似然函数匹配:

likelihood = measurementlikehoodfcn (pf,predictParticles,measurement,param1,param2)

正确的函数使用可能性输出粒子重采样并给出最终状态估计。

重采样策略

粒子重采样是实现目标连续跟踪的关键步骤。它允许您基于当前状态选择粒子,而不是使用初始化时给出的粒子分布。通过不断地对当前估计值周围的粒子进行重新采样,您可以获得更准确的跟踪并提高长期性能。

当你打电话时正确的时,用于状态估计的粒子可以根据ResamplingPolicy属性中指定的stateEstimatorPF对象。此属性指定为resamplingPolicyPFresamplingPolicyPF(机器人系统工具箱)对象。的TriggerMethod属性告诉粒子过滤器使用哪种方法进行重新采样。

您可以在固定间隔或达到最小有效粒子比时触发重新采样。方法中指定的固定间隔方法以一组迭代次数重新采样SamplingInterval财产。最小有效粒子比是衡量当前粒子集逼近后验分布的程度。有效粒子数计算公式为:

在这个方程中,N是粒子数,和w是每个粒子的归一化权重。有效粒子比为Neff/NumParticles.因此,有效粒子比是所有粒子权重的函数。在粒子的权重达到足够低的值后,它们对状态估计没有贡献。这个低值触发重采样,因此粒子更接近当前状态估计并具有更高的权重。

状态估计方法

粒子滤波工作流程的最后一步是选择单个状态估计。在分布中采样的粒子及其权重被用来给出实际状态的最佳估计。但是,您可以使用粒子信息以多种方式获得单个状态估计。与stateEstimatorPF对象,您可以根据具有最高权重的粒子选择最佳估计,也可以取所有粒子的平均值。中指定估计方法StateEstimationMethod两者之一的财产“的意思是”(默认)或“maxweight”

因为你可以用很多方法估计所有粒子的状态,你也可以从stateEstimatorPF使用粒子财产。

另请参阅

|(机器人系统工具箱)

相关的例子

更多关于