classdef helperPanelDisplay < matlab.System
properties
ColorOrder = standardColorOrder;
end
properties
% Figure or panel to mount this display on
Parent
end
properties
GroundTruthColorIndex = 4;
RadarTrackColorIndex = 1;
LidarTrackColorIndex = 2;
FusedTrackColorIndex = 9;
RadarCoverageColorIndex = 2;
LidarCoverageColorIndex = 3;
GroundPointCloudColorIndex = 5;
ObstaclePointCloudColorIndex = 4;
CroppedPointCloudColorIndex = 3;
EgoVehicleIndex = 1;
EgoVehicleColorIndex = 7;
LidarDetectionColorIndex = 7;
RadarDetectionColorIndex = 6;
end
properties (Nontunable)
PlotRadarTracks = true;
PlotLidarTracks = true;
PlotFusedTracks = true;
PlotPointClouds = true;
PlotSegmentedPointClouds = true;
PlotRadarDetections = true;
PlotLidarDetections = true;
PlotCoverage = true;
PlotRadarResolution = false;
PlotGroundTruth = true;
PlotRoads = true;
PlotTrackVelocity = true;
PlotRadarDetectionVelocity = false;
PlotTrackCovariance = true;
ShowLegend = true;
FollowActorID
end
properties
ViewLocation = [-100 0];
ViewHeight = 100;
ViewYaw = 0;
ViewPitch = 60;
ViewRoll = 0;
end
properties (Dependent, SetAccess = protected)
GroundTruthColor
RadarTrackColor
LidarTrackColor
FusedTrackColor
RadarCoverageColor
LidarCoverageColor
GroundPointCloudColor
ObstaclePointCloudColor
CroppedPointCloudColor
EgoVehicleColor
LidarDetectionColor
RadarDetectionColor
end
properties
pGroundTruthPlotter
pRadarTrackPlotter
pRadarDetectionPlotter
pLidarTrackPlotter
pLidarDetectionPlotter
pFusedTrackPlotter
pCoveragePlotter
pGroundPointCloudPlotter
pObstaclePointCloudPlotter
pCroppedPointCloudPlotter
pTheaterPlot
pBirdsEyePlot
pFigure
pDimStruct = struct('Length',0,'Width',0,'Height',0,'OriginOffset',[0 0 0]);
pCoverageConfigStruct = coverageConfig(radarSensor(1));
pScenarioPlot
end
properties
pResolutionPlotters
end
methods
function val = get.GroundTruthColor(obj)
val = obj.ColorOrder(obj.GroundTruthColorIndex,:);
end
function val = get.RadarTrackColor(obj)
val = obj.ColorOrder(obj.RadarTrackColorIndex,:);
end
function val = get.LidarTrackColor(obj)
val = obj.ColorOrder(obj.LidarTrackColorIndex,:);
end
function val = get.FusedTrackColor(obj)
val = obj.ColorOrder(obj.FusedTrackColorIndex,:);
end
function val = get.RadarCoverageColor(obj)
val = obj.ColorOrder(obj.RadarCoverageColorIndex,:);
end
function val = get.LidarCoverageColor(obj)
val = obj.ColorOrder(obj.LidarCoverageColorIndex,:);
end
function val = get.GroundPointCloudColor(obj)
val = obj.ColorOrder(obj.GroundPointCloudColorIndex,:);
end
function val = get.EgoVehicleColor(obj)
val = obj.ColorOrder(obj.EgoVehicleColorIndex,:);
end
function val = get.LidarDetectionColor(obj)
val = obj.ColorOrder(obj.LidarDetectionColorIndex,:);
end
function val = get.RadarDetectionColor(obj)
val = obj.ColorOrder(obj.RadarDetectionColorIndex,:);
end
function val = get.ObstaclePointCloudColor(obj)
val = obj.ColorOrder(obj.ObstaclePointCloudColorIndex,:);
end
function val = get.CroppedPointCloudColor(obj)
val = obj.ColorOrder(obj.CroppedPointCloudColorIndex,:);
end
end
methods
function obj = helperPanelDisplay(varargin)
setProperties(obj,nargin,varargin{:});
end
end
methods (Access = {?helperLidarRadarTrackFusionDisplay})
function showLegend(obj)
% Show legend of existing figure on a new axes
assert(obj.ShowLegend,'Legend must exist');
ax = obj.pTheaterPlot.Parent;
ax.Position = [0 0 0 0];
l = legend(ax);
l.Position = [0 0 1 1];
end
end
methods (Access = protected)
function setupImpl(obj, varargin)
setupPlotters(obj, varargin{:});
end
function stepImpl(obj, scenario, ...
radarSensors, radarDetections, radarTracks, ...
lidarSensors, ptClouds, lidarDetections, segmentationInfo, lidarTracks, ...
fusedTracks)
% Plot truth
plotTruth(obj, scenario, radarSensors, lidarSensors);
% Plot detection data
plotSensorData(obj, scenario, radarDetections, ptClouds, lidarDetections, segmentationInfo);
% Plot track data
plotTracks(obj, radarTracks, lidarTracks, fusedTracks);
end
end
%% Plot updates
methods
function plotTruth(obj, scenario, radarSensors, lidarSensors)
if obj.PlotGroundTruth
obj.pScenarioPlot.plotActors(scenario.Actors);
else
obj.pScenarioPlot.plotActors(driving.scenario.Actor.empty(0,1));
end
if obj.PlotCoverage
[pos, range, orientation, fov] = parseCoverageAreaConfigs(obj, scenario, radarSensors, lidarSensors);
for i = 1:numel(obj.pCoveragePlotter)
obj.pCoveragePlotter{i}.plotCoverageArea(pos(i,:),range(i),orientation(i),fov(i));
end
% Plot radar resolutions
if obj.PlotRadarResolution
plotResolutions(obj, scenario, radarSensors);
end
end
end
function plotResolutions(obj, scenario, radarSensors)
ego = scenario.Actors(obj.EgoVehicleIndex);
egoPos = ego.Position;
egoOrient = quaternion([ego.Yaw ego.Pitch ego.Roll],'eulerd','ZYX','frame');
numPlotters = numel(radarSensors);
if isempty(obj.pResolutionPlotters)
obj.pResolutionPlotters = cell(numPlotters,1);
for i = 1:numPlotters
obj.pResolutionPlotters{i} = plot3(nan,nan,nan,'Color',obj.RadarCoverageColor);
end
end
for i = 1:numel(radarSensors)
sensorPos = [radarSensors{i}.SensorLocation radarSensors{i}.Height];
sensorOrient = quaternion([radarSensors{i}.Yaw radarSensors{i}.Pitch radarSensors{i}.Roll],'eulerd','ZYX','frame');
fov = radarSensors{1}.FieldOfView(1);
azRes = radarSensors{i}.AzimuthResolution;
maxRange = radarSensors{i}.MaxRange;
rRes = radarSensors{i}.RangeResolution;
az = deg2rad((-fov(1)/2:azRes:fov(1)/2));
r = (0:rRes:maxRange);
resLines = zeros(0,2);
for m = 1:numel(az)
resLines = [resLines;0 az(m);maxRange az(m);nan az(m)]; %#ok<AGROW>
end
for m = 1:numel(r)
for k = 1:numel(az)
resLines = [resLines;r(m) az(k)]; %#ok<AGROW>
end
resLines = [resLines;nan nan]; %#ok<AGROW>
end
[resLinesX,resLinesY,resLinesZ] = sph2cart(resLines(:,2),0*resLines(:,2),resLines(:,1));
resLinesXYZ = [resLinesX resLinesY resLinesZ];
resLinesXYZ = rotatepoint(sensorOrient,resLinesXYZ) + sensorPos;
resLine
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
此示例演示如何根据雷达和激光雷达传感器的测量值生成对象级轨迹列表,并使用轨迹级融合方案进一步融合它们。可以使用扩展对象跟踪器处理雷达测量值,并使用联合概率数据关联 (JPDA) 跟踪器处理激光雷达测量值。可以使用轨道级融合方案进一步融合这些轨道。工作流程示意图如下所示。 此示例中使用的方案是使用驾驶场景(自动驾驶工具箱)创建的。来自雷达和激光雷达传感器的数据分别使用驾驶雷达数据生成器(自动驾驶工具箱)和激光雷达点云生成器(自动驾驶工具箱)进行模拟。场景和传感器模型的创建包含在帮助程序函数 中。 自我车辆装有四个2-D雷达传感器。前后雷达传感器的视野为45度。左右雷达传感器的视场角为150度。每个雷达的方位角分辨率为6度,范围为2.5米。ego还安装了一个3D激光雷达传感器,其方位角视野为360度,仰角为40度。激光雷达的方位角分辨率为 0.2 度,高程为 1.25 度(32 个高程通道)。
资源推荐
资源详情
资源评论
收起资源包目录
雷达和激光雷达数据的跟踪级融合.rar (14个子文件)
雷达和激光雷达数据的跟踪级融合
ctrectstate.PNG 39KB
LidarClusteringFault.gif 854KB
RadarAndLidarTrackFusionExample.m 28KB
RadarLidarTrackFusionWorkflow.png 47KB
helperRadarTrackingAlgorithm.m 11KB
helperLidarTrackingAlgorithm.m 13KB
RadarLidarTrackFusion.gif 1.37MB
helperPanelDisplay.m 30KB
HelperBoundingBoxDetector.m 6KB
helperLidarRadarTrackFusionDisplay.m 14KB
LongRangeTargetFusion.gif 526KB
RadarLidarTrackFusionScenario.gif 1.94MB
helperCreateRadarLidarScenario.m 5KB
helperRadarLidarFusionFcn.m 2KB
共 14 条
- 1
珞瑜·
- 粉丝: 12w+
- 资源: 500
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 爬虫专栏第三篇:Python 实战:运用 requests 突破京东商品评论获取难题(含 cookie 处理与编码设置技巧
- JAVAWebChat网页聊天室源码数据库 MySQL源码类型 WebForm
- allWebPlugin中间件v2.0.26版本, 它是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器
- 使用AD证书服务实现安全的企业网站访问实训报告参考
- JAVA基于springBoot智慧停车收费管理系统源码带使用文档数据库 MySQL源码类型 WebForm
- 2018 国赛网络搭建与应用正式赛卷及评分标准.tar.gz
- Python asyncio 的 redis 客户端(支持 redis 服务器、sentinel 和 cluster).zip
- 遥感滑坡检测数据集VOC+YOLO格式3588张1类别.zip
- 正点原子开发板RV1126 rtsp推流demo实现视频和音频同步推流,并且屏幕显示
- 工控机端VS2019下C++基于NCNN部署Yolov5+使用说明.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页