主要内容

trackerGridRFS

基于网格的多目标跟踪

描述

trackerGridRFS系统对象™是一个跟踪器能够处理来自多个传感器的检测多个目标的二维环境中。跟踪器跟踪动态对象在一个自治系统使用高分辨率传感器数据点云和雷达探测等。跟踪器使用随机有限集(RFS)中定义的方法结合Dempster-Shafer近似为基础[1]估计网格的动态特性的细胞。从网格中提取对象,追踪使用cell-to-track协会计划[2]。更多细节,请参阅算法

使用这个对象跟踪目标:

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

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

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

跟踪器= trackerGridRFS (名称,值)设置跟踪器使用一个或多个属性名称-值对。例如,trackerGridRFS (' MaxNumTracks ', 100)创建一个基于网格的多目标跟踪器,允许最多100张光碟。在报价附上每个属性的名字。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

跟踪器配置

独特的跟踪标识符,指定为一个非负整数。这个属性的使用SourceIndex在跟踪输出,区分来自不同的追踪器的跟踪multiple-tracker系统。您必须指定这个属性是一个正整数使用跟踪跟踪熔化炉的输出作为输入。

例子:1

跟踪传感器的配置,指定为一个trackingSensorConfiguration对象的数组trackingSensorConfiguration或细胞数组的数组trackingSensorConfiguration对象。这个属性提供了跟踪传感器的配置信息,例如传感器检测限制,传感器分辨率,和传感器安装跟踪器。没有默认值SensorConfigurations财产,你必须指定SensorConfigurations财产在使用跟踪器之前。如果,你可以更新配置HasSensorConfigurationsInput属性设置为真正的,通过指定输入参数的配置配置

当指定trackingSensorConfiguration对象,以下属性必须指定这些格式:

属性名 格式
SensorIndex

传感器的惟一标识符,指定为一个正整数。

IsValidTime

显示传感器数据是否应该被用来更新追踪,指定为真正的

SensorTransformParameters

传感器的参数变换函数,指定为一个p有效测量参数的数组结构。p是传感器的数量。结构应该包含字段中使用相同的名称作为测量参数测量功能,如cvmeas函数。

第一个结构必须从自治系统描述转换传感器坐标。随后从自治系统结构描述转换跟踪坐标系。如果只有一个结构,实行跟踪执行跟踪坐标系的自治系统。

SensorLimits

传感器检测范围,指定为标量的2×2矩阵。第一行指定上下极限的方位角度。第二行指定上下极限探测范围的米。

跟踪器忽略了FilterInitializationFcn,SensorTransformFcn,MaxNumDetsPerObject的属性trackingSensorConfiguration对象。

交替,您可以指定这个属性使用结构和字段名称相同的属性名trackingSensorConfiguration对象。

随着时间的推移,使更新传感器配置指定为真正的。将此属性设置为真正的如果你想要的配置传感器随时间更新。当这个属性设置真正的,您必须指定配置输入配置当使用这个对象。

数据类型:逻辑

参数的跟踪状态参考系,指定为一个结构或一个结构数组。跟踪器通过其StateParameters属性值对StateParameters属性生成的跟踪。您可以使用这些参数来定义的坐标系跟踪报告或其他可取的属性生成的痕迹。

例如,您可以使用以下结构来定义一个直角坐标系的原点位置(10 10 0)米,其起源速度(2 2 0)米每秒的帧的场景。

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

可调:是的

数据类型:结构体

最大数量的传感器可以连接到追踪,指定为一个正整数。MaxNumSensors必须大于或等于最大的价值SensorIndex发现在所有的传感器数据和配置用于更新追踪。

数据类型:|

最大数量的跟踪器可以保持跟踪,指定为一个正整数。

数据类型:|

网格的定义

x方向尺寸网格的局部坐标,指定为一个积极的标量米。

y方向尺寸网格的局部坐标,指定为一个积极的标量米。

分辨率的网格,指定为一个积极的标量。GridResolution代表细胞的数量每米的网格x- - -y方向的网格。

网格的起源在当地坐标系的位置,指定为一个双元素向量标量的米。网格起源代表手机的左下角时网格。

粒子滤波

运动跟踪模型,指定为常速的,“恒定加速度”,或“constant-turn-rate”。每个运动模型的粒子状态和对象状态是:

