主要内容

trackerTOMHT

多假设,多传感器,多目标跟踪器

描述

trackerTOMHTSystem object™是一个多假设跟踪器,能够处理来自多个传感器的多个目标的检测。跟踪器初始化、确认、预测、更正和删除跟踪。跟踪器的输入是由生成的检测报告objectDetectionfusionRadarSensorirSensor,或sonarSensor对象。跟踪器估计每个轨迹的状态向量和状态向量协方差矩阵。跟踪器基于面向跟踪的多假设方法分配检测。每个检测被分配到至少一个轨道。如果检测不能分配给任何轨道,跟踪器创建一个轨道。

任何新的轨道开始于试探性的状态。如果有足够多的探测被分配给一个暂定轨道,它的状态将变为确认.如果检测已经有一个已知的分类ObjectClassID返回轨道的字段为非零),则该轨道立即被确认。当一个轨迹被确认时,多目标跟踪器认为该轨迹代表一个物理对象。如果在指定数量的更新内未将检测分配给音轨,则删除音轨。有关跟踪器功能的概述,请参见算法

使用多假设跟踪器跟踪对象:

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

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

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

创建

描述

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

例子

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

属性

全部展开

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

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

有关更改属性值的详细信息,请参见使用系统对象的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中检查所提供函数的细节®.例如:

类型initcvekf

数据类型:function_handle|字符

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

数据类型:|

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

数据类型:|

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

数据类型:|

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

当属性指定为时

  • “终止”-跟踪器在遇到任何不符合顺序的测量时停止运行。

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

要模拟无序检测,使用objectDetectionDelay

可调:是的

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

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

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

可调:是的

数据类型:结构体

在模棱两可的情况下,轨道保持的最大假设数,指定为正整数。较大的值会增加计算负载。

例子:10

数据类型:|

设置每个轨道允许的最大轨道分支数量(假设)。较大的值会增加计算负载。

数据类型:|

分支历史记录中维护的最大扫描数,指定为正整数。轨迹历史扫描的数量通常为2到6。较大的值会增加计算负载。

例子:6

数据类型:|

检测分配阈值,指定为正标量,一个1 × 3的不递减的正数值向量,[C1C2C3.],或一个1乘4的不递减的正值向量,[C1C2C3.C4].如果指定为标量,则指定的值瓦尔,将扩展为[0.3,0.7,1,) *瓦尔.如果指定为[C1C2C3.],展开为[C1C2C3.].

阈值控制(1)将检测分配给轨道,(2)从检测创建新分支,以及(3)从未分配的轨道创建新分支。阈值必须满足:C1<=C2<=C3.<=C4

  • C1定义一个距离,如果一个轨道有一个指定的检测距离小于C1,该轨道不再被认为是未分配的,并且不会创建未分配的轨道分支。

  • C2定义一个距离,如果检测被分配到距离小于的轨道C2,检测不再被认为是未分配的,并且不创建新的轨道分支。

  • C3.定义将检测分配给轨道的最大距离。

  • C4定义跟踪和检测的组合,为其执行精确的标准化成本计算。最初,跟踪器对所有轨道和检测之间的归一化距离执行粗略估计。跟踪器只计算粗归一化距离小于的组合的精确归一化距离C4

看到算法对于标准化距离的解释。

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

  • 增加数值C1而且C2帮助控制所创建的轨道分支的数量。然而,这样做减少了每个轨道的分支(假设)的数量。

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

请注意

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

数据类型:|

确认音轨所需的最低分数,指定为正标量。任何分数高于此阈值的赛道都将被确认。

例子:12

数据类型:|

删除音轨之前的最大分数下降,指定为标量。任何音轨的分数低于该参数的最大分数将被删除。删除阈值受误报概率影响。

例子:12

数据类型:|

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

例子:0.5

数据类型:|

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

例子:1 e-5

数据类型:|

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

例子:2.5

数据类型:|

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

例子:1.5

数据类型:|

保持轨迹所需的最小概率,指定为小于1的正标量。任何概率较低的轨迹都被修剪。典型值为0.001至0.005。

例子:.003

数据类型:|

n扫描剪枝方法,指定为“没有”“假设”.在n -扫描修剪中,如果在n -扫描历史记录中,属于同一轨道的分支与同一轨道的最有可能的分支相矛盾,那么它们将被修剪(删除)。最有可能的分支有两种定义方式:

  • “没有”—不进行n扫描剪枝。

  • “假设”-选择的分支在最可能假设中。

例子:“假设”

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

数据类型:逻辑

在每次对象更新时启用可检测分支id的输入,指定为真正的.将此属性设置为真正的如果您想提供一个可检测的分支id列表。这个列表告诉所有分支的跟踪器,传感器预计检测到哪些分支,以及每个分支的检测概率(可选)。

