配置和使用鸟瞰图来显示自助式车辆周围的传感器覆盖,检测和跟踪结果。
在自我车辆周围的二维地图上显示记录在车辆坐标的数据是分析传感器覆盖,检测和跟踪结果的重要组成部分。采用
要显示此信息的快照一段时间或流数据并有效更新显示。Birdseyeplot.
此示例读取预先录制的传感器数据和跟踪结果。它包括以下内容:
车道信息
视觉物体
雷达物体
轨道的位置,速度,协方差矩阵和标签。
最重要的对象
以上信息以每秒20个更新的高速度记录,除了在每秒10个更新时记录的视觉检测。
传感器配置文件定义视觉传感器的位置和覆盖区域和具有两个覆盖模式的雷达传感器。这些覆盖区域将显示在鸟瞰图上。
请注意Birdseyeplot.
物体设置了一个非常特定的车辆坐标系,其中X轴从车辆向前向前指向车辆左侧的Y轴点,并且z轴从地面指向。坐标系的起源通常被定义为后轴的中心,并且传感器的位置相对于原点限定。有关更多详细信息,请参阅自动化驾驶工具箱中的坐标系。
配置Bird'e-Eye Plot需要两个步骤。在第一步中,创建鸟瞰图,其设置上述坐标系,其中X轴被引导向上,Y轴被引导到左侧。可以在每个方向上限定轴限制。在这个前瞻性示例中,我们将现场定义在自我车辆前方90米处,每侧35米。
%创建鸟瞰图并限制轴bep = birdseyebplot('xlimits',[0 90],'ylimits',[-35 35]);
在第二步中,创建了鸟瞰绘图仪。鸟瞰图提供以下各种绘图仪,每个绘图仪配置用于绘制特定数据类型。它们包括:
CoverageAreaplotter - 绘图传感器覆盖区域
DetectionPlotter - 绘图对象检测
Trackplotter - 情节曲目,跟踪不确定性和历史迹纵横道
LaneBoundaryPlotter - 情节车道边界
pathplotter - 绘图对象轨迹
%为视觉传感器和两个雷达模式创建一个覆盖的遮盖仪帽(1)=覆盖仪(BEP,'facecholor'那'蓝色的'那'Edgecolor'那'蓝色的');帽(2)=覆盖仪(BEP,'facecholor'那'红色的'那'Edgecolor'那'红色的');帽(3)=覆盖仪(BEP,'facecholor'那'红色的'那'Edgecolor'那'红色的');
加载传感器配置数据。传感器配置包括:
传感器相对于轴上的位置(x,y),以米为单位
传感器范围,以米为单位
传感器横摆角相对于x轴,以度为单位
传感器视野(FOV),以度为单位
加载('sensorconfigurationdata.mat');%使用传感器配置绘制传感器覆盖区域。想象%传感器使用着色的蓝色覆盖区域,雷达模式被阴影% 红色的。为了i = 1:3 plotcoveragearea(帽(i),[sensorparams(i).x,sensorparams(i).y],......SensorParams(i).range,sensorparams(i).yawangle,sensorparams(i).fov);结尾% 添加标题标题('Bird''s-Eye Plot')
上面的显示屏显示了视觉传感器和两个雷达传感器模式的覆盖范围。
视觉传感器位于汽车中心的起源(后桥)前面的3.30米,范围为150米,达到38度的FOV。
雷达位于汽车中心的原产地前方3.38米。雷达长距离模式的范围为174米,FOV为20度,而中档模式的范围为60米,FOV为90度。请注意,覆盖区域在自助式车辆前面的90米处截断,每侧35米。
此示例显示了前瞻性的情景;但是,您可以定义覆盖区域在自我车辆周围。例如,从车辆后部后面覆盖的传感器将以横摆角度定向。
接下来的几行读取记录的数据以准备下一个步骤。
%加载来自文件的数据加载('birdseyeplotexampledata.mat'那'datatodisplay');%跳到第125次步骤,其中有5个视觉检测和%多雷达对象和轨道。Timestep = 125;%从记录的文件中提取各个数据的各个数据[VisionObjectSpos,RadarObjectspos,Laneboundaries,TrackPositions,......TrackVelocities,TrackCovercirce,TrackLabels,Miolabel,MioOposition,......miovelocity] = readdataframe(DatatoDisplay(Timestep));
接下来,创建绘图仪以显示记录的视觉和雷达检测
%创建视觉检测绘图仪将其放入结构中以供将来使用bepplotters.vision = DetectionPlotter(BEP,'显示名称'那'视觉检测'那......'markeredgecolor'那'蓝色的'那'标记'那'^');%将所有雷达检测组合到一个条目中并将其存储以供以后更新bepplotters.radar = DetectionPlotter(BEP,'显示名称'那'雷达检测'那......'markeredgecolor'那'红色的');%呼叫视觉检测绘图仪plotdetection(bepplotters.vision,VisionObjectspos);%重复上述雷达检测plotdetection(bepplotters.radar,radarobjectspos);
在向鸟瞰图中添加曲目时,我们提供位置,速度和位置协方差信息。绘图仪负责显示曲目历史记录路径,但由于这是一个帧,因此不会有历史记录。
%创建一个轨道绘图仪,显示最后10个跟踪更新bepplotters.track = trackplotter(bep,'显示名称'那'跟踪对象'那......'历史中心',10);%创建一个曲目绘图仪,绘制最重要的对象bepplotters.mio = trackplotter(bep,'显示名称'那'最重要的物体'那......'markerfacecolor'那'黑色的');%呼叫曲目绘图仪绘制所有曲目plottrack(bepplotters.track,trackpositions,trackvelocities,trackcoverces,tracklabels);%重复最重要的物体(MIO)Plottrack(bepplotters.mio,mioposition,miovelocity,miolabel);
绘制车道边界可以利用
目的。要使用它,我们将车道边界保存为抛物面对象,并用它调用绘图仪。抛物面普遍
%为车道边界创建了一个绘图仪bepplotters.laneboundary = LaneBoundaryPlotter(BEP,......'显示名称'那'车道边界'那'颜色',[。9 .9 0]);%致电车道边界绘图仪PlotlaneBoundary(bepplotters.laneboundary,Laneboundaries);
录制文件包含时间相关的传感器检测,跟踪信息和车道边界。下一个代码显示如何播放录制并在上面配置的鸟瞰图上显示结果。
注意:提供所有其他帧的视觉检测。在这种情况下,显示缺乏新的传感器检测是有益的。为此,只需将空数组传递给适当的绘图仪以删除显示器的先前检测。
%倒带到录制文件的开头timestep = 0;numsteps = numel(DataToDisplay);百分比情况下的步数只要鸟的眼图打开,%循环通过场景尽管timestep%促进时间戳timestep = timestep + 1;%捕获现实显示率的当前时间tic;%读取该时间步骤的数据[VisionObjectSpos,RadarObjectspos,Laneboundaries,TrackPositions,......TrackVelocities,TrackCovercirce,TrackLabels,Miolabel,MioOposition,......miovelocity] = readdataframe(DatatoDisplay(Timestep));%绘图检测plotdetection(bepplotters.vision,VisionObjectspos);plotdetection(bepplotters.radar,radarobjectspos);%情节曲目和mioplottrack(bepplotters.track,trackpositions,trackvelocities,trackcoverces,tracklabels);Plottrack(bepplotters.mio,mioposition,miovelocity,miolabel);%绘图车道边界PlotlaneBoundary(bepplotters.laneboundary,Laneboundaries);%记录的数据以每秒20帧的速率获得。%暂停50毫秒,以获得更现实的显示率。你当您处理数据和表单曲目时,%将不需要此操作% 环形。暂停(0.05 - TOC)结尾
此示例演示了如何配置和使用鸟瞰图对象和与其相关联的一些各种绘图仪。
尝试使用曲目和最重要的对象绘图仪或使用具有不同录制文件的鸟瞰图。
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;trackcovariarces = dataframe.trackcoverce;tracklabels = dataframe.tracklabels;miolabel = dataframe.miolabel;mioposition = dataframe.mioposition;miovelocity = dataframe.miovelocity;结尾