主要内容

trackerPHD

多传感器,多目标PHD跟踪器

描述

trackerPHDSystem object™是一种跟踪器,能够处理来自多个传感器的多个目标的检测。该跟踪器使用多目标概率假设密度(PHD)滤波器来估计点目标和扩展目标的状态。PHD是定义在跟踪系统状态空间上的函数,其在某一状态下的值定义为单位状态空间体积上目标的期望数量。PHD由概率密度函数的加权和(混合)表示,PHD的峰值对应可能的目标。有关跟踪器功能的概述,请参见算法

默认情况下,trackerPHD是否可以跟踪扩展对象ggiwphd过滤器,它将来自扩展对象的检测建模为解析点云。你也可以使用trackerPHDgmphd过滤器,用于跟踪具有指定形状的点目标和扩展对象。跟踪器的输入是由生成的检测报告objectDetectionfusionRadarSensorirSensor,或sonarSensor对象。跟踪器输出所有维护的轨迹及其分析信息。

使用此对象跟踪目标。

  1. 创建trackerPHD对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

跟踪器= trackerPHD创建一个trackerPHD具有默认属性值的系统对象。

例子

跟踪器= trackerPHD (名称,值使用一个或多个名称-值对设置跟踪器的属性。例如,trackerPHD (' MaxNumTracks ', 100)创建一个PHD跟踪器,允许最多100个轨道。将每个属性名用引号括起来。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

唯一跟踪器标识符,指定为非负整数。属性用作SourceIndex在跟踪器输出中,并区分来自多跟踪器系统中不同跟踪器的跟踪。必须将此属性指定为正整数,才能将音轨输出用作音轨熔断器的输入。

例子:1

跟踪传感器的配置,指定为单元阵列的trackingSensorConfiguration对象。此属性向跟踪器提供跟踪传感器配置信息,例如传感器检测限制和传感器分辨率。方法没有默认值SensorConfigurations属性,并且必须指定SensorConfigurations属性,然后再使用跟踪器。方法来更新配置HasSensorConfigurationsInput财产真正的并指定配置输入,配置.如果你设置MaxDetsPerObject的属性trackingSensorConfiguration对象设为1时,跟踪器只创建一个分区,这样最多可以给每个目标分配一个检测。

函数将检测划分为检测单元格,指定为函数句柄或字符向量。当每个传感器对一个对象可以报告多个检测时,需要一个配分函数。分区函数报告来自传感器的所有可能的检测分区。在每个分区中,检测被分离为互斥的检测单元,假设每个检测单元属于一个扩展对象。

您还可以指定自己的检测分区函数。为了指导如何编写这个函数,您可以查看默认分区函数的详细信息,partitionDetections,使用类型命令为:

类型partitionDetections

例子:@myfunction“myfunction”

数据类型:function_handle|字符

新目标的出生率在密度中,指定为标量。出生率表示单位时间内在密度中增加的预期目标数。出生密度是通过使用FilterInitializationFcntrackingSensorConfiguration与跟踪器一起使用。一般来说,跟踪器以两种方式向密度函数添加分量:

  1. 预测出生密度-由初始化的密度FilterInitializationFcn函数在没有输入的情况下调用。

  2. 自适应出生密度-初始化的密度FilterInitializationFcn函数调用时使用检测输入。跟踪器根据它们与目标当前估计的关联的对数似然选择检测。

的值出生率属性表示每个时间步的预测出生密度和自适应出生密度之和。

例子:0.01

数据类型:|

密度中组件的死亡率,指定为标量。死亡率是指在一个时间步后,一个成分在密度中消失的比率。死亡率(Pd)与存活概率(P年代)在连续时间步长之间的分量

P 年代 1 P d Δ T

在哪里ΔT是时间步长。

例子:1的军医

数据类型:|

为组件初始化选择检测的阈值,指定为正标量。在校正过程中,跟踪器计算现有轨迹和检测单元之间关联的可能性。如果一个检测单元与所有现有轨迹的关联似然(由负对数似然给出)高于阈值(这意味着该检测单元与现有轨迹的关联似然较低),则使用该检测单元初始化自适应出生密度中的新组件。

例子:18.1

数据类型:|

初始化暂定轨道的阈值,指定为标量。组件的权重值高于告警阈值ExtractionThreshold属性时,该组件被标记为“初步”跟踪并给出一个TrackID

例子:0.45

数据类型:|

跟踪确认的阈值,指定为标量。在一个trackerPHD对象时,一个轨道可以有多个共享相同的组件TrackID.方法指定的阈值ConfirmationThreshold属性时,轨道的状态标记为“确认”

例子:0.85

数据类型:|

组件删除的阈值,指定为标量。在PHD跟踪器中,如果组件的权重低于DeletionThreshold属性,则删除该组件。

例子:0.01

数据类型:|

组件合并的阈值,指定为实正标量。在PHD跟踪器中,如果组件之间的柯back- leibler距离具有相同TrackID的值小于MergingThreshold属性,则这些组件将合并为一个组件。新组件的合并权值等于预合并组件权值的和。方法中指定的第一个阈值LabelingThresholds属性时,合并权重被截断为第一个阈值。请注意,带有TrackID等于0也可以相互合并。

例子:30.

数据类型:|

标记阈值,指定为正数值递减的1 × 3向量,[C1C2C3.].基于LabelingThresholds属性,跟踪器使用以下规则管理密度中的组件:

  1. 高于第一个阈值的任何组件的权重C1被简化为C1

  2. 对于所有组件具有相同的TrackID,如果这些分量中最大的权重大于C2,则保留重量最大的构件以保留TrackID,而所有其他组件将被删除。

  3. 对于所有组件具有相同的TrackID,如果最大权重与所有这些分量的权重总和之比大于C3.,则保留重量最大的构件以保留TrackID,而所有其他组件将被删除。

  4. 如果条件2和条件3都不满足,则权值最大的分量保留TrackID,其他组件的标签均为0。当这种情况发生时,本质上意味着某些组件可能表示其他对象。这种处理方法保留了这些未保留成分在未来再次提取的可能性。

数据类型:|

启用随时间更新传感器配置,指定为真正的.将此属性设置为真正的如果你想要传感器的配置随时间更新。此外,当此属性设置为真正的时,跟踪器必须使用配置输入调用,配置,如用法语法所示。

数据类型:逻辑

轨迹状态参考系的参数,指定为结构或结构数组。追踪者通过它StateParameters属性值。StateParameters属性。您可以使用这些参数来定义报告航迹的参考框架或生成航迹的其他所需属性。

例如,您可以使用以下结构来定义一个矩形参考系,其原点位置为[10 10 0]米,它的起始速度是[2 -2 0]米/秒。

字段名 价值
框架 “矩形”
位置 [10 10 0]
速度 [2 -2 0]

可调:是的

数据类型:结构体

此属性是只读的。

跟踪器维护的轨道数,作为非负整数返回。

数据类型:

此属性是只读的。

已确认的轨道数,以非负整数返回。如果IsConfirmed输出轨道结构的场为真正的,航迹已确认。

数据类型:

可连接到跟踪器的最大传感器数量,指定为正整数。MaxNumSensors必须大于或等于的最大值SensorIndex用于更新追踪器的所有检测中都有。SensorIndex是的属性吗objectDetection对象。

数据类型:|

跟踪器可以维护的最大轨道数,指定为正整数。

数据类型:|

使用

要处理检测和更新轨道,使用参数调用跟踪器,就好像它是一个函数一样(在这里描述)。

描述

confirmedTracks=跟踪器(检测时间返回从检测列表中更新的已确认航迹列表,检测,在更新时,时间.已确认的航迹被修正并预测到更新时间。

confirmedTracks=跟踪器(检测配置时间还指定了传感器配置输入,配置.当传感器的配置随时间变化时,请使用此语法。要启用此语法,请设置HasSensorConfigurationsInput财产真正的

confirmedTrackstentativeTracksallTracks=跟踪器(___还返回一个暂定曲目列表,tentativeTracks,以及所有曲目的列表,allTracks.您可以将此输出语法与前面的任何输入语法一起使用。

confirmedTrackstentativeTracksallTracksanalysisInformation=跟踪器(___还返回分析信息,analysisInformation,可用于航迹分析。您可以将此输出语法与前面的任何输入语法一起使用。

输入参数

全部展开

的单元格数组指定的检测列表objectDetection对象。的时间每个的属性值objectDetection对象必须小于或等于当前更新时间,时间,并且大于用于更新跟踪器的前一个时间值。此外,时间不同之间的差异objectDetection单元格数组中的对象不需要相等。

更新时间,指定为标量。跟踪器更新到此时间的所有轨道。单位是秒。

时间必须大于或等于最大值时间的属性值。objectDetection输入中的对象检测列表。时间必须随着跟踪器的每次更新而增加值。

数据类型:|

传感器配置,指定为结构数组、结构的单元格数组或的单元格数组trackingSensorConfiguration对象。如果使用结构数组或单元格结构数组指定值,则必须包含SensorIndex作为每个结构体的字段。属性的某个属性的名称必须与每个结构中的其他可选字段相同trackingSensorConfiguration对象。请注意,您只需要指定需要更新的传感器配置。例如,如果您只想更新IsValidTime属性为第五个传感器,提供值配置作为结构(“SensorIndex”5“IsValidTime”,假)

依赖关系

要启用此参数,请设置HasSensorConfigurationsInput财产真正的

输出参数

全部展开

已确认的轨道更新到当前时间,作为结构或结构数组返回。每个结构对应一个轨道。属性指定的阈值以上,则确认轨道ConfirmationThreshold财产。如果一个轨道被确认,IsConfirmed结构的场为真正的.中定义了已确认轨迹结构的字段轨道结构

数据类型:结构体

作为结构或结构数组返回的暂定轨道。每个结构对应一个轨道。属性指定的阈值之上,则轨道为暂定轨道ExtractionThreshold属性指定的阈值,但小于ConfirmationThreshold财产。在这种情况下,IsConfirmed结构的场为.结构的字段定义在轨道结构

数据类型:结构体

所有轨道,作为结构体或结构体数组返回。每个结构对应一个轨道。所有轨道的集合由确认轨道和暂定轨道组成。结构的字段定义在轨道结构

数据类型:结构体

用于分析曲目更新的附加信息,作为结构返回。该结构的字段为:

描述
CorrectionOrder

传感器用于状态估计校正的顺序,作为的行向量返回SensorIndex.例如,[1 3 2 4]。

TrackIDsAtStepBeginning

跟踪步骤开始时的id。

DeletedTrackIDs

步骤中删除的音轨id。

TrackIDsAtStepEnd

跟踪步骤结束时的id。

SensorAnalysisInfo

单元阵列传感器分析信息。

SensorAnalysisInfo字段可以包含多个传感器信息报告。每个报告都是一个结构,包含:

描述
SensorIndex

传感器指数。

DetectionCells

检测单元格,作为逻辑矩阵返回。矩阵的每一列表示一个检测单元。在每列中,如果第Th元素是1,然后该检测属于该列表示的检测单元。

DetectionLikelihoods

密度函数中各分量与检测单元之间的关联可能性,以an形式返回N——- - - - - -P矩阵。N密度函数中分量的数量,和P是检测单元数。

IsBirthCells

中列出的检测单元格DetectionCells产生新的轨道,返回为1乘-P逻辑向量,其中P是检测单元数。

NumPartitions

分区数。

DetectionProbability

传感器检测到现有轨道的概率,指定为1 × -N行向量,其中N是密度函数中分量的数量。

LabelsBeforeCorrection

校正前密度函数中各分量的标签,返回为1 × -b行向量。b是修正前跟踪器中维护的组件数量。向量的每个元素都是aTrackID.例如:[1 1 2 0 0]。注意,多个组件可以共享相同的组件TrackID

LabelsAfterCorrection

校正后密度函数中各组分的标签,返回为1 × -一个行向量。一个是修正后的跟踪器中保持的组件数。向量的每个元素都是aTrackID.例如:[1 1 1 2 2 0 0]。注意,多个组件可以共享相同的组件TrackID

WeightsBeforeCorrection

校正前密度函数中各分量的权重,以1 × -的形式返回b行向量。b是修正前跟踪器中维护的组件数量。向量的每个元素都是中给出的相应分量的权值LabelsBeforeCorrection.例如[0.1 0.5 0.7 0.3 0.2]。

WeightsAfterCorrection

校正后密度函数中各分量的权重,以1 × -的形式返回一个行向量。一个是修正后的跟踪器中保持的组件数。向量的每个元素都是中给出的相应分量的权值LabelsAfterCorrection.例如[0.1 0.4 0.2 0.6 0.3 0.2 0.2]。

数据类型:结构体

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

predictTracksToTime 预测航迹状态
deleteTrack 删除现有轨道
initializeTrack 初始化新轨道
sensorIndices 传感器指标列表
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
isLocked 确定系统对象正在使用中
克隆 创建重复的系统对象
重置 重置的内部状态系统对象

例子

全部折叠

设置传感器配置,创建PHD跟踪器,并为跟踪器提供检测。

创建传感器配置。指定传感器的杂波密度和%设置IsValidTime属性为true。配置= trackingSensorConfiguration(1);配置。ClutterDensity = 1e-7; configuration.IsValidTime = true;创建一个PHD跟踪器。追踪器=追踪器“SensorConfigurations”、配置);在t=0时,在点[5;-5;0]和[-5;5;0]附近创建检测,和用这些检测更新跟踪器。。检测= cell(20,1);i = 1:10 detection {i} = objectDetection(0,[5;-5;0] + 0.2*randn(3,1));结束j = 11:20 detection {j} = objectDetection(0,[-5;5;0] + 0.2*randn(3,1));结束追踪(检测,0);

0.1秒后再次更新跟踪器,假设目标以[1;2;0]单位每秒的恒定速度移动。

dT = 0.1;I = 1:20 detection {I}。时间=检测{i}。时间+ dT;检测我{}。米easurement = detections{i}.Measurement + [1;2;0]*dT;结束[confTracks,tentTracks,allTracks] =跟踪器(检测,dT);

可视化探测和确认的轨迹。

从检测中获得测量值。D =[检测{:}];测量= [d.测量];使用getTrackPositions函数提取确认跟踪的位置。注意,我们使用默认的传感器配置% FilterInitializationFcn, initcvggiwphd,它使用恒定速度%模型并将状态定义为[x;vx;y;vy;z;vy]。positionSelector = [1 0 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 1 0];位置= getTrackPositions(confTracks,positionSelector);图()图(测量(1:),测量(2:)“x”“MarkerSize”5,“MarkerEdgeColor”“b”);持有;情节(职位(1,1),职位(1、2),“v”“MarkerSize”5,“MarkerEdgeColor”“r”);持有;情节(职位(2,1),职位(2,2),“^”“MarkerSize”5,“MarkerEdgeColor”“r”);传奇(“检测”“轨道1”“轨道2”)包含(“x”) ylabel (“y”

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象代表检测,轨道1,轨道2。

更多关于

全部展开

算法

全部展开

参考文献

格兰斯托姆,K.伦奎斯特,O.奥古纳。”使用高斯混合PHD滤波器扩展目标跟踪。”IEEE航空航天与电子系统汇刊。Vol. 48, no . 4, 2012, pp. 3268-3286。

格兰斯托姆、K.和O.奥古纳。”使用随机矩阵跟踪多个扩展目标的PHD滤波器。”IEEE信号处理汇刊。Vol. 60, no . 11, 2012, pp. 5657-5671。

[3]格兰斯托姆,K.和A.纳塔莱,P.布拉卡,G.卢迪诺和F.塞拉菲诺。使用x波段海洋雷达数据扩展目标跟踪的伽马高斯逆Wishart概率假设密度地球科学与遥感汇刊。Vol. 53, no . 12, 2015, pp. 6617-6631。

扩展功能

在R2019a中引入