数据类型:逻辑

跟踪输出方法,指定为“跟踪”“假设”,或“集群”

  • “跟踪”—根据每个航迹分支输出每个航迹的质心。

  • “假设”-输出某些假设中的分支。选项列出要输出的假设HypothesesToOutput财产。

  • “集群”—输出每个聚类的质心。类似于“跟踪”输出,但包括集群中的所有轨道。

数据类型:字符

要输出的假设索引,指定为正整数数组。这些指数必须都小于或等于追踪器提供的最大假设数。

可调:是的

数据类型:|

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:

使用

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

描述

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

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

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

confirmedTracks=跟踪器(___detectableBranchIDs还指定了预期可检测分支的列表,detectableBranchIDs

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

confirmedTrackstentativeTracksallTracks=跟踪器(___还返回一个暂定曲目列表,tentativeTracks,以及所有曲目的列表,allTracks

confirmedTrackstentativeTracksallTracksanalysisInformation=跟踪器(___也返回信息,analysisInformation,用于航迹分析。

输入参数

全部展开

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

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

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

数据类型:|

成本矩阵,指定为实值N——- - - - - -矩阵,N是分支的数量,和是当前检测的数量。成本矩阵行必须与分支列表的顺序相同。列必须与检测列表的顺序相同。方法获取分支列表的正确顺序getBranches对象的功能。矩阵列对应于检测。

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

依赖关系

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

数据类型:|

可检测的分支id,指定为实值-by-1向量或2矩阵。可检测的分支是传感器期望检测到的分支。矩阵的第一列包含报告的轨道的分支id列表branchID轨道输出参数的字段。第二列包含分支的检测概率。传感器可以报告检测概率,但如果没有报告,则从DetectionProbability财产。

标识符未包含的分支detectableBranchIDs被认为是无法检测到的。轨道删除逻辑不会将检测的缺失计算为分支删除目的的“遗漏”。

依赖关系

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

数据类型:|

输出参数

全部展开

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

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

数据类型:结构体|对象

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

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

数据类型:结构体|对象

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

数据类型:结构体|对象

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

描述
OOSMDetectionIndices

无序测量指标

BranchIDsAtStepBeginning

开始更新时的分支id。

CostMatrix

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

作业

返回的任务assignTOMHT

UnassignedTracks

跟踪器返回的未分配分支的id

UnassignedDetections

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

InitialBranchHistory

分支后和修剪前的分支历史。

InitialBranchScores

剪枝前分枝。

KeptBranchHistory

初始修剪后的分支历史。

KeptBranchScores

初始修剪后的枝条分值。

集群

将分支映射到集群的逻辑阵列。如果分支共享历史记录中的检测,或者直接或通过其他分支属于同一轨道,则分支属于同一个集群。这些分支是不相容的。

TrackIncompatibility

分支不相容矩阵。的j元素的值为真th和j-分支在它们的历史中有共同的探测或属于同一轨道。

GlobalHypotheses

将分支映射到全局假设的逻辑矩阵。相容的分支可以属于同一个假设。

GlobalHypScores 全局假设的总分。
PrunedBranches

分支的逻辑数组pruneTrackBranches函数决定修剪。

GlobalBranchProbabilities

全局假设中各分支存在的全局概率。

BranchesDeletedByPruning

分支被跟踪器删除。

BranchIDsAtStepEnd

更新结束时的分支id。

数据类型:结构体

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

创建trackerTOMHT具有匀速卡尔曼滤波初始化函数的系统对象,initcvkf

追踪器=追踪器“FilterInitializationFcn”@initcvkf,...“ConfirmationThreshold”, 20岁,...“DeletionThreshold”7...“MaxNumHypotheses”10);

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

检测= {objectDetection(1,[10;0],“SensorIndex”,1,...“ObjectClassID”5,“ObjectAttributes”{结构(“ID”1)});...objectDetection (1 (0; 10)“SensorIndex”,1,...“ObjectClassID”2,“ObjectAttributes”{结构(“ID”2)})};时间= 2;Tracks =跟踪器(检测,时间);

查找并显示位置和速度。

positionSelector = [1 0 0 0;0 0 10 0];velocitySelector = [0 1 0 0;0 0 0 1];位置= getTrackPositions(轨道,位置选择器)
位置=2×210.0000 00 10.0000
速度= gettrackvelocity(轨道,速度选择器)
速度=2×20 0 0 0

算法

全部展开

参考文献

[1]韦特曼,j.r. ..多假设跟踪的计算高效版本的逐步描述。在国际光学与光子学学会,卷1698,页228-301,1992。

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

扩展功能

版本历史

在R2018b中引入