MotionModel 粒子状态 对象状态
常速的 [x;vx;y;v) [x;vx;y;v;偏航;L;W)
“恒定加速度” [x;vx;斧头;y;v;ay] [x;vx;斧头;y;v;ay;偏航;L;W)
“constant-turn-rate” [x;vx;y;v;w) [x;vx;y;v;w;偏航;L;W)

地点:

  • x——对象的位置在x方向上当地的跟踪框架(m)

  • y——对象的位置在y方向上当地的跟踪框架(m)

  • vx——对象的速度在x方向上当地的跟踪框架(米/秒)

  • v——对象在y方向上的速度当地的跟踪框架(米/秒)

  • 斧头——物体的加速度在x方向上当地的跟踪框架(m / s2)

  • ——物体的加速度在y方向上当地的跟踪框架(m / s2)

  • w-偏航率在当地跟踪对象的框架(度/秒)

  • 偏航-偏航角的对象在本地跟踪框架(度)

  • l对象的长度(米)

  • W对象的宽度(米)

最小和最大速度的对象,指定为一个2×2矩阵m / s的标量。第一行指定了上下的速度限制x方向和第二行指定了上下的速度限制y方向。跟踪器使用这些限制样本新粒子使用均匀分布在网格中。

最小和最大加速度的对象,指定为一个2×2矩阵m / s的标量2。第一行指定的上下极限加速度x方向和第二行指定的上下极限加速度y方向。跟踪器使用这些限制样本新粒子使用均匀分布在网格中。

当这个属性只是活跃MotionModel属性设置为“恒定加速度”

最小和最大的对象,指定一个双元素向量的标量学位/ s。第一个元素定义了最小转率和第二个元素定义了最大周转周期。

当这个属性只是活跃MotionModel属性设置为“constant-turnrate”

过程噪声协方差,指定为一个N——- - - - - -N矩阵的标量。这个属性指定粒子的过程噪声的位置和几何中心的目标。

  • HasAdditiveProcessNoise属性设置为真正的,这个过程直接增加了预测模型。在这种情况下,N等于粒子的维数的状态。

  • HasAdditiveProcessNoise属性设置为噪音,定义流程根据选定的运动模型。过程噪声添加到高阶术语中,加速度等常速的模型。

    MotionModel 数量条款加速度 术语的意义
    常速的 2 加速度的xy方向
    “恒定加速度” 2 混蛋的xy方向
    “constant-turn-rate” 3 加速度的xy方向以及角加速度

例子:[1.0 - 0.05;0.05 - 2)

可调:是的

使模型过程噪声作为添加剂,指定为真正的。当这个属性真正的、过程噪声直接添加到状态向量。否则,噪音是融入运动模型。

例子:真正的

每个网格的粒子数量,指定为一个正整数。更多的粒子可以提高评估质量,但会增加计算成本。

每个时间步新生(初始化)的粒子数量,指定为一个正整数。跟踪确定这些新生的粒子的位置通过使用预测之间的不匹配和更新后的居住质量和信念BirthProbability财产。一个合理的价值NumBirthParticles属性指定的大约百分之十的粒子数NumParticles财产。

目标的概率出生在一个单元中每一步,指定为一个标量范围[0 1)。诞生概率的概率控制新粒子生成细胞。

例子:1的军医

单位时间内死亡率的粒子,指定为一个积极的标量。死亡率表明粒子或目标的可能性消失后,一次一步。死亡率影响的生存概率(P年代)的一个组件之间的连续时间步骤:

P 年代 = ( 1 P d ) Δ T

在哪里ΔT是时间步。

例子:1的军医

可调:是的

对自由空间预测的信心,指定为一个标量。在预测阶段的追踪,细胞的质量信念的“免费”(无人)减少FreeSpaceDiscountFactor:

k | k 1 ( F ) = α Δ T k 1 ( F )

在哪里k是时间步指数,是信念,α是自由空间折现系数,ΔT是时间步。

可调:是的

跟踪初始化

聚类方法用于新对象提取,指定为“DBSCAN”“自定义”

  • “DBSCAN”——集群使用未赋值的动态网格细胞density-based空间聚类的应用程序与噪声(DBSCAN)算法。您可以配置指定的DBSCAN算法ClusteringThresholdMinNumCellsPerCluster跟踪器的属性。

  • “自定义”——集群未赋值的动态网格细胞使用自定义聚类函数中指定CustomClusteringFcn跟踪器的属性。

DBSCAN聚类阈值,指定为一个积极的标量。

