主要内容

trackFuser

单假定进行航迹熔化炉

描述

trackFuser系统对象™融合由跟踪传感器或跟踪器生成的跟踪,并构建分散跟踪系统。trackFuser使用全局最近邻(GNN)算法来维持关于它所跟踪对象的单一假设。输入轨迹被调用当地的轨道,并且输出轨道被调用中央的痕迹。

使用此对象融合履带:

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

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

熔化炉= trackFuser创建一个轨迹到轨迹融合器,使用全局最近邻(GNN)算法来维持关于它所跟踪对象的单一假设。

例子

熔化炉= trackFuser (名称,值使用一个或多个名称-值对设置熔断器的属性。未指定的属性有默认值。将每个属性名用单引号括起来。

属性

全部展开

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

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

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

fuser的惟一索引,指定为正整数。使用此属性可在多热器环境中区分不同的热器。

例子:2

fuser可以维护的最大源配置数,指定为正整数。

例子:200

的单元数组指定的源系统的配置fuserSourceConfiguration对象。缺省值是1 by-N单元阵列的fuserSourceConfiguration对象,N是价值的MaxNumSources财产。可以在创建过程中指定此属性为名称-值对,也可以在创建之后指定。

数据类型:对象

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

数据类型:字符

自定义赋值函数,指定为函数句柄。赋值函数必须具有以下语法:

(作业、unassignedCentral unassignedLocal] = f(成本、costNonAssignment)
有关赋值函数的示例及其参数的描述,请参见assignmunkres

依赖关系

要启用此属性,请设置赋值财产“自定义”

数据类型:函数处理|字符串|字符

道对道分配阈值,指定为正标量或1 × 2向量[C1C2),C1C2.如果指定为标量,则指定的值,瓦尔,展开为[瓦尔].

最初,熔断器对所有局部轨迹和中心轨迹之间的归一化距离进行粗略估计。该算法只计算粗归一化距离小于的局部和中心组合的精确归一化距离C2.此外,如果中心轨迹的精确归一化距离小于,则热控器只能将局部轨迹分配给中心轨迹C1.看到算法来解释归一化距离。

小贴士:

  • 增加的价值C2如果有局部轨道和中心轨道的组合,应该计算分配,但没有。如果计算时间太长,就减少它。

  • 增加的价值C1如果有应该分配给中心轨道但没有分配的本地轨道。如果有局部轨道被分配到不应该分配到(太远)的中心轨道,则减少它。

状态转换函数,指定为函数句柄。该函数计算时间步长的状态k根据时间步长的状态k1。

  • 如果HasAdditiveProcessNoise真正的,函数必须使用以下语法:

    x (k) = f (x (k - 1), dt)
    地点:

    • x (k)—当时的(估计)状态k表示为向量或矩阵。如果指定为一个矩阵,则矩阵的每一列表示一个状态向量。

    • dt-预测的时间步长。

  • 如果HasAdditiveProcessNoise,函数必须使用以下语法:

    x (k) = f (x (k - 1), w (k - 1), dt)
    地点:

    • x (k)—当时的(估计)状态k表示为向量或矩阵。如果指定为一个矩阵,则矩阵的每一列表示一个状态向量。

    • w (k)-当时的进程噪声k

    • dt-预测的时间步长。

例子:@constacc

数据类型:function_handle|字符|字符串

状态转换函数的雅可比矩阵,指定为函数句柄。如果没有指定,则用数值计算雅可比矩阵,这可能增加处理时间和数值精度。如果指定,该函数必须支持以下两种语法之一:

  • 如果HasAdditiveProcessNoise真正的,函数必须使用以下语法:

    Jx (k) = statejacobianfcn (x (k), dt)
    地点:

    • x (k)—当时的(估计)状态k,指定为-乘1的实值向量。

    • dt-预测的时间步长。

    • Jx (k)-状态转移函数关于状态的雅可比矩阵,df / dx,评估x (k).雅可比矩阵返回为——- - - - - -矩阵。

  • 如果HasAdditiveProcessNoise,函数必须使用以下语法:

    (Jx (k) (Jw (k)] = statejacobianfcn (x (k), w (k), dt)
    地点:

    • x (k)—当时的(估计)状态k,指定为-乘1的实值向量。

    • w (k)-当时的进程噪声k,指定为W-乘1的实值向量。

    • dt-预测的时间步长。

    • Jx (k)-状态转移函数关于状态的雅可比矩阵,df / dx,评估x (k).雅可比矩阵返回为——- - - - - -矩阵。

    • Jw (k)-状态转移函数关于过程噪声的雅可比矩阵,df / dw,评估x (k)而且w (k).雅可比矩阵返回为——- - - - - -W矩阵。

例子:@constaccjac

数据类型:function_handle|字符|字符串

处理噪声协方差,指定为正实标量或正定矩阵。

  • HasAdditiveProcessNoise真正的,指定过程噪声协方差为正实标量或正定——- - - - - -矩阵。是状态向量的维数。当指定为标量时,该矩阵是——- - - - - -单位矩阵。

  • HasAdditiveProcessNoise,指定过程噪声协方差为W——- - - - - -W矩阵。W是过程噪声向量的维度。

例子:[1.0 - 0.05;0.05 - 2

数据类型:|

将过程噪声建模为添加剂的选项,指定为真正的.当此属性为真正的时,将过程噪声添加到状态向量中。否则,将噪声纳入状态转移函数。

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

例如,您可以使用以下结构来定义原点位置为的矩形参考系(10 10 0)米,它的起始速度相对于场景坐标系是[2 -2 0]米每秒。

字段名 价值
框架 “矩形”
位置 (10 10 0)
速度 (2 2 0)

可调:是的

数据类型:结构体

中心轨道确认的阈值,指定为正整数,或1 × 2的正整数向量[N)与N.如果中央航迹至少被分配给本地航迹,则该航迹被确认最后的时间N更新。如果指定的是正整数,确认阈值扩大到[].

数据类型:|

中心轨道删除阈值,指定为正整数P,或1 × 2的正整数向量[PR)与PR.如果一个中心轨道至少没有分配给本地轨道,则该中心轨道将被删除P最后的时间R更新。如果指定的是正整数P,确认阈值扩大到[PP].

例子:(5 - 6)

数据类型:|

保险丝只确认本地轨迹,指定为真正的.将此属性设置为如果您想融合所有本地履带,而不管它们的确认状态。

数据类型:逻辑

保险丝海岸本地轨道,指定为真正的.将此属性设置为真正的如果你想融合沿海的本地轨道(IsCoasted属性的字段或属性localTracks输入是真正的).将其设置为如果你想只融合本地轨道,没有海岸。

例子:真正的

数据类型:逻辑

状态融合算法,具体为:

  • “十字”-使用交叉协方差融合算法

  • “十字路口”—采用协方差交集融合算法

  • “自定义”—自定义融合功能

使用StateFusionParameters属性指定状态融合算法使用的附加参数。

数据类型:字符

自定义状态融合函数,指定为函数句柄。状态融合函数必须支持以下语法之一:

[fusedState,fusedCov] = f(trackState,trackCov) [fusedState,fusedCov] = f(trackState,trackCov,fuseParams)
地点:

  • trackState指定为N——- - - - - -矩阵。N是轨道状态的维度,和是轨道数。

  • trackCov指定为N——- - - - - -N-矩阵。N是轨道状态的维度,和是轨道数。

  • fuseParams中定义的可选参数是否StateFusionParameters财产。

  • fusedState返回为N1的向量。

  • fusedCov返回为N——- - - - - -N矩阵。

依赖关系

要启用此属性,请设置StateFusion财产“自定义”

数据类型:function_handle|字符|字符串

状态融合功能参数。取决于选择StateFusion你可以指定算法StateFusionParameters为:

  • 如果StateFusion“十字”,将其指定为(0,1)中的标量。看到fusexcov为更多的细节。

  • 如果StateFusion“十字路口”,将其指定为“引爆器”“跟踪”.看到fusecovint为更多的细节。

  • 如果StateFusion“自定义”,您可以在任何变量类型中指定这些参数,只要它们与可选参数的设置相匹配fuseParams的自定义状态融合函数的输入CustomStateFusionFcn财产。

默认情况下,该属性为空。

此属性是只读的。

当前由fuser维护的中心轨道数,作为非负整数返回。

数据类型:

此属性是只读的。

当前由fuser维护的已确认中心轨道数,作为非负整数返回。

数据类型:

使用

描述

confirmedTracks=熔化炉(localTrackstFusion从本地音轨列表返回确认音轨的列表。已确认的航迹被预测到更新时间,tFusion

confirmedTrackstentativeTracksallTracksanalysisInformation) =熔化炉(localTrackstFusion还返回暂定音轨的列表、所有音轨的列表和分析信息。

输入参数

全部展开

的数组指定的本地履带objectTrack类的属性名匹配的字段名的结构数组objectTrack对象。本地航迹是从源航迹系统中的跟踪器生成的航迹。

提示

要指定一个空的objectTrack对象,使用objectTrack.empty ().若要指定空结构,请使用repmat (toStruct (objectTrack), 0, 0)

数据类型:对象|结构体

更新时间,指定为标量。热测器预测所有中心轨迹到这个时间。单位以秒为单位。

数据类型:|

输出参数

全部展开

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

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

数据类型:结构体|对象

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

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

数据类型:结构体|对象

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

数据类型:结构体|对象

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

描述
TrackIDsAtStepBeginning

跟踪步骤开始时的id

CostMatrix

分配矩阵的成本

作业

从赋值函数返回的赋值

UnassignedCentralTracks

未分配的中心轨道id

UnassignedLocalTracks

未分配的本地轨道id

NonInitializingLocalTracks 未分配但未用于初始化中心磁道的本地磁道id
InitiatedCentralTrackIDs

步骤中初始化的中心轨道id

UpdatedCentralTrackIDs 在此步骤中更新了中心道的id
DeletedTrackIDs

步骤中删除的中心轨道id

TrackIDsAtStepEnd

步骤结束时中心履带的id

数据类型:结构体

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

predictTrackToTime 预测跟踪状态
initializeTrack 初始化新轨道
deleteTrack 删除现有的跟踪
sourceIndices 熔化炉源指标
exportToSimulink 导出跟踪器或跟踪fuser到Simulink模型
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
克隆 创建重复的系统对象
isLocked 确定系统对象在使用
重置 的内部状态重置系统对象

例子

全部折叠

定义两个跟踪源:一个内部和一个外部。的SourceIndex必须是唯一的。

internalSource = fuserSourceConfiguration (1,“IsInternalSource”,真正的);externalSource = fuserSourceConfiguration (2“IsInternalSource”、假);

创建一个trackFuserFuserIndex等于3。fuser使用上面定义的两个源并使用“十字”StateFusion模型。

熔化炉= trackFuser (“FuserIndex”,3,“MaxNumSources”2,...“SourceConfigurations”{internalSource; externalSource},...“StateFusion”“十字”);

用两个来源的两个轨道更新热器。使用三维匀速状态,其中状态按[的顺序给出xvxyvzvz].两条轨迹的状态是相同的,但协方差是不同的。对于第一个轨道,创建一个大的协方差x -轴。对于第二个轨道,创建一个大的协方差y -轴。

跟踪= [objectTrack (“SourceIndex”, 1“状态”, (10; 0, 0, 0, 0, 0),...“StateCovariance”诊断接头([100、1000、1、10、1,10]));...objectTrack (“SourceIndex”2,“状态”, (10; 0, 0, 0, 0, 0),...“StateCovariance”诊断接头([1,10100、1000、1、10])));

融合时间等于0的轨道。

时间= 0;confirmedTracks =熔化炉(跟踪、时间);

获得源航迹和确认航迹的位置和位置协方差。

positionSelector = [1 0 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 1 0];% [x;y;z][inputPos, inputCov] = getTrackPositions(追踪,positionSelector);[outputPos, outputCov] = getTrackPositions (confirmedTracks positionSelector);

使用以下方法将结果可视化trackPlotter

tPlotter = theaterPlot (“XLim”(0, 20),“YLim”[10] -10年,“ZLim”, -10, 10);tPlotter1 = trackPlotter (tPlotter,“DisplayName的”“输入追踪”“MarkerEdgeColor”“蓝”);tPlotter2 = trackPlotter (tPlotter,“DisplayName的”“融合跟踪”“MarkerEdgeColor”“绿色”);plotTrack (tPlotter1 inputPos inputCov) plotTrack (tPlotter2、outputPos outputCov)标题(“Cross-covariance融合”

图中包含一个axes对象。交叉协方差融合的坐标轴对象包含两个类型为line的对象。这些对象表示输入轨道,融合轨道。

参考文献

[1]布莱克曼,S.和波波利,R., 1999。现代跟踪系统的设计与分析(书)。马萨诸塞州诺伍德:Artech House, 1999。

Chong, Chee-Yee, Shozo Mori, William H. Barker, and Kuo-Chu Chang。”航迹关联和融合的体系结构和算法。《IEEE航空航天与电子系统杂志》第15期。第5 - 13(2000):1。

[3] Tian, Xin, Yaakov Bar-Shalom, D. Choukroun, Y. Oshman, J. Thienel, M. Idan。”轨道到轨道融合体系结构综述在《估计、导航和航天器控制的进展》一书中。施普林格,2015年。

扩展功能

版本历史

介绍了R2019b

Baidu
map