主要内容

trackerPHD

多传感器多目标跟踪博士

自从R2019a

描述

trackerPHD系统对象™是一个跟踪器能够处理来自多个传感器的多个目标的检测。跟踪器使用多目标概率假设密度(博士)滤波器来估计状态的点目标和扩展对象。博士是一个函数定义的状态跟踪系统,和它的价值在一个状态被定义为预期的目标状态空间体积单位的数量。博士学位由加权求和(混合物)的概率密度函数,和峰博士对应于可能的目标。如何追踪功能的概述,请参阅算法

默认情况下,trackerPHD可以跟踪扩展对象使用吗ggiwphd过滤器,它从一个扩展模型检测的对象作为解析点云。您还可以使用trackerPHDgmphd过滤器,跟踪点目标和扩展对象与指定的形状。输入生成的跟踪检测报告objectDetection,fusionRadarSensor,irSensor,或sonarSensor对象。跟踪输出所有保持跟踪和分析信息。

使用这个对象跟踪目标:

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

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

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

例子

跟踪器= trackerPHD (名称,值)设置跟踪器使用一个或多个属性名称-值对。例如,trackerPHD (' MaxNumTracks ', 100)创建一个博士跟踪器,允许最多100张光碟。在报价附上每个属性的名字。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

独特的跟踪标识符,指定为一个非负整数。这个属性的使用SourceIndex在跟踪输出,区分来自不同的追踪器的跟踪multiple-tracker系统。您必须指定这个属性是一个正整数使用跟踪跟踪熔化炉的输出作为输入。

例子:1

跟踪传感器的配置,指定为一个trackingSensorConfiguration对象的数组trackingSensorConfiguration对象,或一个细胞数组的数组trackingSensorConfiguration对象。这个属性提供了跟踪传感器的配置信息,例如传感器检测范围和传感器分辨率,追踪。请注意,没有默认值SensorConfigurations财产,你必须指定SensorConfigurations财产在使用跟踪器之前。不过,您可以通过设置更新配置HasSensorConfigurationsInput财产真正的并指定配置输入,配置。如果你设置MaxDetsPerObject财产的trackingSensorConfiguration对象,追踪只创建一个分区,这样一个检测可以分配给每个目标。

交替,您可以指定这个属性使用结构和字段名称相同的属性名trackingSensorConfiguration对象。

函数来检测分割成检测细胞,指定为一个函数处理或作为特征向量。当每个传感器可以报告多个检测每个对象,需要配分函数。配分函数报告所有可能的分区从一个传感器检测。在每个分区中,检测被分成相互排斥检测细胞,假设每个探测单元属于一个扩展的对象。

您还可以指定自己的检测配分函数。对于指导编写这个函数,您可以检查默认的分区功能的细节,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

数据类型:|

阈值组件删除指定为一个标量。在博士跟踪,如果一个组件的重量低于指定的值DeletionThreshold财产,组件被删除。

例子:0.01

数据类型:|

为组件合并阈值,指定为一个真正积极的标量。在博士跟踪,如果Kullback-Leibler组件之间的距离相同TrackID小于指定的值MergingThreshold属性,那么这些组件合并成一个组件。合并后的新组件的重量等于pre-merged组件的权重的总和。此外,如果合并后的体重高于第一阈值中指定LabelingThresholds财产,合并后的重量是截断第一阈值。注意组件TrackID等于0也可以相互融合。

例子:30.

数据类型:|

标签阈值,指定为1×3向量减少积极的价值观,(C1,C2,C3]。基于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对象。

数据类型:|

最大数量的跟踪器可以保持跟踪,指定为一个正整数。

数据类型:|

最大数量的组件的跟踪维护,指定为一个正整数。

请注意

跟踪器总是使用这个属性来设置组件的最大数量,跟踪器可以维护和忽略了MaxNumComponents属性集的跟踪滤波器对象(ggiwphdgmphd),您指定的SensorConfigurations财产。

数据类型:|

使用