要启用这个特性,设置聚类财产“DBSCAN”

自定义函数为集群未赋值的网格细胞,指定为一个函数处理。函数必须支持这个签名:金宝app

函数指数= myFunction (dynamicGridCells)
在哪里dynamicGridCells结构定义一组网格细胞初始化跟踪。它必须有这些字段:

描述
宽度 细胞的宽度,指定为一个积极的标量。
GridIndices 网格细胞指数,作为指定N2数组,N未赋值的细胞的数量。第一个元素指定的网格索引x方向,第二个元素指定的网格索引y方向。
状态 网格细胞、指定为一个P——- - - - - -N标量、数组P国家和维数N未赋值的细胞的数量。
StateCovariance 网格细胞状态协方差,指定为一个P——- - - - - -P——- - - - - -N标量、数组P国家和维数N未赋值的细胞的数量。
OccupancyMass 入住率信仰细胞的质量,作为一个指定N元向量,N未赋值的细胞的数量。
FreeMass 自由信念细胞的质量,作为一个指定N元向量,N未赋值的细胞的数量。

指数必须返回一个吗N元向量指标定义集群指数为每个动态网格单元。

要启用这个特性,设置聚类财产“自定义”

最小数量的细胞对DBSCAN每个集群,指定为一个积极的标量。这个属性点是否影响一个核心的DBSCAN算法。

要启用这个特性,设置聚类财产“DBSCAN”

函数来初始化新线路,指定为一个函数处理。初始化函数启动轨道从一组动态网格细胞。

默认初始化函数合并的高斯估计每个单元来描述对象的状态。对象的方向与平均速度的方向保持一致。取向的定义,对象的长度和宽度提取使用几何属性的细胞。对象计算的不确定性在长度、宽度和方向使用线性近似估计。

如果你选择定制自己的初始化函数,该函数必须支持以下签名:金宝app

函数跟踪= myFunction (dynamicGridCells)
在哪里dynamicGridCells结构定义一组网格细胞初始化跟踪。它有以下字段:

描述
宽度 细胞的宽度,指定为一个积极的标量。
GridIndices 网格细胞指数,作为指定N2数组,N未赋值的细胞的数量。第一个元素指定了方向网格索引,第二个元素指定在y方向上的网格索引。
状态 网格细胞、指定为一个P——- - - - - -N标量、数组P国家和维数N未赋值的细胞的数量。
StateCovariance 网格细胞状态协方差,指定为一个P——- - - - - -P——- - - - - -N标量、数组P国家和维数N未赋值的细胞的数量。
OccupancyMass 入住率信仰细胞的质量,作为一个指定N元向量,N未赋值的细胞的数量。
FreeMass 自由信念细胞的质量,作为一个指定N元向量,N未赋值的细胞的数量。

跟踪必须返回一个吗objectTrack对象或一个结构的字段名称的属性名称相同objectTrack对象。的尺寸必须一样的状态维度中指定MotionModel财产。

跟踪管理

函数来更新现有的追踪使用其相关的动态网格细胞,指定为一个函数处理。

默认更新功能更新状态StateCovariance跟踪的属性使用的新的估计动态网格细胞与跟踪。更新过程是类似的初始化过程TrackInitializationFcn财产。追踪不适用过滤状态和状态协方差。

如果你选择定制自己的更新函数,该函数必须支持这个签名:金宝app

函数updatedTrack = TrackUpdateFcn (predictedTrack dynamicGridCells)
地点:

  • predictedTrack的预测跟踪对象,指定为一个吗objectTrack对象。

  • dynamicGridCells是一个结构定义一组相关联的动态网格细胞的跟踪。结构有这些字段:

    描述
    宽度 细胞的宽度,指定为一个积极的标量。
    GridIndices 网格细胞指数,作为指定N2数组,N未赋值的细胞的数量。第一个元素指定的网格索引x方向,第二个元素指定的网格索引y方向。
    状态 网格细胞、指定为一个P——- - - - - -N标量、数组P国家和维数N未赋值的细胞的数量。
    StateCovariance 网格细胞状态协方差,指定为一个P——- - - - - -P——- - - - - -N标量、数组P国家和维数N未赋值的细胞的数量。
    OccupancyMass 入住率信仰细胞的质量,作为一个指定N元标量、数组N未赋值的细胞的数量。
    FreeMass 自由信念细胞的质量,作为一个指定N元标量、数组N未赋值的细胞的数量。

  • updatedTrack是更新后的跟踪,作为一个返回objectTrack对象或一个结构的字段名称的属性名称相同objectTrack对象。

