主要内容

可视化传感器覆盖,检测和跟踪

配置和使用鸟瞰图来显示传感器覆盖范围,检测和自我车辆周围的跟踪结果。

概述

在自我车辆周围的二维地图上显示车辆坐标记录的数据是分析传感器覆盖、检测和跟踪结果的重要组成部分。使用birdsEyePlot在一段时间内显示此信息的快照或流数据并有效地更新显示。

这个示例读取预先记录的传感器数据和跟踪结果。它包括以下内容:

  • 车道信息

  • 视觉对象

  • 雷达对象

  • 位置,速度,协方差矩阵,和标记的轨迹

  • 最重要的对象

除视觉检测以每秒10次更新记录外,上述信息以每秒20次更新的高速率记录。

传感器配置文件定义具有两种覆盖模式的视觉传感器和雷达传感器的位置和覆盖区域。这些覆盖区域将显示在鸟瞰图上。

请注意,birdsEyePlot对象设置了一个非常特定的车辆坐标系统,其中x轴指向车辆前方,y轴指向车辆左侧,z轴指向地面上方。坐标系的原点通常定义为后桥的中心,传感器的位置是相对于原点定义的。有关更多细节,请参见自动驾驶工具箱中的坐标系统

定义场景限制和传感器覆盖范围

配置鸟瞰图需要两个步骤。在第一步中,创建了鸟瞰图,它建立了上面描述的坐标系,其中x轴向上,y轴向左。可以在每个方向上定义轴的极限。在这个前瞻性的例子中,我们定义了自我车辆前面90米和两边35米的场景。

画一个鸟瞰图,限定它的轴线。cep = birdsEyePlot (“Xlimits”90年[0],“Ylimits”35 [-35]);

在第二步中,创建了鸟瞰图。鸟瞰图提供了以下各种绘图器,每种绘图器都配置为绘制特定的数据类型。它们包括:

  • coverageAreaPlotter -绘制传感器覆盖区域

  • detectionPlotter -绘制对象检测

  • trackPlotter -绘制轨迹、轨迹不确定性和历史轨迹

  • laneBoundaryPlotter -绘制车道边界

  • pathPlotter -绘制物体轨迹

为一个视觉传感器和两个雷达模式创建一个coverageAreaPlotter帽(1)= coverageAreaPlotter (cep“FaceColor”“蓝”“EdgeColor”“蓝”);帽(2)= coverageAreaPlotter (cep),“FaceColor”“红色”“EdgeColor”“红色”);帽(3)= coverageAreaPlotter (cep,“FaceColor”“红色”“EdgeColor”“红色”);

负载传感器配置数据。传感器配置包括:

  • 传感器相对于轴原点(X,Y)的位置,单位为米

  • 传感器范围,以米为单位

  • 传感器相对于x轴的偏航角,单位为度

  • 传感器视场(FOV),以度为单位

负载(“SensorConfigurationData.mat”);使用传感器配置绘制传感器覆盖区域。愿景%传感器使用阴影蓝色覆盖区域和雷达模式的阴影%的红色。i = 1:3 plotCoverageArea(cap(i), [sensorParams(i).]X, sensorParams(我)。Y),...sensorParams(我)。范围,sensorParams(我)。YawAngle sensorParams(我).FoV);结束%添加标题标题(“鸟”眼中的阴谋”

上面的显示器显示了视觉传感器和两种雷达传感器模式的覆盖范围。

视觉传感器位于汽车中心原点(后桥)前方3.30米处,视距150米,视场38度。

雷达位于汽车中心原点前方3.38米处。雷达远程模式射程174米,视场角20度,而中程模式射程60米,视场角90度。注意,覆盖区域被截断在自我车辆前面90米和两边35米。

这个例子展示了一个前瞻性的场景;但是,您可以在中定义覆盖区域360 ^{\保监会}$围绕着自我的载体。例如,一个从车辆后部向后覆盖的传感器将以偏航角为方向180 ^{\保监会}$

接下来的几行读取记录的数据,为接下来的步骤做准备。

从文件加载记录的数据负载(“BirdsEyePlotExampleData.mat”“dataToDisplay”);跳到第125个时间步骤,这里有5个视觉检测和%多个雷达目标和轨迹。步伐= 125;从该时间步骤的记录文件中提取各种数据。[visionObjectsPos, radarObjectsPos, laneBoundaries, tracklocations,...trackvelocity, trackCovariances, trackLabels, MIOlabel, miposition,...MIOvelocity] = readDataFrame (dataToDisplay(步伐));

策划检测

接下来,创建绘图仪来显示所记录的视觉和雷达探测

创建一个视觉检测绘图仪,把它放在一个结构中以备将来使用。bepPlotters。愿景= detectionPlotter(BEP,“DisplayName的”视觉检测的...“MarkerEdgeColor”“蓝”“标记”“^”);将所有雷达探测合并到一个条目中,并存储它以备以后更新。bepPlotters。雷达= detectionPlotter (cep),“DisplayName的”“雷达检测”...“MarkerEdgeColor”“红色”);打电话给视觉检测绘图仪。plotDetection (bepPlotters。愿景,visionObjectsPos);重复上述雷达探测plotDetection (bepPlotters。雷达、radarObjectsPos);

