主要内容

trackerGNN

多传感器,多目标跟踪器使用GNN分配

描述

trackerGNNSystem object™是一种跟踪器,能够处理来自多个传感器的多个目标的检测。跟踪器采用全局最近邻(GNN)分配算法。跟踪器初始化、确认、预测、更正和删除跟踪。跟踪器的输入是由生成的检测报告objectDetectionfusionRadarSensorirSensor,或sonarSensor对象。跟踪器估计每个轨迹的状态向量和状态向量协方差矩阵。每个检测最多分配给一个轨道。如果检测不能分配给任何轨道,跟踪器初始化一个新的轨道。

任何新的轨道开始于<年代pan class="emphasis">试探性的状态。如果有足够多的探测被分配给一个暂定轨道,它的状态将变为<年代pan class="emphasis">确认.如果检测已经有一个已知的分类ObjectClassID返回轨道的字段为非零),则该轨道立即被确认。当一个轨迹被确认时,跟踪器认为该轨迹代表一个物理对象。如果在指定数量的更新内未将检测分配给音轨,则删除音轨。

跟踪使用此对象的对象:

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

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

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

创建

描述

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

例子

跟踪器= trackerGNN (名称,值使用一个或多个名称-值对设置跟踪器的属性。例如,trackerGNN (FilterInitializationFcn, @initcvukf MaxNumTracks, 100)创建一个多目标跟踪器,使用恒定速度,无味卡尔曼滤波器,并允许最多100个轨道。将每个属性名用引号括起来。

属性

全部展开

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

如果属性为<年代pan class="emphasis">可调,您可以随时更改其值。

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

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

例子:1

过滤器初始化函数,指定为函数句柄或包含过滤器初始化函数名称的字符向量。跟踪器在创建新轨道时使用过滤器初始化函数。

传感器融合和跟踪工具箱™提供了许多初始化函数,您可以使用它们进行指定FilterInitializationFcn

初始化函数 函数定义
initcvabf 初始化等速alpha-beta滤波器
initcaabf 初始化恒加速度alpha-beta滤波器
initcvekf 初始化等速扩展卡尔曼滤波器。
initcackf 初始化恒加速度容积滤波器。
initctckf 初始化常转率容积过滤器。
initcvckf 初始化等速容积滤波器。
initcapf 初始化常数加速度粒子滤波器。
initctpf 初始化常数回合率粒子滤波器。
initcvpf 初始化等速粒子滤波器。
initcvkf 初始化等速线性卡尔曼滤波器。
initcvukf 初始化等速无气味卡尔曼滤波器。
initcaekf 初始化常加速度扩展卡尔曼滤波器。
initcakf 初始化恒加速度线性卡尔曼滤波器。
initcaukf 初始化恒加速度无味卡尔曼滤波器。
initctekf 初始化常转率扩展卡尔曼滤波器。
initctukf 初始化常转率无气味卡尔曼滤波器。
initcvmscekf 初始化等速修正球坐标扩展卡尔曼滤波器。
initrpekf 初始化等速范围参数化扩展卡尔曼滤波器。
initapekf 初始化等速角参数化扩展卡尔曼滤波器。
initekfimm 初始化跟踪IMM过滤器。
initsingerekf 初始化歌手加速扩展卡尔曼滤波器。

你也可以编写自己的初始化函数。该函数必须具有以下语法:

filter = filterInitializationFcn(检测)
该函数的输入是一个检测报告,类似于由objectDetection.该函数的输出必须是一个过滤器对象:trackingKFtrackingEKFtrackingUKFtrackingCKFtrackingPFtrackingMSCEKFtrackingGSFtrackingIMM,或trackingABF

为了指导您编写这个函数,您可以在MATLAB中检查所提供函数的细节<年代up>®.例如:

类型<年代pan style="color:#A020F0">initcvekf

数据类型:function_handle|字符

分配算法,指定为“MatchPairs”“Munkres”“Jonker-Volgenant”“拍卖”,或“自定义”.Munkres是唯一保证最优解的分配算法,但它也是最慢的,特别是对于大量的探测和跟踪。其他算法不能保证最优解决方案,但可以更快地解决具有20或更多轨道和检测的问题。使用“自定义”方法中定义自己的赋值函数并指定其名称CustomAssignmentFcn财产。

例子:“自定义”

数据类型:字符

自定义赋值函数名,指定为字符串。赋值函数必须具有以下语法:

[assign,unTrs,unDets] = f(cost,costNonAssignment)
有关赋值函数的示例及其参数的描述,请参见assignmunkres

依赖关系

属性可启用此属性赋值财产“自定义”

数据类型:字符

用于分配的检测和跟踪的聚类,指定为“关闭”“上”

  • “关闭”跟踪器使用成本矩阵解决了每个传感器的全局最近邻分配问题。成本矩阵中的列数等于传感器检测到的数,行数等于跟踪器维护的轨道数。禁止赋值(代价大于AssignmentThreshold)具有无限的赋值成本。

  • “上”—跟踪器在分离出被禁止的分配(开销大于的分配)后创建一个集群AssignmentThreshold),并使用被禁止的赋值来基于AssignmentThreshold财产。一个集群是被认为相互分配的探测和轨道的集合。在这种情况下,跟踪器解决了每个簇的全局最近邻分配问题。

    当您同时将此属性指定为“上”并指定EnableMemoryManagement财产真正的,你可以使用这三个属性来指定跟踪器中某些可变大小数组的边界,以及确定跟踪器如何处理集群大小的违规:

    • MaxNumDetectionsPerCluster

    • MaxNumTracksPerCluster

    • ClusterViolationHandling

    为可变大小的数组指定边界使您能够管理跟踪器的内存占用,特别是在生成的C/ c++代码中。