过程检测和更新,电话追踪的论点,就好像它是一个函数(这里描述)。

描述

confirmedTracks=跟踪器(检测,时间)返回一个列表的更新追踪确认检测,检测在更新的时候,时间。确认跟踪纠正和预测更新时间。

例子

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

(confirmedTracks,tentativeTracks,allTracks)=跟踪器(___)还返回一个试探性的歌曲列表,tentativeTracks所有歌曲的列表,allTracks。您可以使用该输出与任何以前的语法输入语法。

(confirmedTracks,tentativeTracks,allTracks,analysisInformation)=跟踪器(___)还返回分析信息,analysisInformation,它可以用于跟踪分析。您可以使用该输出与任何以前的语法输入语法。

输入参数

全部展开

检测列表,指定的单元阵列objectDetection对象。的时间属性值的objectDetection对象必须是小于或等于当前更新时间,时间,比前面的时间值用于更新追踪。此外,时间不同的差异objectDetection单元阵列中的对象不需要平等。

更新的时候,指定为一个标量。跟踪更新所有的追踪。单位是秒。

时间必须大于或等于最大时间属性值的objectDetection对象的输入检测列表。时间必须增加的价值与每个更新的追踪。

数据类型:|

传感器配置,指定为数组结构,单元阵列结构,或单元阵列trackingSensorConfiguration对象。如果指定的值使用结构数组或单元阵列的结构,你必须包括SensorIndex为每个结构作为一个领域。其他字段是可选的,但每个字段的结构必须具有相同的名称的属性之一trackingSensorConfiguration对象。请注意,您只需要指定传感器配置,需要更新。例如,如果你只想更新IsValidTime的第五个传感器,指定配置作为结构(“SensorIndex”5“IsValidTime”,假)

提示

如果你有一个fusionRadarSensor跟踪系统中的传感器对象,您可以直接使用的配置结构传感器的输出对象作为输入。

依赖关系

要启用这个论点,设置HasSensorConfigurationsInput财产真正的

输出参数

全部展开

确认跟踪更新为当前时间,作为结构或返回的数组结构。每个结构对应于一个轨道。跟踪确认如果组件的重量总和超过指定的阈值ConfirmationThreshold财产。如果跟踪确认,IsConfirmed字段的结构真正的。确认轨道结构中定义的字段轨道结构

数据类型:结构体

试探性的痕迹,作为结构或返回的数组结构。每个结构对应于一个轨道。轨道是试探性的如果组件的重量总和超过指定的阈值ExtractionThreshold指定的属性,但低于阈值ConfirmationThreshold财产。在这种情况下,IsConfirmed字段的结构。结构中定义的字段轨道结构

数据类型:结构体

返回的所有痕迹,作为一个结构或一个结构数组。每个结构对应于一个轨道。所有曲目的集合包括确认和试探性的痕迹。结构中定义的字段轨道结构

数据类型:结构体

附加信息分析跟踪更新,作为一个结构返回。这种结构的字段有:

描述
CorrectionOrder

传感器用于状态估计的顺序调整,返回一个行向量的SensorIndex。例如,(1 2 3 4)。

TrackIDsAtStepBeginning

当步骤开始追踪id。

DeletedTrackIDs

IDs的痕迹删除步骤。

TrackIDsAtStepEnd

追踪id步骤结束时。

SensorAnalysisInfo

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

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

描述
SensorIndex

传感器指数。

DetectionCells

检测细胞,作为一个逻辑返回矩阵。矩阵的每一列代表一个细胞检测。在每一列,如果th元素是1,那么th检测属于检测细胞用列。

DetectionLikelihoods

组件之间的关联可能的密度函数和检测细胞,作为一个返回N——- - - - - -P矩阵。N是组件的数量密度函数,然后呢P检测细胞的数量。

IsBirthCells

表明如果检测细胞中列出DetectionCells生新线路,作为1 -返回P逻辑向量,P检测细胞的数量。

NumPartitions

分区的数量。

DetectionProbability