绘制轨道和最重要的对象

在将航迹添加到鸟眼图时,我们提供了位置、速度和位置协方差信息。绘图仪负责显示轨迹历史轨迹,但由于这是单帧,所以不会有历史记录。

创建一个音轨绘图仪,显示最近10个音轨更新。bepPlotters。跟踪= trackPlotter (cep),“DisplayName的”跟踪对象的...“HistoryDepth”10);创建一个轨迹绘图仪来绘制最重要的对象。bepPlotters。绪= trackPlotter (cep),“DisplayName的”“最重要的对象”...“MarkerFaceColor”“黑”);调用轨迹绘图器绘制所有轨迹。plotTrack (bepPlotters。Track, tracklocations, trackvelocity, trackCovariances, trackLabels);%对最重要对象(MIO)重复plotTrack (bepPlotters。MIO, miposition, MIOvelocity, MIOlabel);

绘制巷道边界

绘制车道边界可以利用parabolicLaneBoundary对象。为了使用它,我们将车道边界保存为抛物线laneboundary对象,并用它调用绘图仪。

为车道边界创建绘图仪。bepPlotters。LaneBoundary = laneBoundaryPlotter (cep),...“DisplayName的”“车道边界”“颜色”,(。9。9 0]);调用车道边界绘图仪plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);

从录音文件中显示场景

记录文件包含与时间相关的传感器检测、跟踪信息和车道边界。下面的代码展示了如何回放录音并在上面配置的鸟瞰图上显示结果。

注:视觉检测每隔一帧提供一次。在这种情况下,显示缺乏新的传感器检测是有益的。要做到这一点,只需将一个空数组传递给适当的绘图器,以从显示中删除以前的检测。

倒回录音文件的开头步伐= 0;numSteps =元素个数(dataToDisplay);场景中的步骤数只要鸟眼的情节是打开的,循环通过场景。timeStep < numSteps && isvalid(BEP.Parent)提升timeSteptimeStep = timeStep + 1;捕获当前时间以获得真实的显示速率抽搐;为该时间步骤读取数据[visionObjectsPos, radarObjectsPos, laneBoundaries, tracklocations,...trackvelocity, trackCovariances, trackLabels, MIOlabel, miposition,...MIOvelocity] = readDataFrame (dataToDisplay(步伐));%绘制检测plotDetection (bepPlotters。愿景,visionObjectsPos);plotDetection (bepPlotters。雷达、radarObjectsPos);情节轨迹和MIOplotTrack (bepPlotters。Track, tracklocations, trackvelocity, trackCovariances, trackLabels);plotTrack (bepPlotters。MIO, miposition, MIOvelocity, MIOlabel);%绘制车道边界plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);记录的数据以每秒20帧的速度获得。暂停50毫秒,以获得更真实的显示速率。你%在此中处理数据和表单跟踪时不需要此选项%循环。暂停(0.05 - toc)结束

总结

此示例演示了如何配置和使用鸟瞰图对象以及与之关联的一些各种绘图器。

尝试使用轨道和最重要的对象绘图仪,或使用不同的录音文件的鸟瞰图。

支持功能

readDataFrame-从dataFrame提供的数据中提取单独的字段

函数[visionObjectsPos, radarObjectsPos, laneBoundaries, tracklocations,...trackvelocity, trackCovariances, trackLabels, MIOlabel, miposition,...MIOvelocity] = readDataFrame(dataFrame) visionObjectsPos = dataFrame.visionObjectsPos;radarObjectsPos = dataFrame.radarObjectsPos;laneBoundaries = dataFrame.laneBoundaries;trackPositions = dataFrame.trackPositions;trackVelocities = dataFrame.trackVelocities;trackCovariances = dataFrame.trackCovariances;trackLabels = dataFrame.trackLabels;MIOlabel = dataFrame.MIOlabel;MIOposition = dataFrame.MIOposition;MIOvelocity = dataFrame.MIOvelocity;结束

另请参阅

对象

功能

相关的话题

Baidu
map