阈值分配动态网格细胞追踪,指定为一个积极的标量。动态网格细胞只能关联一个轨道的距离(由负对数似)跟踪小于AssignmentThreshold价值。

  • 增加阈值,如果一个动态的细胞没有被分配到一个跟踪应该分配给它。

  • 降低阈值,如果是动态的细胞被分配给一个追踪他们不应该分配给。

例子:18.1

阈值进行跟踪确认,指定为一个实值向量的正整数1×2(mn)。跟踪确认是否已经分配给任何动态网格单元至少最后的更新N更新。

阈值跟踪删除指定为一个实值向量的正整数1×2[P R]。记录被删除,如果没有分配给任何动态网格单元至少P最后的更新R更新。

例子:0.01

数据类型:|

这个属性是只读的。

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

数据类型:

这个属性是只读的。

数量的跟踪确认,作为一个非负整数返回。如果IsConfirmed一个输出跟踪对象的属性真正的,跟踪确认。

数据类型:

这个属性是只读的。

使使用GPU的估计动态网格地图,指定为真正的。支持GPU计算需要并行计算工具箱™。

使用

描述

confirmedTracks=跟踪器(sensorData,时间)返回一个列表的更新追踪确认从传感器数据的列表sensorData在更新的时间时间。确认跟踪纠正和预测更新时间。

confirmedTracks=跟踪器(sensorData,配置,时间)还指定了配置的传感器配置。要启用这种语法,设置HasSensorConfigurationsInput财产真正的

(confirmedTracks,tentativeTracks,allTracks)=跟踪器(___)还返回一个列表的试探性的痕迹tentativeTracks和所有歌曲的列表allTracks。您可以使用任何输入参数从以前的语法的组合。

(confirmedTracks,tentativeTracks,allTracks,地图)=跟踪器(___)此外返回证据网格地图的跟踪维护。您可以使用返回的地图来获取详细的估计。

输入参数

全部展开

传感器数据,指定为一个N元阵列的结构。每个结构都必须定义一个高分辨率的测量传感器使用这些字段:

字段 描述
时间 时间的传感器报告数据,指定为负的标量。
SensorIndex 传感器的惟一标识符,指定为一个正整数。
测量 指定的传感器,测量K——- - - - - -矩阵的标量。K测量的尺寸,是测量的数量。每个测量定义的位置方面检测在一个矩形或球形框架。
MeasurementParameters 测量参数,指定为一个结构描述从粒子状态转换到测量。看到对象检测为更多的细节。

时间值必须小于或等于当前更新时间,时间,比前面的时间值用于更新追踪。

更新的时候,指定为一个标量。跟踪更新所有的追踪。单位是秒。

时间必须大于或等于最大时间字段值的sensorData结构。时间必须增加的价值与每个更新的追踪。

数据类型:|

传感器配置,指定为数组结构,单元阵列结构,或单元阵列trackingSensorConfiguration对象。如果指定的值使用结构数组或单元阵列的结构,你必须包括SensorIndex在每个结构作为一个领域。其他字段是可选的,但每个字段的结构必须具有相同的名称trackingSensorConfiguration对象属性。你只需要指定传感器配置,需要更新。例如,如果你想要更新IsValidTime属性仅第五传感器,指定配置作为结构(“SensorIndex”5“IsValidTime”,假)

提示

如果你有一个fusionRadarSensor跟踪系统中的传感器对象,您可以直接使用的配置结构传感器的输出对象作为输入。

依赖关系

要启用这个论点,设置HasSensorConfigurationsInput财产真正的

输出参数

全部展开

确认跟踪更新为当前时间,作为一个数组返回objectTrack对象,每个元素代表一个对象的跟踪。每个轨道的国家形式遵循规定的形式MotionModel财产。

试探性的,作为一个数组返回objectTrack对象,每个元素代表一个对象的跟踪。每个轨道的国家形式遵循规定的形式MotionModel财产。

所有的歌曲,作为一个数组返回objectTrack对象,每个元素代表一个对象的跟踪。每个轨道的国家形式遵循规定的形式MotionModel财产。

动态证据网格地图,作为一个返回dynamicEvidentialGridMap对象。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

