主要内容

trackingPF

用于物体跟踪的粒子滤波器

描述

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

使用由其定义的各种重采样方法产生颗粒重新制动方法

创建

描述

PF.= trackingpf.返回A.trackingPF具有状态转换功能的对象,@constvel.,测量功能,@cvmeas,粒子在状态周围的分布,[0; 0; 0; 0],每个维度的单位协方差。过滤器假设添加剂高斯过程噪声模型和高斯似然计算。

例子

PF.= trackingpf(transitionfcn,measuremntfcn,​​state)指定StateTransitionFCN.MeasurementFCN., 和状态直接属性。该过滤器假定状态周围有一个单位协方差。

PF.= trackingpf(___、名称、值)使用一个或多个指定粒子滤波器的属性名称,价值对论点。任何未指定的属性都占用默认值。

特性

展开全部

此属性是只读的。

当前滤波器状态,指定为真实值m- 再生矢量。当前状态计算粒子重量使用指定的最终于司法方法m是个numstatevariables.陈辞确定是否给出了作为行或列向量的状态。

例子:[0.05; 0.04; -0.01]

数据类型:

此属性是只读的。

状态错误协方差,指定为一个m——- - - - - -m矩阵,m是过滤器状态的大小。当前状态协方差是由粒子重量使用指定的最终于司法方法m是个numstatevariables.。协方差矩阵表示过滤状态的不确定性。

此属性是只读的。

指示状态变量是否具有圆形分布,指定为m0和1的元素向量。的值1表明它确实具有循环分配。圆形变量的概率密度函数在该范围内接受角度值(π-π,)

状态向量的方向,指定为'柱子'或者'排'

笔记