数据类型:字符|字符串

检测分配阈值(或门控阈值),指定为正标量或1 × 2向量[C1C2),C1C2.如果指定为标量,则指定的值瓦尔,将扩展至[瓦尔].

最初,跟踪器执行<年代pan class="emphasis">估计所有航迹与探测点之间的归一化距离。跟踪器只计算<年代pan class="emphasis">准确的组合的归一化距离<年代pan class="emphasis">归一化距离小于C2.此外,跟踪器只能分配检测到一个轨道,如果他们<年代pan class="emphasis">准确的归一化距离小于C1.看到算法对于标准化距离的解释。

  • 增加价值C2如果有跟踪和检测的组合,应该计算分配,但没有。如果成本计算时间太长,可以减少。

  • 增加价值C1如果有检测,应该分配到轨道,但没有。如果有一些检测被分配到不应该被分配到的轨道(太远),就减少它。

请注意

如果的值C2是有限的,状态转移函数和测量函数,指定在跟踪滤波器中使用的跟踪器,必须能取一个——- - - - - -N作为输入和输出的状态矩阵N预测状态和N分别测量。是国家的大小。N状态数,是一个任意的非负整数。

确认和删除逻辑类型,指定为“历史”“分数”

  • “历史”-轨道确认和删除是基于轨道在最新跟踪器更新中被分配到检测的次数。

  • “分数”-轨迹确认和删除基于对数似然轨迹评分。分数越高,这条轨迹就越有可能是有效的。分数低意味着这条轨迹更有可能是虚报。

轨迹确认的阈值,指定为标量或1 × 2向量。属性设置的跟踪确认和删除逻辑类型取决于该阈值TrackLogic财产。

  • History—将确认阈值指定为1 × 2向量(mn).一个轨道如果接收到至少,则被确认在最后的探测N更新。默认值为(2、3)

  • 评分—将确认阈值指定为标量。如果一个赛道的分数大于或等于确认阈值,则该赛道被确认。默认值为20.

数据类型:|

删除轨道所需的最低分数,指定为标量或1 × 2实值向量。属性设置的跟踪确认和删除逻辑类型取决于该阈值TrackLogic属性:

  • History—指定确认阈值为[P R].如果已确认的航迹未分配给任何检测P最后的时代R跟踪器更新,然后删除轨道。

  • 分数-如果一个音轨的分数比最大音轨分数降低了至少一个阈值,那么它将被删除。

