主要内容

可视化传感器覆盖范围、检测和跟踪

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

概述

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

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

  • 车道信息

  • 视觉对象

  • 雷达对象

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

  • 最重要的对象

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

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

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

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

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

创建一个鸟瞰图并限制其轴线BEP=鸟瞰图(“Xlimits”90年[0],“Ylimits”35 [-35]);

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

  • coverage Gear绘图仪-绘制传感器覆盖区域

  • 检测绘图仪-打印对象检测

  • 轨迹绘图仪-打印轨迹、轨迹不确定性和历史轨迹

  • 车道基准绘图仪-绘制车道边界

  • pathPlotter—绘制物体轨迹

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

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

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

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

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

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

装载(“SensorConfigurationData.mat”);%使用传感器配置绘制传感器覆盖区域。视觉%传感器使用阴影蓝色覆盖区域和雷达模式阴影%的红色。对于i=1:3(第(i)章),[sensorParams(i).X,sensorParams(i).Y],...传感器参数(i).范围,传感器参数(i).亚旺乐,传感器参数(i).视野;结束%添加标题标题(“鸟”眼中的阴谋”)

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

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

雷达位于车辆中心原点前方3.38米处。雷达远程模式的射程为174米,FOV为20度,而中程模式的射程为60米,FOV为90度。请注意,覆盖区域在ego车辆前方90米处和每个sid上35米处被截断E

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

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

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

策划检测

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

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

绘制轨道和最重要的对象

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

%创建显示最近10次轨迹更新的轨迹绘图仪bepPlotters。跟踪= trackPlotter (cep),“显示名称”,跟踪对象的,...“历史深度”10);%创建轨迹绘图仪以打印最重要的对象bepPlotters。绪= trackPlotter (cep),“显示名称”,“最重要的对象”,...“MarkerFaceColor”,“黑色”);%调用轨迹绘图仪绘制所有轨迹plotTrack (bepPlotters。跟踪,跟踪位置,跟踪速度,跟踪协方差,跟踪标签);%对最重要的对象(MIO)重复此操作plotTrack (bepPlotters。MIO, miposition, MIOvelocity, MIOlabel);

绘制车道边界

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

为车道边界创建一个绘图器bepPlotters.LaneBoundary=LaneBoundary绘图仪(BEP,...“显示名称”,“车道边界”,“颜色”,[.9 .9 0]);%调用车道边界绘图仪plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);

从录音文件中显示场景

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

注意:每隔一帧提供一次视觉检测。在这种情况下,显示缺少新传感器检测是有益的。为此,只需将空阵列传递到相应的绘图仪,即可从显示中删除以前的检测。

%倒带到录音文件的开头timeStep=0;numSteps=numel(dataToDisplay);%场景中的步骤数%只要鸟瞰图打开,就可以在场景中循环timeStep < numSteps && isvalid(BEP.Parent)%提升timeSteptimeStep=timeStep+1;%捕获当前时间以获得真实的显示率抽搐;%读取该时间步长的数据[visionObjectsPos, radarObjectsPos, laneBoundaries, trackPositions,...trackvelocity, trackcovariance, trackLabels, MIOlabel, miposition,...MIOvelocity]=readDataFrame(dataToDisplay(timeStep));%绘制检测plotDetection (bepPlotters。愿景,visionObjectsPos);plotDetection (bepPlotters。雷达、radarObjectsPos);%绘图轨迹和MIOplotTrack (bepPlotters。跟踪,跟踪位置,跟踪速度,跟踪协方差,跟踪标签);plotTrack (bepPlotters。MIO, miposition, MIOvelocity, MIOlabel);%地块车道边界plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);%记录的数据以每秒20帧的速率获得。%暂停50毫秒以获得更真实的显示速率。您可以%在处理数据和表单跟踪时不需要此%循环。暂停(0.05 - toc)结束

总结

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

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

金宝app辅助功能

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

函数[visionObjectsPos, radarObjectsPos, laneBoundaries, trackPositions,...trackvelocity, trackcovariance, 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;结束

另见

物体

功能

相关的话题