trackFuser
单假定进行航迹熔化炉
描述
的trackFuser
系统对象™融合由跟踪传感器或跟踪器生成的跟踪,并构建分散跟踪系统。trackFuser
使用全局最近邻(GNN)算法来维持关于它所跟踪对象的单一假设。输入轨迹被调用源或当地的轨道,并且输出轨道被调用中央的痕迹。
使用此对象融合履带:
创建
trackFuser
对象并设置其属性。调用带有参数的对象,就像调用函数一样。
要了解更多关于System对象如何工作的信息,请参见什么是系统对象?
创建
描述
创建一个轨迹到轨迹融合器,使用全局最近邻(GNN)算法来维持关于它所跟踪对象的单一假设。熔化炉
= trackFuser
使用一个或多个名称-值对设置熔断器的属性。未指定的属性有默认值。将每个属性名用单引号括起来。熔化炉
= trackFuser (名称,值
)
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
函数打开它们。
如果属性是可调,您可以随时更改其值。
有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统.
FuserIndex
- - - - - -唯一索引的轨道热器
1
(默认)|正整数
fuser的惟一索引,指定为正整数。使用此属性可在多热器环境中区分不同的热器。
例子:2
MaxNumSources
- - - - - -源配置的最大数量
20.
(默认)|正整数
fuser可以维护的最大源配置数,指定为正整数。
例子:200
SourceConfigurations
- - - - - -源系统的配置
单元阵列的fuserSourceConfiguration
对象
的单元数组指定的源系统的配置fuserSourceConfiguration
对象。缺省值是1 by-N单元阵列的fuserSourceConfiguration
对象,N是价值的MaxNumSources
财产。可以在创建过程中指定此属性为名称-值对,也可以在创建之后指定。
数据类型:对象
赋值
- - - - - -分配算法
“MatchPairs”
(默认)|“Munkres”
|“Jonker-Volgenant”
|“拍卖”
|“自定义”
分配算法,指定为“MatchPairs”
,“Munkres”
,“Jonker-Volgenant”
,“拍卖”
,或“自定义”
.Munkres是保证最优解的唯一分配算法,但它也是最慢的,特别是对于大量的检测和跟踪。其他算法不能保证最优解决方案,但可以更快地解决有20或20多个轨迹和检测的问题。使用“自定义”
中定义自己的赋值函数并指定其名称CustomAssignmentFcn
财产。
数据类型:字符
CustomAssignmentFcn
- - - - - -自定义赋值函数
函数处理
自定义赋值函数,指定为函数句柄。赋值函数必须具有以下语法:
(作业、unassignedCentral unassignedLocal] = f(成本、costNonAssignment)
assignmunkres
.
依赖关系
要启用此属性,请设置赋值
财产“自定义”
.
数据类型:函数处理
|字符串
|字符
AssignmentThreshold
- - - - - -进行航迹赋值阈值
30 *[1正]
(默认)|积极的标量|1 × 2的正向量
道对道分配阈值,指定为正标量或1 × 2向量[C1C2),C1≤C2.如果指定为标量,则指定的值,瓦尔,展开为[瓦尔,正
].
最初,熔断器对所有局部轨迹和中心轨迹之间的归一化距离进行粗略估计。该算法只计算粗归一化距离小于的局部和中心组合的精确归一化距离C2.此外,如果中心轨迹的精确归一化距离小于,则热控器只能将局部轨迹分配给中心轨迹C1.看到算法来解释归一化距离。
小贴士:
增加的价值C2如果有局部轨道和中心轨道的组合,应该计算分配,但没有。如果计算时间太长,就减少它。
增加的价值C1如果有应该分配给中心轨道但没有分配的本地轨道。如果有局部轨道被分配到不应该分配到(太远)的中心轨道,则减少它。
StateTransitionFcn
- - - - - -状态转移函数
“constvel”
(默认)|函数处理
状态转换函数,指定为函数句柄。该函数计算时间步长的状态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
|字符
|字符串
StateTransitionJacobianFcn
- - - - - -状态转移函数的雅可比矩阵
”
(默认)|函数处理
状态转换函数的雅可比矩阵,指定为函数句柄。如果没有指定,则用数值计算雅可比矩阵,这可能增加处理时间和数值精度。如果指定,该函数必须支持以下两种语法之一:
如果
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
|字符
|字符串
ProcessNoise
- - - - - -过程噪声协方差
(3)
(默认)|积极的真正的标量|正定矩阵
处理噪声协方差,指定为正实标量或正定矩阵。
当
HasAdditiveProcessNoise
是真正的
,指定过程噪声协方差为正实标量或正定米——- - - - - -米矩阵。米是状态向量的维数。当指定为标量时,该矩阵是米——- - - - - -米单位矩阵。当
HasAdditiveProcessNoise
是假
,指定过程噪声协方差为W——- - - - - -W矩阵。W是过程噪声向量的维度。
例子:[1.0 - 0.05;0.05 - 2
]
数据类型:单
|双
HasAdditiveProcessNoise
- - - - - -模型加性过程噪声
假
(默认)|真正的
将过程噪声建模为添加剂的选项,指定为真正的
或假
.当此属性为真正的
时,将过程噪声添加到状态向量中。否则,将噪声纳入状态转移函数。
StateParameters
- - - - - -航迹状态参考系参数
结构()
(默认)|结构|结构数组
航迹状态参考帧的参数,指定为结构或结构数组。加热器通过它StateParameters
属性值设置为StateParameters
属性。您可以使用这些参数来定义报告音轨的参考框架或生成的音轨的其他所需属性。
例如,您可以使用以下结构来定义原点位置为的矩形参考系(10 10 0)
米,它的起始速度相对于场景坐标系是[2 -2 0]米每秒。
字段名 | 价值 |
---|---|
框架 |
“矩形” |
位置 |
(10 10 0) |
速度 |
(2 2 0) |
可调:是的
数据类型:结构体
ConfirmationThreshold
- - - - - -中央航迹确认的阈值
3 [2]
(默认)|正整数|1 × 2的正整数向量
中心轨道确认的阈值,指定为正整数米,或1 × 2的正整数向量[米N)与米≤N.如果中央航迹至少被分配给本地航迹,则该航迹被确认米最后的时间N更新。如果指定的是正整数米,确认阈值扩大到[米,米].
数据类型:单
|双
DeletionThreshold
- - - - - -删除中心轨道阈值
5 [5]
(默认)|正整数|1 × 2的正整数向量
中心轨道删除阈值,指定为正整数P,或1 × 2的正整数向量[PR)与P≤R.如果一个中心轨道至少没有分配给本地轨道,则该中心轨道将被删除P最后的时间R更新。如果指定的是正整数P,确认阈值扩大到[P,P].
例子:(5 - 6)
数据类型:单
|双
FuseConfirmedOnly
- - - - - -引信只确认了本地轨迹
真正的
(默认)|假
保险丝只确认本地轨迹,指定为假
或真正的
.将此属性设置为假
如果您想融合所有本地履带,而不管它们的确认状态。
数据类型:逻辑
FuseCoasted
- - - - - -引信海岸本地轨道
假
(默认)|真正的
保险丝海岸本地轨道,指定为真正的
或假
.将此属性设置为真正的
如果你想融合沿海的本地轨道(IsCoasted
属性的字段或属性localTracks
输入是真正的
).将其设置为假
如果你想只融合本地轨道,没有海岸。
例子:真正的
数据类型:逻辑
StateFusion
- - - - - -状态融合算法
“十字”
(默认)|“十字路口”
|“自定义”
状态融合算法,具体为:
“十字”
-使用交叉协方差融合算法“十字路口”
—采用协方差交集融合算法“自定义”
—自定义融合功能
使用StateFusionParameters
属性指定状态融合算法使用的附加参数。
数据类型:字符
CustomStateFusionFcn
- - - - - -自定义状态融合功能
”
(默认)|函数处理
自定义状态融合函数,指定为函数句柄。状态融合函数必须支持以下语法之一:
[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
|字符
|字符串
StateFusionParameters
- - - - - -状态融合功能参数
[]
(默认)
状态融合功能参数。取决于选择StateFusion
你可以指定算法StateFusionParameters
为:
如果
StateFusion
是“十字”
,将其指定为(0,1)中的标量。看到fusexcov
为更多的细节。如果
StateFusion
是“十字路口”
,将其指定为“引爆器”
或“跟踪”
.看到fusecovint
为更多的细节。如果
StateFusion
是“自定义”
,您可以在任何变量类型中指定这些参数,只要它们与可选参数的设置相匹配fuseParams
的自定义状态融合函数的输入CustomStateFusionFcn
财产。
默认情况下,该属性为空。
NumCentralTracks
- - - - - -中央级轨道数
非负整数
此属性是只读的。
当前由fuser维护的中心轨道数,作为非负整数返回。
数据类型:双
NumConfirmedCentralTracks
- - - - - -已确认的中央航迹数量
非负整数
此属性是只读的。
当前由fuser维护的已确认中心轨道数,作为非负整数返回。
数据类型:双
使用
语法
描述
从本地音轨列表返回确认音轨的列表。已确认的航迹被预测到更新时间,confirmedTracks
=熔化炉(localTracks
,tFusion
)tFusion
.
[
还返回暂定音轨的列表、所有音轨的列表和分析信息。confirmedTracks
,tentativeTracks
,allTracks
,analysisInformation
) =熔化炉(localTracks
,tFusion
)
输入参数
localTracks
- - - - - -当地的跟踪
的数组objectTrack
对象|数组的结构
的数组指定的本地履带objectTrack
类的属性名匹配的字段名的结构数组objectTrack
对象。本地航迹是从源航迹系统中的跟踪器生成的航迹。
提示
要指定一个空的objectTrack
对象,使用objectTrack.empty ()
.若要指定空结构,请使用repmat (toStruct (objectTrack), 0, 0)
.
数据类型:对象
|结构体
tFusion
- - - - - -更新时间
标量
更新时间,指定为标量。热测器预测所有中心轨迹到这个时间。单位以秒为单位。
数据类型:单
|双
输出参数
confirmedTracks
——确认跟踪
的数组objectTrack
对象|数组的结构
已确认的音轨,作为数组返回objectTrack
MATLAB中的对象®,并在代码生成中作为结构数组返回。在代码生成中,返回结构的字段名与的属性名相同objectTrack
.
参数中指定的确认阈值,即为确认ConfirmationThreshold
财产。在这种情况下IsConfirmed
对象或结构字段的属性是真正的
.
数据类型:结构体
|对象
tentativeTracks
-初步跟踪
的数组objectTrack
对象|数组的结构
的数组返回的试探性轨迹objectTrack
对象,并在代码生成中作为结构数组返回。在代码生成中,返回结构的字段名与的属性名相同objectTrack
.
中指定的确认阈值,则该跟踪为暂定跟踪ConfirmationThreshold
财产。在这种情况下IsConfirmed
对象或结构字段的属性是假
.
数据类型:结构体
|对象
allTracks
——所有的跟踪
的数组objectTrack
对象|数组的结构
所有音轨,作为数组返回objectTrack
对象,并在代码生成中作为结构数组返回。在代码生成中,返回结构的字段名与的属性名相同objectTrack
.所有轨迹包括确认轨迹和暂定轨迹。
数据类型:结构体
|对象
analysisInformation
-分析轨道更新的附加信息
结构
用于分析曲目更新的附加信息,作为结构返回。该结构的字段为:
场 | 描述 |
TrackIDsAtStepBeginning |
跟踪步骤开始时的id |
CostMatrix |
分配矩阵的成本 |
作业 |
从赋值函数返回的赋值 |
UnassignedCentralTracks |
未分配的中心轨道id |
UnassignedLocalTracks |
未分配的本地轨道id |
NonInitializingLocalTracks |
未分配但未用于初始化中心磁道的本地磁道id |
InitiatedCentralTrackIDs |
步骤中初始化的中心轨道id |
UpdatedCentralTrackIDs |
在此步骤中更新了中心道的id |
DeletedTrackIDs |
步骤中删除的中心轨道id |
TrackIDsAtStepEnd |
步骤结束时中心履带的id |
数据类型:结构体
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj
,使用以下语法:
发行版(obj)
特定于trackFuser
predictTrackToTime |
预测跟踪状态 |
initializeTrack |
初始化新轨道 |
deleteTrack |
删除现有的跟踪 |
sourceIndices |
熔化炉源指标 |
exportToSimulink |
导出跟踪器或跟踪fuser到Simulink模型 |
例子
使用trackFuser从两个源融合履带
定义两个跟踪源:一个内部和一个外部。的SourceIndex
必须是唯一的。
internalSource = fuserSourceConfiguration (1,“IsInternalSource”,真正的);externalSource = fuserSourceConfiguration (2“IsInternalSource”、假);
创建一个trackFuser
与FuserIndex
等于3。fuser使用上面定义的两个源并使用“十字”
StateFusion
模型。
熔化炉= trackFuser (“FuserIndex”,3,“MaxNumSources”2,...“SourceConfigurations”{internalSource; externalSource},...“StateFusion”,“十字”);
用两个来源的两个轨道更新热器。使用三维匀速状态,其中状态按[的顺序给出x;vx;y;v;z;vz].两条轨迹的状态是相同的,但协方差是不同的。对于第一个轨道,创建一个大的协方差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融合”)
参考文献
[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年。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
看到MATLAB代码生成中的系统对象(MATLAB编码器).
您必须指定
MaxNumSources
房地产施工。此外,该属性在代码生成时是只读的。您必须指定
SourceConfigurations
施工期间所有源的属性。此外,所有元素的
SourceConfigurations
必须使用相同的LocalToCentralTransformFcn
.所有元素的
SourceConfigurations
必须使用相同的CentralToLocalTransformFcn
.
输入轨道必须是结构数组而不是
objectTrack
对象数组。轨道输出(所有三个)都是结构数组而不是结构数组
objectTrack
对象数组。的
ObjectAttributes
结构的所有输入源跟踪必须是相同的格式(相同的字段名和数据类型)。的
StateParameters
的格式(相同的字段名和数据类型)StateParameters
履带加热器的结构。
版本历史
介绍了R2019b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。