例子:3.

数据类型:|

检测概率,指定为0到1之间的正标量。此属性用于计算轨道分数。

例子:0.5

数据类型:|

误报的概率,用标量表示。此属性用于计算轨道分数。

例子:1 e-5

数据类型:|

每单位体积新音轨的比率,指定为正标量。在轨道初始化时,新轨道的速率用于计算轨道分数。

例子:2.5

数据类型:|

传感器测量仓的体积,指定为正标量。例如,如果雷达产生一个4-D测量,其中包括方位角、高程、距离和距离率,4-D体积由雷达角波束宽度、距离库宽度和距离率库宽度定义。在初始化和更新音轨时,音量用于计算音轨分数。

例子:1.5

数据类型:|

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

数据类型:|

可连接到跟踪器的最大传感器数量,指定为正整数。MaxNumSensors必须大于或等于的最大值SensorIndex用于更新追踪器的所有检测中都有。SensorIndex是的属性吗objectDetection对象。的MaxNumSensors属性决定有多少组ObjectAttributes每个输出轨道可以拥有的字段。

数据类型:|

跟踪器可以作为输入的最大检测数,指定为正整数。

数据类型:|

处理无序测量(OOSM),具体为“终止”“忽略”,或“Retrodiction”.每个检测都有一个相关的时间戳,td,跟踪器有自己的时间戳,tt,在每次对跟踪器的调用中更新。跟踪器将测量结果视为OOSM,如果td<tt

当您将此属性指定为

  • “终止”—当跟踪器遇到无序测量时停止运行。

  • “忽略”-跟踪器忽略任何无序测量并继续运行。

  • “Retrodiction”-跟踪器使用追溯算法更新跟踪器,要么忽略OOSM,更新现有的轨道,要么使用OOSM创建新的轨道。属性的筛选器初始化函数trackingKFtrackingEKF,或trackingIMM对象中的FilterInitializationFcn财产。

如果将此属性指定为“Retrodiction”,跟踪器按照以下步骤处理OOSM:

  • 对象指定的最旧的修正时间戳(OOSM时间戳)MaxNumOOSMSteps属性)由跟踪器维护,跟踪器丢弃OOSMs。

  • 如果OOSM时间戳在跟踪器维护的最古老的修正时间戳内,跟踪器首先将所有现有的跟踪回溯到OOSM的时间。然后,跟踪器应用全局最近邻算法来尝试将OOSM与任何反向跟踪相关联。

    • 如果跟踪器成功地将OOSM关联到反向航迹,则跟踪器通过应用反向修正算法来使用OOSM更新反向航迹,以获得当前的、经过修正的航迹。

    • 如果跟踪器无法将OOSM与任何追溯的轨道相关联,则跟踪器将基于OOSM创建一个新的轨道,并预测到当前时间的轨道。

有关回溯和回溯修正算法的详细信息,请参见回溯和回溯修正.要模拟无序检测,使用objectDetectionDelay

请注意

  • 当你选择“Retrodiction”,则不能使用costMatrix输入。

可调:是的

最大无序测量步数(OOSM),指定为正整数。

增加此属性的值需要更多内存,但是可以使用相对于上一个时间戳具有较大延迟的OOSMs调用跟踪器。然而,随着滞后的增加,OOSM对轨道当前状态的影响减小。此属性的推荐值为3.

依赖关系

要启用此参数,请设置OOSMHandling财产“Retrodiction”

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

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

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

可调:是的

数据类型:结构体

在每次对象更新时启用可检测轨道id的输入,指定为真正的.将此属性设置为真正的如果你想提供一个可检测的轨道id列表。这个列表告诉跟踪器传感器期望检测到的所有轨道,以及任意检测到每个轨道的概率。

数据类型:逻辑

启用成本矩阵,指定为真正的.如果真正的,您可以在调用对象时提供赋值代价矩阵作为输入参数。

数据类型:逻辑

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:

