trackerPHD
多传感器,多目标PHD跟踪器
描述
的trackerPHD
System object™是一种跟踪器,能够处理来自多个传感器的多个目标的检测。该跟踪器使用多目标概率假设密度(PHD)滤波器来估计点目标和扩展目标的状态。PHD是定义在跟踪系统状态空间上的函数,其在某一状态下的值定义为单位状态空间体积上目标的期望数量。PHD由概率密度函数的加权和(混合)表示,PHD的峰值对应可能的目标。有关跟踪器功能的概述,请参见算法.
默认情况下,trackerPHD
是否可以跟踪扩展对象ggiwphd
过滤器,它将来自扩展对象的检测建模为解析点云。你也可以使用trackerPHD
与gmphd
过滤器,用于跟踪具有指定形状的点目标和扩展对象。跟踪器的输入是由生成的检测报告objectDetection
,fusionRadarSensor
,irSensor
,或sonarSensor
对象。跟踪器输出所有维护的轨迹及其分析信息。
使用此对象跟踪目标。
创建
trackerPHD
对象并设置其属性。使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见什么是系统对象?
创建
描述
创建一个跟踪器
= trackerPHDtrackerPHD
具有默认属性值的系统对象。
使用一个或多个名称-值对设置跟踪器的属性。例如,跟踪器
= trackerPHD (名称,值
)trackerPHD (' MaxNumTracks ', 100)
创建一个PHD跟踪器,允许最多100个轨道。将每个属性名用引号括起来。
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
功能解锁它们。
如果属性为可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计.
TrackerIndex
- - - - - -唯一跟踪器标识符
0
(默认)|非负整数
唯一跟踪器标识符,指定为非负整数。属性用作SourceIndex
在跟踪器输出中,并区分来自多跟踪器系统中不同跟踪器的跟踪。必须将此属性指定为正整数,才能将音轨输出用作音轨熔断器的输入。
例子:1
SensorConfigurations
- - - - - -跟踪传感器配置
trackingSensorConfiguration
对象|的数组trackingSensorConfiguration
对象|单元格阵列trackingSensorConfiguration
对象|等价结构格式
跟踪传感器的配置,指定为trackingSensorConfiguration
对象的数组trackingSensorConfiguration
对象,或者单元格数组的数组trackingSensorConfiguration
对象。此属性向跟踪器提供跟踪传感器配置信息,例如传感器检测限制和传感器分辨率。方法没有默认值SensorConfigurations
属性,并且必须指定SensorConfigurations
属性,然后再使用跟踪器。方法来更新配置HasSensorConfigurationsInput
财产真正的
并指定配置输入,配置
.如果你设置MaxDetsPerObject
的属性trackingSensorConfiguration
对象设为1时,跟踪器只创建一个分区,这样最多可以给每个目标分配一个检测。
属性的属性名相同的结构也可以指定此属性trackingSensorConfiguration
对象。
PartitioningFcn
- - - - - -函数将检测划分为检测单元
@partitionDetections
(默认)|函数处理|特征向量
函数将检测划分为检测单元格,指定为函数句柄或字符向量。当每个传感器对一个对象可以报告多个检测时,需要一个配分函数。分区函数报告来自传感器的所有可能的检测分区。在每个分区中,检测被分离为互斥的检测单元,假设每个检测单元属于一个扩展对象。
您还可以指定自己的检测分区函数。为了指导如何编写这个函数,您可以查看默认分区函数的详细信息,partitionDetections
,使用类型
命令为:
类型partitionDetections
例子:@myfunction
或“myfunction”
数据类型:function_handle
|字符
出生率
- - - - - -出生率的新目标在密度上
1 e - 3
(默认)|正实标量
新目标的出生率在密度中,指定为标量。出生率表示单位时间内在密度中增加的预期目标数。出生密度是通过使用FilterInitializationFcn
的trackingSensorConfiguration
与跟踪器一起使用。一般来说,跟踪器以两种方式向密度函数添加分量:
预测出生密度-由初始化的密度
FilterInitializationFcn
函数在没有输入的情况下调用。自适应出生密度-初始化的密度
FilterInitializationFcn
函数调用时使用检测输入。跟踪器根据它们与目标当前估计的关联的对数似然选择检测。
的值出生率
属性表示每个时间步的预测出生密度和自适应出生密度之和。
例子:0.01
数据类型:单
|双
死亡率
- - - - - -密度组分的死亡率
1 e-6
(默认)|正实标量
密度中组件的死亡率,指定为标量。死亡率是指在一个时间步后,一个成分在密度中消失的比率。死亡率(Pd)与存活概率(P年代)在连续时间步长之间的分量
在哪里ΔT是时间步长。
例子:1的军医
数据类型:单
|双
AssignmentThreshold
- - - - - -为组件初始化选择检测的阈值
25
(默认)|实正标量
为组件初始化选择检测的阈值,指定为正标量。在校正过程中,跟踪器计算现有轨迹和检测单元之间关联的可能性。如果一个检测单元与所有现有轨迹的关联似然(由负对数似然给出)高于阈值(这意味着该检测单元与现有轨迹的关联似然较低),则使用该检测单元初始化自适应出生密度中的新组件。
例子:18.1
数据类型:单
|双
ExtractionThreshold
- - - - - -初始化暂定轨道的阈值
0.5
(默认)|实正标量
初始化暂定轨道的阈值,指定为标量。组件的权重值高于告警阈值ExtractionThreshold
属性时,该组件被标记为“初步”
跟踪并给出一个TrackID
.
例子:0.45
数据类型:单
|双
ConfirmationThreshold
- - - - - -航迹确认阈值
0.8
(默认)|实正标量
跟踪确认的阈值,指定为标量。在一个trackerPHD
对象时,一个轨道可以有多个共享相同的组件TrackID
.方法指定的阈值ConfirmationThreshold
属性时,轨道的状态标记为“确认”
.
例子:0.85
数据类型:单
|双
DeletionThreshold
- - - - - -组件删除阈值
1 e - 3
(默认)|实正标量
组件删除的阈值,指定为标量。在PHD跟踪器中,如果组件的权重低于DeletionThreshold
属性,则删除该组件。
例子:0.01
数据类型:单
|双
MergingThreshold
- - - - - -组件合并阈值
25
(默认)|实正标量
组件合并的阈值,指定为实正标量。在PHD跟踪器中,如果组件之间的柯back- leibler距离具有相同TrackID
的值小于MergingThreshold
属性,则这些组件将合并为一个组件。新组件的合并权值等于预合并组件权值的和。方法中指定的第一个阈值LabelingThresholds
属性时,合并权重被截断为第一个阈值。请注意,带有TrackID
等于0
也可以相互合并。
例子:30.
数据类型:单
|双
LabelingThresholds
- - - - - -标签管理阈值
[1.1 1 0.8]
(默认)|1乘3的正向量
标记阈值,指定为正数值递减的1 × 3向量,[C1,C2,C3.].基于LabelingThresholds
属性,跟踪器使用以下规则管理密度中的组件:
高于第一个阈值的任何组件的权重C1被简化为C1.
对于所有组件具有相同的
TrackID
,如果这些分量中最大的权重大于C2,则保留重量最大的构件以保留TrackID
,而所有其他组件将被删除。对于所有组件具有相同的
TrackID
,如果最大权重与所有这些分量的权重总和之比大于C3.,则保留重量最大的构件以保留TrackID
,而所有其他组件将被删除。如果条件2和条件3都不满足,则权值最大的分量保留
TrackID
,其他组件的标签均为0。当这种情况发生时,本质上意味着某些组件可能表示其他对象。这种处理方法保留了这些未保留成分在未来再次提取的可能性。
数据类型:单
|双
HasSensorConfigurationsInput
- - - - - -允许随时间更新传感器配置
假
(默认)|真正的
启用随时间更新传感器配置,指定为假
或真正的
.将此属性设置为真正的
如果你想要传感器的配置随时间更新。此外,当此属性设置为真正的
时,跟踪器必须使用配置输入调用,配置
,如用法语法所示。
数据类型:逻辑
StateParameters
- - - - - -航迹状态参考系参数
结构([])
(默认)|结构体数组
轨迹状态参考系的参数,指定为结构或结构数组。追踪者通过它StateParameters
属性值。StateParameters
属性。您可以使用这些参数来定义报告航迹的参考框架或生成航迹的其他所需属性。
例如,您可以使用以下结构来定义一个矩形参考系,其原点位置为[10 10 0]
米,它的起始速度是[2 -2 0]米/秒。
字段名 | 价值 |
---|---|
框架 |
“矩形” |
位置 |
[10 10 0] |
速度 |
[2 -2 0] |
可调:是的
数据类型:结构体
NumTracks
- - - - - -跟踪器维护的轨道数
非负整数
此属性是只读的。
跟踪器维护的轨道数,作为非负整数返回。
数据类型:双
NumConfirmedTracks
- - - - - -确认航迹数
非负整数
此属性是只读的。
已确认的轨道数,以非负整数返回。如果IsConfirmed
输出轨道结构的场为真正的
,航迹已确认。
数据类型:双
MaxNumSensors
- - - - - -最大传感器数量
20.
(默认)|正整数
可连接到跟踪器的最大传感器数量,指定为正整数。MaxNumSensors
必须大于或等于的最大值SensorIndex
用于更新追踪器的所有检测中都有。SensorIndex
是的属性吗objectDetection
对象。
数据类型:单
|双
MaxNumTracks
- - - - - -最大轨道数
1000
(默认)|正整数
跟踪器可以维护的最大轨道数,指定为正整数。
数据类型:单
|双
MaxNumComponents
- - - - - -最大组件数
1000
(默认)|正整数
跟踪器可以维护的最大组件数,指定为正整数。
数据类型:单
|双
使用
要处理检测和更新轨道,使用参数调用跟踪器,就好像它是一个函数一样(在这里描述)。
语法
描述
返回从检测列表中更新的已确认航迹列表,confirmedTracks
=跟踪器(检测
,时间
)检测
,在更新时,时间
.已确认的航迹被修正并预测到更新时间。
还指定了传感器配置输入,confirmedTracks
=跟踪器(检测
,配置
,时间
)配置
.当传感器的配置随时间变化时,请使用此语法。要启用此语法,请设置HasSensorConfigurationsInput
财产真正的
.
[
还返回一个暂定曲目列表,confirmedTracks
,tentativeTracks
,allTracks
=跟踪器(___)tentativeTracks
,以及所有曲目的列表,allTracks
.您可以将此输出语法与前面的任何输入语法一起使用。
[
还返回分析信息,confirmedTracks
,tentativeTracks
,allTracks
,analysisInformation
=跟踪器(___)analysisInformation
,可用于航迹分析。您可以将此输出语法与前面的任何输入语法一起使用。
输入参数
检测
- - - - - -检测列表
单元格阵列objectDetection
对象
的单元格数组指定的检测列表objectDetection
对象。的时间
每个的属性值objectDetection
对象必须小于或等于当前更新时间,时间
,并且大于用于更新跟踪器的前一个时间值。此外,时间
不同之间的差异objectDetection
单元格数组中的对象不需要相等。
时间
- - - - - -更新时间
标量
更新时间,指定为标量。跟踪器更新到此时间的所有轨道。单位是秒。
时间
必须大于或等于最大值时间
的属性值。objectDetection
输入中的对象检测
列表。时间
必须随着跟踪器的每次更新而增加值。
数据类型:单
|双
配置
- - - - - -传感器配置
结构阵列|细胞阵列结构|单元格阵列trackingSensorConfiguration
对象
传感器配置,指定为结构数组、结构的单元格数组或的单元格数组trackingSensorConfiguration
对象。如果使用结构数组或单元格结构数组指定值,则必须包含SensorIndex
作为每个结构的字段。属性的某个属性具有相同的名称,但结构中的每个字段都是可选的trackingSensorConfiguration
对象。请注意,您只需要指定需要更新的传感器配置。例如,如果您只想更新IsValidTime
第五个传感器的属性,指定配置
作为结构(“SensorIndex”5“IsValidTime”,假)
.
提示
如果你有fusionRadarSensor
跟踪系统中的传感器对象,可以直接使用传感器对象的配置结构输出作为此输入。
依赖关系
要启用此参数,请设置HasSensorConfigurationsInput
财产真正的
.
输出参数
confirmedTracks
-确认航迹
结构|数组的结构
已确认的轨道更新到当前时间,作为结构或结构数组返回。每个结构对应一个轨道。属性指定的阈值以上,则确认轨道ConfirmationThreshold
财产。如果一个轨道被确认,IsConfirmed
结构的场为真正的
.中定义了已确认轨迹结构的字段轨道结构.
数据类型:结构体
tentativeTracks
-暂定轨道
结构|数组的结构
作为结构或结构数组返回的暂定轨道。每个结构对应一个轨道。属性指定的阈值之上,则轨道为暂定轨道ExtractionThreshold
属性指定的阈值,但小于ConfirmationThreshold
财产。在这种情况下,IsConfirmed
结构的场为假
.结构的字段定义在轨道结构.
数据类型:结构体
allTracks
-所有轨道
结构|数组的结构
所有轨道,作为结构体或结构体数组返回。每个结构对应一个轨道。所有轨道的集合由确认轨道和暂定轨道组成。结构的字段定义在轨道结构.
数据类型:结构体
analysisInformation
-用于分析轨道更新的附加信息
结构
用于分析曲目更新的附加信息,作为结构返回。该结构的字段为:
场 | 描述 |
CorrectionOrder |
传感器用于状态估计校正的顺序,作为的行向量返回 |
TrackIDsAtStepBeginning |
跟踪步骤开始时的id。 |
DeletedTrackIDs |
步骤中删除的音轨id。 |
TrackIDsAtStepEnd |
跟踪步骤结束时的id。 |
SensorAnalysisInfo |
单元阵列传感器分析信息。 |
的SensorAnalysisInfo
字段可以包含多个传感器信息报告。每个报告都是一个结构,包含:
场 | 描述 |
SensorIndex |
传感器指数。 |
DetectionCells |
检测单元格,作为逻辑矩阵返回。矩阵的每一列表示一个检测单元。在每列中,如果我第Th元素是1,然后我该检测属于该列表示的检测单元。 |
DetectionLikelihoods |
密度函数中各分量与检测单元之间的关联可能性,以an形式返回N——- - - - - -P矩阵。N密度函数中分量的数量,和P是检测单元数。 |
IsBirthCells |
中列出的检测单元格 |
NumPartitions |
分区数。 |
DetectionProbability |
传感器检测到现有轨道的概率,指定为1 × -N行向量,其中N是密度函数中分量的数量。 |
LabelsBeforeCorrection |
校正前密度函数中各分量的标签,返回为1 × -米b行向量。米b是修正前跟踪器中维护的组件数量。向量的每个元素都是a |
LabelsAfterCorrection |
校正后密度函数中各组分的标签,返回为1 × -米一个行向量。米一个是修正后的跟踪器中保持的组件数。向量的每个元素都是a |
WeightsBeforeCorrection |
校正前密度函数中各分量的权重,以1 × -的形式返回米b行向量。米b是修正前跟踪器中维护的组件数量。向量的每个元素都是中给出的相应分量的权值 |
WeightsAfterCorrection |
校正后密度函数中各分量的权重,以1 × -的形式返回米一个行向量。米一个是修正后的跟踪器中保持的组件数。向量的每个元素都是中给出的相应分量的权值 |
数据类型:结构体
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj
,使用这种语法:
发行版(obj)
特定于trackerPHD
predictTracksToTime |
预测航迹状态 |
deleteTrack |
删除现有轨道 |
initializeTrack |
初始化新轨道 |
sensorIndices |
传感器指标列表 |
exportTo金宝appSimulink |
导出跟踪器或跟踪fuser到Simulink模型金宝app |
例子
使用trackerPHD跟踪两个对象
设置传感器配置,创建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”)
跟踪车辆在跟踪场景使用trackerPHD
创建一个跟踪场景并指定它StopTime
而且UpdateRate
属性。
scenario = trackingScenario;场景。StopTime=Inf; scenario.UpdateRate = 0;
在场景中添加一个塔平台,并指定其尺寸。
塔=平台(场景,“ClassID”3);塔。D我米ensions = struct(...“长度”10...“宽度”10...“高度”现年60岁的...“OriginOffset”,[0 0 30]);
在场景中添加一个汽车平台。指定它的尺寸和轨迹。
汽车=平台(场景,“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 -56.5 -0.23;...-0.3 -78.2 -0.23;4.4 -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”,真正的);塔。传感器=未扫描;
创建一个剧院情节可视化传感器覆盖,跟踪和探测。
tp = theaterPlot(“XLim”, -58年[58],“YLim”, -104 (12)“ZLim”, -109年[8]);设置(tp。父母,“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的”,“跟踪”);
提取传感器的传感器配置,并用它来指定PHD跟踪器。
sensorConfig = trackingSensorConfiguration(scenario.Platforms{1}.Sensors{1},...“SensorTransformFcn”@cvmeas,“FilterInitializationFcn”, @initcvggiwphd);追踪器=追踪器“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”,真正的);
模拟场景,生成检测,并使用检测来跟踪汽车。在模拟过程中更新剧场情节。
而advance(scenario) && ishhandle (tp.Parent)生成传感器数据。[dets,configs, sensorconfigpid] = detect(场景);读取传感器数据。allDets = [dets{:}];如果~ isempty (allDets)提取测量位置。meas = cat(2, alldes . measurement)';提取测量噪声。measCov = cat(3, alldds . measurementnoise);其他的Meas = 0 (0,3);measCov = 0 (3,3,0);结束获得正确的位置。truepose =平台姿势(场景);truePosition = vertcat(truepositions (:).Position);使用检测和传感器配置更新跟踪器。。[cTracks,tTracks,allTracks] = tracker(dets,configs,scenario.SimulationTime);更新戏剧情节。plotPlatform (platp truePosition);plotDetection (detp量、measCov);plotCoverage (covp coverageConfig(场景));更新轨迹绘图仪。提取航迹位置。positionSelector = [1 0 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 0 0];位置= getTrackPositions(cTracks,positionSelector);标记并绘制轨道。如果~isempty(cTracks)标签= cell(数字(cTracks),1);为i =1:数字(cTracks)标签{i} = {[“T”num2str (cTracks(我).TrackID)]};结束plotTrack (tPlotter,位置,标签);结束drawnow结束
更多关于
轨道结构
跟踪信息以结构数组的形式返回,包含以下字段:
场 | 描述 |
TrackID |
标识音轨的唯一整数。 |
SouceIndex |
多个跟踪器环境中跟踪器的唯一标识符。的 |
UpdateTime |
轨道更新的时间。 |
年龄 |
轨道存活的次数。 |
状态 |
状态向量在更新时的值。 |
StateCovariance |
不确定度协方差矩阵。 |
程度上 |
跟踪对象的空间范围估计,返回为d——- - - - - -d矩阵,d是对象的维度。此字段仅在跟踪筛选器指定为时返回 |
MeasurementRate |
来自被跟踪对象的预期探测数。此字段仅在跟踪筛选器指定为时返回 |
IsConfirmed |
如果假定轨道是真实目标,则为。 |
IsCoasted |
|
ObjectClassID |
|
StateParamaters |
方法中指定的航迹状态参考系的参数 |
IsSelfReported |
指示跟踪器是否报告了跟踪。该字段用于履带融合环境。它返回为 |
算法
跟踪器逻辑流程
trackerPHD
采用迭代校正方法,通过对多个传感器的检测信息进行顺序处理来更新概率假设密度。工作流程trackerPHD
以下步骤:
跟踪器根据传感器的检测报告时间对传感器进行排序,并据此确定修正顺序。
跟踪器考虑了两种不同的密度:当前密度和出生密度。当前密度是从前一个时间步长传播的目标密度。出生密度是在当前时间步长中期望出生的目标的密度。
对于每个传感器:
跟踪器预测电流密度的传感器时间戳使用的生存概率计算从
死亡率
以及上次预测的时间。跟踪器添加新的组件到出生密度使用
FilterInitializationFcn
没有输入。这与预测出生密度相对应。跟踪器使用指定的函数从当前传感器创建检测分区
PartitioningFcn
财产。每个分区是将每个对象的检测分割为检测单元的一种可能方法。如果SensorConfiguration
指定了MaxNumDetsPerObject
作为1,跟踪器只生成1个分区,其中每个检测都是一个独立的单元。每个检测单元相对于电流密度进行评估,并为每个检测单元计算一个对数似然值。
使用对数似然值,跟踪器计算每个分区的概率。
跟踪器使用每个检测单元纠正电流密度。
对于具有高负对数似然(大于
AssignmentThreshold
),追踪器会使用FilterInitializationFcn
.这与适应性出生密度相对应。
在每个传感器校正电流密度后,跟踪器将出生密度添加到电流密度中。跟踪器确保出生密度中可能的目标数量等于
出生率
×dT,在那里dT是时间步长。然后预测电流密度到当前更新时间。
概率假设密度
概率假设密度(PHD)是定义在跟踪系统状态空间上的函数,其在某一状态下的值定义为单位状态空间体积上目标的期望数量。PHD通常是由一些成分的混合来近似的,每个成分对应于对状态的估计。PHD常用的近似有高斯混合、SMC混合、GGIW混合、GIW混合。
为了理解PHD,我们以高斯混合为例。高斯混合可以用
在哪里米是组分的总数,N(x|米我,P我)是具有均值的正态分布米我和协方差P我,w我是重量的吗我组件。重量w我对象表示的目标数,可以是小数我组件。集成的D(x)在一个状态空间区域上产生该区域的预期目标数。集成D(x)在整个状态空间上,得到总期望目标数(∑w我),因为在整个状态空间上的正态分布的积分是1。的x的峰值(局部最大值)的坐标D(x)表示目标最可能的状态。
例如,下图演示了由给出的PHD函数D(x) =N(x|−4,2)+ 0.5N(x|3,0.4) + 0.5N(x| 4, 0.4)。这些分量的权重之和为2,这意味着可能存在两个目标。从山顶D(x)表示这些目标的可能位置x=−4,x= 3,和x= 4。请注意,最后两个组件彼此非常接近,这意味着这两个组件可以归属于一个对象。
参考文献
格兰斯托姆,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。
[4] Panta, Kusha等,“高斯混合概率假设密度滤波器的数据关联和轨迹管理”。IEEE航空航天与电子系统汇刊,第45卷,no。3, 2009年7月,第1003-16页。
[5] Ristic, B.等,“PHD和CPHD滤波器的自适应目标出生强度。”IEEE航空航天与电子系统汇刊,第48卷,no。2, 2012,第1656-68页。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
看到系统对象在MATLAB代码生成(MATLAB编码器).
所有检测必须具有相同大小和类型的属性。
跟踪器支持金宝app严格的单精度带有以下限制的代码生成:
必须在每个中指定筛选器初始化函数为单精度
trackingSensorConfiguration
对象。每个中指定的筛选器
trackingSensorConfiguration
对象必须使用支持单精度的运动和测量模型。金宝app
有关详情严格的单精度代码生成,请参见使用严格的单精度和非动态内存分配生成代码.
跟踪器支持金宝app非动态内存分配带有以下限制的代码生成:
您必须指定
MaxNumDetections
而且MaxNumDetsPerObject
每个的属性trackingSensorConfiguration
对象作为有限整数。您必须指定
MaxNumComponents
属性作为有限整数。您必须指定
MaxNumTracks
属性作为有限整数。
有关详情非动态内存分配代码生成,请参见使用严格的单精度和非动态内存分配生成代码.
版本历史
在R2019a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。