trackerTOMHT
描述
的trackerTOMHT
系统对象™是一个multi-hypothesis跟踪器能够处理来自多个传感器检测的目标。跟踪初始化,证实了预测,纠正和删除的痕迹。输入生成的跟踪检测报告objectDetection
,fusionRadarSensor
,irSensor
,或sonarSensor
对象。跟踪估计状态向量和状态向量的协方差矩阵为每一个轨道。跟踪器分配检测基于track-oriented, multi-hypothesis方法。每个检测是分配到至少一个跟踪。如果发现不能分配给任何跟踪,跟踪器创建一个跟踪。
任何新的追踪从一开始试探性的状态。如果足够的检测是分配给一个试探性的轨道,它的状态改变确认。如果发现已经有一个已知的分类(ObjectClassID
现场返回的跟踪是零),立即跟踪确认。当跟踪确认,多目标跟踪器认为代表一个物理对象的跟踪。如果检测不分配给跟踪在一个指定的数量的更新,删除。如何追踪功能的概述,请参阅算法。
跟踪对象使用multi-hypothesis追踪:
创建
trackerTOMHT
对象并设置其属性。调用对象的参数,就好像它是一个函数。
了解更多关于系统对象是如何工作的,看到的系统对象是什么?
创建
描述
创建一个跟踪器
= trackerTOMHTtrackerTOMHT
系统对象的默认属性值。
集属性多目标跟踪器使用一个或多个名称-值对。例如,跟踪器
= trackerTOMHT (名称,值
)trackerTOMHT (FilterInitializationFcn, @initcvukf MaxNumTracks, 100)
创建一个多目标跟踪器,使用常速,无味卡尔曼滤波器,并允许最多100张光碟。在报价附上每个属性的名字。
属性
属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放
函数打开它们。
如果一个属性可调在任何时候,你可以改变它的值。
改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象。
TrackerIndex
- - - - - -唯一的跟踪标识符
0
(默认)|非负整数
独特的跟踪标识符,指定为一个非负整数。这个属性的使用SourceIndex
在跟踪输出,区分来自不同的追踪器的跟踪multiple-tracker系统。您必须指定这个属性是一个正整数使用跟踪跟踪熔化炉的输出作为输入。
例子:1
FilterInitializationFcn
- - - - - -过滤器的初始化函数
@initcvekf
(默认)|函数处理|特征向量
过滤器的初始化函数,指定为一个函数处理或作为特征向量包含一个过滤器的初始化函数的名称。跟踪器使用一个过滤器的初始化函数在创建新的轨道。
传感器融合和跟踪工具箱™供应许多初始化函数,您可以使用它来指定FilterInitializationFcn
。
初始化函数 | 函数定义 |
---|---|
initcvabf |
初始化常速α-β滤波器 |
initcaabf |
初始化恒定加速度α-β滤波器 |
initcvekf |
常速扩展卡尔曼滤波器进行初始化。 |
initcackf |
初始化加速度恒定体积过滤器。 |
initctckf |
初始化constant-turn-rate求容积法过滤器。 |
initcvckf |
初始化常速求容积法过滤器。 |
initcapf |
初始化加速度恒定粒子滤波。 |
initctpf |
初始化constant-turn-rate粒子滤波。 |
initcvpf |
常速粒子滤波进行初始化。 |
initcvkf |
初始化常速线性卡尔曼滤波器。 |
initcvukf |
初始化常速无味卡尔曼滤波器。 |
initcaekf |
初始化加速度恒定扩展卡尔曼滤波器。 |
initcakf |
初始化加速度恒定线性卡尔曼滤波器。 |
initcaukf |
初始化加速度恒定无味卡尔曼滤波器。 |
initctekf |
初始化constant-turn-rate扩展卡尔曼滤波器。 |
initctukf |
初始化constant-turn-rate无味卡尔曼滤波器。 |
initcvmscekf |
修改初始化常速球坐标扩展卡尔曼滤波器。 |
initrpekf |
初始化常速range-parametrized扩展卡尔曼滤波器。 |
initapekf |
初始化常速angle-parametrized扩展卡尔曼滤波器。 |
initekfimm |
初始化跟踪IMM滤波器。 |
initsingerekf |
初始化歌手加速扩展的卡尔曼滤波器。 |
您也可以编写自己的初始化函数。函数必须有如下语法:
过滤器= filterInitializationFcn(检测)
objectDetection
。这个函数的输出必须过滤对象:trackingKF
,trackingEKF
,trackingUKF
,trackingCKF
,trackingPF
,trackingMSCEKF
,trackingGSF
,trackingIMM
,或trackingABF
。
指导你写这个函数中,您可以检查的细节在MATLAB提供的功能®。例如:
类型initcvekf
数据类型:function_handle
|字符
MaxNumTracks
- - - - - -最大数量的跟踪
One hundred.
(默认)|正整数
最大数量的跟踪器可以保持跟踪,指定为一个正整数。
数据类型:单
|双
MaxNumSensors
- - - - - -最大数量的传感器
20.
(默认)|正整数
最大数量的传感器可以连接到追踪,指定为一个正整数。MaxNumSensors
必须大于或等于最大的价值SensorIndex
发现在所有检测用于更新追踪。SensorIndex
是一个属性的吗objectDetection
对象。的MaxNumSensors
属性决定了有多少套ObjectAttributes
每个输出跟踪领域。
数据类型:单
|双
MaxNumDetections
- - - - - -最大数量的检测
在f
(默认)|正整数
最大数量的检测跟踪器可以作为输入,指定为一个正整数。
数据类型:单
|双
OOSMHandling
- - - - - -处理一堆测量(OOSM)
“终止”
(默认)|“忽略”
处理一堆测量(OOSM),指定为“终止”
或“忽略”
。每个检测都有相关联的一个时间戳,td,跟踪它自己的时间戳,tt在每次调用更新。作为OOSM如果追踪者认为测量td<tt。
当财产被指定为
“终止”
-跟踪器停止运行时遇到任何乱序执行测量。“忽略”
——跟踪器忽略任何乱序执行测量,并继续运行。
模拟按顺序检测,使用objectDetectionDelay
。
可调:是的
StateParameters
- - - - - -参数跟踪状态的参考系
结构([])
(默认)|结构体数组
参数的跟踪状态参考系,指定为一个结构或一个结构数组。跟踪器通过其StateParameters
属性值对StateParameters
属性生成的跟踪。您可以使用这些参数来定义的坐标系跟踪报告或其他可取的属性生成的痕迹。
例如,您可以使用以下结构来定义一个直角坐标系的原点位置(10 10 0)
米,其起源速度(2 2 0)米每秒的帧的场景。
字段名 | 价值 |
---|---|
框架 |
“矩形” |
位置 |
(10 10 0) |
速度 |
(2 2 0) |
可调:是的
数据类型:结构体
MaxNumHypotheses
- - - - - -最大数量的假设来维持
5
(默认)|正整数
最大数量的全球分配假设跟踪维护的每一步,指定为一个正整数。如果假设的数量比属性值大,追踪错误假设的较低的可能及其相关分支,直到假设到达属性值的数量。增加计算负载较大的值。
例子:10
数据类型:单
|双
MaxNumTrackBranches
- - - - - -最大数量的跟踪分支/跟踪
3
(默认)|积极的标量
最大数量的跟踪分支允许为每个轨道,指定为一个正整数。增加计算负载较大的值。
数据类型:单
|双
MaxNumHistoryScans
- - - - - -扫描中维护分支历史的最大数量
4
(默认)|正整数
最大数量的扫描中维护分支历史,指定为一个正整数。追踪历史扫描的数量通常从2到6。增加计算负载较大的值。
例子:6
数据类型:单
|双
AssignmentThreshold
- - - - - -检测作业阈值
30 *(0.3 0.7 1正)
(默认)|积极的标量|1×3矢量的积极的价值观|1-by-4向量的积极的价值观
检测作业阈值,指定为一个积极的标量,一个1×3向量引入积极的价值观,C1,C2,C3),或者an1-by-4向量引入积极的价值观,C1,C2,C3,C4]。如果指定为一个标量,指定的值,瓦尔将扩展到(0.3,0.7,1在f
)*瓦尔。如果指定为(C1,C2,C3),它将扩大C1,C2,C3,在f
]。
阈值控制(1)赋值的检测跟踪,(2)创建一个新的分支从检测,和(3)创建一个新的分支未赋值的跟踪。阈值必须满足:C1< =C2< =C3< =C4。
C1定义了一个距离,如果跟踪具有比分配较低的检测距离C1,跟踪不再被认为是未赋值的,不创建一个未赋值的跟踪分支。
C2定义了一个距离,如果检测被分配给一个较低的轨道距离比C2,不再被认为是未赋值的检测,不创建一个新的分支。
C3定义了分配的最大距离检测跟踪。
C4定义了组合的跟踪和检测准确执行标准化的成本核算。最初,跟踪执行规范化的粗估计所有的跟踪和检测之间的距离。跟踪器只计算准确的归一化距离粗归一化距离小于的组合C4。
看到算法一个解释的归一化距离。
增加的价值C3如果有检测,但不应该分配给足迹。减少价值是否有检测分配给跟踪他们不应该分配给(太远)。
增加的值C1和C2有助于控制跟踪创建分支的数量。然而,这样做减少了数量的分支(假设)每个记录都有。
增加的价值C4如果有组合的跟踪和检测,但不应计算作业。如果降低成本计算需要太多时间。
请注意
如果该值的C4是有限的,状态转换函数和测量功能,跟踪滤波器中指定用于追踪,必须能够拿一个吗米——- - - - - -N矩阵的状态作为输入和输出N预测状态和N分别测量。米是国家的大小。N的状态数,任意一个非负整数。
数据类型:单
|双
ConfirmationThreshold
- - - - - -最低分数要求确认跟踪
20.
(默认)|积极的标量
最低分数要求确认,指定为一个积极的标量。任何跟踪得分高于该阈值的证实。
例子:12
数据类型:单
|双
DeletionThreshold
- - - - - -最高得分下降记录删除
7
(默认)|标量
最高得分下降轨道之前删除,指定为一个标量。任何跟踪得分下降超过这个参数最大分数被删除。删除阈值受假警报的概率。
例子:12
数据类型:单
|双
DetectionProbability
- - - - - -检测概率用于跟踪分数
0.9
(默认)|积极的标量在0和1之间
检测概率,指定为一个积极的标量在0和1之间。此属性用于计算分数。
例子:0.5
数据类型:单
|双
FalseAlarmRate
- - - - - -假警报概率用于跟踪分数
1 e-6
(默认)|标量
假警报的概率,指定为一个标量。此属性用于计算分数。
例子:1 e-5
数据类型:单
|双
β
- - - - - -每单位体积率的新轨道
1
(默认)|积极的标量
新线路的速度单位体积,指定为一个积极的标量。新线路的速度计算中使用跟踪分数在跟踪初始化。
例子:2.5
数据类型:单
|双
体积
- - - - - -量传感器测量本
1
(默认)|积极的标量
传感器测量的体积,指定为一个积极的标量。例如,如果一个雷达产生4 - d测量,包括方位、仰角、范围、和范围,定义的4 d体积是雷达角度波束宽度,本宽度和数据与本宽度范围。体积是用于计算跟踪分数时初始化和更新一个跟踪。
例子:1.5
数据类型:单
|双
MinBranchProbability
- - - - - -跟踪所需最小概率
措施
(默认)|积极的标量
最低概率需要保持跟踪,指定为一个积极的标量小于1。任何跟踪概率是修剪较低。典型值是0.001到0.005。
例子:.003
数据类型:单
|双
NScanPruning
- - - - - -N-scan修剪方法
“没有”
(默认)|“假设”
N-scan修剪方法,指定为“没有”
或“假设”
。在N-scan修剪,修剪枝条,属于同一跟踪(删除),如果在N-scans历史,他们反驳最有可能的分支相同的轨道。最有可能的分支被定义为两种方式:
“没有”
——不执行N-scan修剪。“假设”
——所选择的分支是最可能的假设。
例子:“假设”
HasCostMatrixInput
- - - - - -使成本矩阵输入
假
(默认)|真正的
使成本矩阵,指定为假
或真正的
。如果真正的
,您可以提供一个作业成本矩阵作为输入参数当调用对象。
数据类型:逻辑
HasDetectableBranchIDsInput
- - - - - -允许输入检测部门id
假
(默认)|真正的
使检测到的输入分支id在更新,每个对象指定为假
或真正的
。将此属性设置为真正的
如果你想提供一个检测部门id列表。这个列表告诉所有分支机构的跟踪器,传感器将检测,可选地,检测每个分支的概率。
数据类型:逻辑
OutputRepresentation
- - - - - -跟踪输出方法
“跟踪”
(默认)|“假设”
|“集群”
跟踪输出方法,指定为“跟踪”
,“假设”
,或“集群”
。
“跟踪”
——输出每个跟踪基于其的质心跟踪分支。“假设”
——输出分支,是在特定的假设。如果您选择这个选项,假设列表输出使用HypothesesToOutput
财产。“集群”
——输出每个集群的重心。类似于“跟踪”
输出,但包括所有跟踪在一个集群中。
数据类型:字符
HypothesesToOutput
- - - - - -输出指标的假设
1
(默认)|正整数|正整数的数组
指标输出假说,指定为正整数的数组。指数都必须小于或等于假说提供的跟踪器的最大数量。
可调:是的
数据类型:单
|双
NumTracks
- - - - - -跟踪维护跟踪
非负整数
这个属性是只读的。
跟踪器的跟踪维护,作为一个非负整数返回。
数据类型:双
NumConfirmedTracks
- - - - - -数量的确认跟踪
非负整数
这个属性是只读的。
数量的跟踪确认,作为一个非负整数返回。如果IsConfirmed
领域的一个输出跟踪结构真正的
,跟踪确认。
数据类型:双
使用
过程检测和更新,电话追踪的论点,就好像它是一个函数(这里描述)。
语法
描述
返回一个列表的更新追踪确认检测,confirmedTracks
=跟踪器(检测
,时间
)检测
在更新的时候,时间
。确认跟踪纠正和预测更新时间。
还指定了一个成本矩阵,confirmedTracks
=跟踪器(检测
,时间
,costMatrix
)costMatrix
。
要启用这种语法,设置HasCostMatrixInput
财产真正的
。
还指定了一系列预期可检测的分支,confirmedTracks
=跟踪器(___,detectableBranchIDs
)detectableBranchIDs
。
要启用这种语法,设置HasDetectableBranchIDsInput
财产真正的
。
(
还返回一个试探性的歌曲列表,confirmedTracks
,tentativeTracks
,allTracks
)=跟踪器(___)tentativeTracks
所有歌曲的列表,allTracks
。
(
还返回信息,confirmedTracks
,tentativeTracks
,allTracks
,analysisInformation
)=跟踪器(___)analysisInformation
,用于跟踪分析。
输入参数
检测
- - - - - -检测列表
单元阵列的objectDetection
对象
检测列表,指定的单元阵列objectDetection
对象。的时间
属性值的objectDetection
对象必须是小于或等于当前更新时间,时间
,比前面的时间值用于更新追踪。此外,时间
不同的差异objectDetection
单元阵列中的对象不需要平等。
时间
- - - - - -更新的时间
标量
costMatrix
- - - - - -成本矩阵
实值N——- - - - - -米矩阵
成本矩阵,指定为一个实值N——- - - - - -米矩阵,N是数量的分支,米是当前检测的数量。成本矩阵行必须位于同一个订单列表的分支。必须在相同的顺序列检测列表。获得正确的顺序使用列表的分支getBranches
对象的功能。矩阵列对应的检测。
在第一次更新的对象或追踪没有以前的轨道时,指定成本矩阵的大小[0,numDetections]
。注意,必须计算,这样成本更低的成本显示更高的分配一个跟踪检测的可能性。防止某些检测被分配给特定的轨道,进入设置适当的成本矩阵在f
。
依赖关系
要启用这个论点,设置HasCostMatrixInput
财产真正的
。
数据类型:双
|单
detectableBranchIDs
- - - - - -检测部门id
实值米1的向量|实值米2矩阵
检测部门id,指定为一个实值米1的向量或米2矩阵。可检测的传感器会检测分支分支。矩阵的第一列包含一个分支id列表跟踪报道branchID
场的跟踪输出参数。第二列包含分支的探测概率。传感器可以探测概率的报告,但如果没有报告,检测概率是经DetectionProbability
财产。
不包括在分支机构的标识detectableBranchIDs
被认为是无法觉察的。跟踪删除逻辑不计数的缺乏检测作为分支删除的“小姐”的目的。
依赖关系
启用这个输入参数,设置HasDetectableBranchIDs
财产真正的
。
数据类型:单
|双
输出参数
confirmedTracks
——确认跟踪
的数组objectTrack
|对象数组的结构
跟踪确认,作为一个数组返回objectTrack
在MATLAB对象,作为一个数组返回代码生成的结构。在代码生成中,字段名称返回的结构相同的属性名objectTrack
。
跟踪确认,如果它满足确认阈值中指定ConfirmationThreshold
财产。在这种情况下,IsConfirmed
对象的属性或字段的结构真正的
。
数据类型:结构体
|对象
tentativeTracks
-初步跟踪
的数组objectTrack
|对象数组的结构
试探性的,作为一个数组返回objectTrack
在MATLAB对象,作为一个数组返回代码生成的结构。在代码生成中,字段名称返回的结构相同的属性名objectTrack
。
跟踪是试探性的,如果它不满足确认阈值中指定ConfirmationThreshold
财产。在这种情况下,IsConfirmed
对象的属性或字段的结构假
。
数据类型:结构体
|对象
allTracks
——所有的跟踪
的数组objectTrack
|对象数组的结构
所有的歌曲,作为一个数组返回objectTrack
在MATLAB对象,作为一个数组返回代码生成的结构。在代码生成中,字段名称返回的结构相同的属性名objectTrack
。所有曲目包括确认和试探性的痕迹。
数据类型:结构体
|对象
analysisInformation
——附加信息分析跟踪更新
结构
附加信息分析跟踪更新,作为一个结构返回。这种结构的字段有:
场 | 描述 |
OOSMDetectionIndices |
按顺序的指标测量 |
BranchIDsAtStepBeginning |
当更新开始分支id。 |
CostMatrix |
运动的成本分配矩阵,(我,j)元素表示的成本分配我来检测j。 |
作业 |
作业回来 |
UnassignedTracks |
从追踪id返回的未赋值的分支 |
UnassignedDetections |
未赋值的检测的指标 |
InitialBranchHistory |
分支历史分支和后修剪。 |
InitialBranchScores |
修剪之前分公司得分。 |
KeptBranchHistory |
最初的修剪后分支历史。 |
KeptBranchScores |
分支初始修剪后得分。 |
集群 |
逻辑阵列分支映射到集群。分支机构属于同一集群如果他们分享检测历史或属于同一轨道,直接或通过其他分支。这些分支是不相容的。 |
TrackIncompatibility |
分支不相容矩阵。的 |
GlobalHypotheses |
逻辑分支全球假设矩阵映射。兼容分支可以属于相同的假设。 |
GlobalHypScores |
全球假说的总分。 |
PrunedBranches |
逻辑阵列的分支 |
GlobalBranchProbabilities |
全球在全球的每个分支现有概率假设。 |
BranchesDeletedByPruning |
删除分支的追踪。 |
BranchIDsAtStepEnd |
更新结束后分支id。 |
数据类型:结构体
对象的功能
使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj
使用这个语法:
发行版(obj)
特定于trackerTOMHT
getTrackFilterProperties |
获得跟踪滤波器性能 |
setTrackFilterProperties |
设置跟踪滤波器的属性 |
getBranches |
列表跟踪分支 |
predictTrackToTime |
预测跟踪状态 |
initializeTrack |
初始化新轨道 |
deleteTrack |
删除现有的跟踪 |
initializeBranch |
初始化新的线路分支 |
confirmBranch |
确认跟踪分支 |
deleteBranch |
删除现有跟踪分支 |
exportTo金宝appSimulink |
出口跟踪或跟踪熔化炉仿真软件模型金宝app |
例子
使用trackerTOMHT跟踪两个对象
创建trackerTOMHT
与常速卡尔曼滤波器系统对象的初始化函数,initcvkf
。
追踪= trackerTOMHT (“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;跟踪=追踪(检测、时间);
找到并显示位置和速度。
positionSelector = [1 0 0 0;0 0 1 0);velocitySelector = [0 1 0 0;0 0 0 1);positionSelector位置= getTrackPositions(跟踪)
位置=2×210.0000 0 0 10.0000
velocitySelector速度= getTrackVelocities(跟踪)
速度=2×20 0 0 0
算法
跟踪逻辑流程
当你使用追踪过程检测,跟踪创建和管理遵循以下步骤。
跟踪器试图将检测分配给现有的跟踪。
轨道允许多个假设关于检测任务的跟踪。
未赋值的检测结果创建新的曲目。
任务分配的检测跟踪创建分支的痕迹。
跟踪没有指定检测是摸样(预测)。
跟踪分支都得分。初始分值较低的树枝修剪。
集群的分支共享检测(不兼容的分支机构)在他们的历史生成。
全球兼容分支机构制定的假设和得分。
分支机构得分是基于他们的存在在全球假设。得分低的树枝修剪。
基于N-scan历史执行额外的修剪。
所有跟踪纠正和预测输入时间。
作业Multi-Hypothesis跟踪器的阈值
三个赋值阈值,C1,C2,C3、控制(1)赋值的检测跟踪,(2)创建一个新的分支从检测,和(3)创建一个新的分支未赋值的跟踪。阈值必须满足:C1< =C2< =C3。
如果作业的成本C = costmatrix (i, j)
,创建了基于以下假设比较成本分配的值阈值。下面每一比较,列出可能的假设。
小贴士:
增加的价值C3如果有检测,但不应该分配给足迹。减少价值是否有检测分配给跟踪他们不应该分配给(太远)。
增加的值C1和C2有助于控制跟踪创建分支的数量。然而,这样做减少了数量的分支(假设)每个记录都有。
允许每个跟踪未赋值的集合C1= 0。
允许每个检测未赋值的集合C2= 0。
数据精度
所有数字输入单引号或双精度,但他们都必须具有相同的精度。
引用
[1]Werthmann, j . R . .“一步一步地描述计算有效版本的多假设跟踪。”In国际社会对光学和光子学卷,1698年,第301 - 228页,1992年。
[2]Blackman, S。,r . Popoli。现代跟踪系统的设计与分析。Artech房子雷达图书馆,波士顿,1999年。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
看到系统在MATLAB代码生成对象(MATLAB编码器)。
所有的检测使用多目标跟踪器必须具有相同属性的大小和类型。
如果你使用
ObjectAttributes
字段在一个objectDetection
对象,您必须指定这个领域作为一个包含一个结构单元。所有检测的结构必须具有相同的字段,这些字段中的值必须有相同的大小和类型。在模拟的形式结构不能改变。如果
ObjectAttributes
中包含检测、SensorIndex
值不能大于10的检测。第一个更新多目标跟踪器必须包含至少一个检测。
版本历史
介绍了R2018b
Apri esempio
如果dispone di una versione modificata di questo esempio。Desideri aprire questo esempio con le modifiche星期二吗?
第一MATLAB
海脂肪clic苏联合国collegamento切corrisponde questo第一MATLAB:
Esegui il第一inserendolo所以nella隙缝di第一MATLAB。我浏览器web非supportano金宝app comandi MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。