启用内存管理属性,指定为逻辑1真正的)或0).

将此属性设置为真正的使您能够使用MaxNumDetectionsPerSensor属性指定在跟踪器的一次调用期间每个传感器可以传递给跟踪器的最大检测数。

此外,如果AssignmentClustering属性指定为“上”,你可以使用另外三个属性来指定跟踪器中某些可变大小数组的边界,以及确定跟踪器如何处理集群大小的违规:

  • MaxNumDetectionsPerCluster

  • MaxNumTracksPerCluster

  • ClusterViolationHandling

为可变大小的数组指定边界使您能够在生成的C/ c++代码中管理跟踪器的内存占用。

数据类型:逻辑

每个传感器的最大检测数,指定为正整数。此属性确定在跟踪器的每次调用中,每个传感器可以传递给跟踪器的最大检测数。

如果您希望跟踪器在C/ c++代码生成的局部变量上建立有效的边界,则将此属性设置为有限值。将此属性设置为如果您不想限制每个传感器的最大检测数量。

依赖关系

属性可启用此属性EnableMemoryManagement财产真正的

数据类型:|

跟踪器运行期间每个集群的最大检测数,指定为正整数。

将此属性设置为有限值可以使跟踪器绑定集群大小,并在生成的C/ c++代码中减少跟踪器的内存占用。将此属性设置为如果您不想绑定每个集群的最大检测数量。

如果在运行期间,集群中的检测数量超过了指定的数量MaxNumDetectionsPerCluster时,跟踪器根据ClusterViolationHandling财产。

依赖关系

要启用此属性,请指定AssignmentClustering财产“上”并设置EnableMemoryManagement财产真正的

数据类型:|

跟踪器运行期间每个集群的最大跟踪数,指定为正整数。

将此属性设置为有限值可以使跟踪器绑定集群大小,并在生成的C/ c++代码中减少跟踪器的内存占用。将此属性设置为如果您不想绑定每个集群的最大轨道数。

如果在运行期间,集群中的轨道数超过了指定的轨道数MaxNumTracksPerCluster时,跟踪器根据ClusterViolationHandling财产。

依赖关系

要启用此参数,请指定AssignmentClustering财产“上”并设置EnableMemoryManagement财产真正的

数据类型:|

处理运行时违反集群边界的情况,指定为以下选项之一:

  • “Teminate”-跟踪器报告一个错误,如果在运行期间,任何集群违反集群边界指定MaxNumDetectionsPerCluster而且MaxNumTracksPerCluster属性。

  • “分开并警告”-跟踪器使用次优方法将违反大小的集群分割成更小的集群。跟踪器还会报告一个警告,以指示违规行为。

  • “分裂”-跟踪器使用次优方法将违反大小的集群分割成更小的集群。跟踪器不会报告警告。

在次优方法中,跟踪器分离出与其他轨迹或检测关联可能性最小的检测或钉子,直到满足聚类边界。这些分离出来的探测或轨迹可以形成一个或多个新的簇,这取决于它们彼此之间的关联可能性AssignmentThreshold财产。

依赖关系

要启用此属性,请指定AssignmentClustering财产“上”并设置EnableMemoryManagement财产真正的

数据类型:字符|字符串

类融合方法,指定为:

  • “没有”-跟踪器不融合来自检测的分类信息。当跟踪器从一个类ID非零的检测中初始化一个跟踪时,跟踪器立即确认该跟踪并将该检测的类ID分配给该跟踪。在对轨道的后续更新中,跟踪器仅将具有相同类ID或类ID为0的检测分配给轨道。因此,赛道分类一旦确定就不能改变。

  • “贝叶斯”-跟踪器从检测中融合分类信息。当跟踪器从检测初始化一个暂定航迹时,跟踪器根据先验类分布和检测的类信息确定该航迹的类概率。在对轨道的后续更新中,跟踪器考虑所有可能的与轨道关联的检测,而不管它们的分类。跟踪器利用检测的运动状态和类信息来计算检测-轨迹分配代价。一旦跟踪器将检测分配给轨道,跟踪器将使用检测的分类信息来更新轨道的分类。

    看到检测类融合[2],[3]获取详细信息。