现有的概率跟踪被传感器探测到,指定为1×-N行向量,N是组件的数量密度函数。

LabelsBeforeCorrection

标签的组件的密度函数修正之前,返回1,b行向量。b是组件的数量保持在校正前的追踪。向量的每个元素TrackID。例如,[1 1 2 0 0]。请注意,多个组件可以共享相同的TrackID

LabelsAfterCorrection

标签的组件的密度函数修正后,返回1,一个行向量。一个是组件的数量保持在校正后的追踪。向量的每个元素TrackID。例如,[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]。

数据类型:结构体

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

predictTracksToTime 预测跟踪状态
deleteTrack 删除现有的跟踪
initializeTrack 初始化新轨道
sensorIndices 传感器的指标列表
exportTo金宝appSimulink 出口跟踪或跟踪熔化炉仿真软件模型金宝app
getPHDFilter 得到的副本博士过滤器
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
isLocked 确定系统对象在使用
克隆 创建重复的系统对象
重置 重置的内部状态系统对象

例子

全部折叠

设置传感器配置,创建一个博士跟踪器,和饲料检测的跟踪。

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

0.1秒后再次更新追踪通过假设目标以一个恒定的速度(1;2。0)单位每秒。

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

可视化检测和跟踪确认。

%获得测量数据检测。d =[检测{}):;测量= [d.Measurement];%提取位置确认跟踪使用getTrackPositions函数。%注意,我们使用默认的传感器配置% FilterInitializationFcn initcvggiwphd,它使用一个恒定的速度%模型并定义美国[x, vx; y; v; z; v)。positionSelector = [1 0 0 0 0 0; 0 0 1 0 0 0, 0 0 0 0 0 1);位置= 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”)

图包含一个坐标轴对象。坐标轴对象包含x, y ylabel包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表检测,轨道1,轨道2。

创建一个跟踪场景和指定它StopTimeUpdateRate属性。

场景= trackingScenario;场景。StopTime=Inf; scenario.UpdateRate = 0;

在场景中添加一个塔平台并指定它的维度。

塔=平台(场景中,“ClassID”3);塔。D我米ensions = struct(“长度”10“宽度”10“高度”现年60岁的“OriginOffset”30],[0 0);

添加一个汽车平台的场景。指定其维度和轨迹。

车=平台(场景中,“ClassID”2);的车。D我米ensions = struct(“长度”,4.7,“宽度”,1.8,“高度”,1.4,“OriginOffset”(-0.6 0 0.7));的车。Trajectory = waypointTrajectory([0 -15 -0.23;0.3 -29.5 -0.23;0.3 -42 -0.39;0.3 -56.5 -0.23;4.4 -0.3 -78.2 -0.23;-96.4 - -0.23),[0;1.4;2.7;4.1;6.3;8.2),“课程”,-88;-89;-89;-92;-84;-71年),“水平”,(10;10;10;10;10;10),“ClimbRate”,(0;0;0;0;0;0),“AutoPitch”,真的,“AutoBank”,真正的);

创建一个固定雷达,指定其属性,塔上的传感器。

NoScanning = fusionRadarSensor (“SensorIndex”,1“UpdateRate”10“MountingAngles”(-90 0 0),“FieldOfView”20 [10],“ScanMode”,“没有扫描”,“之内”,真的,“DetectionCoordinates”,“场景”,“TargetReportFormat”,“检测”,“HasElevation”,真正的);塔。传感器= NoScanning;

创建一个戏剧情节可视化传感器覆盖,跟踪和检测。

