trackingPF

粒子过滤器的目标跟踪

描述

trackingPF对象表示遵循非线性运动模型或由非线性测量模型测量的对象跟踪器。该滤波器使用一组离散的粒子来近似状态的后验分布。粒子滤波可应用于任意非线性系统模型。过程和测量噪声可以遵循任意的非高斯分布。

粒子是通过定义的各种重采样方法生成的ResamplingMethod

创建

描述

pf= trackingPF回报trackingPF具有状态转换函数的对象,@constvel、测量功能,@cvmeas和粒子在状态周围的分布,(0,0,0,0),每个维度单位协方差。该滤波器采用加性高斯过程噪声模型和高斯似然计算。

pf= trackingPF (transitionFcn、measuremntFcn、状态)指定StateTransitionFcnMeasurementFcn,直接属性。过滤器假设状态周围有一个单位协方差。

pf= trackingPF(___、名称、值)指定使用一个或多个粒子过滤器的属性名称,值对参数。任何未指定的属性取默认值。

属性

全部展开

此属性是只读的。

当前过滤状态,指定为实值中号元向量。当前状态是从粒子重量使用指定的StateEstimationMethod中号NumStateVariablesStateOrientation确定该状态被给定为行或列向量。

例子:(0.1;0.05;0.04;-0.01)

数据类型:

此属性是只读的。

状态误差协方差,指定为中号——- - - - - -中号矩阵,中号是筛选器状态的大小。计算当前状态协方差粒子重量使用指定的StateEstimationMethod中号NumStateVariables。协方差矩阵表示在所述过滤器的状态的不确定性。

此属性是只读的。

指示状态变量是否具有循环分布,指定为中号- 0和1的元素向量。的值1表示它确实有一个循环分布。一个圆变量的概率密度函数取该范围内的角值(π-π,)

状态向量的方向,指定为“列”'行'

注意

如果你将朝向设置为'行',默认的StateTransitionFcnMeasurementFcn不支持。万博1manbetx所提供的所有状态转换函数和测量功能(constvelcvmeas,例如)假设a“列”取向。

状态转换函数,指定为函数句柄。状态转移函数从每个粒子演进系统状态。回调函数接受至少一个输入参数,prevParticles中,表示前一时间步骤的系统。如果StateOrientation'行'中,颗粒是输入作为NumParticles——- - - - - -NumStateVariables数组中。如果StateOrientation“列”中,颗粒是输入作为NumStateVariables——- - - - - -NumParticles数组中。

可以提供其他输入参数变长度输入宗量,其被传递给预测函数。函数签名为:

函数predictParticles = stateTransitionFcn (prevParticles变长度输入宗量)

HasAdditiveProcessNoise该滤波器的特性是,状态转换函数可以接受一个额外的输入参数,DT。例如:

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

DT是的时间步长trackingPF过滤器,过滤器的最新调用中指定的预测函数。该DT参数应用于在跟踪程序中使用筛选器并调用预测功能与过滤器预测跟踪器的状态在下一次的时间步。对于非加性过程噪声情况,跟踪器假设您使用以下语法显式指定时间步长:预测(过滤器,dt)

依赖关系

这个参数取决于StateOrientation属性。

数据类型:function_handle

函数为每个粒子生成噪声样本,指定为函数句柄。函数签名为:

函数noiseSample = processNoiseSamplingFcn(pf)

  • HasAdditiveProcessNoise,该函数输出的噪声样本为w ^——- - - - - -ñ矩阵,w ^是过程噪声项的个数,和ñ是粒子的数目。

  • HasAdditiveProcessNoise真正的,该函数输出的噪声样本为中号——- - - - - -ñ矩阵,中号是状态变量的数目,和ñ是粒子的数目。

若要从非高斯分布生成样本,请将此属性与自定义函数句柄一起使用。

依赖关系

这个参数取决于HasAdditiveProcessNoise属性。

数据类型:function_handle

过程噪声协方差:

  • HasAdditiveProcessNoise真正的,指定过程噪声协方差为标量或正定实值中号——- - - - - -中号矩阵。中号是状态向量的维数。当指定为标量时,矩阵是的倍数中号——- - - - - -中号单位矩阵。

  • HasAdditiveProcessNoise,指定过程噪声协方差为aQ——- - - - - -Q矩阵。Q是处理噪声矢量的大小。

    指定ProcessNoise在任何调用之前预测函数。在以后的电话中预测,您可以选择将流程噪声指定为标量。在这种情况下,过程噪声矩阵是的倍数Q——- - - - - -Q单位矩阵。

如果ProcessNoiseSamplingFcn被指定为@gaussianSample,此属性定义了过程的高斯噪声协方差。

例子:[1.0 - 0.05;0.05 - 2]

依赖关系

这个参数取决于HasAdditiveProcessNoise属性。

选择将过程噪声建模为附加的,指定为真正的。当此属性为真正的,过程噪声被添加到状态向量中。否则,在状态转换函数中加入噪声。

度量模型函数,指定为函数句柄。这个函数根据当前粒子的状态计算测量值。可以提供其他输入参数变长度输入宗量。函数签名为:

函数预测粒子= measure rementfcn(粒子,变量)

数据类型:function_handle

回调函数计算传感器测量的可能性,指定为功能句柄。一旦一个传感器测量是可用的,该回调函数计算的可能性的是,测量与每个粒子的状态假设是一致的。

回调函数接受至少三个输入参数,pfpredictedParticles,测量。有两个函数签名:

函数似然= measurementLikelihoodFcn(pf,预测粒子,measurement,varargin)
函数[可能性,距离] = measurementLikelihoodFcn(PF,predictedParticles,测量,varargin)

pf是粒子滤波对象。

predictedParticles表示返回的粒子集MeasurementFcn。如果StateOrientation'行'中,颗粒是输入作为NumParticles——- - - - - -NumStateVariables数组中。如果StateOrientation“列”中,颗粒是输入作为NumStateVariables——- - - - - -NumParticles数组中。

测量是当前时间步长的状态度量。

变长度输入宗量允许您指定附加输入正确函数。

回调输出,可能性,是长度向量NumParticles,即每个粒子状态假设的给定测量值的可能性。

可选的输出,距离,允许你指定被返回的距离计算距离函数。

数据类型:function_handle

测量噪声协方差,指定为正标量或正定实值矩阵。当指定为标量时,矩阵是的倍数ñ——- - - - - -ñ单位矩阵。ñ是测量矢量的大小。

如果MeasurementLikelihoodFcn被指定为@gaussianLikelihood,此属性用于指定测量的高斯噪声协方差。

例子:0.2

每个粒子的状态假设,用矩阵表示。如果StateOrientation'行'颗粒是具有NumParticles——- - - - - -NumStateVariables数组中。如果StateOrientation“列”中,颗粒是一NumStateVariables——- - - - - -NumParticles数组中。

每一行或每一列都对应一个粒子的状态假设。

数据类型:

粒子的权值,用矢量表示。这个向量可以是一个行向量,也可以是一个列向量StateOrientation。每个行或列都是与相同行或列关联的权重粒子

数据类型:

状态变量,指定为整数的数量。该由这些状态变量组成。

通过过滤器中使用的颗粒,指定为一个整数的数。每个粒子代表的状态的假设。

触发重采样的策略设置,指定为trackingResamplingPolicy对象。重采样可以在固定的时间间隔内触发,也可以根据有效粒子的数量动态触发。

方法用于颗粒重采样,指定为多项式的“系统性”“分层”,或'剩余的'

用于状态估计的方法,指定为'意思''maxweight'

对象函数

预测 预测跟踪滤波器的状态和状态估计误差协方差
正确 正确的状态和状态估计误差协方差使用跟踪滤波器
correctjpda 使用跟踪滤波器和JPDA修正状态和状态估计误差协方差
距离 跟踪滤波器的电流和预测测量值之间的距离
可能性 从跟踪滤波器测量的可能性
克隆 创建重复跟踪滤波器
初始化 初始化跟踪滤波器的状态和协方差

例子

全部收缩

这个例子说明了如何创建和运行trackingPF过滤器。调用预测正确功能,以跟踪对象和纠正基于测量的状态估计。

创建过滤器。指定初始状态和状态协方差。指定颗粒的数量,并且有添加剂过程噪声。

状态= (0,0,0,0);stateCov = 10 *眼(4);pf = trackingPF (@constvel @cvmeas、州“StateCovariance”,stateCov,'NumParticles',2500,“HasAdditiveProcessNoise”,真正的);

调用预测得到滤波器的预测状态和协方差。使用0.5秒的时间步长。

[xPred,pPred] =预测(PF,0.5);

您还可以修改过滤器中的粒子,以携带多模型状态假设。修改粒子属性,粒子在初始化后处于多个状态。

STATE1 = [0; 0; 0; 0];stateCov1 = 10 *眼(4);STATE2 = [100; 0; 100; 0];stateCov2 = 10 *眼(4);pf.Particles(:,1:1000)=(STATE1 + CHOL(stateCov1)* randn(4,1000));pf.Particles(:,1001:2000)=(STATE2 + CHOL(stateCov2)* randn(4,1000));

调用正确与给定的测量值。

MEAS = [1; 1; 0];[xCorr,pCorr] =正确(PF,MEAS);

继续预测滤波器状态。指定如果必要的话,以秒为期望的时间步长。

[xPred,pPred] =预测(PF);%预测超过1秒[xPred,pPred] =预测(PF,2);%预测超过2秒

参考文献

[1] Arulampalam, m.s., S. Maskell, N. Gordon,和T. Clapp。在线非线性/非高斯贝叶斯跟踪的粒子滤波教程。IEEE信号处理会刊。卷。50,第2号,2002年2月,第174-188。

[2]陈,Z.“贝叶斯过滤:从卡尔曼滤波器来筛选颗粒,及以后”统计。第182卷,第1期,2003年,第1-69页。

扩展功能

C / c++代码生成
生成使用MATLAB®编码器™C和C ++代码。

介绍了在R2018b