可视化传感器覆盖范围、检测和跟踪
配置和使用一个鸟瞰的情节显示传感器的覆盖范围,检测和跟踪结果的自我。
概述
二维地图上显示数据记录在载体坐标系在自我车辆保险分析传感器的一个重要组成部分,检测和跟踪结果。使用
显示此信息在一定时间的快照或流数据和有效地更新显示。birdsEyePlot
这个例子中读取预先录制好的传感器数据和跟踪结果。它包括以下几点:
车道信息
视觉对象
雷达对象
位置、速度、协方差矩阵和标签的痕迹
最重要的对象
上面的信息被记录在一个较高的速度每秒20更新,除了视觉检测,以每秒10更新记录。
一个传感器配置文件定义了视觉传感器的位置和覆盖区域和一个雷达传感器和两个报道模式。这些覆盖区域将显示在鸟瞰的阴谋。
请注意,birdsEyePlot
对象设置一个非常具体的车辆坐标系,轴指向前方的车辆,y轴指向左边的车,从地面和z轴点。坐标系统的起源通常定义为后桥的中心,定义和传感器的位置相对于原点。更多细节,请参阅坐标系统在自动驾驶的工具箱。
定义场景限制和传感器覆盖
配置一个鸟瞰的情节需要两个步骤。在第一步中,创建了鸟瞰的情节,设置上面描述的坐标系统,在轴向上直接和轴指向左边。可以定义在每个方向上的轴限制。在这个前瞻性的例子中,我们定义现场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(我),(sensorParams(我)。X, sensorParams .Y)(我),…sensorParams(我)。范围,sensorParams(我)。YawAngle sensorParams(我).FoV);结束%添加标题标题(“鸟”眼中的阴谋”)
上面的显示器显示了视觉传感器和两个雷达传感器的报道模式。
视觉传感器定位3.30米的起源(后桥)中心的车,射程150米,38度的视场。
前面的雷达定位3.38米车的起源中心。雷达远程模式范围174米,20度的视场,而中程模式有一个60米的视场范围90度。注意,覆盖区域是截在前面90米自我两边车辆和35米。
这个例子显示了一个前瞻性场景;然而,您可以定义覆盖地区在自我。例如,传感器覆盖面向后方的车辆向后将偏航角。
接下来的几行读取记录数据为下一步做准备。
%从文件加载记录数据负载(“BirdsEyePlotExampleData.mat”,“dataToDisplay”);%跳到125时间步,有5个视觉检测和%多个雷达对象和跟踪。步伐= 125;%提取的各种数据记录文件的时间步[visionObjectsPos, radarObjectsPos laneBoundaries trackPositions,…trackVelocities、trackCovariances trackLabels、MIOlabel MIOposition,…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。跟踪、trackPositions trackVelocities、trackCovariances trackLabels);%重复做的最重要的对象(绪)plotTrack (bepPlotters。绪,MIOposition MIOvelocity MIOlabel);
策划车道边界
策划车道边界可以利用
对象。使用它,我们拯救了车道边界parabolicLaneBoundary对象,并调用绘图机。parabolicLaneBoundary
%为车道边界创建一个绘图机bepPlotters。LaneBoundary = laneBoundaryPlotter (cep),…“DisplayName的”,“车道边界”,“颜色”,(。9。9 0]);%的车道边界绘图仪plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);
显示一个场景从录音文件
录音文件包含时间传感器检测,跟踪信息,车道边界。接下来的代码显示了如何回放录音和显示结果上面配置的鸟瞰的阴谋。
注意:视觉检测提供了其他框架。在这种情况下,它有利于显示缺乏新的传感器检测。,只是一个空数组传递给适当的绘图机显示删除前面的检测。
%回放录音文件的开始步伐= 0;numSteps =元素个数(dataToDisplay);%的步数的场景%遍历场景只要鸟瞰情节是开着的而步伐< numSteps & & isvalid (BEP.Parent)%推广步伐步伐=步伐+ 1;%获取当前时间为一个现实的显示率抽搐;%读取数据的时间步[visionObjectsPos, radarObjectsPos laneBoundaries trackPositions,…trackVelocities、trackCovariances trackLabels、MIOlabel MIOposition,…MIOvelocity] = readDataFrame (dataToDisplay(步伐));%绘制检测plotDetection (bepPlotters。愿景,visionObjectsPos);plotDetection (bepPlotters。雷达、radarObjectsPos);%情节追踪和绪plotTrack (bepPlotters。跟踪、trackPositions trackVelocities、trackCovariances trackLabels);plotTrack (bepPlotters。绪,MIOposition MIOvelocity MIOlabel);%情节车道边界plotLaneBoundary (bepPlotters。LaneBoundary laneBoundaries);%的速度记录数据得到20帧每秒。%暂停为50毫秒更现实的显示率。你%不需要当你处理数据和表格跟踪%循环。暂停(0.05 - toc)结束
总结
这个例子演示了如何配置和使用一个鸟瞰的情节对象和一些与之相关的各种各样的策划者。
尝试使用跟踪和最重要的对象鸟瞰阴谋策划者或使用不同的录音文件。
万博1manbetx支持功能
readDataFrame——提取分离从dataFrame中提供的数据字段
函数[visionObjectsPos, radarObjectsPos laneBoundaries trackPositions,…trackVelocities、trackCovariances trackLabels、MIOlabel MIOposition,…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;结束