tp = theaterPlot (“XLim”,-58年[58],“YLim”,-104 (12)“ZLim”,-109年[8]);集(tp.Parent,“YDir”,“反向”,“ZDir”,“反向”);视图(tp.Parent, -37.5, 30);%平台绘图仪。platp = platformPlotter (tp,“DisplayName的”,“目标”,“MarkerFaceColor”,“k”);%检测传感器检测绘图仪。detp = detectionPlotter (tp,“DisplayName的”,“检测”,“MarkerSize”6“MarkerFaceColor”(0.85 0.325 0.098),“MarkerEdgeColor”,“k”,“历史”,10000);%覆盖率绘图仪传感器。covp = coveragePlotter (tp,“DisplayName的”,传感器覆盖的);%为跟踪航迹绘图仪。tPlotter = trackPlotter (tp,“DisplayName的”,“跟踪”);

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5线,类型的对象。一个或多个行显示的值只使用这些对象标记代表目标,检测,(历史),传感器覆盖,痕迹。

提取的传感器配置传感器和使用它来指定一个博士跟踪。

sensorConfig = trackingSensorConfiguration (scenario.Platforms {1} .Sensors {1},“SensorTransformFcn”@cvmeas,“FilterInitializationFcn”,@initcvggiwphd);追踪= trackerPHD (“SensorConfigurations”sensorConfig,“PartitioningFcn”@ (x) partitionDetections (4.7 x 1),“AssignmentThreshold”,20岁,“ExtractionThreshold”,0.8,“ConfirmationThreshold”,1.5,“MergingThreshold”,20岁,“DeletionThreshold”2 e 1“出生率”1 e - 3,“HasSensorConfigurationsInput”,真正的);

模拟场景中,生成检测,并使用检测跟踪汽车。在模拟更新戏剧情节。

推进(场景)& & ishghandle (tp.Parent)%生成传感器数据。[引爆器,配置,sensorConfigPIDs] =检测(场景);%读取传感器数据。allDets =[侦破{}):;如果~ isempty (allDets)%提取测量的位置。量=猫(2,allDets.Measurement) ';%提取测量噪声。allDets.MeasurementNoise measCov =猫(3日);其他的量= 0 (0,3);measCov = 0 (3 3 0);结束%获得正确的位置。truePoses = platformPoses(场景);truePosition = vertcat (truePoses (:) .Position);%更新跟踪检测和传感器配置。[cTracks, tTracks allTracks] =追踪(引爆器,配置,scenario.SimulationTime);%更新戏剧情节。plotPlatform (platp truePosition);plotDetection (detp量、measCov);plotCoverage (covp coverageConfig(场景));%更新跟踪绘图机。提取跟踪位置。positionSelector = [1 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 0 1);位置= getTrackPositions (cTracks positionSelector);%标签和阴谋。如果~ isempty (cTracks)标签=电池(元素个数(cTracks), 1);i = 1:元素个数(cTracks)标签{我}= {(“T”num2str (cTracks(我).TrackID)]};结束plotTrack (tPlotter,位置,标签);结束drawnow结束

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含9线,类型的对象,文本。一个或多个行显示的值只使用这些对象标记代表目标,检测,(历史),传感器覆盖,痕迹。

更多关于

全部展开

算法

全部展开

引用

[1]Granstorm, K。,C。Lundquiest, and O. Orguner. " Extended target tracking using a Gaussian-mixture PHD filter."IEEE航空航天和电子系统。48卷,4号,2012年,页3268 - 3286。

[2]Granstorm, K。,O. Orguner." A PHD filter for tracking multiple extended targets using random matrices."IEEE信号处理。60卷,11号,2012年,页5657 - 5671。

[3]Granstorm, K。,A. Natale, P. Braca, G. Ludeno, and F. Serafino."Gamma Gaussian inverse Wishart probability hypothesis density for extended target tracking using X-band marine radar data."IEEE地球科学和遥感。53卷,12号,2015年,页6617 - 6631。

[4]附近潘塔,译注),et al . "数据关联和跟踪管理高斯混合概率假设密度滤光片。”IEEE航空航天和电子系统,45卷,不。3、2009年7月,页1003 - 16。

[5]Ristic B。,et al. “Adaptive Target Birth Intensity for PHD and CPHD Filters.”IEEE航空航天和电子系统,48卷,不。2,2012年,页1656 - 68。

扩展功能

版本历史

介绍了R2019a

全部展开