如果你设置方向为'排',默认值StateTransitionFCN.MeasurementFCN.不受支持。金宝app提供所有状态转换功能和测量功能(constvelcvmeas.(例如,假设'柱子'方向。

状态转换函数,指定为函数句柄。状态转换功能从每个粒子演变为系统状态。回调函数至少接受至少一个输入参数,prevParticles,代表上一步步骤的系统。如果陈辞'排',粒子被输入为anumparticles.——- - - - - -numstatevariables.大批。如果陈辞'柱子',粒子被输入为anumstatevariables.——- - - - - -numparticles.大批。

可以提供附加的输入参数varargin.,它传递给了预测函数。函数签名是:

功能预测颗粒= statefranizationfcn(prevplicles,varargin)

HasaddittyProcessnoise.过滤器的属性是错误的,状态转换函数可以接受额外的输入参数,DT.。例如:

功能预测颗粒= atteetranizationfcn(prevpletes,dt,varargin)

DT.是时间步骤trackingPF筛选,过滤器的最近一次调用中指定的预测函数。这DT.当您在跟踪器中使用过滤器并致电时,参数适用预测用滤波器预测跟踪器在下一个时间步长状态的函数。对于非加性进程噪声的情况,跟踪器假定您使用以下语法显式地指定了时间步长:预测(过滤器,DT)

依赖性

此参数取决于陈辞财产。

数据类型:function_handle.

为每个粒子生成噪声样本的功能,指定为函数手柄。函数签名是:

函数noise = processNoiseSamplingFcn(pf)

  • HasaddittyProcessnoise.错误的,此功能将噪声样本输出为aW.——- - - - - -N矩阵,W.过程噪声项的数量,和N是粒子的数量。

  • HasaddittyProcessnoise.真的,这个函数输出一个噪声样本作为m——- - - - - -N矩阵,m是状态变量的数量,还有N是粒子的数量。

要从非高斯分发生成样本,请使用自定义功能句柄使用此属性。

依赖性

此参数取决于HasaddittyProcessnoise.财产。

数据类型:function_handle.

过程噪声协方差:

  • HasaddittyProcessnoise.真的,将过程噪声协方差指定为标量或正定实数m——- - - - - -m矩阵。m是国家矢量的尺寸。指定为标量时,矩阵是一个倍数m——- - - - - -m身份矩阵。

  • HasaddittyProcessnoise.错误的,将过程噪声协方差指定为a问:——- - - - - -问:矩阵。问:是过程噪声矢量的大小。

    指定processnoise.在任何打电话之前预测函数。在以后的电话预测,您可以选择将过程噪声指定为标量。在这种情况下,过程噪声矩阵是一个倍数问:——- - - - - -问:身份矩阵。

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

例子:[1.0 0.05;0.05 2]

依赖性

此参数取决于HasaddittyProcessnoise.财产。

将噪声的选项作为添加剂,指定为添加为真的或者错误的。当这个属性是真的,处理噪声被添加到状态向量。否则,噪声被纳入状态转换功能。

测量模型函数,指定为函数句柄。这个函数计算给定当前粒子状态的测量值。可以提供附加的输入参数varargin.。函数签名是:

函数predictedParticles = measurementFcn(particles, varmargin)

数据类型:function_handle.

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

回调函数至少接受三个输入参数,PF.预测律, 和测量。有两个功能签名:

功能似然= MeasurementLikelihoodFCN(PF,预测零,测量,varargin)
功能[似然,距离] =测量灯泡效果FCN(PF,预测零,测量,varargin)

PF.是粒子过滤器对象。

预测律代表返回的一组粒子MeasurementFCN.。如果陈辞'排',粒子被输入为anumparticles.——- - - - - -numstatevariables.大批。如果陈辞'柱子',粒子被输入为anumstatevariables.——- - - - - -numparticles.大批。

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

varargin.允许您指定其他输入正确的函数。

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

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

数据类型:function_handle.

测量噪声协方差,指定为正标量或正定的实值矩阵。指定为标量时,矩阵是一个倍数N——- - - - - -N身份矩阵。N是测量矢量的大小。

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

例子:0.2

每个粒子的状态假设,指定为一个矩阵。如果陈辞'排'颗粒是一个numparticles.——- - - - - -numstatevariables.大批。如果陈辞'柱子',粒子是一个numstatevariables.——- - - - - -numparticles.大批。

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

数据类型:

粒子重量,指定为载体。载体是基于的行或列向量陈辞。每行或列是与同一行或列关联的权重粒子

数据类型:

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

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

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

用于粒子重采样的方法,指定为'多行''systemic''分层', 或者'剩余的'

用于状态估计的方法,指定为'吝啬的'或者'maxweight'

对象功能

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

例子

全部收缩

此示例显示如何创建和运行atrackingPF筛选。打电话给预测正确的函数来跟踪对象并根据测量校正状态估计。

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

状态= (0,0,0,0);stateCov = 10 *眼(4);pf = trackingPF (@constvel @cvmeas、州'statecovariance',Statecov,......'numparticles',2500,'hasadditiveprocessnoise',真的);

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

[Xpred,ppred] =预测(PF,0.5);

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

endy1 = [0; 0; 0; 0];Statecov1 = 10 *眼睛(4);state2 = [100; 0; 100; 0];Statecov2 = 10 *眼睛(4);PF.Particles(:,1:1000)=(陈述1 + Chol(Statecov1)* Randn(4,1000));PF.Particles(:,1001:2000)=(State2 + Chol(Statecov2)* Randn(4,1000));

称呼正确的具有给定的测量。

meas = [1; 1; 0];[Xcorr,PCORR] =正确(PF,MEA);

继续预测过滤状态。如有必要,请在秒内以秒针指定所需的时间步长。

[Xpred,ppred] =预测(PF);%预测超过1秒钟[Xpred,ppred] =预测(PF,2);%预测超过2秒

参考文献

Arulampalam, m.s., S. Maskell, N. Gordon, T. Clapp。在线非线性/非高斯贝叶斯跟踪的粒子滤波器教程IEEE信号处理汇刊。卷。50,20,2002,第222,PP。174-188。

[2]陈,Z.“贝叶斯滤波:从卡尔曼滤波器到粒子过滤器,超越。”统计数据。卷。182,2003,第1-69页。1-69。

扩展能力

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

在R2018B中介绍