主要内容

可视化传感器覆盖、检测和轨迹

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

概述

在ego车辆周围的二维地图上显示记录的车辆坐标数据是分析传感器覆盖、检测和跟踪结果的重要部分。使用Birdseyebplot.显示某一特定时间的该信息的快照,或流数据并有效地更新显示。

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

  • 车道信息

  • 视觉物体

  • 雷达对象

  • 轨道的位置、速度、协方差矩阵和标签

  • 最重要的对象

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

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

请注意,Birdseyebplot.物体建立了一个非常特殊的车辆坐标系统,其中x轴指向车辆前方,y轴指向车辆左侧,z轴指向地面上方。坐标系统的原点通常定义为后桥的中心,传感器的位置相对于原点定义。有关详细信息,请参见自动驾驶工具箱中的坐标系统

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

配置鸟瞰图需要两个步骤。在第一步骤中,创建鸟瞰图,该鸟瞰图设置了上述坐标系,其中X轴被引导向上,Y轴被引导到左侧。可以在每个方向上定义轴限制。在这一前进的示例中,我们在自助式车辆前面的场景最多90米,每侧35米。

%创建鸟瞰图并限制轴cep = birdsEyePlot (“Xlimits”90年[0],“Ylimits”35 [-35]);

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

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

  • detectionPlotter—绘制对象检测

  • trackPlotter -绘制轨迹,跟踪不确定性和历史轨迹

  • laneBoundaryPlotter -绘制车道边界

  • pathplotter - 绘图对象轨迹

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

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

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

  • 传感器范围,单位为米

  • 传感器相对于x轴的偏航角,以度数表示

  • 传感器视场(FOV),以度数表示

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

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

视觉传感器位于汽车中心原点(后轴)前方3.30米处,射程150米,视场视角为38度。

雷达位于距离原点3.38米的车中央。雷达远程模式的射程为174米,视野为20度,而中程模式的射程为60米,视野为90度。注意,覆盖区域在ego车辆前方90米和两侧35米处被截断。

这个例子展示了一个前瞻性的场景;但是,您可以在360 ^{\保监会}$在自我车辆周围。例如,从车辆后部覆盖的传感器将以横摆角度定向$ 180 ^ {\ circ} $

接下来的几行读取记录的数据以准备下一步。

%加载文件中的数据负载(“BirdsEyePlotExampleData.mat”“dataToDisplay”);%跳到第125个时间步,其中有5个视觉检测和多个雷达目标和航迹。步伐= 125;%从记录的文件中提取该时间步骤的各种数据[visionObjectsPos, radarObjectsPos, laneBoundaries, trackPositions,...TrackVelocities,TrackCovercirce,TrackLabels,Miolabel,MioOposition,...MIOvelocity] = readDataFrame (dataToDisplay(步伐));

绘制检测

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

%创建一个视觉检测绘图仪,把它放在一个结构体中供将来使用bepPlotters。愿景= detectionPlotter(BEP,“DisplayName的”视觉检测的...“MarkerEdgeColor”“蓝”“标记”'^');将所有雷达检测合并到一个条目中,并将其存储以备以后更新bepplotters.radar = DetectionPlotter(BEP,“DisplayName的”“雷达检测”...“MarkerEdgeColor”“红色”);呼叫视觉检测绘图仪plotDetection (bepPlotters。愿景,visionObjectsPos);对雷达探测重复以上步骤plotDetection (bepPlotters。雷达、radarObjectsPos);

绘制轨道和最重要的对象

当将轨迹添加到鸟眼图时,我们提供位置、速度和位置协方差信息。绘图仪负责显示轨迹历史轨迹,但由于这是一个单独的帧,因此不会有历史记录。

%创建一个轨道绘图仪,显示最近10个轨道更新bepplotters.track = trackplotter(bep,“DisplayName的”跟踪对象的...“HistoryDepth”10);创建一个绘图仪来绘制最重要的对象bepPlotters。绪= trackPlotter (cep),“DisplayName的”“最重要的对象”...“MarkerFaceColor”“黑”);调用轨道绘图仪绘制所有轨道plottrack(bepplotters.track,trackpositions,trackvelocities,trackcovercirce,tracklabels);%重复最重要的对象(MIO)plotTrack (bepPlotters。MIO, miposition, MIOvelocity, MIOlabel);

绘制车道边界

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

为车道边界创建一个绘图器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, trackPositions,...TrackVelocities,TrackCovercirce,TrackLabels,Miolabel,MioOposition,...MIOvelocity] = readDataFrame (dataToDisplay(步伐));%绘图检测plotDetection (bepPlotters。愿景,visionObjectsPos);plotDetection (bepPlotters。雷达、radarObjectsPos);%情节轨道和MIOplottrack(bepplotters.track,trackpositions,trackvelocities,trackcovercirce,tracklabels);plotTrack (bepPlotters。MIO, miposition, MIOvelocity, MIOlabel);%地块车道边界plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);%记录的数据以每秒20帧的速率获得。暂停50毫秒以获得更真实的显示率。你在处理数据和表单跟踪时,%将不需要此操作%循环。暂停(0.05  -  TOC)结束

概括

这个示例演示了如何配置和使用鸟瞰图对象以及与之相关的一些不同的绘图仪。

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

万博1manbetx支持功能

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

函数[visionObjectsPos, radarObjectsPos, laneBoundaries, trackPositions,...TrackVelocities,TrackCovercirce,TrackLabels,Miolabel,MioOposition,...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;结束

另请参阅

对象

功能

相关话题