请注意

当您指定ClassFusionMethod作为“贝叶斯”

  • 您必须指定HasCostMatrixInput财产

  • 您不能指定OOSMHandling财产“Retrodiction”

数据类型:字符|字符串

新航迹的先验类概率分布,指定为N-和为的非负标量的元素向量1.vector元素的数量必须等于类的总数。

为每一个objectDetection对象。检测输入,ObjectClassID的属性objectDetection对象必须小于或等于N

例子:(0.2 - 0.8)

数据类型:|

类别成本在总分配成本中的权重因子,指定为范围内的标量[0, 1].当你设置ClassFusionWeight财产“贝叶斯”时,跟踪器计算整体分配成本为:

C 1 α C k + α C c

地点:

  • α-职业融合代价的权重因子

  • Ck-由轨迹和检测的运动状态获得的运动分配成本矩阵

  • Cc-由航迹和探测的类别信息得到的类别融合分配代价矩阵

数据类型:|

使用

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

描述

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

confirmedTracks=跟踪器(检测时间costMatrix也指定了一个成本矩阵,costMatrix

要启用此语法,请设置HasCostMatrixInput财产真正的

confirmedTracks=跟踪器(<年代pan class="argument_placeholder">___detectableTrackIDs还指定了预期可检测到的航迹列表,detectableTrackIDs

要启用此语法,请设置HasDetectableTrackIDsInput财产真正的

confirmedTrackstentativeTracksallTracks=跟踪器(<年代pan class="argument_placeholder">___还返回一个暂定曲目列表,tentativeTracks,以及所有曲目的列表,allTracks

confirmedTrackstentativeTracksallTracksanalysisInformation=跟踪器(<年代pan class="argument_placeholder">___也返回信息,analysisInformation,可用于航迹分析。

输入参数

全部展开

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

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

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

数据类型:|

成本矩阵,指定为实值N——- - - - - -矩阵,N是现有轨道的数量,和是当前检测的数量。成本矩阵行必须与轨道列表的顺序相同。列必须与检测列表的顺序相同。从第三个输出参数中获得曲目列表的正确顺序,allTracks,跟踪器更新的时间。

在对象的第一次更新或跟踪器没有以前的轨道时,指定代价矩阵的大小为[0, numDetections].请注意,必须计算成本,以便成本越低表明将检测分配给轨道的可能性越高。为了防止某些检测被分配到某些轨道,将适当的成本矩阵项设置为

依赖关系

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

数据类型:|

可检测轨道id,指定为实值-by-1向量或2矩阵。可探测轨道是传感器期望探测到的轨道。矩阵的第一列包含传感器报告的可检测轨道id列表。第二列包含轨道的检测概率。检测概率要么由传感器报告,要么(如果没有报告)从DetectionProbability财产。

标识符未包含的跟踪detectableTrackIDs被认为是无法检测到的。在删除音轨时,音轨删除逻辑不会将缺少检测计算为“遗漏检测”。

依赖关系

要启用此输入参数,请设置detectableTrackIDs财产真正的

数据类型:|

输出参数

全部展开

的数组返回objectTrack对象,并在代码生成中作为结构数组返回。在代码生成中,返回结构的字段名与的属性名相同objectTrack

属性中指定的确认阈值,则表示确认ConfirmationThreshold财产。在这种情况下,IsConfirmed结构的对象或字段的属性为真正的

数据类型:结构体|对象

的数组返回的暂定轨道objectTrack对象,并在代码生成中作为结构数组返回。在代码生成中,返回结构的字段名与的属性名相同objectTrack

属性中指定的确认阈值,则该轨道为暂定轨道ConfirmationThreshold财产。在这种情况下,IsConfirmed结构的对象或字段的属性为

数据类型:结构体|对象

的数组返回所有音轨objectTrack对象,并在代码生成中作为结构数组返回。在代码生成中,返回结构的字段名与的属性名相同objectTrack.所有轨道由确认轨道和暂定轨道组成。

数据类型:结构体|对象

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

描述
OOSMDetectionIndices

跟踪器当前步长的无序测量指标

TrackIDsAtStepBeginning

跟踪步骤开始时的id

CostMatrix

运动分配的代价矩阵,其中(j元素表示分配轨迹的运动代价来检测j

作业

赋值函数返回的赋值。

UnassignedTracks

跟踪器返回的未分配轨道的id

UnassignedDetections

中未分配检测的指数检测输入。

InitiatedTrackIDs

步骤中初始化的轨道id

DeletedTrackIDs

步骤中删除的音轨id

TrackIDsAtStepEnd

跟踪步骤结束时的id

MaxNumDetectionsPerCluster 在该步骤中生成的所有集群中的最大检测数量。属性时,结构才具有此字段AssignmentClustering而且EnableMemoryManagement属性“上”
MaxNumTracksPerCluster 在该步骤中生成的所有集群中的最大轨道数。属性时,结构才具有此字段AssignmentClustering而且EnableMemoryManagement属性“上”
OOSMHandling

用于处理无序测量的分析信息,作为结构返回。结构只有在OOSMHandling属性指定为“Retrodiction”

ClassCostMatrix

分类分配的成本矩阵,其中(j)元素表示分配轨道的分类代价来检测j.时,结构才有此字段ClassFusionMethod属性设置为“贝叶斯”

OOSMHandling结构包含以下字段:

描述
DiscardedDetections 丢弃的乱序检测指标。属性所指定的保存的状态历史记录没有覆盖OOSM,则它将被丢弃MaxNumOOSMSteps财产。
CostMatrix

对于次序不一致的测量,分配矩阵的代价

作业

无序检测和维护轨道之间的分配

UnassignedDetections 未分配的无序检测指标。跟踪器为未分配的无序检测创建新轨道。

数据类型:结构体

对象的功能

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

发行版(obj)

全部展开

getTrackFilterProperties 获取航迹过滤器属性
setTrackFilterProperties 设置航迹过滤器属性
predictTrackToTime 预测航迹状态
initializeTrack 初始化新轨道
confirmTrack 确认暂定航迹
deleteTrack 删除现有轨道
exportTo金宝appSimulink 导出跟踪器或跟踪fuser到Simulink模型金宝app
释放 释放资源并允许更改<年代pan class="trademark entity">系统对象属性值和输入特征
重置 重置的内部状态<年代pan class="trademark entity">系统对象
isLocked 确定<年代pan class="trademark entity">系统对象正在使用中
克隆 创建重复的<年代pan class="trademark entity">系统对象

例子

全部折叠

构造一个trackerGNN对象,使用默认的二维匀速卡尔曼滤波器初始化函数,initcvkf

跟踪器= trackerGNN(<年代pan style="color:#A020F0">“FilterInitializationFcn”@initcvkf,<年代pan style="color:#0000FF">...“ConfirmationThreshold”, [4 5],<年代pan style="color:#0000FF">...“DeletionThreshold”10);

用两个非零检测更新跟踪器ObjectClassID.这些探测立即产生确认的轨迹。

检测= {objectDetection(1,[10;0],<年代pan style="color:#A020F0">“SensorIndex”,1,<年代pan style="color:#0000FF">...“ObjectClassID”5,<年代pan style="color:#A020F0">“ObjectAttributes”{结构(<年代pan style="color:#A020F0">“ID”1)});<年代pan style="color:#0000FF">...objectDetection (1 (0; 10)<年代pan style="color:#A020F0">“SensorIndex”,1,<年代pan style="color:#0000FF">...“ObjectClassID”2,<年代pan style="color:#A020F0">“ObjectAttributes”{结构(<年代pan style="color:#A020F0">“ID”2)})};时间= 2;Tracks =跟踪器(检测,时间);

求位置和速度。

positionSelector = [1 0 0 0;0 0 10 0];velocitySelector = [0 1 0 0;0 0 0 1];位置= getTrackPositions(轨道,位置选择器)
位置=<年代pan class="emphasis">2×210 0 0 10
速度= gettrackvelocity(轨道,速度选择器)
速度=<年代pan class="emphasis">2×20 0 0 0

创建两个objectDetection时间上的对象<年代pan class="inlineequation"> t = 0和<年代pan class="inlineequation"> t = 1。的ObjectClassID这两次探测的结果是1.为每个检测指定混淆矩阵。

detection0 = objectDetection(0,[0 0 0],<年代pan style="color:#0000FF">...ObjectClassID = 1,<年代pan style="color:#0000FF">...ObjectClassParameters =结构(<年代pan style="color:#A020F0">“ConfusionMatrix”,[0.6 0.2 0.2;0.2 0.6 0.2;0.2 0.2 0.6]));detection1 = objectDetection(1,[0 0 0],<年代pan style="color:#0000FF">...ObjectClassID = 1,<年代pan style="color:#0000FF">...ObjectClassParameters =结构(<年代pan style="color:#A020F0">“ConfusionMatrix”,[0.5 0.3 0.2;0.3 0.5 0.2;0.2 0.2 0.6]));

创建一个trackerGNN对象。指定类融合方法为“贝叶斯”并指定每个类的初始概率为1/3

跟踪器= trackerGNN(ClassFusionMethod=<年代pan style="color:#A020F0">“贝叶斯”, initialclassprobability =[1/3 /3 /3])
tracker = trackerGNN with properties: TrackerIndex: 0 FilterInitializationFcn: 'initcvekf' MaxNumTracks: 100 MaxNumDetections: Inf MaxNumSensors: 20 Assignment: 'MatchPairs' AssignmentThreshold: [30 Inf] AssignmentClustering: 'off' OOSMHandling: 'Terminate' TrackLogic: 'History' ConfirmationThreshold: [2 3] DeletionThreshold: [5 5] HasCostMatrixInput: false HasDetectableTrackIDsInput: false statparameters: [1x1 struct] NumTracks: 0 NumConfirmedTracks: 0 ClassFusionMethod:'Bayes' initialclassprobability: [0.3333 0.3333 0.3333] ClassFusionWeight: 0.7000 EnableMemoryManagement: false

按顺序用第一次和第二次检测更新轨道。

追踪(detection0 0);[tracks,~,~,info] = tracker(detection1,1);

显示维护的轨迹和分析信息。

disp(跟踪)
objectTrack with properties: TrackID: 1 BranchID: 0 SourceIndex: 0 UpdateTime: 1 Age: 2 State: [6x1 double] StateCovariance: [6x6 double] statparameters: [1x1 struct] ObjectClassID: 1 objectclass: [0.7500 0.1500 0.1000] TrackLogic: 'History' TrackLogicState: [1 1 1000] IsConfirmed: 1 IsCoasted: 0 IsSelfReported: 1 ObjectAttributes: [1x1 struct]
disp(信息)
OOSMDetectionIndices: [1x0 uint32] TrackIDsAtStepBeginning: 1 CostMatrix: 13.8823 Assignments: [1 1] unassignnedtracks: [1x0 uint32] unassignneddetections: [0x1 uint32] InitiatedTrackIDs: [1x0 uint32] DeletedTrackIDs: [1x0 uint32] TrackIDsAtStepEnd: 1 ClassCostMatrix: -0.1823

算法

全部展开

参考文献

[1]布莱克曼,S.和R.波波利。现代跟踪系统的设计与分析。Artech House雷达图书馆,波士顿,1999。

[2] Bar-Shalom, Y.等人,“用分类辅助多帧数据关联跟踪”。IEEE航空航天与电子系统汇刊,第41卷,no。3, 2005年7月,第868-78页。

[3] Kuncheva, Ludmila I.等,“多分类器融合的决策模板:实验比较。”模式识别,第34卷,no。2, 2001年2月,第299-314页。

扩展功能

版本历史

在R2018b中引入

全部展开

另请参阅

功能

  • |<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">

对象

  • |<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">