predictTracksToTime 预测跟踪状态
predictMapToTime 预测动态映射到一个时间戳
showDynamicMap 情节动态占用网格地图
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
isLocked 确定系统对象在使用
克隆 创建重复的系统对象
重置 重置的内部状态系统对象

例子

全部折叠

创建一个跟踪场景。

现场= trackingScenario (“UpdateRate”5,“StopTime”5);rng (2021);%的可重复的结果

添加一个平台安装激光雷达传感器来跟踪场景。

平台=平台(现场);激光雷达= monostaticLidarSensor (1,“DetectionCoordinates”,“身体”,“HasOrganizedOutput”、假);

用随机位置和速度两个目标添加到场景。定义轨迹,网格,每个平台的维度。

我= = 1:2目标平台(现场);x = 50 *(2 *兰德- 1);y = 50 *(2 *兰德- 1);vx = 5 *(2 *兰德- 1);v = 5 *(2 *兰德- 1);target.Trajectory。位置=(xy0]; target.Trajectory.Velocity = [vx vy 0];%的方向对齐目标运动的方向。target.Trajectory。取向=四元数([atan2d (v, vx), 0, 0),“eulerd”,“ZYX股票”,“帧”);目标。米esh = extendedObjectMesh(“球”);目标。尺寸=结构(“长度”4“宽度”4“高度”2,“OriginOffset”,0 0 0);结束

定义激光雷达传感器的配置。

配置= trackingSensorConfiguration (1,“SensorLimits”(100 -180 180;0),“SensorTransformParameters”、结构、“IsValidTime”,真正的);

创建一个基于网格的追踪。

追踪= trackerGridRFS (“SensorConfigurations”配置,“AssignmentThreshold”5,“MinNumCellsPerCluster”4“ClusteringThreshold”3);

定义一个theaterPlot对象和两个相关策划者可视化跟踪场景。

tp = theaterPlot (“XLimits”50 [-50],“YLimits”,50 [-50]);trkPlotter = trackPlotter (tp,“DisplayName的”,“跟踪”,“MarkerFaceColor”,‘g’);tthPlotter = platformPlotter (tp,“DisplayName的”,“真理”,“MarkerFaceColor”,“r”,“ExtentAlpha”,0.2);

之前的场景与激光雷达数据和运行跟踪。

(场景)= scene.SimulationTime;时间提前%产生点云。tgtMeshes = targetMeshes(平台);[ptCloud,配置]=激光雷达(tgtMeshes、时间);%格式的数据追踪。sensorData =结构(“时间”、时间、“SensorIndex”,1“测量”ptCloud”,“MeasurementParameters”、结构);%更新使用传感器数据的追踪。跟踪=追踪(sensorData、时间);%可视化跟踪。pos = 0(元素个数(跟踪),3);韦尔= 0(元素个数(跟踪),3);东方= quaternion.ones(元素个数(跟踪),1);昏暗的= repmat (plat.Dimensions元素个数(跟踪),1);id =字符串([tracks.TrackID]);i = 1:元素个数(跟踪)或者(我:)=(跟踪(i) .State(2);跟踪(i) .State (4); 0];pos(我:)=(跟踪(i) .State(1);跟踪(i) .State (3); 0];昏暗的(我)。length = tracks(i).State(6); dim(i).Width = tracks(i).State(7); orient(i) = quaternion([tracks(i).State(5) 0 0],“eulerd”,“ZYX股票”,“帧”);结束trkPlotter.plotTrack (pos、昏暗的东方,ids);%可视化平台。pos = vertcat (tgtMeshes.Position);网= vertcat (tgtMeshes.Mesh);东方= vertcat (tgtMeshes.Orientation);tthPlotter.plotPlatform (pos、网格、东方);结束

图包含一个坐标轴对象。坐标轴对象包含4线类型的对象,文本。这些对象代表曲目,真理。

算法

全部展开

引用

[1]的主犯,D。路透社,S。托姆,M。、元、T。,Krehl, G., Maile, M., Gern, A. and Dietmayer, K., 2018. A random finite set approach for dynamic occupancy grid maps with real-time application.国际机器人研究杂志》上,37 (8),pp.841 - 866。

[2]),Sascha Georg Tanzmeister, Dirk Wollherr。“基于证据的对象跟踪动态占用网格在城市环境中。”2017年IEEE智能车辆研讨会(IV),页1064 - 1070。IEEE 2017。

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

版本历史

介绍了R2020b